Médiaforma

VBA Excel – Lister les fichiers contenus dans un dossier

Partagez cet article sur vos réseaux

Cet article va vous montrer comment lister les fichiers contenus dans un dossier quelconque dans une feuille de calcul. Ici, les fichiers seront listés dans les cellules de la colonne A de la feuille de calcul Feuil1.

Pour cela, nous utiliserons la fonction Dir() pour parcourir le dossier :

Dim Fichier As String

Fichier = Dir("chemin")

chemin représente le chemin du dossier à examiner. Par exemple c:\dossier\sous-dossier\.

Si nécessaire, vous pouvez préciser le modèle des fichiers recherchés à la suite du chemin. Par exemple, c:\dossier\sous-dossier\*.docx recherchera les fichiers d’extension docx dans le dossier c:\dossier\sous-dossier.

Voici le code utilisé :

Dim Dossier As String, Fichier As String, i As Integer

Dossier = "C:\data\encours\"

i = 0

Fichier = Dir(Dossier)

Do While Fichier <> ""

  i = i + 1

  Sheets("Feuil1").Range("A" & i) = Fichier

  Fichier = Dir

Loop

La première ligne définit les variables utilisées dans le programme.

Dim Dossier As String, Fichier As String, i As Integer

La deuxième ligne affecte le dossier dont on désire lister les fichiers à la variable Dossier :

Dossier = "C:\data\encours\"

La troisième ligne initialise la variable compteur qui sera utilisée pour copier le nom des fichiers dans la feuille de calcul :

i = 0

La quatrième ligne utilise la fonction Dir() pour rechercher les fichiers dans le dossier spécifié en argument :

Fichier = Dir(Dossier)

Une boucle Do While parcourt les fichiers listés dans la variable Fichier jusqu’au dernier :

Do While Fichier <> ""

La variable compteur est incrémentée, puis le nom du fichier courant est copié dans la cellule de colonne A et de ligne i :

  i = i + 1

  Sheets("Feuil1").Range("A" & i) = Fichier

Pour passer au fichier suivant, il suffit d’affecter la fonction Dir à la variable Fichier :

  Fichier = Dir

Loop

Voici un exemple d’exécution :

 
Commentaires

Bonjour, je voudrai un renseignement, j’espère que je poste bien au bon endroit, si ce n’est pas le cas je m’en excuse..

J’ai un projet à réaliser dans le cadre de mon travail, qui nécessite entre autre de lister l’ensemble des fichiers Excel contenus dans un dossier. Je débute dans VBA mais je suis un peu familier avec la programmation, donc ce qui me fait défaut est sûrement la syntaxe en grande partie.

Mon problème est le suivant: je me suis inspiré (grandement) de votre tutoriel pour récupérer les noms des fichiers et les enregistrer dans A1, A2, …

Il me semble que la syntaxe est correcte, mais lorsque je tente l’exécution, rien ne se produit. Ni message d’erreur, ni écriture des noms de fichiers dans les cases souhaitées.

J’ai évidemment fait plusieurs recherches sur le net pour en savoir plus mais n’ai rien trouvé qui puisse m’aider..

Le code ressemble à ça:
Sub fileList()
Dim folder As String, file As String
Dim i As Integer

folder = « \\svm-docs\utilisateurs\j.coury\Desktop\Docs\Entretiens Professionnels »

i = 0

file = Dir(folder)

Do While file «  »

i = i + 1

Sheets(« Feuil1 »).Range(« A » & i) = file

file = Dir

Loop
End Sub

Si quelqu’un a des renseignements ou des corrections à m’apporte, merci d’avance.

Votre Do While me semble mauvais : je ne vois pas le signe pour différent (!= en C).

Vous sortez donc de votre while sans rentrer dans la boucle de traitement.

Bonjour Charly et Laurent,

Je vous suggère de copier coller le code qui se trouve dans l’article dans un module VBA et d’adapter le dossier à votre propre dossier.
Je viens de vérifier ce code dans Excel 2019 et … il fonctionne.

Bonjour la teame,

C’est super et sa marche bien.

Merci pour le partage.

Toujours mettre \ à la fin du nom de ton répertoire

Bonjour, merci pour cette macro. Il y a-t-il possibilité de lister les PDF verrouillés par un mode passe? J’en ai, parmi 9000 fichiers, certains qui sont bloqués. Le but étant de les lister et non de les déverrouiller. Merci, bonne journée.

Salut la famille! J’ai vraiment besoin de vos soutiens. Il y a plusieurs fichiers Excel enregistrés dans un dossier. Ces comportent des noms et un nom peut se retrouver dans plusieurs fichiers. Il m’a été demandé de faire une macro qui permettra à l’utilisateur de saisir un nom. ce nom sera recherché dans tous les fichiers du dossier et le résultat sera affiché ensuite sur un classeur Excel. Si quelqu’un a une fois été confronté, j’ai vraiment besoin de son soutien

Merci pour cette précision qui m’a été super utile !

Bonjour, pour un dossier avec une liste de fichier très longue (+ de 100 000 fichiers ) la macro sarrète a la ligne 32767. Avec en message d’erreur : erreur execution 6 depassement de capacité. Il y’a a t’il une solution ?
Par avance merci.

Charles Delouvroy

Merci. le code aurait pu me dépanner, mais , bien qu’il compile , la fonction dir(dossier) ne renvoie pas de valeur dans ma macro excel, hm ..

Bonjour hm
Quelle valeur pour la variable dossier?
Dans l exemple Dossier = « C:\data\encours\ »
Dans ton cas?
Merci
Ps possible que le sujet soit réglé non?

réponse à Ant
Bonjour
la variable i doit être modifiée car integer est une variable numérique = Nombre entier de -32768 à 32767.
Il faut la passer en Long comme ceci :
Dim i As Long

Laissez un commentaire