tcd : avoir les mêmes filtres sur 10 tcd par vba Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
m
mynameisjeff
Membre fidèle
Membre fidèle
Messages : 201
Inscrit le : 10 octobre 2014
Version d'Excel : 2007

Message par mynameisjeff » 5 janvier 2017, 15:03

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
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 5 janvier 2017, 16:45

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é :wink:

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.
m
mynameisjeff
Membre fidèle
Membre fidèle
Messages : 201
Inscrit le : 10 octobre 2014
Version d'Excel : 2007

Message par mynameisjeff » 5 janvier 2017, 16:59

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
n
nono78
Membre habitué
Membre habitué
Messages : 111
Inscrit le : 5 janvier 2017
Version d'Excel : 2010 FR

Message par nono78 » 5 janvier 2017, 17:10

Cool que ça convienne :D

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é :roll:
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message