VBA : Comment répertorier les fichiers dans un dossier



Vous pouvez utiliser les méthodes suivantes dans VBA pour répertorier les fichiers dans un dossier :

Méthode 1 : répertorier tous les fichiers du dossier

Sub ListFiles()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    Cells(i + 1, 1) = objFile.Name
    i = i + 1
Next objFile

End Sub

Méthode 2 : répertorier uniquement les fichiers .xlsx dans le dossier

Sub ListFiles()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    If Right(objFile.Name, 4) = "xlsx" Then
        Cells(i + 1, 1) = objFile.Name
        i = i + 1
    End If
Next objFile

End Sub

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec un dossier comportant le chemin de fichier suivant :

  • C:\Utilisateurs\bob\Documents\current_data

Le dossier contient deux fichiers .xlsx et trois fichiers .csv :

Exemple 1 : répertorier tous les fichiers du dossier

Nous pouvons créer la macro suivante pour lister tous les fichiers du dossier :

Sub ListFiles()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    Cells(i + 1, 1) = objFile.Name
    i = i + 1
Next objFile

End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Nous pouvons constater que les noms de tous les fichiers du dossier (quelle que soit leur extension) sont désormais répertoriés dans la colonne A de notre feuille Excel.

Exemple 2 : répertorier uniquement les fichiers .xlsx dans le dossier

Nous pouvons créer la macro suivante pour répertorier uniquement les fichiers qui ont une extension .xlsx dans le dossier :

Sub ListFiles()

Dim i As Integer
Dim oFSO As Object
Dim oFolder As Object
Dim objFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")

Set oFolder = oFSO.GetFolder("C:\Users\bob\Documents\current_data")

For Each objFile In oFolder.Files
    If Right(objFile.Name, 4) = "xlsx" Then
        Cells(i + 1, 1) = objFile.Name
        i = i + 1
    End If
Next objFile

End Sub

Lorsque nous exécutons cette macro, nous recevons le résultat suivant :

Nous pouvons voir que les noms des seuls fichiers avec une extension .xlsx dans le dossier sont désormais répertoriés dans la colonne A de notre feuille Excel.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans VBA :

Comment créer des dossiers à l’aide de VBA
Comment supprimer des dossiers à l’aide de VBA
Comment renommer un fichier à l’aide de VBA
Comment vérifier si le fichier existe à l’aide de VBA

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *