Tcd : avoir les mêmes filtres sur 10 tcd par VBA
bonjour à tous,
J'ai actuellement 10 tableaux croisés dynamiques sur la même page.
Ces tableaux sont identiques en filtres et lignes. Seules les valeurs changent.
Je souhaiterais qu'à l'aide d'un bouton à cliquer, que tous les tableaux croisés dynamiques de la page aient le même filtre que le 1er.
Les noms des tcd sont standard : Tableau croisé dynamique1, Tableau croisé dynamique2, Tableau croisé dynamique3... et jusqu'à 10.
J'ai 4 filtres au dessus de chaque tableau : Enseigne, Superficie, Typologie, Gep
J'ai un filtre pour la donnée ligne (1ère colonne de chaque tableau croisé dynamique) : MAGASIN
Je ne peux pas mettre le fichier en annexe pour raison de confidentialité.
Merci d'avance pour toute aide.
Cordialement
Salut,
Voici 2 bouts de code à adapter:
'Création des slicers
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables(nom(1)), "Localité").Slicers.Add ActiveSheet, , "Localité", "Localité", 37.5, 267, 144, 198.75
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables(nom(1)), "Direction").Slicers.Add ActiveSheet, , "Direction", "Direction", 75, 304.5, 144, 198.75
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables(nom(1)), "Etat dossier").Slicers.Add ActiveSheet, , "Etat dossier", "Etat dossier", 112.5, 342, 144, 198.75
ActiveWorkbook.SlicerCaches.Add(ActiveSheet.PivotTables(nom(1)), "ID").Slicers.Add ActiveSheet, , "ID", "ID", 150, 379.5, 144, 198.75
Et pour relier les slicers
Private Sub relierslicer()
' relier les slicers à tous les TCD
Dim i As Byte
Dim nom(23) As String
Dim sh(5) As String
Dim s(23) As String
nom(1) = "T1"
nom(2) = "T2"
nom(3) = "T3"
sh(1) = "S1"
sh(2) = "S2"
s(1) = "S1"
s(2) = "S1"
s(3) = "S2"
i = Empty
Sheets(sh(1)).Shapes.Range(Array("Etat dossier")).Select
For i = 1 To 3
ActiveWorkbook.SlicerCaches("Segment_Etat_dossier").PivotTables.AddPivotTable (Sheets(s(i)).PivotTables(nom(i)))
Next i
i = Empty
Sheets(sh(1)).Shapes.Range(Array("Direction")).Select
For i = 1 To 3
ActiveWorkbook.SlicerCaches("Segment_Direction").PivotTables.AddPivotTable (Sheets(s(i)).PivotTables(nom(i)))
Next i
i = Empty
Sheets(sh(1)).Shapes.Range(Array("ID")).Select
For i = 1 To 3
ActiveWorkbook.SlicerCaches("Segment_ID").PivotTables.AddPivotTable (Sheets(s(i)).PivotTables(nom(i)))
Next i
i = Empty
Sheets(sh(1)).Shapes.Range(Array("Localité")).Select
For i = 1 To 3
ActiveWorkbook.SlicerCaches("Segment_Localité").PivotTables.AddPivotTable (Sheets(s(i)).PivotTables(nom(i)))
Next i
i = Empty
End Sub
Ceci dit, je te conseille de le faire à la main. pour 10 TCD c'est pas compliqué
Pour le faire à la main: Onglet affichage, clique sur segment, tu choisis tes champs que tu veux mettre en filtre puis ok, le segment apparaît tu fais un clic droit et connexions au tableaux croisés dynamiques et tu les coches tous.
Voili voilou, espérant avoir répondu à ta question.
Bonjour nono78,
Merci pour ta réponse
ta méthode :
Pour le faire à la main: Onglet affichage, clique sur segment, tu choisis tes champs que tu veux mettre en filtre puis ok, le segment apparaît tu fais un clic droit et connexions au tableaux croisés dynamiques et tu les coches tous.
Voili voilou, espérant avoir répondu à ta question.
Je l'ai essayé et en fait tu as raison, ça marche impeccable et en plus c'est super simple. Je ne connaissais pas du tout cette méthode.
Super l'astuce. Du coup pas besoin de coder en fait, c'est au top.
Bonne soirée
Cordialement
Cool que ça convienne
Attention à un petit détail, si tu utilises les segments, les valeurs sur les TCD s'actualisent correctement mais par contre le rapport (celui qui sort dans une autre feuille quand tu double cliques) ne s'actualise pas et correspond aux valeurs sans filtre.
Juste pour pas que ça t'induises en erreur parce que ça m'est déjà arrivé