Chemin d'accès fichier

Bonjour, après quelques recherches concernant les chemins d'accès, je viens vers vous n'ayant pas réussi à trouver la solution à mon problème.

J'ai un début de code me permettant d'aller chercher un fichier (d'ailleurs, est-ce possible d'aller chercher à la fois un dossier et un fichier ?) :

Sub Test()

Dim chemin_fichier As String

chemin_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")

End Sub

J'aimerais poursuivre le code afin d'obtenir le chemin d'accès vers ce fichier sachant que:

  • Mon arborescence ressemble à ceci :
    arborescence
  • Je veux obtenir ce lien : .\PROJET\C\Versions\Fichier 3.txt
(c'est-à-dire que je ne veux pas le lien vers les dossiers qui se trouvent avant les dossier où mon fichier Excel est rangé)

Merci !

Clem

Bonjour

Dans ton exemple, essaie cette instruction (à compléter) pour ouvrir ton fichier :

Set fichier = Workbooks.Open("C:\...\PROJET\A\B\C\Fichier 3.xlsx")

Bye !

Bonjour, je me suis peut être mal exprimée, je ne veux pas ouvrir mon fichier mais seulement afficher son chemin d'accès.

Sachant que mon dossier ici nommé PROJET peut avoir un autre nom selon le projet.

Bonjour

Dans ton exemple, essaie cette instruction (à compléter) pour ouvrir ton fichier :

Set fichier = Workbooks.Open("C:\...\PROJET\A\B\C\Fichier 3.xlsx")

Bye !

Clem

Pour obtenir le chemin d'un fichier :

* ouvrir ce fichier

* dans n'importe quelle cellule, taper la formule :

=CELLULE("nomfichier")

Tu obtiens ainsi l'adresse complète de l'onglet où se trouve cette cellule

* Tu en fais un copier puis un coller - collage special valeur où tu veux

* Tu supprime le nom de l'onglet, à gauche du crocher fermant

* Tu supprimes les deux crochets

Et tu as le chemin du fichier.

OK ?

Bye !

Pour obtenir le chemin d'un fichier :

* ouvrir ce fichier

* dans n'importe quelle cellule, taper la formule :

=CELLULE("nomfichier")

Tu obtiens ainsi l'adresse complète de l'onglet où se trouve cette cellule

* Tu en fais un copier puis un coller - collage special valeur où tu veux

* Tu supprime le nom de l'onglet, à gauche du crocher fermant

* Tu supprimes les deux crochets

Et tu as le chemin du fichier.

OK ?

Bye !

Ce n'est pas ce que je veux, je veux passer par du VBA afin d'avoir une optimisation ultérieurement (aller chercher le chemin d'accès d'un fichier n'est qu'une petite partie de mon code)

J'ai déjà bouton me permettant de lancer le début de macro à savoir aller chercher un fichier et maintenant j'aimerais afficher le chemin d'accès du fichier.

Clem

Bonjour,

Vous pouvez tenter d'utiliser La propriété .FullName et la propriété .PATH

La première retourne le chemin complet du fichier ActiveWorkbook.Name

La propriété .Path retourne uniquement le chemin du dossier.

Good luck

Bonjour,

Vous pouvez tenter d'utiliser La propriété .FullName et la propriété .PATH

La première retourne le chemin complet du fichier ActiveWorkbook.Name

La propriété .Path retourne uniquement le chemin du dossier.

Good luck

Bonjour, voici mon essai avec Path :

Sub Test()

Dim nom_fichier As String

nom_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")

nom_fichier = Application.Path

Range("b2") = nom_fichier

End Sub

J'obtiens C:\PROGRA~2\MICROS~2\Office15 ce qui ne correspond pas au chemin d'accès à mon fichier

Clem

Essayez avec ce code car effectivement si le fichier sélectionné n'est pas ouvert, cela va retourner le chemin d'accès du logiciel excel sur votre pc.

Sub Test()

Dim nom_fichier As String
Dim chemin As String

nom_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")

Workbooks.Open Filename:=nom_fichier 'ouvre le fichier sélectionné

chemin = ActiveWorkbook.Path

Range("b2") = nom_fichier 'attention que la cellule B2 soit vide sinon le contenu sera écrasé

End Sub

Après quelques recherches sur le net, j'ai trouvé un code qui pourrait vous permettre de récupérer le chemin d'accès d'un fichier sans avoir à l'ouvrir.

Sub Récupérer_CheminAccèsFich()

On Error GoTo 1
Dim finput As FileDialog
Set finput = Application.FileDialog(msoFileDialogFolderPicker)
finput.Show

With finput
Sheets(1).Cells(1, 1) = .SelectedItems(1)
End With
1:

End Sub

J'espère vous avoir aider, bonne continuation

Essayez avec ce code car effectivement si le fichier sélectionné n'est pas ouvert, cela va retourner le chemin d'accès du logiciel excel sur votre pc.

Sub Test()

Dim nom_fichier As String
Dim chemin As String

nom_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")

Workbooks.Open Filename:=nom_fichier 'ouvre le fichier sélectionné

chemin = ActiveWorkbook.Path

Range("b2") = nom_fichier 'attention que la cellule B2 soit vide sinon le contenu sera écrasé

End Sub

J'aimerai ne pas ouvrir le fichier et que le lien obtenu commence à PROJET comme ceci : \PROJET\B\Fichier 2.txt

Avec le second code que j'ai envoyé vous récupérer le chemin d'accès sans ouvrir le fichier

Il vous suffirait de calculer le nombre de caractères à ôter sur ce chemin d'accès à partir du début puis utiliser la fonction mid

exemple : C:\Users\pc\Documents alors que je veux ne garder que \Documents

je compte 12 caractères avant ce que je souhaite puis d'y ajouter le nom de votre fichier

Sub Récupérer_CheminAccèsFich()
Dim nom_fich As String
Dim chemin As String

On Error GoTo 1
Dim finput As FileDialog
Set finput = Application.FileDialog(msoFileDialogFolderPicker)
finput.Show

With finput
chemin = .SelectedItems(1)
End With
1:
Range("a1") = Mid(chemin, 12, Len(chemin)) & "\" & nom_fich
End Sub

N'oubliez pas d'affecter votre variable nom_fich

Après quelques recherches sur le net, j'ai trouvé un code qui pourrait vous permettre de récupérer le chemin d'accès d'un fichier sans avoir à l'ouvrir.

Sub Récupérer_CheminAccèsFich()

On Error GoTo 1
Dim finput As FileDialog
Set finput = Application.FileDialog(msoFileDialogFolderPicker)
finput.Show

With finput
Sheets(1).Cells(1, 1) = .SelectedItems(1)
End With
1:

End Sub

J'espère vous avoir aider, bonne continuation

Effectivement c'est mieux ainsi sans ouvrir le fichier. Mais je peux uniquement récupérer le chemin d'un dossier et non d'un fichier. Et le chemin ne commence pas là où je le souhaite.

Essai ce code :

Sub ZoneTexte1_Cliquer()

    chemin_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")
    n = 0
    nb = UBound(Split(chemin_fichier, "\"))
    For i = 1 To Len(chemin_fichier)
        If Mid(chemin_fichier, i, 1) = "\" Then
            n = n + 1
            If n = nb - 4 Then
                Exit For
            End If
        End If
    Next i
    chemin = Mid(chemin_fichier, i + 1, Len(chemin_fichier) - i - 1)
    MsgBox chemin

End Sub

Bye !

Essai ce code :

Sub ZoneTexte1_Cliquer()

    chemin_fichier = Application.GetOpenFilename(, , "Sélectionner Fiche")
    n = 0
    nb = UBound(Split(chemin_fichier, "\"))
    For i = 1 To Len(chemin_fichier)
        If Mid(chemin_fichier, i, 1) = "\" Then
            n = n + 1
            If n = nb - 4 Then
                Exit For
            End If
        End If
    Next i
    chemin = Mid(chemin_fichier, i + 1, Len(chemin_fichier) - i - 1)
    MsgBox chemin

End Sub

Bye !

Ce code ne fonctionne pas si l'arborescence évolue, si des nouveaux dossiers sont rajoutés

écrivez moi le chemin que vous récupérez et ce que vous voulez, le code de GMD pourrai fonctionner mais j'ai un doute sur la dernière ligne de code et je pourrai faire des tests, si vous le voulez bien sûr

sinon l'utilisation de split est une bonne idée, cela coupe le chemin en tronçons délimités par \. Si vous rajoutez la ligne

 tableau = Array(Split(chemin_fichier, "\"))

cela rangera chaque partie dans un tableau, il vous suffira de ne concaténer que le contenu de ce que vous voulez

Bonjour, je veux récupérer le chemin en commençant par le premier dossier qui arrive dans l'arborescence : Le dossier où mon fichier Exel est rangé. Il sera toujours rangé ici mais les autres dossiers qui viennent après dans l'arborescence peuvent changer d'un projet à un autre.

arborescence

Il faudrait peut être commencer par récupérer le nom du dossier dans lequel est rangé le fichier Excel.

Puis, dans un second temps, récupérer le chemin du fichier sélectionné et supprimer tout ce qu'il y a avant le nom du dossier où est rangé l'Excel

C'est mon idée, après je ne sait pas le coder

Dites-moi ce que vous en pensez

Bonjour,

je ne comprends pas bien votre souhait, car normalement le code que je vous ai donné hier permet de récupérer le chemin d'accès et le fichier de ce que vous sélectionnez via la boite de dialogue quel que soit le fichier d'où vous partez.

Si je résume ce que j'ai compris, (peut-être n'ai-je saisi votre demande) :

Vous êtes dans un fichier excel (Est-ce un nouveau classeur ou un fichier précis ?)

Vous ouvrez une boite de dialogue pour sélectionner un fichier (Je suppose dans l'arborescence que vous nous donnez : après \projet...)

Vous voulez récupérer son chemin d'accès et le nom du fichier

Vous souhaiter ne garder le chemin d'accès qu'après \projet\... pour le traiter

Est-ce bien cela ?

Bonjour,

je ne comprends pas bien votre souhait, car normalement le code que je vous ai donné hier permet de récupérer le chemin d'accès et le fichier de ce que vous sélectionnez via la boite de dialogue quel que soit le fichier d'où vous partez.

Si je résume ce que j'ai compris, (peut-être n'ai-je saisi votre demande) :

Vous êtes dans un fichier excel (Est-ce un nouveau classeur ou un fichier précis ?) Fichier précis

Merci

Vous ouvrez une boite de dialogue pour sélectionner un fichier (Je suppose dans l'arborescence que vous nous donnez : après \projet...) Oui mais mon dossier qui s'appelle actuellement PROJET ne s'appellera pas toujours ainsi, et mon arborescence pourra changer avec des dossiers en plus où en moins. Si je comprend bien votre code, celui-ci prend en compte le nombre de dossiers dans mon arborescence. Hors ce nombre peut évoluer

Vous voulez récupérer son chemin d'accès et le nom du fichier Oui avec son extension

Vous souhaiter ne garder le chemin d'accès qu'après \projet\... pour le traiter Oui exact mais ce dossier ne s’appellera pas toujours PROJET

Est-ce bien cela ?

Mon code ne tient pas compte de ce qu'il y a dans le dossier, (ni le nombre de sous dossiers ni leurs noms) il récupère juste le chemin d'accès et le nom de fichier que vous avez sélectionné via la boite de dialogue et vous retourne une chaîne de caractères qui peut vous permettre le cas échéant de retrouver le dit fichier plus tard moyennant qu'il n'ai changé ni de nom ni d'emplacement entre temps.. Vous vouiez bien ne récupérer que le chemin pas manipuler les dossiers et les déplacer dans votre ordi auquel cas, effectivement mon code n'est pas suffisant ?

Rechercher des sujets similaires à "chemin acces fichier"