Tableau de synthèse
Bonjour,
Étant novice sur VBA, je rencontre quelques problèmes pour importer dans une feuille de synthèse des tableaux (provenant de d'autres feuilles) ayant des colonnes identiques mais avec des données différentes.
Pour que cela soit plus simple, j'ai construis un petit exemple en pièce jointe "reportings et synthèse.xls".
Dans cette pièce jointe il y a:
* 1er onglet => reporting maurice
* 2ème onglet => reporting jacques
* 3ème onglet => reporting pierre
* 4ème onglet => synthèse
Il y a plusieurs objectifs pour la synthèse (le 4ème onglet):
* importer uniquement les colonnes A à F à partir de la ligne 6 des 3 premiers onglets
* ne pas importer les lignes vides des 3 premiers onglets
* trier la colonne A (date vente véhicule) par ordre croissant dans l'onglet synthèse
Nb: chaque reporting peut contenir plus de 5000 lignes
J'espère que ma demande est compréhensible.
Cordialement.
Monsach
Bonjour,
Une proposition Power Query (Excel 2016).
Pas de VBA.
Les données ont été mises sous forme de tableaux (dynamiques).
L'actualisation de T_Synthèse s'effectue avec la commande 'Actualiser tout' dans le menu 'Données' dans le ruban.
A te relire.
Cdlt.
Bonjour Jean-Eric,
Tout d'abord, je vous remercie pour votre réactivité.
Cependant, j'aurai voulu un codage VBA, car le document original comprend plusieurs macro associées à des boutons de macro. Et mon souhait aurait été d'intégrer ce codage à un bouton macro. Mais malheureusement, quand j'essaye de coder, je n'arrive pas à importer uniquement les colonnes souhaitées, et à supprimer les lignes vides.
Nb: le document que j'ai mis en pièce jointe n'est qu'un tout petit exemple. Le document original comprend:
- une vingtaine d'onglets (certains serviront pour la synthèse, d'autres comme procédure ou contenu des listes déroulantes)
- plusieurs macro sont déjà existantes
Cordialement.
Monsach
Bonjour,
Une proposition à étudier.
Attention ! Toutes les données doivent sous la forme de tableaux...
Cdlt.
Private Sub cmdConsolider_Click()
Dim ws As Worksheet, rStart As Range
Application.ScreenUpdating = False
Set lo = Me.ListObjects(1)
With lo
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
Set rStart = .InsertRowRange.Cells(1)
End With
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> Me.Name Then
ws.ListObjects(1).DataBodyRange.Copy
rStart.PasteSpecial xlPasteValues
Application.CutCopyMode = 0
Set rStart = lo.HeaderRowRange.Cells(1).Offset(lo.ListRows.Count + 1)
End If
Next
With lo
.Sort.SortFields.Add .ListColumns(1).DataBodyRange, _
SortOn:=xlSortOnValues, _
Order:=xlAscending
.Sort.Apply
.Sort.SortFields.Clear
End With
Set rStart = Nothing: Set lo = Nothing
End Sub