[vb-ACCESS]parcourir arborescence

Fermé
isabelle - 22 sept. 2006 à 16:49
 Utilisateur anonyme - 23 sept. 2006 à 14:03
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
A voir également:

1 réponse

Utilisateur anonyme
23 sept. 2006 à 14:03
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