VBA Chemin Relatif [Résolu]

Signaler
Messages postés
104
Date d'inscription
samedi 12 mars 2005
Statut
Membre
Dernière intervention
30 avril 2007
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,
J'ai un petit souci avec le Visual Basic et les chemins relatifs... je suis en train de travailler sur un fichier excel et par une macro je cherche à ouvrir un autre fichier excel qui se trouve dans me meme dossier...
et je n'ai trouver que cette solution:

nom = InputBox("Entrer le nom du fichier")
ChDir "C:\Bureau\Pierre\Doc"
Workbooks.Open Filename:=fichier

le probleme est que chaque fois que j'execute cette macro sur une autre machine je suis obligé de changer l'adresse d'acces.
Existe t il un moyen plus simple avec un chemin relatif?
Merci d'avance.

9 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
24
Bonjour,

Il me semble avoir lu quelque part que l'équivalent de App.Path était :

- avec Access : CurrentProject.Path
-avec Excel : ActiveWorkbook.Path
-avec Word : ActiveDocument.Path
Messages postés
104
Date d'inscription
samedi 12 mars 2005
Statut
Membre
Dernière intervention
30 avril 2007

merci beaucou jmfmarques ca marche nikel !!!
byebye
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Statut
Membre
Dernière intervention
20 mars 2007

Bonjour à tous,
je rebondis sur le sujet. Problème idiot qui m'a fait perdre mon après midi...
J'ai fait une macro par apprentissage pour importer un fichier texte dans un onglet. Le problème, c'est que je veux enlever le lien absolu pour le transformer en lien relatif (pour aller sur un autre PC). J'ai bidouillé mon truc, ca a marché deux fois, puis plus rien....
Voici une partie de mon code (qui a marché 2 fois) :
 
Sheets("ascii brut").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;essais ASCII\base.txt"" _
        , Destination:=Range("A1"))
        .Name = "base"
        .FieldNames = True
        .RowNumbers = False
       ....
       End With

le lien absolu était : "C:\Documents and Settings\Munier\Bureau\Stage Moteur\Exploitation Excel\essais ASCII\base.txt"
(le fichier excel est dans "C:\Documents and Settings\Munier\Bureau\Stage Moteur\Exploitation Excel") et ca marchait.
j'ai essayé de mettre un truc du genre :

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;ActiveWorkbook.Path & "\essais ASCII\base.txt"" _
        , Destination:=Range("A1"))

mais ca donne rien.... et j'aimerais énormément que vous m'aidiez dans ma démarche !!
Merci beaucoup pour votre aide !!
Romain
Messages postés
1
Date d'inscription
vendredi 7 mars 2008
Statut
Membre
Dernière intervention
7 mars 2008

Essaye donc :
Chemin = ActiveWorkbook.path   ou
Chemin = Thisworkbook.path
et compose par exemple un Chemin1 = Chemin & "" & "toto" & "" 

Voir aussi:

Function GetCurDir()
Dim str As String
Dim pos As Integer
str = ActiveWorkbook.FullName
pos = InStrRev(str, "")
str = Mid(str, 1, pos)
GetCurDir = str
End Function
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2007

Amusant,

 Function GetCurDir(Optional NbSousRep As Single)
Dim str As String
Dim pos, i As IntegerIf NbSousRep 0 Then NbSousRep 1
str = ActiveWorkbook.FullName
For i = 1 To NbSousRep
pos = InStrRev(Left(str, Len(str) - 1), "")
str = Mid(str, 1, pos)
Next i
GetCurDir = str
End Function
Sub testdir()
MsgBox GetCurDir(2)

End Sub

Pasco
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
13 décembre 2007

ouups

Function GetCurDir(Optional NbSousRep As Single)
Dim str As String
Dim pos, i As IntegerIf NbSousRep 0 Then NbSousRep 1
str = ActiveWorkbook.FullName
For i = 1 To NbSousRep
pos = InStrRev(Left(str, Len(str) - 1), "")
If pos = 0 Then Exit For
str = Mid(str, 1, pos)
Next i
GetCurDir = str
End Function

Pasco
Bonjour frperraut
Ton dernier scrpit a l'air bien mais pourrais tu l'expliquer.
Dire pas à pas ce qu'il fait pour les nuls. (avec la traduction)
Merci
Bonjour pasco
Ton dernier script a l'air bien mais pourrais tu l'expliquer.
Dire pas à pas ce qu'il fait pour les nuls. (avec la traduction)
Merci
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
229
Bonjour, gabriel,
il n'y a rien à "expliquer" dans les deux codes pour lesquels tu demandes des précisions.
Ils font, l'un comme l'autre, appel à des notions de base très élémentaires et claires. A ce point claires que :
"dire pas à pas" ce que fait chacun de ces deux codes, reviendrait à dire ce que fait chacune des fonctions et/ou propriétés de base employées (et cela est dit dans ton aide VBA !).
Ouvre donc ton aide VBA sur les mots :
FullName
InstrRev
Mid
Path

et lis donc. Cette simple lecture te permettra de savoir ce que fait chaque ligne de code des deux codes qui t'intéressent.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.