VBA Chemin Relatif [Résolu]

Messages postés
104
Date d'inscription
samedi 12 mars 2005
Dernière intervention
30 avril 2007
- 13 mars 2007 à 18:10 - Dernière réponse :
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 1 mai 2015 à 07:30
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.
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 13 mars 2007 à 18:56
1
Merci
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

Merci jmfmarques 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
104
Date d'inscription
samedi 12 mars 2005
Dernière intervention
30 avril 2007
- 13 mars 2007 à 19:31
0
Merci
merci beaucou jmfmarques ca marche nikel !!!
byebye
Commenter la réponse de aaliyan
Messages postés
12
Date d'inscription
lundi 19 mars 2007
Dernière intervention
20 mars 2007
- 19 mars 2007 à 17:46
0
Merci
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
Commenter la réponse de cs_westa
Messages postés
1
Date d'inscription
vendredi 7 mars 2008
Dernière intervention
7 mars 2008
- 7 mars 2008 à 11:34
0
Merci
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
Commenter la réponse de frperreaut
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Dernière intervention
13 décembre 2007
- 19 févr. 2009 à 22:56
0
Merci
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
Commenter la réponse de pasco05
Messages postés
13
Date d'inscription
samedi 26 juillet 2003
Dernière intervention
13 décembre 2007
- 19 févr. 2009 à 23:00
0
Merci
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
Commenter la réponse de pasco05
0
Merci
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
Commenter la réponse de gabriel
0
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
Commenter la réponse de gabriel
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 1/05/2015 à 07:35
0
Merci
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.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.