VBA excel récupérer chemin accès [Résolu/Fermé]

Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
- - Dernière réponse : Whismeril
Messages postés
13714
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 septembre 2019
- 29 août 2019 à 08:55
Bonjour,

comment récupérer le chemin d'accès d'un répertoire et stocker ce chemin "c:\dossier\...." dans une cellule d'une feuille ?
sinon, j'ai pensé ouvrir le classeur, l'enregistrer sous et ainsi récupérer le chemin d'accès et enuiste effacer le fichier, c'est plus laborieux comme soluce alors si il y a une syntaxe qui récupérère le nom du fichier et que je puisse l'insérer dans une cellule tant mieux. je ne trouve rien sur le sujet dans le forum

Merci à tous pour votre aide.
aurelie.
Afficher la suite 

12 réponses

Meilleure réponse
approuvée par Jean-François Pillou le 27 janv. 2019
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
980
46
Merci
bonsoir,
Connaître le chemin du fichier
    dim Chemin as string
    Chemin = Application.Path
'ou..
    Range("A1").value = Application.Path

A+

Dire « Merci » 46

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 60028 internautes nous ont dit merci ce mois-ci

aurelie76
Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
2 -
Merci bcp lermitte222, tu m'aides énormément avec cette instruction, bonne journée bisous, aurelie.
44
Merci
Bonjour,

La propriété .FullName retourne le chemin complet du fichier ActiveWorkbook.Name
La propriété .Path retourne uniquement le chemin du dossier

Sub macro3()
Dim chemin As String
'Sheets("feuil1").Select
  chemin = Workbooks(ActiveWorkbook.Name).FullName
  MsgBox "Chemin complet " & chemin
  chemin = Workbooks(ActiveWorkbook.Name).Path
  MsgBox "Nom du Dossier " & chemin
  Sheets("feuil2").Select
  Range("C1").Value = chemin
End Sub


Choisis lequel des deux chemin tu veux garder.

A+.
5
Merci
Sub PathExpole()
   Dim MonItem As String
   Dim MonPath As String
   Dim MonFichier As String
   Dim i As Integer

   MonItem = "C:\temp\temp2\fichier.xls"

   i = InStr(1, StrReverse(MonItem), "\", vbTextCompare)
   If i <> 0 Then
      MonPath = Left(MonItem, Len(MonItem) - i)
      MonFichier = Right(MonItem, Len(MonItem) - i - 2)
   End If
   MsgBox MonPath & " - " & MonFichier
End Sub
4
Merci
bonjour,
je cherche à faire à peu près la même chose qui est indiquée ici.
Je voudrais récupérer un chemin d'accès mais pas du fichier sur lequel je bosse mais d'un fichier quelconque, en sélectionnant celui-ci via une fenêtre d'exploration.

Je suis relativement précis car j'avais déjà trouvé mais impossible de remettre la main dessus
Messages postés
1184
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
223
4
Merci
voilà un exemple,

l'utilisation de Application.GetOpenFilename est la fonction principale
le reste est une manipulation de chaine.

Ici tout est décomposé ça peut-être utile.
mais on peut simplifier.

Sub test2()
Dim chemin As String
Dim nomFichier As String
Dim cheminComplet As String
Dim dummy As String

cheminComplet = Application.GetOpenFilename

If cheminComplet <> "faux" Then
    ' 1 l'extension
dummy = cheminComplet
While Right(dummy, 1) <> "."
    ext = Right(dummy, 1) & ext
    dummy = Left(dummy, Len(dummy) - 1)
Wend
dummy = Left(dummy, Len(dummy) - 1) ' ici on élimine le .
' le nom du fichier
While Right(dummy, 1) <> "\"
    nomFichier = Right(dummy, 1) & nomFichier
    dummy = Left(dummy, Len(dummy) - 1)
Wend
' le chemin
chemin = dummy
End If

End Sub
Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
2
2
Merci
bonjour Lermitte222,

en fait je me suis un peu précipité, voici mon bout de code, et je n'arrive pas à insérer le chemin du fichier ouvert dans une cellule d'un autre classeur :
Private Sub CommandButton1_Click()
Sheets("feuil1").Visible = True

Dim chemin As String
Sheets("feuil1").Select
chemin = Workbooks(ActiveWorkbook.Name).FullName
Sheets("feuil2").Select
Range("C1").Value = chemin  ' ou Range("C1").Value = Workbooks(ActiveWorkbook.Name).FullName


et ca ne met rien dans C1 ?

Merci pour votre aide,

aurelie
2
Merci
Pour avoir le résultat dans une cellule sans passer par les macros, c'est un peu compliqué mais ca fonctionne.

CELLULE("nomfichier") donne le chemin + le nom du fichier + l'extension et + ou - le nom de la feuille

Résultat : C:\Excel\[test.xls]Testsheet ou C:\Excel\test.xls
Cela dépend des versions je crois.

Le but après c'est de faire un traitement pour récupérer le chemin.

Dans l'un comme dans l'autre exemple IL FAUT CONNAITRE LE NOM DU FICHIER

Pour exemple 1 :
GAUCHE(CELLULE("nomfichier");CHERCHE("[";CELLULE("nomfichier"))-1)
Ce qui donne C:\Excel\

Pour exemple 2 :
GAUCHE(CELLULE("nomfichier");CHERCHE("test.xls";CELLULE("nomfichier"))-1)
Ce qui donne C:\Excel\

Et si on veut que ca marche pour les deux exemples :

SI(ESTERREUR(CHERCHE("";CELLULE("nomfichier")));GAUCHE(CELLULE("nomfichier");CHERCHE("test.xls";CELLULE("nomfichier"))-1);GAUCHE(CELLULE("nomfichier");CHERCHE("[";CELLULE("nomfichier"))-1))

Voilà
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
980
1
Merci
Bonjour,
J'ai mieux compris..
Sub ChChPath()
Dim chemin As String
    chemin = ThisWorkbook.FullName
    Sheets("feuil2").Select
    Range("C1").Value = chemin
'ou..
    Range("C1").Value = ThisWorkbook.FullName
End Sub

A+
@lermite: merci!! Cette macro est absolument géniale :)
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2139
1
Merci
Bonjour,

10 ans plus tard...

Function Choix_Repertoire() As String
Dim Fd As FileDialog

   Set Fd = Application.FileDialog(msoFileDialogFolderPicker)
   Fd.Show
   On Error Resume Next
   Choix_Repertoire = Fd.SelectedItems(1)
End Function


Code d'appel :

Dim rep As String
rep = Choix_Repertoire
If rep <> vbNullString Then
    MsgBox rep
Else
    MsgBox "Annulation utilisateur"
End If

Et après ? comment le chemin est copié dans une cellule ?
Whismeril
Messages postés
13714
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 septembre 2019
382 > Pierre -
Ha pour ça, il faut dire « bonjour » et « s’il vous plaît »
Commenter la réponse de pijaku
Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
2
0
Merci
Rebonjour,

normalement avec ce code je devrais pouvoir écrire le chemin d'accès dans la cellule C1 de la feuile 2 et je n'ai rien, franchement, j'ai trituré le code dans tous les sens et je ne comprend pas ? je ne sais pas si vous ca donfciotnne ? je suis sous Excel97, cela provient-il de cela ?

Merci quand même pour le temps que vous me consacrez.

aurelie
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
980 -
Oui j'ai testé et ca fonctionne impec.

Il faut séparer le problème
tu place le curseur n'importe où dans la macro..
tu tape F8, la 1er ligne est activée (en surbrillance)
tu tape 2fois F8
la ligne en jaune devrait être sur Sheets("feuil2").Select
Je ne sais pas si en 97 ca marcherra mais essaye
promène ma souris sur chemin un bulle devrait afficher ce qu'il y a dans chemin.
Sinon..
Dans la fenêtre du dessous Exécution tu tape
Print Chemin

Et tu dit la réponse..

PS: j'ai tester sur le 2000 je n'ai pas le 97.
Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
2
0
Merci
Lermitte222,

avec le mode pas à pas, ca affiche bien le chemin d'accès dans la bulle mais ca ne met rien, je crois qu'il y a une histoire de erreur 1004, même en faisant une copie de fichier pour extraire ensuite le chemin d'accès, ca ne fonctionne pas, ca parait plus tordu que je ne pensais ! Désolé pour le mal que tu te donnes.

aurelie.
lermite222
Messages postés
8713
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
27 janvier 2014
980 -
Bon, première étape OK
Rest donc la 2. 1004 erreur de l'application.
Vérifie si pas d'erreur dans le nom de la feuilles, quelques fois un espace ou un point que l'ont ne voit pas fait buggé.
pour être certain
tu double clic sur l'onglet de la feuille (comme pour l'éditer) ru fait un Copier/coller
tu retourne dans l'IDE et tu fait un coler du nom à la place de sheets2
Messages postés
88
Date d'inscription
samedi 19 avril 2008
Statut
Membre
Dernière intervention
13 mai 2017
2
0
Merci
MErci Lermitte, j'ai laissé tombé, vraiment, je n'avance à rien, je me suis dirigé vers une autre soluce, mais idem, je me heurte à un pb qui a l'air d'agacer plus d'un . Le fameux copier d'une feuiille d'un classeur X et coller la feuille sur un classeur Y en codant VBA..... ca parait encore un truc de fou........ merci bcp pour le temps que tu as passé mais je ne veux pas abuser.
bisous et merci, aurelie.