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