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é

Rechercher des sujets similaires à "tcd memes filtres vba"