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:
(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.
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 ?