Lister fichiers sous vba

Résolu
payou70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
payou70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis sous excel 2003 et je voudrais faire une macro vba qui enregistre tous les fichiers présents dans un dossier (c:\Divers) dans une liste appelée ListeFichiers.

Merci pour votre aide.

Payou.
A voir également:

4 réponses

Utilisateur anonyme
 
Bonjour,

Exemple type :

Option Explicit
'

Const cteRepertoire = "C:\Divers\"
Const cteExcel = ".xls"
'

Sub ParcoursDossier()
    
    Dim varFichier As Variant, ListeFichiers As String
    
    ListeFichiers = ""
    varFichier = Dir(cteRepertoire & "*" & cteExcel, vbDirectory)
    Do While varFichier <> ""
        If ((varFichier <> ".") And (varFichier <> "..")) Then
            If Not ((GetAttr(cteRepertoire & varFichier) And vbDirectory) = vbDirectory) Then
                ListeFichiers = ListeFichiers & vbLf & varFichier
            End If
        End If
        varFichier = Dir
    Loop
    MsgBox ListeFichiers
    
End Sub
'

Lupin
1
payou70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Lupin pour cette réponse, ça marche nickel.

Par contre j'ai essayé de comprendre comment marche ton code et il y 2 ligne de test IF dont je ne vois pas quelle est leur rôle :

If ((varFichier <> ".") And (varFichier <> "..")) Then

et

If Not ((GetAttr(cteRepertoire & varFichier) And vbDirectory) = vbDirectory) Then

Peut-tu me dire à quoi elle serve stp.

Merci.

Payou.
0
Utilisateur anonyme
 
re :

La première ligne :

If ((varFichier <> ".") And (varFichier <> "..")) Then

Outre la racine d'un disque virtuel, logique ou physique, lorsque l'on crée un dossier quelconque
2 "pseudo sous-dossier" sont créé par le systèeme de fichier. Ceux-ci sont en fait l'équivalent
d'une table des matières du sous-dossier créé. La ligne sert donc à les exclure de la liste.


La seconde ligne :

If Not ((GetAttr(cteRepertoire & varFichier) And vbDirectory) = vbDirectory) Then

GetAttr(cteRepertoire & varFichier) => Prend l'attribut de l'élément ciblé

And vbDirectory => Effectue un ET logique avec attribut Dossier (i.e. répertoire) est-ce un dossier ?

Si condition est non : If Not ((GetAttr(cteRepertoire & varFichier) And vbDirectory) = vbDirectory) Then
(i.e. si n'est pas un dossier).

Le but étant d'être absolument sur d'avoir uniquement la liste des fichiers.

Lupin
0
payou70 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
re

Merci pour ces explications, ton code est maintenant limpide pour moi.

Payou.
0