Macro pour consolider les données des feuilles d’un classeur, Excel VBA

Si vous avez rempli plusieurs feuilles de calcul avec des données dans un classeur et souhaitez combiner toutes les données sur une feuille de calcul, insérez une nouvelle table, puis copiez toutes les autres tables dans cette nouvelle table.

 Tableau : Les données ont été enregistrées dans un fichier texte.

Sub copierlesunssouslesautres ()

Dim Kplage As Range

Dim Zplage As Range

With ActiveWorkbook

  .Worksheets.Add Before:=.Worksheets(1)

  For i = 2 To .Worksheets.Count

   Set Kplage = .Worksheets(i).UsedRange

   Set Zplage _

     = Worksheets(1).Cells(Rows.Count, "A").End(xlUp)(2)

   Kplage.Copy Destination:=Zplage

  Next

End With

End Sub

Définissez d’abord deux variables du type de données Range. Insérez ensuite une nouvelle table au début de votre classeur. Configurez maintenant une boucle For Next qui, en commençant par la deuxième table de votre classeur, copie toutes les tables dans la première feuille. Vous enregistrez la zone utilisée pour chaque table dans la zone variable K. Vous enregistrez la position d’insertion de la première table pour les données dans la variable de zone Z. Étant donné que les données doivent être disposées les unes en dessous des autres sur la première feuille, utilisez les propriétés Count et End pour déterminer la dernière cellule occupée de la colonne A. Copiez maintenant la zone source (zone K) avec la méthode Copy et entrez le contenu de la variable comme zone cible Zone  Zplage .

-Total des feuilles du tableau (valeur fixe)

Si vous souhaitez consolider des cellules individuelles de plusieurs feuilles de tableau dans un seul tableau, utilisez la macro .

Sub TotalSurPlusieursFeuillesDeCalcul ()

Dim erg As Long

Dim i As Integer

Dim Ltab As Integer

Ltab = ActiveWorkbook.Sheets.Count

Sheets(Ltab).Activate

Range("B6").Select

For i = 1 To ActiveWorkbook.Sheets.Count – 1

 If IsNumeric(Sheets(i).Range("B6").Value) Then _

 erg = erg + Sheets(i).Range("B6").Value

Next i

Range("B6").Value = erg

End Sub

Tout d’abord, utilisez la méthode Count pour connaître le nombre de tables dans le classeur actif. Activez ensuite la dernière feuille du classeur. Les données sont à consolider sur cette feuille. Configurez ensuite une boucle For Next qui, en commençant par la première feuille de calcul, ajoute la cellule B6 à l’avant-dernière feuille de calcul. Avant de totaliser les cellules individuelles, vous devez utiliser la fonction IsNumeric pour vérifier si la cellule B6 de la feuille de calcul respective contient également une valeur numérique. Si le contrôle réussit, la variable erg est augmentée de la valeur de cellule correspondante. Une fois la boucle terminée, écrivez le résultat de la variable erg dans la cellule B6 de la dernière feuille de calcul.

Total des feuilles du tableau (lien)

Dans l’exemple précédent, vous avez totalisé une cellule spécifique dans plusieurs tableaux d’un classeur. Vous avez ajouté le total sous forme de valeur fixe à la dernière feuille à la fin. Le lien a alors été perdu. Toutefois, si vous souhaitez conserver le lien, démarrez la macro à partir de l’extrait 7.65.

Sub FeuillesDeTableauxDeSommationAvecVerk ()

Dim BArray()

Dim i As Integer

Dim lTab As Integer

Dim s As String

 lTab = ThisWorkbook.Worksheets.Count

 Sheets(lTab).Activate

 ReDim BArray(1 To lTab)

 For i = 1 To lTab – 1

    BArray(i) = Sheets(i).Name & "!B6+"

    s = s & BArray(i)

 Next i

s = "=" & s

s = Left(s, Len(s) – 1)

Range("B2").Value = s

End Sub

Recherchez la dernière feuille du classeur et activez-la. Puisque vous souhaitez conserver les liens dans la cellule cible, vous devez lire les noms des feuilles de tableau individuelles et de la cellule à totaliser dans un tableau. Vous définissez ce tableau avec l’instruction ReDim et le créez dans une taille suffisante pour inclure tous les noms de table dans le classeur. Dans une boucle For Next, vous remplissez le tableau en spécifiant le nom et la cellule de totalisation. Si vous quittez la boucle, vous avez la chaîne de texte suivante:

Janvier! B6 + Février! B6 + Mars! B6 + Avril! B6 + Mai! B6 + Juin! B6 +

Pour que la chaîne de texte soit reconnue comme une formule, vous devez insérer un signe égal au début et supprimer le dernier caractère [+] de la chaîne. Pour ce faire, vous utilisez   l’opérateur de concaténation & et les fonctions de texte Left et Len.

Fusionner/Consolider les feuille en une seule feuille

La solution suivante nécessite que toutes les tables d’un classeur aient la même structure. Votre tâche consiste maintenant à fusionner toutes les tables en une seule table. La macro pour cette tâche se trouve dans la macro suivante:

Sub Consolider ()

   Dim Blatt1 As Worksheet

   Dim i As Integer

   Set Blatt1 = Worksheets(1)

   For i = 2 To Worksheets.Count

     Worksheets(i).UsedRange.Copy Destination:= _

     Blatt1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)

   Next i

End Sub

Vous pouvez utiliser la propriété UsedRange pour déterminer quelle zone de la table est utilisée. Copiez ensuite cette zone à l’aide de la méthode Copy et spécifiez la première table du classeur dans l’argument Destination. Vous obtenez la position d’insertion correcte à l’aide de la propriété End. Avant de faire cela, utilisez l’instruction Rows.Count pour payer les lignes de votre table de sortie qui sont déjà occupées.

Tableau : Tous les tableaux ont été résumés dans un seul tableau.

S’abonner
Notifier de
1 Commentaire
le plus ancien
le plus récent le plus populaire
Inline Feedbacks
Voir tous les commentaires

Bonjour

C’est interessant bien que c’est pas cela que je cherche.
Bien à vous

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

1
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x