Excel VBA - Réaliser une Consolidation avec une Macro VBA

  • il y a 8 ans
Cette vidéo va vous montrer comment réaliser une consolidation de plusieurs feuilles dans un classeur.

Vous trouverez ci-dessous le code VBA complet avec les commentaires :


'Déclaration des variables au niveau du Module

Dim i As Integer, j As Integer, k As Integer
Dim DerniereLigne As Integer
Dim LastRowConsolidation As Integer


'***************************************************
' Procédure permettant d'effacer les données de
' la consolidation afin d'éviter les doublons
'***************************************************

Sub EffaceConsolidation()

'On se positionne sur la feuille Consolidation
Worksheets("Consolidation").Select
'On sélectionne la plage correspondante aux données à effacer
Rows("6:1000000").Select
'On efface le contenu et la mise en forme
Selection.Clear 'ou Selection.delete shift:=xlUp
'On se repositionne sur le premier enregistrement à copier
Range("A6").Select

End Sub

'****************************************************
' Procédure permettant de réaliser une consolidation
' ou synthèse sur autre feuille.
'****************************************************

Sub Consolider()

'On désactive le raffraichissement de l'écran (scintillement)
Application.ScreenUpdating = False
'On appelle la procédure permettant d'effacer les données
EffaceConsolidation
'On va créer une boucle permettant de lire toutes les feuilles à consolider
'ici nous avons 12 feuilles => Janvier à Décembre

For j = 1 To 12 'on parcours les 12 premières feuilles

'On sélectionne la première feuille
Sheets(j).Select
'On se positionne sur la dernière ligne non vide
DerniereLigne = Range("A1000000").End(xlUp).Row
'On parcours tout le tableau à partir de la ligne pour copier chacune ligne
For i = 6 To DerniereLigne
'On sélectionne la première feuille
Sheets(j).Select
'On sélectionner la première ligne
Rows(i).Select
'On copie la ligne
Selection.Copy
'Où, sur la feuille consolidation, il faut donc la sélectionner
Sheets("Consolidation").Select
'Il faut trouver la dernière ligne non vide de la feuille consolidation
LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1
'On sélectionne la cellule vide et la première colonne
Cells(LastRowConsolidation, 1).Select
'Une fois positionné, on colle les données
ActiveSheet.Paste
Application.CutCopyMode = False

Next i

Next j

'On réactive le raffraichissement de l'écran (scintillement)
Application.ScreenUpdating = True
'On affiche un message qui prévient que la consolidation est terminée
MsgBox "La consolidation est terminée...", vbOKOnly + vbInformation, "Message"

End Sub