Bonjour,

Dans une feuille de mon classeur, j'ai un tableau structuré issu d'une connexion SQL (Commandes mises en production)

Dans le même classeur, j'ai une deuxième feuille contenant un deuxième tableau structuré issu d'une autre connexion SQL (Nouvelles commandes)

Les 2 tableaux ont les mêmes entêtes de colonne avec plus ou moins de lignes

Comment copier-coller toutes les lignes de ces 2 tableaux dans un seul ?

Le but est de pouvoir effectuer une analyse dans le tableau structuré en utilisant les filtres ou via un tableau croisé dynamique

Bien sûr, la mise à jour doit se faire en un clic ou lors de l'actualisation de toutes les sources du classeur

Ci-dessous une macro vite faite qui fait le travail, mais il doit y avoir plus simple

Je vous remercie
Philippe

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
19
20
21
22
23
24
25
26
27
28
29
30
31
Option Explicit
Sub Fusion_TS()
Application.ScreenUpdating = False
Dim NB_Lignes_TS_Fusion As Long
    Boutons_Fonctions.Bouton_Tout_Afficher
    '!!!!!!! IMPORTANT pour que le rafraîchissement puisse se terminer avant que la macro continue
    '!!!!!!! Modifier les paramètres Excel
    '!!!!!!! Sélectionner une cellule dans le tableau des DATA
    '!!!!!!! Sur le ruban Excel sélectionner Données
    '!!!!!!! Propriétés à côté de Actualiser tout
    '!!!!!!! Au bout du nom de la requête cliquer sur le bouton Propriétés de la requête
    '!!!!!!! Enlever la coche dans : Activer l'actualisation en arrière plan
    '!!!!!!! https://www.mrexcel.com/board/threads/excel-vba-refresh-wait.607332/
    ActiveWorkbook.RefreshAll 'Lancer le rafraichissement 
On Error GoTo Suite 'Si le tableau est vide
    [TS_Fusion].ListObject.DataBodyRange.Delete
Suite:
    [TS_PG_Production].ListObject.DataBodyRange.Copy
    Sheets("Fusion").Activate
    If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData 'Enlever les filtres
    Sheets("Fusion").Range("C2").Select
    Sheets("Fusion").Paste
    NB_Lignes_TS_Fusion = Sheets("Fusion").Range("TS_Fusion").ListObject.ListRows.Count + 1
    [TS_PG_Production_ETA].ListObject.DataBodyRange.Copy
    Sheets("Fusion").Range("TS_Fusion").Cells(NB_Lignes_TS_Fusion, 3).Select
    Sheets("Fusion").Paste
    Sheets("TCD").Select
    Sheets("TCD").PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
    MsgBox "Actualisation terminée", vbInformation, "Importation depuis LOOK"
Application.ScreenUpdating = True
End Sub