Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

concaténation de tableaux structuré


Sujet :

Excel

  1. #1
    Expert confirmé
    concaténation de tableaux structuré
    Bonjour,

    J'ai deux tableaux structurés qui me servent a faire des liste, les deux ne contiennent qu'un seul champ (ID), j'aimerais avoir un troisième tableau reprenant directement (ou en léger différé: lancement d'une macro a chaque sauvegarde / fermeture du classeur) l'ensemble des données des tableaux précédents.
    Pour l'instant ce que je fait c'est que je supprime tout puis je copie colle toutes les valeurs mais je me demande si il n'y a pas plus élégant comme solution.
    De ce que j'ai compris sur d'autres fils PowerQuery permettrait de le faire, mais je ne peux l'utiliser.
    Voilà, si quelqu'un à une idée, je suis preneur.

    Merci d'avance.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  2. #2
    Expert éminent
    Bonjour,

    cette procédure supprime les données du troisième tableau (s'il y en a), puis rappatrie les données des deux premiers tableaux.

    A toi de voir ensuite où l'appeler en fonction de l'évènement déclencheur souhaité

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub UnionTablo()
    Dim Tablo1 As ListObject, Tablo2 As ListObject, Tablo3 As ListObject
        With ThisWorkbook
            Set Tablo1 = .Worksheets("Feuil1").ListObjects("TABLO1")
            Set Tablo2 = .Worksheets("Feuil2").ListObjects("TABLO2")
            Set Tablo3 = .Worksheets("Feuil3").ListObjects("TABLO3")
        End With
     
        With Tablo3
            On Error Resume Next
                .DataBodyRange.Delete
            On Error GoTo 0
            With .Parent
                Tablo1.DataBodyRange.Copy .Cells(.Rows.Count, 1).End(xlUp)
                Tablo2.DataBodyRange.Copy .Cells(.Rows.Count, 1).End(xlUp)(2)
            End With
        End With
    End Sub

  3. #3
    Rédacteur

    Bonjour Joe,
    Plutôt qu'un On Error pour supprimer les données du tableau, j'écrirais If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete et il faut faire attention que la ligne des totaux ne soit pas affichée propriété ShowTotals).
    Voir exemple dans ce billet Copier une table structurée sur une autre à l’aide de la méthode Copy
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  4. #4
    Expert éminent
    Bonjour Philippe,

    oui tu as entièrement raison. Mauvaise habitude de ma part

  5. #5
    Expert confirmé
    Merci Joe.levrai pour le code, ça ressemble a ce que j'avais fait mais en mieux écrit.
    Et merci aussi Philippe Tulliez pour la remarque sur le total la suppression du on error.

    J'en déduis qu'en fait il n'y avait pas plus simple
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

###raw>template_hook.ano_emploi###