Parcourir tous les sous dossiers

Résolu
fabricioliking Messages postés 79 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 15 mai 2009 - 18 avril 2008 à 10:13
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 - 18 avril 2008 à 11:50
Grâce à cette fonction j'affiche dans un composant list mes sousdossier, Mais je n'arrive pas à trouver et à comprendre pour trouver aussi tout les sous sous dossiers etc.
Si quelqu'un pourais me donner une piste :D


      Dim stRep 'Nom du répertoire à parcourir
        Dim K As Integer
        K = 0
        Set oFSO = CreateObject("Scripting.FileSystemObject")
        stRep = "C:\Documents and Settings\FSD.DOMMIND\Bureau\Source a comparer"
        If oFSO.FolderExists(stRep) Then
        For Each oFld In oFSO.GetFolder(stRep).SubFolders
        List.AddItem oFld.Name, K
        K = K + 1
       
 Next

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 avril 2008 à 11:00
K est inutile

pour ton probleme, te faut faire une fonction récursive ...
en gros ( a adapter)

Set oFSO = CreateObject("Scripting.FileSystemObject")
AjouterDossier "C:\Documents and Settings\FSD.DOMMIND\Bureau\Source a comparer"

private sub AjouterDossier(byref stRep as string
If oFSO.FolderExists(stRep) Then
List.AddItem stRep
For Each oFld In oFSO.GetFolder(stRep).SubFolders
AjouterDosser oFld.FullPath
Next oFld
End If
End Sub


reste que tu utilises FSO, qui, comme son nom l'indique est destiné au Script.


voir :
http://www.vbfrance.com/code.aspx?ID=43640
3
fabricioliking Messages postés 79 Date d'inscription mercredi 30 août 2006 Statut Membre Dernière intervention 15 mai 2009
18 avril 2008 à 11:05
Oui j'en ai trouvé une similaire et je vais aussi regarder la tienne.
Je pensse que je vais m'en sortir merci
0
MasterCent Messages postés 83 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 14 décembre 2011 1
18 avril 2008 à 11:50
Salut,

Pas de problème d'emploi avec FSO ( FileScriotingObject),
Mais tu appelles abusivement ton bout de code "fonction"

' fonction qui lit les sous-dossiers, les ajoute à une liste, et repete le traitement sur ceux-ci.
' usage de la Recursivité
function Parcours  (   List ,  K , objDossier ) 
   
    dim oFld

    For Each oFld In objDossier.SubFolders

        // Ajout à la liste
        List.AddItem oFld.Name, K
        K = K + 1      
   
       // recursivité
       call Parcours  ( List , K ,  oFld )
 
   Next

end function

// lancement ::

Dim List ...
Dim stRep 'Nom du répertoire à parcourir
Dim K As Integer
Dim objFolder

K = 0
Set oFSO = CreateObject("Scripting.FileSystemObject")
stRep = "C:\Documents and Settings\FSD.DOMMIND\Bureau\Source a comparer"
If oFSO.FolderExists(stRep) Then
    set objFolder =  oFSO.GetFolder(stRep)
    call Parcours  (   List ,  K ,  objFolder   )
end if

// A ce stade, List  contient TOUS les sous-dossiers !!!

Enjoy !
 
0
Rejoignez-nous