Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Récupérer le chemin d'un dossier avec getfolder

  • Initiateur de la discussion Initiateur de la discussion MJ13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MJ13

XLDnaute Barbatruc
Bonjour,

EN faisant une recherche sur le net, J'arrive à peu près a récupérer le chemin d'un dossier avec ce code

Sub choix_dossier()
' Macro enregistrée le 25/10/2007 par MJ
Stop
activedir="C:\"
Set objShell = CreateObject("Shell.Application")
Set objfolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "choix du dossier", NO_OPTIONS, "C:\")
activrep = activedir & "\" & objfolder
End Sub

Le problème est que si j'ai un sous dossier, il ne me prend que le dernier dossier pour objfolder

Est ce réalisable ou connaissez vous une autre syntaxe pour arriver au même résulat?

C'est vrai qu'en macro Excel4, il y avait bien =ouvrir?() mais bon il faut bien se mettre à 100% VBA.
 
Re : Récupérer le chemin d'un dossier avec getfolder

Bonjour,
essaye la fonction "Dir".

Dir, fonction


Renvoie une valeur de type String représentant le nom d'un fichier, d'un répertoire ou d'un dossier correspondant à une chaîne de recherche, à un attribut de fichier ou au nom de volume d'un lecteur.

Syntaxe

Dir[(pathname[, attributes])]

La syntaxe de la fonction Dir comprend les éléments suivants :

Élément Description
pathname Facultatif. Expression de chaîne définissant un nom de fichier. Cet argument peut préciser le répertoire ou dossier et le lecteur. Une chaîne de longueur nulle est renvoyée si l'argument pathname est introuvable.
attributes Facultatif. Constante ou expression numérique, dont la somme définit des attributs de fichier. Si cet argument est omis, tous les fichiers sans attributs correspondant à l'argument pathname sont renvoyés.



Valeurs

L'argument attributes peut prendre les valeurs suivantes :

Constante Valeur Description
vbNormal 0 (Par défaut) Spécifie les fichiers sans attributs.
vbReadOnly 1 Spécifie les fichiers accessibles en lecture seule ainsi que les fichiers sans attributs.
vbHidden 2 Spécifie les fichiers cachés ainsi que les fichiers sans attributs.
vbSystem 4 Spécifie les fichiers système ainsi que les fichiers sans attributs. Non disponible sur le Macintosh.
vbVolume 8 Spécifie un nom de volume ; si un autre attribut est spécifié, la constante vbVolume est ignorée. Non disponible sur Macintosh.
vbDirectory 16 Spécifie les dossiers ainsi que les fichiers sans attributs.
vbAlias 64 Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.



Note Ces constantes sont définies par Visual Basic pour Applications et peuvent remplacer des valeurs réelles partout dans votre code.

Remarques

Dans Microsoft Windows, La fonction Dir permet d'utiliser des jokers ou caractères génériques (* ou ?) pour sélectionner plusieurs fichiers. Sur le Macintosh, ces caractères sont considérés comme des caractères de noms de fichiers valides et ne peuvent être utilisés comme caractères génériques pour spécifier des fichiers multiples.

Étant donné que le Macintosh ne gère pas les caractères génériques, utilisez le type de fichier pour identifier les groupes de fichiers. Vous pouvez utiliser la fonction MacID pour indiquer le type de fichier au lieu d'utiliser les noms de fichier. Par exemple, l'instruction suivante renvoie le nom du premier fichier TEXT dans le dossier courant :

Dir("Chemin d'accès", MacID("TEXT"))

Pour faire une itération sur tous les fichiers d'un dossier, indiquez une chaîne vide :

Dir("")

Si vous utilisez la fonction MacID à l'aide de l'instruction Dir dans Microsoft Windows, une erreur se produit.

Toute valeur de l'argument attribute supérieure à 256 est considérée comme une valeur MacID.

Vous devez définir l'argument pathname lors du premier appel de la fonction Dir, ou une erreur se produit. Si vous indiquez des attributs de fichier, l'argument pathname doit être présent.

La fonction Dir renvoie le premier nom de fichier correspondant à l'argument pathname. Pour extraire d'autres noms de fichier correspondant à l'argument pathname, appelez de nouveau la fonction Dir sans préciser d'arguments. Quand tous les fichiers ont été indiqués, la fonction Dir renvoie une chaîne de longueur nulle (""). Lorsqu'une chaîne de longueur nulle a été renvoyée, vous devez indiquer l'argument pathname dans les appels ultérieurs de la fonction ou une erreur se produit. Vous pouvez indiquer un nouvel argument pathname sans avoir extrait tous les noms de fichier correspondant à l'argument pathname courant. Il est cependant impossible d'appeler la fonction Dir de manière récursive. Les appels Dir comportant l'attribut vbDirectory ne renvoient pas continuellement les sous-dossiers.

Conseil Les noms de fichiers extraits n'étant pas classés, vous pouvez les stocker dans un tableau, puis trier ce dernier.
 
Re : Récupérer le chemin d'un dossier avec getfolder

Bonjour Skoobi et merci pour l'aide.

En fait je ne suis pas sur que DIR corresponde à mon problème.
Je veux pouvoir ouvrir ma liste de dossier par une macro et récupérer le chemin dans une variable. Le problème est si il y a un sous dossier, il n'est pas pris en compte.

Voici mon début de code sous forme de fichier.
 

Pièces jointes

Re : Récupérer le chemin d'un dossier avec getfolder

bonjour Michel, Skooby et Eric


encore une autre possibilité

Code:
Sub Test()
    Dim objShell As Object, objFolder As Object
    Dim oFolderItem As Object
    Dim Chemin As String
    
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "", &H1&)
    
    On Error Resume Next
    Set oFolderItem = objFolder.Items.Item
    Chemin = oFolderItem.Path
    
    MsgBox Chemin
End Sub


Bonne journée
MichelXld
 
Re : Récupérer le chemin d'un dossier avec getfolder

Bonjour Eric et merci pour cet exercice de style.

La cela me dépasse un peu.

Entre temps j'ai trouvé à partir d'un fichier de Dl dont voici le code dans le fichier joint (en fait je l'avais ouvert sur mon Excel mais je ne l'avais pas vu en faisant une recherche ce matin sur le forum, par contre je n'ai pas retrouvé le post).

J'ai aussi trouvé dans mes archives
avec l'expression
Application.Dialogs(xlDialogSaveAs).Show en remplaçant Xldialogsaveas par xldialogOpen, on doit trouver un moyen de le récupérer.

Voila on a maintenant presque 3 façons de faire . Il y en a peut-être d'autres. Avis aux amateurs!

Oh Michel bonjour, je ne t'avais pas vu. Super et une de plus!
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…