PaliSkill
Introduction au VBA

Leçon 5 / 6 — Chapitre 5: UserForm, fichiers et organisation du code

Parcourir un dossier avec Dir()

Une macro qui doit traiter tous les fichiers d'un dossier (les importer, les renommer, vérifier leur présence) a besoin de lister ces fichiers par code, sans savoir à l'avance combien il y en a ni leurs noms exacts. La fonction Dir() répond à ce besoin.

Le fonctionnement particulier de Dir()

Sub ListerFichiers()
    Dim nomFichier As String
    nomFichier = Dir("C:\Data\")

    Do While nomFichier <> ""
        Debug.Print nomFichier
        nomFichier = Dir()
    Loop
End Sub

Le PREMIER appel, Dir("C:\Data\"), précise le dossier à explorer et renvoie le nom du premier fichier trouvé. Chaque appel SUIVANT, Dir() SANS AUCUN ARGUMENT, renvoie le nom du fichier suivant dans ce même dossier — VBA se souvient en interne d'où il en était. Quand il n'y a plus de fichier à renvoyer, Dir() renvoie une chaîne vide "", ce qui arrête la boucle Do While.

Filtrer par type de fichier

nomFichier = Dir("C:\Data\*.xlsx")

Le caractère * agit comme un joker : cet appel ne renvoie que les fichiers dont le nom se termine par .xlsx, en ignorant les autres.

Exemple concret : un dossier reçoit chaque jour plusieurs fichiers d'export au format CSV, avec un nom différent à chaque fois. Une macro utilisant Dir() parcourt le dossier, ouvre chaque fichier CSV trouvé, en extrait les données utiles, puis passe au suivant — sans jamais avoir besoin de connaître les noms de fichiers à l'avance.

À vous de jouer : dans vos propres mots, expliquez pourquoi le premier appel à Dir() prend un argument (le chemin du dossier) alors que les appels suivants, dans la boucle, s'écrivent Dir() sans aucun argument. Que se passerait-il si chaque appel dans la boucle réutilisait le chemin complet ?

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 76 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès