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.
Configuration: Windows XP
Firefox 2.0.0.16

4 réponses

  1. 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
  2. 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
  3. 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
  4. 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