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

2 réponses

  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