Parcourir tous les fichiers dans un dossier, Excel VBA

Parcourir tous les fichiers dans un dossier, Excel VBA

Voici une explication détaillée sur la façon de parcourir tous les fichiers dans un dossier en utilisant VBA (Visual Basic for Applications) dans Excel. Ce code vous permettra d’accéder à chaque fichier d’un dossier et d’effectuer des opérations dessus.
Problème :
Vous souhaitez parcourir tous les fichiers dans un dossier en utilisant VBA dans Excel. Cela peut être utile pour des tâches telles que traiter des données provenant de plusieurs fichiers, extraire des informations ou effectuer des opérations par lots sur un ensemble de fichiers.
Solution : Parcourir les fichiers dans un dossier
Voici le code complet avec une explication détaillée :

Sub LoopThroughFilesInFolder()
    Dim folderPath As String
    Dim fileName As String
    Dim folder As Object
    Dim file As Object
    Dim fso As Object
    Dim ws As Worksheet
    Dim lastRow As Long
    ' Demande à l'utilisateur de sélectionner un dossier
    folderPath = GetFolderPath()
    If folderPath = "" Then Exit Sub ' Si aucun dossier n'est sélectionné, quitte la procédure
    ' Créer un objet FileSystemObject (FSO) pour manipuler les fichiers
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' Vérifie si le dossier existe
    If Not fso.FolderExists(folderPath) Then
        MsgBox "Le dossier n'existe pas !"
        Exit Sub
    End If
    ' Récupère l'objet du dossier
    Set folder = fso.GetFolder(folderPath)
    ' Créer une nouvelle feuille de calcul pour stocker les résultats (optionnel)
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = "Données des fichiers"
    ' Écrire les en-têtes dans la feuille de calcul
    ws.Cells(1, 1).Value = "Nom du fichier"
    ws.Cells(1, 2).Value = "Taille du fichier (Ko)"
    ws.Cells(1, 3).Value = "Dernière modification"
    ' Initialiser la ligne pour écrire les données
    lastRow = 2
    ' Boucler à travers chaque fichier dans le dossier
    For Each file In folder.Files
        ' Récupérer le nom du fichier
        fileName = file.Name
        ' Récupérer la taille du fichier (en Ko)
        fileSize = file.Size / 1024 ' Convertir la taille en Ko
        ' Récupérer la date de dernière modification du fichier
        lastModified = file.DateLastModified
        ' Écrire les informations du fichier dans la feuille de calcul
        ws.Cells(lastRow, 1).Value = fileName
        ws.Cells(lastRow, 2).Value = fileSize
        ws.Cells(lastRow, 3).Value = lastModified
        ' Passer à la ligne suivante
        lastRow = lastRow + 1
    Next file
    ' Notifier l'utilisateur que l'opération est terminée
    MsgBox "Fichiers traités avec succès !"
End Sub
' Fonction pour demander à l'utilisateur de sélectionner un dossier
Function GetFolderPath() As String
    Dim folderPicker As FileDialog
    Set folderPicker = Application.FileDialog(msoFileDialogFolderPicker)
    folderPicker.Title = "Sélectionner un dossier"
    ' Afficher la boîte de dialogue et récupérer le chemin du dossier
    If folderPicker.Show = -1 Then
        GetFolderPath = folderPicker.SelectedItems(1)
    Else
        GetFolderPath = ""
    End If
End Function

Explication du code :
1. Obtenir le chemin du dossier (fonction GetFolderPath) :

  • Cette fonction ouvre une boîte de dialogue permettant à l’utilisateur de sélectionner un dossier. Si l’utilisateur sélectionne un dossier, le chemin est retourné, sinon une chaîne vide est retournée.
  • FileDialog(msoFileDialogFolderPicker) crée une boîte de dialogue qui permet à l’utilisateur de choisir un dossier.
  • La méthode Show ouvre la boîte de dialogue et, si l’utilisateur sélectionne un dossier (retourne -1), le chemin est retourné.

2. Création de l’objet FileSystemObject (FSO) :

  • CreateObject("Scripting.FileSystemObject") crée une instance de l’objet FileSystemObject. Cet objet permet de manipuler facilement les fichiers et les dossiers.
  • Nous l’utilisons pour obtenir des informations sur les fichiers dans le dossier (comme la taille, le nom et la date de la dernière modification).

3. Vérification de l’existence du dossier :

  • fso.FolderExists(folderPath) vérifie si le dossier spécifié existe. Si ce n’est pas le cas, une boîte de message s’affiche et la procédure s’arrête.

4. Accès aux fichiers dans le dossier :

    • Set folder = fso.GetFolder(folderPath) récupère l’objet du dossier.
    • For Each file In folder.Files boucle à travers chaque fichier du dossier.
    • Pour chaque fichier, le code récupère :
      • Le nom du fichier (file.Name) : Le nom du fichier.
      • La taille du fichier (file.Size / 1024) : La taille du fichier en Ko (en bytes initialement, donc divisé par 1024).
      • La date de dernière modification (file.DateLastModified) : La date et l’heure de la dernière modification du fichier.

5. Écriture des données dans la feuille de calcul :

  • Le code écrit le nom du fichier, la taille et la date de la dernière modification dans une nouvelle feuille de calcul.
  • ws.Cells(lastRow, 1).Value écrit les données dans la cellule correspondante de la feuille. La variable lastRow est incrémentée après chaque fichier pour que les données s’écrivent sur la ligne suivante.

6. Création d’une nouvelle feuille de calcul :

  • Une nouvelle feuille est ajoutée à l’aide de Set ws = ThisWorkbook.Worksheets.Add. Cette feuille contiendra les informations sur les fichiers.
  • Les en-têtes « Nom du fichier », « Taille du fichier (Ko) » et « Dernière modification » sont écrits dans la première ligne de la feuille.

7. Message de fin :

  • Une fois la boucle terminée, le code affiche une boîte de message pour informer l’utilisateur que les fichiers ont été traités avec succès.

Utilisations pratiques :

  • Opérations par lots sur des fichiers : Vous pouvez modifier ce script pour effectuer des opérations sur chaque fichier, par exemple, les ouvrir, extraire des données ou les copier.
  • Audits de fichiers : Utilisez ce code pour lister les fichiers, leurs tailles et leurs dates de dernière modification à des fins d’audit.
  • Collecte de données : Rassemblez des métadonnées sur les fichiers dans un répertoire et utilisez-les pour l’analyse ou les rapports.

Modification du code :

    • Effectuer des opérations sur les fichiers : Vous pouvez modifier la boucle pour effectuer des opérations spécifiques sur chaque fichier, comme l’ouvrir, extraire des données ou copier le fichier.
    • Filtrer les fichiers : Pour ne traiter que certains types de fichiers (par exemple, uniquement les fichiers .xls), vous pouvez ajouter une condition dans la boucle, comme ceci :
If fso.GetExtensionName(file.Name) = "xls" Then
    ' Effectuer des actions sur les fichiers Excel uniquement
End If

Ce code vous donne une base solide pour commencer à parcourir les fichiers dans un dossier avec VBA !

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x