VBA : Extraire les noms de dossiers et de répertoires et les lister dans Excel

VBA - Visual Basic for Application

Supposons que l’on n’ait pas beaucoup de dossiers à créer avec VBA et Excel, mais le cas inverse. C’est-à-dire qu’il existe un répertoire avec beaucoup de sous-répertoires sur un disque et que, pour une raison ou une autre, on a besoin de ces sous-répertoires sous forme de liste pour pouvoir les traiter.

Situation de départ : de nombreux sous-répertoires doivent être transférés dans une feuille de calcul Excel

Un cas d’application fictif : on dispose de nombreux documents que l’on doit remettre à quelqu’un ou à une autre entreprise. Ces documents sont structurés dans de nombreux dossiers individuels. On aimerait maintenant documenter la progression et le statut de la remise des documents sous forme de liste Excel. Or, il serait fastidieux et inefficace de taper individuellement chaque nom de dossier dans le tableau Excel. Un tel processus doit être automatisé. La meilleure façon d’y parvenir est d’utiliser VBA. Voici donc la situation de départ.

Capture d'écran avec sous-dossiers et liste Excel
ces dossiers doivent être listés dans le tableau Excel

Macro pour lire les sous-dossiers

Pour lire tous les noms de répertoires, il suffit d’insérer la macro suivante dans l’éditeur Visual Basic.

Option Explicit
Public Sub ListFolder()
Dim objFSO As Object
Dim folder As Object
Dim strPfad As String
Dim subFolder As Object, colSubfolders As Object
Dim i As Integer
    'Remplacez ici le chemin d'accès au répertoire à lire.
    strPfad = "C:\Users\UserName\Desktop\temp\ImageFolder"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set folder = objFSO.GetFolder(strPfad)
    Set colSubfolders = folder.Subfolders
    'définir ici la ligne de départ "1" pour Excel
    i = 1
    For Each subFolder In colSubfolders
        i = i + 1
        Range("A" & i).Value = subFolder.Name
    Next subFolder
    Set folder = Nothing
    Set colSubfolders = Nothing
    Set objFSO = Nothing
End Sub

La macro doit être insérée de préférence dans le tableau correspondant, dans lequel les sous-répertoires doivent être listés. Dans l’exemple, il s’agit du tableau 2. Si l’on ajoute la macro au classeur, il faut encore définir à quel tableau elle se réfère.

Capture d'écran éditeur VBA Excel Macro
Insérer une macro dans le tableau concerné

Il ne reste plus qu’à adapter le chemin du répertoire qui doit être lu et à définir la ligne (variable i) et la colonne (lettre pour Range [A]) par laquelle la cellule doit commencer à saisir les noms de dossiers.

Résultat

Une fois que tout cela est fait, on peut exécuter la macro via le symbole vert Lecture dans l’éditeur VBA ou via les “Outils de développement” (Alt+F8) dans la feuille de calcul Excel.

Pour l’exemple présenté ici, le résultat se présente alors comme dans l’image ci-dessous.

Capture d'écran Explorateur Windows et Excel avec noms de répertoires listés
noms de répertoires listés dans le tableur Excel

Outre la lecture de dossiers, il est possible de lire des pages web entières avec VBA.

Leave a Reply

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