TCD plusieurs onglets
Bonjour à tous,
Chaque jour, j'intègre dans mon fichier les remontées d'alarmes de mes magasins.
1 onglet par jour avec pour chacun d'eux une colonne magasin, une colonne alarme et une date. (Pour certaines raisons, je ne peux pas compiler ces données sous un même onglet).
Je souhaite faire un TCD "RECAP" afin de visualiser sur la durée les magasins qui me remontent le plus souvent des alarmes.
Je reussi a faire une mise en forme correcte pour une journée (1onglet), mais quand j'ajoute les données des autres onglets c'est la cata !
Je vous joint un fichier exemple, avec mon essaie TCD ... et une mise en forme souhaitée
Est ce que vous avez idée de comment je devrais procéder ?
merci par avance
Bonjour Jean-Eric,
Je te remercie pour ton retour.
Ça correspond a ce que je recherche. Je trouve l'idée bonne de consolider toutes les données des différents onglets dans un même tableau pour après ensuite faire le TCD. Comment a tu as fais ? faut il utiliser des macros ?
Merci beaucoup
Re,
Tu as 2 procédures VBA.
Pour les visualiser : ALT F11 et voir Module1.
Pour résumer, on boucle sut toutes les feuilles du classeur (sauf la feuille RCAP) et on colle les données journalières dans un tableau unique. L'ajout d'une nouvelle feuille (sur le modèle des autres) sera donc pris en compte.
On pourrait (pour optimiser) se limiter aux nouvelles dates pour la mise à jour.
Et travailler avec de vraies dates pour le TCD (et ainsi pouvoir regrouper celles ci par mois, trimestres, etc...)
A te relire.
Nota : Les données sont toutes mises sous forme de tableau !...
Public Sub Consolidate_data()
Dim ws As Worksheet, wsData As Worksheet
Dim loData As ListObject
Dim rCell As Range
Dim n As Long
Application.ScreenUpdating = False
Set wsData = Worksheets("RECAP")
Set loData = wsData.ListObjects(1)
With loData
If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
Set rCell = .InsertRowRange.Cells(2)
End With
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> wsData.Name Then
n = ws.ListObjects(1).ListRows.Count
ws.ListObjects(1).DataBodyRange.Copy Destination:=rCell
rCell.Offset(, -1).Resize(n) = ws.Name
Set rCell = loData.HeaderRowRange.Cells(2).Offset(loData.ListRows.Count + 1)
End If
Next
wsData.PivotTables(1).PivotCache.Refresh
End Sub