[vb-ACCESS]parcourir arborescence

isabelle -  
 Utilisateur anonyme -
bonjour,
Quel code vba (sous access) permettrait de parcourir une arborescence de fichiers à partir d'un repertoire, et enregistrer tous les fichiers de l'arborescence dans une table avec un numero de position (selon son niveau dans l'rborescence) ??

Merci d'avance pour tout indice

Isabelle

1 réponse

  1. Utilisateur anonyme
     
    Bonjour,

    vous avez 2 choix d'objets, soit les objets VBA que je connais
    moins, soit les objets VBS qui sont compatible quelque soit le
    VBA en cause ( Access, Excel, Word, Power... ).

    les objets sont transposable directement sous le VBA d'access !

    si je n'ai pas trop fait d'erreurs, un exemple d'arborescence en VBS est démontré ici :

    Sub Principal()
    
        ' Attention, les variables sont déclaré en type
        ' variant puisque la syntaxe vient d'un VBS.
        Dim oFS As Variant, oLecteur As Variant, oRepertoire As Variant
        Dim Boucle As Variant
        Dim Dossier As Variant
        
        On Error Resume Next
    
        Set oFS = CreateObject("Scripting.FileSystemObject")
        Set oLecteur = oFS.GetDrive("C")
    
        Dossier = InputBox("Entrez le dossier cible du lecteur à lire :", "Saisie du dossier à lire", "\TEMP")    
        If (oLecteur.IsReady) Then
            If (Dossier <> "") Then
                'cteLecture à partir du sous-répertoire cible
                Set oRepertoire = oFS.GetFolder(Lecteur & ":" & Dossier)
                Call ListeFichier(oRepertoire) ' Routine récursive
            Else
                'cteLecture des fichiers dans la racine du lecteur
                If (oLecteur.RootFolder.Files.Count > 0) Then
                    For Each oFichier In oLecteur.RootFolder.Files
                        '... LireDonnees (oFichier)
                    Next
                End If
            
                'cteLecture des sous-répertoires dans le lecteur
                For Each oRepertoire In oLecteur.RootFolder.SubFolders
                     Call ListeFichier(oRepertoire) ' Routine récursive
                Next
            End If
        End If
        Wscript.echo "Fin de traitement :-) "
    
    End Sub
    '
    
    Sub ListeFichier(ByVal oRepertoir As Variant)    ' Routine récursive
    
        Dim oDossier As Variant, oFichier as Variant
    
        On Error Resume Next
    
        If (oRepertoir.Files.Count > 0) Then
            For Each oFichier In oRepertoir.Files
                '...LireDonnees (oFichier)
            Next
        End If
    
        If (oRepertoir.SubFolders.Count > 0) Then
            For Each oDossier In oRepertoir.SubFolders
                Call ListeFichier(oDossier)
            Next
        End If
            
    End Sub
    '
    


    Lupin
    6