Bonjour,
L'explication est difficile à trouver.
Le traitement mis en place est assez compliqué, avec une répétition du code pour chaque niveau d'arborescence.
Ci-joint une proposition, à tester.
Entièrement ré-écrit, avec un principe de récursivité et en utilisant la bibliothèque de gestion de fichiers (FileSystemObject).
On appelle la même procédure pour chaque niveau : la procédure "ExtraireFichiers" appelle elle-même la procédure "ExtraireFichiers" pour chaque sous-répertoire, etc
Le paramètre "piProfondeur" sert à gérer un niveau de profondeur max (ici : 3 niveaux, mais on pourrait continuer à l'infini, par exemple en scannant tout le disque C:\, avec un niveau de profondeur max à 10 ou 20)
Extrait :
Private Sub ExtraireFichiers(psChemin As String, piProfondeur As Integer)
.......
'parcours de tous les fichiers du répertoire
For Each oFic In moFSO.GetFolder(sChemin).Files
If oFic.Name Like "*.jpg" Then
.......
End If
Next oFic
'parcours de tous les sous-répertoires
If piProfondeur < MI_PROFONDEUR_MAX Then
For Each oRep In moFSO.GetFolder(sChemin).SubFolders
'appel récursif
ExtraireFichiers oRep.Path, piProfondeur + 1
Next oRep
End If
End Sub
Bouben