Comment combiner plusieurs classeurs Excel via VBA ?
Pour combiner plusieurs classeurs Excel, vous devez utiliser un code qui peut vous permettre de choisir les fichiers que vous souhaitez combiner ou vous pouvez vous référer à un emplacement de chemin particulier et combiner tous les fichiers Excel dans le classeur en cours.
VBA combiner plusieurs classeurs
Vous pouvez utiliser le code suivant qui utilise l’emplacement que j’ai mentionné dans la variable path (un dossier du bureau de mon système).
Dim Path As String
Dim Filename As String
Dim Sheet As Worksheet
Path = "C:UsersDellDesktopsample-data"
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Étapes pour combiner des fichiers Excel à l’aide de VBA
- Ouvrez l’éditeur Visual Basic (assurez-vous d’activer l’onglet développeur si vous l’avez déjà sur le ruban).
- Après cela, localisez le classeur actuel à partir de la fenêtre du projet (contrôle + r) et insérez-y un nouveau module.
- Vous aurez une fenêtre de code dans le module (double-cliquez dessus) où vous devrez coller le code que vous avez (tel quel).
- À partir de là, vous devez modifier la valeur de la variable de chemin avec l’emplacement du dossier dans lequel se trouvent tous les fichiers Excel que vous souhaitez combiner.
- À la fin, exécutez le code et vous obtenez toutes les feuilles de calcul du classeur dans le fichier actuel.
Liens utiles : Exécuter une macro – Enregistreur de macros – Visual Basic Editor – Manuel de macros personnelles
Ce code ouvre chaque fichier un par un et copie chaque feuille de calcul une par une et la colle dans le fichier actuel avec le même nom. Voici le même code mais avec la mise à jour de l’écran false au début pour tout exécuter au niveau du backend.
Dim Path As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
Path = "C:UsersDellDesktopsample-data"
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Remarque : Si vous souhaitez apprendre à combiner les données de plusieurs classeurs dans un seul tableau , assurez-vous de consulter ce guide .