Tableau structuré - Requête SQL - Réunir 2 tableaux
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:
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 |