Bonjour,
Après avoir cherché un bon moment, je jette l'éponge et me tourne vers vous : je cherche à lister tous les sous dossiers (avec leur arborescence absolue) dans un array et voici le code que j'ai trouvé et transformé pour y arriver.
J'ai l'impression que cela ne fonctionne que quand on ne fait pas le traitement récursif des sous dossiers (cela serait il dû à la définition de l'array "Dim MyArray()... qui écrase l'array existant à chaque fois que l'on après la procédure ? ) mais que quand on sort le traitement récursif sur une feuille (avec la ligne Cells(Idx + 1, 1).Value = Flder.Path au lieu de l'array) tout sort. Je ne vois pas trop comment faire pour envoyer les résultats de la procédure qui tourne plusieurs fois dans un même array...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Sub TousLesDossiers4(LeDossier$, Idx As Long) Dim MyArray() As String Dim strMessage As String Dim Boucle As Integer Dim fso As Object, Dossier As Object Dim sousRep As Object, Flder As Object Set fso = CreateObject("Scripting.FileSystemObject") Set Dossier = fso.GetFolder(LeDossier) 'examen du dossier courant For Each Flder In Dossier.SubFolders Idx = Idx + 1 'Cells(Idx + 1, 1).Value = Flder.Path ReDim Preserve MyArray(1 To Idx) MyArray(Idx) = Flder.Path Next 'traitement récursif des sous dossiers For Each sousRep In Dossier.SubFolders ' SI ON DECOMMENTE LA LIGNE SUIVANTE CELA NE FONCTIONNE PLUS 'TousLesDossiers4 sousRep.Path, Idx Next sousRep Set fso = Nothing strMessage = MyArray(1) MsgBox strMessage End Sub Sub test_dossiers4() TousLesDossiers4 "C:\Temp\", 0 End Sub
Merci d'avance pour vos lumières !
Max
Partager