Affichage de l'arborescence d'un répertoire

Franko -  
 noyon -
J'essaie de coder une recherche qui me permettrait d'afficher tous les sous-répertoires d'un répertoire.

voila mon code

Sub initiate(thePath As String)
Dim MyName As String
' Display the names in C:\ that represent directories.
MyName = Dir(thePath & "\", vbDirectory)
While MyName <> "" ' Start the loop.
If MyName <> "." And MyName <> ".." Then
If (GetAttr(thePath & "\" & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' Display entry only if it
Call initiate(thePath & "\" & MyName, "")
Else
Debug.Print MyName
End If

End If
MyName = Dir ' Get next entry.
Wend

End Sub

Une fonction récursive.

Tout va bien, elle parcoure le contenu du répertoire, et dès qu'un sous-répertoire est détecté, elle se rappelle avec ce sous-répertoire. Le problème, au retour des appels récursifs, la fonction Dir me donne des mots de tête. Elle ne considère pas la logique de la fonction.

Idées???

Merci milles fois
A voir également:

2 réponses

noyon
 
tu peu le faire en graphique stp
1
Dark
 
Cest un script pour effacer les fichiers/dossiers datant de + de 15 jours, sa poura peut etre t'aider

[code]
'on error resume next
'declaration des variables
Dim folder
dim Subfolder
dim path
Dim FSO
Dim B
'instantation du file system object (FSO)
Set FSO = CreateObject("Scripting.FileSystemObject")

'initialisation de la variable contenant le chemin du repertoire racine
path = "D:\test_transit\Transit"

'appel de la fonction recurcive avec comme argument le chemin du repertoire
'racine
recurcive path

function recurcive(chemin) 'fonction récurcive pour traiter tout l'arboresence
'des dossiers

set folder = FSO.GetFolder (chemin) 'utilisation du FSO pour prendre le dossier
'racine
set Subfolder = folder.SubFolders 'definition de la varibale pour les S/dossiers

for each A in Subfolder 'pour chaque dossier dans le sous dossier racine
Set fic = A.Files 'definition de la variables toucher les fichier des dossier

fichier fic 'appel de la fontion fixhier
recurcive A 're-appel de la fonction recurcive pour traiter les S/dossiers
'dossier path
next
end function 'fin de la fonction

function fichier(fic) 'fonction qui traite les fichiers dans les dossiers A

For Each objFile in fic 'pour chaque fichier dans dossiers de fichier
Set f = fso.GetFile(objfile) 'utilisation du FSO pour prendre le fichier
If DateDiff("D", objfile.DateLastModified, now) > 10 Then 'si la derniére modification du fichier est plus ancienne que X jours
'msgbox objfile & " a suprimer" 'alors effacer le fichier avec option de forcer pour les fichier en lecture seule
FSO.DeleteFile f, force = yes
end if 'fin du SI
next

end function 'fin de la fonction

'function dossier(path) 'fonction pour supprimer les dossier vides (taille = 0 )
set folder = FSO.GetFolder (path)'utilisation du FSO pour prendre le dossier
For Each B in folder.subfolders 'pour chaque dossier dans le dossier racine
If B.size = 0 Then 'si la taille du dossier est egal a 0 (donc vide)
'msgbox B & B.size 'effacer le dossier
FSO.DeleteFolder B, force = yes
End If 'fin du SI

Next

'end function 'fin de la fonction

[/code]
0