Consolidation de fichiers excel calcul du nombre total de lignes
lati92
-
lati92 -
lati92 -
Bonjour,
j'ai fais une consolidation de 4 classeurs excel vers un classeur excel SYNTHESE via une macro. Celle-ci fonctionne mais j'aimerai ajouter un code VBA pour calculer le nombre total de lignes du classeur SYNTHESE et de s'assurer d'avoir le même résultat lorsque je fais la somme des lignes de tous les fichiers (en code vba). J'aurais du coup de nouvelles variables à ajouter...
Merci d'avance
voici la macro entière (sans le calcul du total de lignes):
Sub Macro1()
'Déclaration des variables
Dim i As Integer
Dim j As Integer
Dim DerniereLigne As Integer
Dim DerniereLigneSynthese As Integer
Dim nbfichiers As Integer
'Stoppe l'actualisation de l'écran. Cela sert à masquer les actions de la macro
Application.ScreenUpdating = False
EffaceDonnees
'Boucle permettant de lire toutes les feuilles à consolider
'Indique le nombre de fichiers à consolider
nbfichiers = 4
For j = 1 To nbfichiers
'Aix Marseille
'Sélectionne la feuille où se trouvent les données
Sheets("Aix Marseille_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Lyon
'Sélectionne la feuille où se trouvent les données
Sheets("Lyon_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Nantes
'Sélectionne la feuille où se trouvent les données
Sheets("Nantes_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Toulouse
'Sélectionne la feuille où se trouvent les données
Sheets("Toulouse_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next j
Application.ScreenUpdating = True
End Sub
j'ai fais une consolidation de 4 classeurs excel vers un classeur excel SYNTHESE via une macro. Celle-ci fonctionne mais j'aimerai ajouter un code VBA pour calculer le nombre total de lignes du classeur SYNTHESE et de s'assurer d'avoir le même résultat lorsque je fais la somme des lignes de tous les fichiers (en code vba). J'aurais du coup de nouvelles variables à ajouter...
Merci d'avance
voici la macro entière (sans le calcul du total de lignes):
Sub Macro1()
'Déclaration des variables
Dim i As Integer
Dim j As Integer
Dim DerniereLigne As Integer
Dim DerniereLigneSynthese As Integer
Dim nbfichiers As Integer
'Stoppe l'actualisation de l'écran. Cela sert à masquer les actions de la macro
Application.ScreenUpdating = False
EffaceDonnees
'Boucle permettant de lire toutes les feuilles à consolider
'Indique le nombre de fichiers à consolider
nbfichiers = 4
For j = 1 To nbfichiers
'Aix Marseille
'Sélectionne la feuille où se trouvent les données
Sheets("Aix Marseille_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Lyon
'Sélectionne la feuille où se trouvent les données
Sheets("Lyon_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Nantes
'Sélectionne la feuille où se trouvent les données
Sheets("Nantes_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Toulouse
'Sélectionne la feuille où se trouvent les données
Sheets("Toulouse_final").Select
'récupère les lignes jusqu'à la dernière ligne non vide
DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:BD" & DerniereLigne).Select
Selection.Copy
'aller sur la feuille SYNTHESE
Sheets("SYNTHESE").Select
'passe à la nouvelle ligne vide pour copier le reste des autres classeurs
DerniereLigneSynthese = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(DerniereLigneSynthese, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next j
Application.ScreenUpdating = True
End Sub
Configuration: Windows / Chrome 75.0.3770.80
A voir également:
- Consolidation de fichiers excel calcul du nombre total de lignes
- Nombre de jours entre deux dates excel - Guide
- Calcul moyenne excel - Guide
- Liste déroulante excel - Guide
- Formule total excel - Guide
- Partage de photos en ligne - Guide
1 réponse
j'ai essayé ce code mais il ne fonctionne pas:
'calcul de la somme des lignes de toutes les feuilles des régions
Set TotAixmarseille = Sheets("Aix Marseille_final").Range("A2:BD" & DerniereLigne)
Set TotLyon = Sheets("Lyon_final").Range("A2:BD" & DerniereLigne)
Set TotNantes = Sheets("Nantes_final").Range("A2:BD" & DerniereLigne)
Set TotToulouse = Sheets("Toulouse_final").Range("A2:BD" & DerniereLigne)
SommeFichiers = Application.WorksheetFunction.Sum(TotAixmarseille, TotLyon, TotNantes, TotToulouse)
MsgBox SommeFichiers
'calcul de la somme des lignes de la feuille SYNTHESE
Set TotSynthese = Sheets("SYNTHESE").Range("A2:BD" & DerniereLigneSynthese)
SommeSynthese = Application.WorksheetFunction.Sum(TotSynthese)
MsgBox SommeSynthese
'calcul de la somme des lignes de toutes les feuilles des régions
Set TotAixmarseille = Sheets("Aix Marseille_final").Range("A2:BD" & DerniereLigne)
Set TotLyon = Sheets("Lyon_final").Range("A2:BD" & DerniereLigne)
Set TotNantes = Sheets("Nantes_final").Range("A2:BD" & DerniereLigne)
Set TotToulouse = Sheets("Toulouse_final").Range("A2:BD" & DerniereLigne)
SommeFichiers = Application.WorksheetFunction.Sum(TotAixmarseille, TotLyon, TotNantes, TotToulouse)
MsgBox SommeFichiers
'calcul de la somme des lignes de la feuille SYNTHESE
Set TotSynthese = Sheets("SYNTHESE").Range("A2:BD" & DerniereLigneSynthese)
SommeSynthese = Application.WorksheetFunction.Sum(TotSynthese)
MsgBox SommeSynthese