Bonjour,
la macro ci-dessus n'est pas adaptée à ce que tu veux faire, voici une version épurée et commentée
Sub listefichierrecursive()
'cree un tableau a, contenant le nom de tous les fichiers dans le repétoire donné et ses sous-dossiers
a = lfr("d:\downloads\", "*.txt")
'on parcourt la liste des fichiers trouvés
For i = LBound(a) To UBound(a)
MsgBox a(i)
'ton traitement du fichier trouvé
Next i
End Sub
Function lfr(rep, filtre, Optional ByRef dict, Optional n = 0)
'fonction de recherche récursive dans le dossier rep
'filtre filtre pour les fichiers à sélectionner
'n niveau de récursivité
' on crée l'objet dictionnaire s'il n'existe pas encore
If IsObject(dict) = False Then Set dict = CreateObject("scripting.dictionary")
' on crée l'objet filesystem
Set fso = CreateObject("scripting.filesystemobject")
'rep est l'objet correspondant au dossier en cours
Set rep = fso.getfolder(rep)
' on parcourt tous les sous-dossiers du dossier en cours
For Each repf In rep.subFolders
lfr repf, filtre, dict, n + 1 ' on examine leur contenu, on incrémente le niveau de récursivité
Next repf 'on passe au sous-dossier suivant
'on parcourt tous les fichiers du dossier en cours
For Each f In rep.Files
fn = f.Name 'fn contient le nom du fichier en cours
If f.Name Like filtre Then 'le fichier correspond-il au filtre ?
dict.Add f.Path, 0 'oui on l'ajoute au dictionnaire
End If
Next f ' on passe au fichier suivant
If n = 0 Then lfr = dict.keys 'on est revenu au niveau 0, c'est la fin de la récursivité, on renvoie la liste des fichiers sous forme de tableau comme réponse pour la fonction
End Function