Lorsque vous travaillez avec des sources de données variées, vous pouvez souvent avoir du mal à compiler plusieurs classeurs et feuilles de calcul avant d'arriver à un élément de données final. Imaginez une situation où vous avez quelques centaines de classeurs à combiner avant même de pouvoir commencer votre journée.

Personne ne veut passer des heures interminables à travailler sur différentes sources, à ouvrir chaque classeur, à copier et coller les données de différentes feuilles, avant de finalement créer un classeur consolidé. Et si une macro VBA pouvait le faire pour vous ?

Avec ce guide, vous pouvez créer votre propre code de macro Excel VBA pour consolider plusieurs classeurs, le tout en quelques minutes (si les fichiers de données sont nombreux).

Pré-requis pour créer votre propre code de macro VBA

Vous avez besoin d'un classeur pour héberger le code VBA, tandis que les autres classeurs de données source sont séparés. De plus, créez un classeur Consolidé pour stocker les données consolidées de tous vos classeurs.

instagram viewer

Créer un dossier Consolidation à votre emplacement préféré pour stocker tous vos classeurs source. Lorsque la macro s'exécute, elle bascule entre chaque classeur stocké dans ce dossier, copie le contenu de différentes feuilles et le place dans le classeur consolidé.

Créer votre propre code Excel VBA

Une fois les pré-requis éliminés, il est temps de se plonger dans le code et de commencer à pirater les bases pour l'adapter à vos besoins.

En rapport: Fonctionnalités avancées de Microsoft Excel que vous devez connaître

appuyez sur la Alt+F11 sur Excel pour ouvrir l'éditeur de code de macro VBA. Collez le code écrit ci-dessous et enregistrez le fichier en tant que classeur compatible avec les macros (.xlsm extension).

Sous-fichiers ouverts()

'déclarer les variables utilisées dans le code VBA

Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long

'désactiver ces fonctions pour améliorer le traitement du code

Avec application
.DisplayAlerts = Faux
.ScreenUpdating = Faux
Terminer par

'changer le chemin du dossier où vos fichiers vont être enregistrés

MyFolder = InputBox("Entrez le chemin du dossier de consolidation") & "\"

'définir la référence du dossier dans une variable macro

MonFichier = Dir (MonDossier)

'ouvre une boucle pour parcourir chaque classeur individuel stocké dans le dossier

Faire pendant que Len (MyFile) > 0

'activer le classeur de consolidation

Windows("Consolidation").Activer

'calculer la dernière ligne remplie

Plage("a1048576").Sélectionnez
Sélection. Fin (xlUp).Sélectionnez
Cellule active. Décalage (1, 0).Sélectionnez

'ouvre le premier classeur dans le dossier Consolidation

Cahiers d'exercices. Ouvrir le nom du fichier: = MonDossier et MonFichier

Windows (MonFichier).Activer

'passer en revue chaque feuille dans les classeurs pour copier les données

Dim ws As Feuille de calcul
Pour chaque ws dans les feuilles

ws. Activer
ws. AutoFilterMode = False

'ignorer l'en-tête et copier les données de la ligne 2
Si Cellules (2, 1) = "" Alors GoTo 1

Aller à 10

1: Suivant

10: Plage ("a2:az20000").Copier

Windows("Consolidation").Activer

'coller le contenu copié

Feuille active. Pâte

Windows (MonFichier).Activer

'ferme le classeur ouvert une fois les données collées

Cahier de travail actif. Fermer

'vide le cache pour stocker la valeur du prochain classeur

MonFichier = Dir()

'ouvre le fichier suivant dans le dossier

Boucler

'activer les fonctions désactivées pour une utilisation future

Avec application
.DisplayAlerts = True
.ScreenUpdating = True
Terminer par

Fin du sous-marin

Le code VBA expliqué

La première partie du code définit une sous-routine, qui contient tout votre code VBA. Définir le sous-programme avec sous, suivi du nom du code. Le sous-nom peut être n'importe quoi; idéalement, vous devriez conserver un nom correspondant au code que vous êtes sur le point d'écrire.

En rapport: Sites Web et blogs pour apprendre des trucs et astuces Excel

Excel VBA comprend les variables créées par l'utilisateur et leurs types de données correspondants déclarés avec faible (dimension).

Pour améliorer la vitesse de traitement de votre code, vous pouvez désactiver la mise à jour de l'écran et supprimer toutes les alertes, car cela ralentit l'exécution du code.

L'utilisateur sera invité à indiquer le chemin du dossier dans lequel les fichiers de données sont stockés. Une boucle est créée pour ouvrir chaque classeur stocké dans le dossier, copier les données de chaque feuille et les ajouter au Consolidation classeur.

Le classeur de consolidation est activé afin qu'Excel VBA puisse calculer la dernière ligne remplie. La dernière cellule de la feuille de calcul est sélectionnée et la dernière ligne est calculée dans le classeur à l'aide de la fonction de décalage. Ceci est très utile lorsque la macro commence à ajouter des données à partir des fichiers source.

Lorsque la boucle ouvre le premier fichier source, les filtres sont supprimés de chaque feuille (s'ils existent), et les données allant de A2 à AZ20000 seront copiées et collées dans la Consolidation classeur.

Le processus est répété jusqu'à ce que toutes les feuilles de classeur soient ajoutées dans le classeur principal.

En rapport: Meilleurs cours en ligne pour maîtriser Excel avancé

Enfin, le fichier source est fermé une fois toutes les données collées. Le classeur suivant est ouvert afin que la macro VBA puisse répéter les mêmes étapes pour le prochain ensemble de fichiers.

La boucle est codée pour s'exécuter jusqu'à ce que tous les fichiers soient automatiquement mis à jour dans le classeur principal.

Personnalisations basées sur l'utilisateur

Parfois, vous ne voulez pas vous soucier des invites intégrées, surtout si vous êtes l'utilisateur final. Si vous préférez coder en dur le chemin du dossier Consolidation dans le code, vous pouvez modifier cette partie du code :

MyFolder = InputBox("Entrez le chemin du dossier de consolidation") & "\"

À:

MonDossier = "Chemin du dossier" & "\"

De plus, vous pouvez également modifier les références de colonne, car l'étape n'est pas incluse dans ce code. Remplacez simplement la référence de la colonne de fin par votre dernière valeur de colonne renseignée (AZ, dans ce cas). Vous devez vous rappeler que la dernière ligne remplie est calculée via le code de macro, vous devez donc uniquement modifier la référence de la colonne.

Pour tirer le meilleur parti de cette macro, vous ne pouvez l'utiliser que pour consolider des classeurs dans le même format. Si les structures sont différentes, vous ne pouvez pas utiliser cette macro VBA.

Consolidation de plusieurs classeurs à l'aide de la macro Excel VBA

Créer et modifier un code Excel VBA est relativement facile, surtout si vous comprenez certaines des nuances du code. VBA parcourt systématiquement chaque ligne de code et l'exécute ligne par ligne.

Si vous apportez des modifications au code, vous devez vous assurer de ne pas modifier l'ordre des codes, car cela perturberait l'exécution du code.

5 macros Microsoft Excel sympas pour trier les données

Facilitez la gestion des données avec ces macros Excel.

Lire la suite

PartagerTweeterE-mail
Rubriques connexes
  • La programmation
  • La programmation
  • Microsoft Excel
A propos de l'auteur
Gaurav Siyal (19 articles publiés)

Gaurav Siyal a deux ans d'expérience en rédaction, écrivant pour une série d'entreprises de marketing numérique et de documents sur le cycle de vie des logiciels.

Plus de Gaurav Siyal

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner