Compiler les données de 3 onglets

Bonjour à tous,
je suis sur Excel 2010
Je dispose d'un fichier comportant de multiples onglets, dont 3 (les 3 premiers) étant des bases avec le même nombre de colonnes (et la même première ligne avec les entêtes de colonnes) mais un nombre de lignes variables. Je dispose également d'un onglet "CONSO" comportant ces mêmes colonnes et entêtes.
Je voudrais consolider cest 3 premiers onglets dans l'onglet "CONSO" pour pouvoir avoir une base et effectuer des TCD dessus.
J'ai bien essayé l'option de TCD qui permet de prendre en 3 onglets en source mais cette option ne permet de moduler le TCD que sur les valeurs de la première ligne et colonne.

j'en déduis donc qu'il me faut compiler les 3 onglets voulus dans l'onglet "CONSO" créé pour l'occasion afin de pouvoir faire un TCD sur cette base complète.
Cependant je voudrais automatiser cette partie afin de ne pas avoir à refaire plusieurs copier-coller à chaque modification d'un des onglets.

Après avoir un peu recherché sur ce sujet, je pense qu'il est nécessaire de faire une macro.

Quelqu'un peut-il m'aider à construire une macro assez simple qui compilerait à la suite les données de ces onglets dans l'onglet "CONSO".
Je suis désolé mais je ne peux pas vraiment vous joindre le fichier pour que vous puissiez travailler dessus car il s'agit de données confidentielles et de plus j'aimerais bien comprende cette macro pour la réexpliquer derrière.

merci d'avance,

7 réponses

  1. Contributeur
    Bonjour

    Quand vous dites compiler les données entendez-vous additionneer les 3 feuilles dans une colonne ou récuppérer les trois informations dans des colonnes différentes
    Il y a conbien de ligne dans votre fichier ?
    0
    1. Merci de l'intérêt,

      En fait je voudrais simplement concaténer les 3 onglets (des bases en quelques sortes) les uns au dessus des autres. Dans l'optique de me créer une "super" base sur laquelle je pourrai travailler avec des TCD.
      Le premier onglet va de A5 à DU1174, le second de A2 à DU94 et le troisième de A2 à DU89. Mais des lignes sont susceptibles d'être rajoutées donc je voudrais que la macro reconnaisse également ce lignes pour les copier dans l'onglet de consolidation.
      Au jour d'aujourd'hui cela me ferait une base de 1170+93+88 lignes, mais cela peut donc bouger.
      0
      1. Contributeur
        Bonjour Jeanne

        Pouvez-vous me donner un fichier modéle anonymisé
        allez sur cjoint.com pour créer un lien que vous copirez dans votre réponse
        Il me faut le nom des feuilles à copier
        le nom du fichier
        le disque sur lequel le fichier est sauvegardé
        le dossier et sous dossier si nescessaire
        pour mettre ces infos dans la macrocommande
        j'espére pouvoir vous aider n'étant pas un spécialiste du VBA
        0
        1. Contributeur
          Bonjour,

          créer une "super" base sur laquelle je pourrai travailler avec des TCD.

          Tes 3 onglets ont-ils une utilité ? Je suppose que oui

          Dans ce cas, il n'est point nécessaire de créer un onglet de regroupement qui va doubler ta taille classeur alors que tu peux très facilement faire un TCD multi-onglets qui te permettra de faire tous les regroupements voulus.

          des lignes sont susceptibles d'être rajoutées

          Il te suffit de nommer tes plages de façon dynamique avec la fonction décaler pour ton TCD s'actualise sans souci.

          Un petit exemple brut de fonderie :

          https://www.cjoint.com/c/CCwj2Urj9xN
          0
          1. Contributeur
            Merci gbinforme pour ce modéle je vais l'étudier pour pouvoir l'utiliser, j'ai testé en mettant de nouvelle lignes et cela se passe bien une fois actualisé
            Encore une fois Merci
            0
        2. Bonjour et merci pour vos réponses,

          PHILOU, je vais essayer de faire un fichier anonyme. Cela va me prendre un peu de temps.

          Gbinform, comme je le disais, j'ai essayé la technique du TCD sur plusieurs onglets mais cela ne convenait pas dans mon cas car ce TCD consolide en fontion de la première colonne et ligne de chaque référence, donc pas possible de lui demander de consolider selon des infos dans d'autres colonnes et repasser certaines en ligne de TCD, ce qui en fait un TCD peu malléable. De plus le TCD sur plusieurs feuilles peut consolider les nombres mais pas les colonnes qui contiennent des infos au format texte ou date.
          On parle ici d'une "super base" qui n'atteindra jamais plus de 2000 lignes donc pas de risque que le fichier devienne si lourd à mon avis.
          0
          1. Contributeur
            Bonjour,

            Dans l'onglet "CONSO" tu mets cette macro et à chaque fois que tu accèdes à cette feuille tes 3 feuilles "Feuil1", "Feuil2", "Feuil3" (à modifier dans la macro avec tes noms propres) sont regroupées et tu mets ton TCD sur une autre feuille.

            Private Sub Worksheet_Activate()
            Dim feu As Integer, lig As Long, nbl As Long, pos As Integer
            Application.ScreenUpdating = False
            Cells.ClearContents: lig = 2
            For feu = 1 To Sheets.Count
                Select Case Sheets(feu).Name   ' noms onglets à regrouper
                    Case "Feuil1"
                        pos = 5
                    Case "Feuil2"
                        pos = 2
                    Case "Feuil3"
                        pos = 2
                    Case Else
                        pos = 0
                End Select
                If pos <> 0 Then
                    With Sheets(feu)
                        nbl = .Cells(.Rows.Count, 1).End(xlUp).Row - pos + 1
                        If [A1] = "" Then .Rows(pos).Copy Destination:=[A1]
                        .Rows(pos + 1).Resize(nbl).Copy Destination:=Rows(lig)
                        lig = lig + nbl - 1
                    End With
                End If
            Next feu
            Application.ScreenUpdating = True
            End Sub
            

            Toujours zen
            La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer. Antoine de Saint-Exupéry
            0
            1. Bonjour,

              Merci pour la réponse je vais essayer cette macro sur mon fichier. Je reviens vers vous pour vous dire ce qu'il en est.

              Merci encore !
              0