Bonjour,
Le code que j'ai actuellement me permet de récupérer les noms des derniers sous dossiers d'une arborescence d'un répertoire. J'aimerais pouvoir récupérer également le nom du dossier contenant ces sous dossiers.
Exemple :
Dossier 1 >
_________SDossier 1a >
_____________________Sdossier1b >
_________________________________SDossier1c
_________________________________SDossier2c
_________________________________SDossier3c
_________________________________ SDossier4c
_________SDossier 2a >
_____________________Sdossier1b >
_________________________________SDossier1c
_________________________________SDossier2c
_________________________________SDossier3c
_________________________________SDossier4c
Pour le moment mon code me permet d'avoir dans un tableau tout les noms de dossiers de catégorie c
J'aimerais également pouvoir obtenir ceux de catégorie b
Voici le code que j'ai à présent :
(les tableaux sont déclarés en public)
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 Sub arborescenceRepertoire() Dim i As Integer, j As Integer, ligne As Integer Dim fs As Object Dim dossier_racine As Object For i = 1 To 100 For j = 1 To 100 Tableau_NomCas(j, i) = "" Tableau_Adresses(j, i) = "" 'Tableau_Dossier(j, i) = "" Next j Next i racine = ChoixDossier() If racine = "" Then Exit Sub UserForm1.TextBox2.Value = racine Set fs = CreateObject("Scripting.FileSystemObject") Set dossier_racine = fs.getfolder(racine) Lit_dossier dossier_racine, 1, 0, 0 Call Arborescence_Final End Sub
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 Sub Lit_dossier(dossier As Object, niveau As Integer, ligne As Integer, colonne As Integer) Dim d As Object Tableau_Adresses(ligne + 1, colonne + 1) = dossier.Path Tableau_NomCas(ligne + 1, colonne + 1) = dossier.Name 'Tableau_Dossier(ligne + 1, colonne + 1) = Tableau_NomCas(ligne + 1, colonne + 1) For Each d In dossier.SubFolders ' If ligne = 0 Then ' Tableau_Dossier(ligne + 1, colonne + 1) = Tableau_NomCas(ligne + 1, colonne + 1) ' End If colonne = colonne + 1 Lit_dossier d, niveau, ligne, colonne ligne = ligne + 1 colonne = colonne - 1 Next End Sub
J'étais partis sur la création d'un autre Tableau (Tableau_Dossier) qui m'aurait renvoyer le nom du Tableau_Cas à (n-1). Mais à cause de la récursivité de Lit_Dossier, ça ne fonctionne pas.
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 Sub Arborescence_Final() Dim i As Integer, j As Integer, nbniveau As Integer, nbresultat As Integer nbniveau = 0 nbresultat = 0 j = 0 For i = 1 To 100 If Tableau_NomCas(1, i) <> "" Then nbniveau = nbniveau + 1 End If Next For i = 1 To 100 If Tableau_Adresses(i, nbniveau) <> "" Then nbresultat = nbresultat + 1 End If Next For i = 1 To 100 If Tableau_Dossier(1, i) <> "" Then nbniveau = nbniveau + 1 End If Next For i = 1 To 100 If Tableau_NomCas(i, nbniveau) = "" Then While i + j < 100 And Tableau_NomCas(i + j, nbniveau) = "" j = j + 1 Wend If i + j <= 100 Then Tableau_NomCas(i, nbniveau) = Tableau_NomCas(i + j, nbniveau) Tableau_NomCas(i + j, nbniveau) = "" j = 0 End If End If ' If Tableau_Dossier(i, nbniveau) = "" Then ' While i + j < 100 And Tableau_Dossier(i + j, nbniveau) = "" ' j = j + 1 ' Wend ' If i + j <= 100 Then ' Tableau_Dossier(i, nbniveau) = Tableau_Dossier(i + j, nbniveau) ' Tableau_Dossier(i + j, nbniveau) = "" ' j = 0 ' End If ' End If If Tableau_Adresses(i, nbniveau) = "" Then While i + j < 100 And Tableau_Adresses(i + j, nbniveau) = "" j = j + 1 Wend If i + j <= 100 Then Tableau_Adresses(i, nbniveau) = Tableau_Adresses(i + j, nbniveau) Tableau_Adresses(i + j, nbniveau) = "" j = 0 End If End If Next i ReDim Tableau_Arborescence_Final(1 To nbresultat, 0 To 3) For i = 1 To nbresultat Tableau_Arborescence_Final(i, 3) = Tableau_Adresses(i, nbniveau) + "\data-gen." Worksheets("Feuil1").Cells(i, 4).Value = Tableau_Adresses(i, nbniveau) + "\data-gen." Tableau_Arborescence_Final(i, 2) = Tableau_Adresses(i, nbniveau) + "\resultats." Worksheets("Feuil1").Cells(i, 3).Value = Tableau_Adresses(i, nbniveau) + "\resultats." Tableau_Arborescence_Final(i, 1) = Tableau_NomCas(i, nbniveau) Worksheets("Feuil1").Cells(i, 2).Value = Tableau_NomCas(i, nbniveau) 'Tableau_Arborescence_Final(i, 0) = Tableau_Dossier(i, nbniveau) 'Worksheets("Feuil1").Cells(i, 1).Value = Tableau_Dossier(i, nbniveau) Next i j = 0 End Sub
La personne qui a codé avant moi avec du s'inspirer de ce code car je suis retombé dessus en faisant des recherche sur le sujet.
Il est bien pratique car j'obtiens toute l'arborescence, seulement après je ne sais pas dans quel colonne se trouve les noms de dossier du (n-1) si je doit aller les chercher de manière automatique par la suite.
Si vous avez une piste qui pourrait m'aider, ça me serait fortement utile. Merci
Cordialement
Partager