Bonjour,
 
Une reponse rapide (qui est loin d'etre parfaite, mais qui marche si tu n'a que deux niveau de repertoire (un repertoire parent, puis plusieur sous repertoires (qui n'ont eux meme pas de sous repertoire, sinon tu adaptes, faire un autre loop sur le contenue de la matrice (qui liste le chemin des repertoires)):
 
Sub list_rep()
Static s As Integer
Dim repertoire()
'<<<Detecter l'ensemble des sous-repertoire du repertoire principale, puis lister les fichiers>>>
'<<<Premier passage>>>
chemin = "c:\" '<<<Change le chemin pour ce que tu veux
myname = Dir(chemin, vbDirectory)
Do While myname <> ""
    If myname <> "." And myname <> ".." Then
        If (GetAttr(chemin & myname) And vbDirectory) = vbDirectory Then
            Debug.Print myname
            ReDim Preserve repertoire(s)
            repertoire(s) = chemin & myname
            s = s + 1
        End If
    End If
    myname = Dir
Loop
 
'<<<Lister les fichier des repertoire>>>
For g = 0 To s - 1
MsgBox repertoire(g)
Set fs = Application.FileSearch
With fs
    .LookIn = repertoire(g)
    .Filename = "*.*"
    .Execute
        For i = 1 To .FoundFiles.Count
            MsgBox .FoundFiles(i) '<<<ICI tu peux mettre ton code
        Next i
        If .FoundFiles.Count = 0 Then
        MsgBox "Que Dalle !!!"
        End If
End With
Next
End Sub
 
PS: c'est une quasi copie de l'aide de microsoft 2000, comme quoi elle est pas si mal faite 
 
Sinon une autre solution un peu plus complete sur MSDN, http://msdn.microsoft.com/library/ [...] 072000.asp
 
Bon courage
 
I.