Parcourir des repertoires et sous repertoires sous excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 589 fois - Téléchargée 18 fois

Contenu du snippet

J'ai parcouru ce site et bien d'autre pour trouver un code "simple" et compréhensible (vu mon niveau;) pour parcourir un repertoire, sous repertoire, etc... afin de récuperer les fichiers.

j'ai fait cela en qq lignes. N hesitez pas a faire vos commentaires.

il faut modifier le path initial dans GetListFile puis lancer la procédure.
Liste mise dans la premiere feuille du classeur (je n'ai pas traité le cas ou nb file> 65000)

Source / Exemple :


Sub GetListFile()

Dim MyPath As String
Dim ListFolder(1000) As String
Dim i As Integer
Dim j As Integer
Dim CurrentListFolder  As Integer

    ListFolder(1) = "c:\temp\"
    j = 1
    ' clean sheet
    Cells.Select
    Selection.ClearContents
    Range("A1").Select
    
    CurrentListFolder = 1
    i = 2
    Do Until i = CurrentListFolder
        ScanFolder ListFolder(CurrentListFolder), i, j, ListFolder
        CurrentListFolder = CurrentListFolder + 1
    Loop
    
End Sub

Sub ScanFolder(MyPath As String, ByRef i As Integer, ByRef j As Integer, ByRef ListFolder() As String)
Dim SubFolder As String
    
    SubFolder = Dir(MyPath, vbDirectory)
    Do While SubFolder <> ""    ' Commence la boucle.
        If SubFolder <> "." And SubFolder <> ".." Then
            If (GetAttr(MyPath & SubFolder) And vbDirectory) = vbDirectory Then
                ListFolder(i) = MyPath & SubFolder & "\"
                i = i + 1
            Else
                Sheets(1).Cells(j, 1) = MyPath
                Sheets(1).Cells(j, 2) = SubFolder
                j = j + 1
            End If
        End If
        SubFolder = Dir   ' Extrait l'entrée suivante.
    Loop
End Sub

A voir également

Ajouter un commentaire

Commentaire

NHenry
Messages postés
14590
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 novembre 2019
136 -
Bonjour,

Ton code me semble perfectionnable pour plusieurs raisons :
- Ton tableau est limité à 1000 éléments, que se passe-t-il si tu dépasse ?
Je te conseil d'utiliser plutôt l'objet Collection.
De plus cela te permettre de faire une pile/file des dossier à scanner.

-Beaucoup trop de variables publiques, avec une Collection, tu en aurais nettement moins (voire aucune).

- Les variables globales, évites de les nommer en une seule lettre, ça ne facilite pas la lecture.

Sinon, il y a une autre méthode, ma méthode récursive, c'est plus simple que ta proposition.
Regardes plutôt de ce coté.

Bonne programmation.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.