Lister fichiers sous vba

Résolu/Fermé
payou70 Messages postés 10 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 18 novembre 2010 - 20 août 2008 à 16:08
payou70 Messages postés 10 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 18 novembre 2010 - 21 août 2008 à 17:57
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
20 août 2008 à 18:39
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 lundi 5 novembre 2007 Statut Membre Dernière intervention 18 novembre 2010
21 août 2008 à 16:13
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
21 août 2008 à 16:49
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 lundi 5 novembre 2007 Statut Membre Dernière intervention 18 novembre 2010
21 août 2008 à 17:57
re

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

Payou.
0