XL 2016 Comment compiler 3 tableaux dynamiques et 1

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

scoubidou35

XLDnaute Occasionnel
Bonjour à tous,

J'ai trois tableaux dynamiques (colonne A,C et E) et j'ai besoin pour un TCD que les 3 tableaux soient compilés en un seul comme dans mon fichier.
Sauf que j'ai fais un copier/coller des listes et donc mon nouveau tableau n'est plus dynamique or j'aimerai que si l'un des tableaux évoluent (rajout ou suppression de lignes) que le nouveau tableau se mettent à jour automatiquement et je ne vois pas comment procéder.

Je reste bien évidemment disponible pour des info complémentaires.

Merci
 

Pièces jointes

Solution
Bonjour scoubidou35,

Voyez le fichier joint et la macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resu(), n As Byte, tablo, titre$, i&, x$, j&
ReDim resu(1 To Rows.Count, 1 To 2)
For n = 1 To 3
    tablo = ListObjects(n).Range 'matrice, plus rapide
    titre = tablo(1, 1)
    For i = 2 To UBound(tablo)
        x = Trim(tablo(i, 1))
        If x <> "" Then j = j + 1: resu(j, 1) = titre: resu(j, 2) = x
Next i, n
'---restitution---
Application.EnableEvents = False 'désactive les évènements
With ListObjects(4).Range
    If j Then .Cells(2, 1).Resize(j, 2) = resu Else .Rows(2).ClearContents
    On Error Resume Next
    .Rows(j + 2).Resize(.Rows.Count - j - 1).Delete xlUp 'RAZ en dessous...
Bonjour scoubidou35,

Voyez le fichier joint et la macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resu(), n As Byte, tablo, titre$, i&, x$, j&
ReDim resu(1 To Rows.Count, 1 To 2)
For n = 1 To 3
    tablo = ListObjects(n).Range 'matrice, plus rapide
    titre = tablo(1, 1)
    For i = 2 To UBound(tablo)
        x = Trim(tablo(i, 1))
        If x <> "" Then j = j + 1: resu(j, 1) = titre: resu(j, 2) = x
Next i, n
'---restitution---
Application.EnableEvents = False 'désactive les évènements
With ListObjects(4).Range
    If j Then .Cells(2, 1).Resize(j, 2) = resu Else .Rows(2).ClearContents
    On Error Resume Next
    .Rows(j + 2).Resize(.Rows.Count - j - 1).Delete xlUp 'RAZ en dessous
    .EntireColumn.AutoFit 'ajustement largeurs
End With
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

A+
 

Pièces jointes

Dernière édition:
Bonsoir job75
Merci pour votre travail c'est bien ce que je souhaite
j'ai modifié le code en enlevant :
If x <> "" Then car j'ai besoin des cases vides

Par contre comment je peux modifier l'emplacement du tableau compilé car j'aimerai qu'il n'y ait qu'une seul colonne entre mes tableaux et le tableau compilé. Car j'ai d'autres tableau après avec des codifications utilisés dans le fichier

Merci encore
 
Si désolé job75 j'ai oublié de réactualiser mon post j'avais un problème lorsque je rentrai de nouvelles données je me retrouvai avec un nouveau tableau compilé à jour mais qui écrasait mes autres tables. Mais je pense avoir trouvé la solution mais j'arrête pour aujourd'hui je suis HS.
Merci beaucoup pour l'aide et bonne nuit.
 
Bonjour à tous,
Merci à Job75 et Roblochon pour leurs propositions. Les deux donnent exactement ce que je demandais.
Maintenant faut voir si l'un est plus avantageux que l'autre lorsque que l'on travaille de gros fichier (temps d'exécution par exemple).
Merci encore. Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
216
Réponses
1
Affichages
455
Réponses
7
Affichages
696
Retour