Récupération de fichiers dans un répertoire [Résolu]

Signaler
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour à tous,
Je travaille sur une macro excel, lancée à partir d'un bouton dans une feuille. Je souhaite récupérer des fichiers à partir d'un chemin de dossier. Après quelques recherches, j'ai trouvé un code qui me permet (en théorie!!!) de récupérer facilement ces données, mais Excel m'affirme qu'il me manque un objet. En fait, il m'est impossible de récupérer un quelconque attribut du dossier, je peux simplement dire s'il existe ou non. Impossible également de définier une valeur comme "Folder". Cependant, dans d'autres macro de la même feuille, je peux manipuler les fichiers à ma guise.
Je pense éventuellement à une bibliothèque que je devrai charger, mais ça me parait quand même bizarre (et je sais pas en plus comment charger une nouvelle bibliothèque!!!!)
Voici mon code, merci de toute l'aide que vous pourrez m'apporter:

Dim Dossier_choisi As String
Set fs1 = Nothing
Set fs1 = CreateObject("Scripting.FileSystemObject")

Dossier_choisi = "C:\Blablabla..."
mainDir = fs1.GetFolder(Dossier_choisi)
Set ColFiles = mainDir.Files   '<- L'erreur apparaît à cet endroit
For Each folderItem In ColFiles
   MsgBox (folderItem)
Next
Set ColFiles = Nothing
Set mainRep = Nothing
Set fs1 = Nothing

@+. Hermios

5 réponses

Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Oups désolé,

Pas tout modifié :

Set oFSO = CreateObject("Scripting.FileSystemObject")
Dossier_choisi = "C:\Blablabla..."
If oFSO.FolderExists(Dossier_choisi)Then
For each oFld in  oFSO.GetFolder(Dossier_choisi).SubFolders
   MsgBox oFld.Name    
Next
Messages postés
1241
Date d'inscription
mardi 10 octobre 2006
Statut
Membre
Dernière intervention
27 août 2013
5
Salut,
Tu peux essayer ceci :
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dossier_choisi = "C:\Blablabla..."
If oFSO.FolderExists(stRep) Then
For each oFld in  oFSO.GetFolder(stRep).SubFolders
   MsgBox oFld.Name    
Next
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
2
Salut Lolokun,
J'ai essayé ta technique, ça marche, et en remplaçant subFolders par Files, ça marche également!!! En fait, il a visiblement du mal à accepter que je passe par l'étape mainDir = fs1.GetFolder(Dossier_choisi)
J'en déduis que le type Folder n'existe pas chez moi... Va savoir pourquoi!!!
Quoiqu'il en soit, merci beaucoup de ton aide :)

@+. Hermios
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
50
Salut,
Peu être te manquait il aussi un SET

Set mainDir = fs1.GetFolder(Dossier_choisi)

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Regarde la fonction DIR
Tu n'auras pas besoin de créer de référence au Scripting Runtime, donc plus facilement portable.
Il y a plein d'exemples sur le site, mais aussi dans l'aide Excel

MPi²