XL 2010 Segments et TCD...

Yvan1

XLDnaute Occasionnel
Bonjour,

Un segment peut-il filtrer, sur la même page, deux TCD qui n'ont pas la même source de données ?

Merci d'avance,

Yvan
 

Yvan1

XLDnaute Occasionnel
Re,

En effectuant des recherches, j'ai vu que Chris avait proposé la macro suivante :

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
If Sh.Name = "NomfeuilleTCD" And Target.Name = "NomTCDPilote" Then
Application.EnableEvents = False
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Segment_Zone1").ClearManualFilter
For Each Iitem In ActiveWorkbook.SlicerCaches("Segment_Zone").SlicerItems
'ligne suivante à répéter pour chaque autre segment en adaptant le nom
ActiveWorkbook.SlicerCaches("Segment_Zone1").SlicerItems(Iitem.Name).Selected = Iitem.Selected
Next

Application.EnableEvents = True
End If
End Sub

Si j'ai bien compris, elle permet de lier les segments, dont l'un est qualifié de prioritaire.

Pour ma part, le structures de fichier sources sont identiques, et je souhaites que les TCD placés sur l'onglet "TCD Produits" soient pilotés par 3 segments : Marque, Pré/Main et Per.

Comment adapter la macro ? J'ai tenté, en positionnant la macro sous ThisWorkbook, mais cela ne fonctionne pas...

Dans l'attente de votre aide.

Merci d'avance,

Yvan
 

Pièces jointes

  • Test.xlsm
    833.6 KB · Affichages: 15

chris

XLDnaute Barbatruc
Bonjour

Il y a 2 soucis :
  • Toutes les marques n'existent pas dans les 2 sources : sachant que l'on affiche tout puis ensuite on masque la ou les marque non sélectionnées dans le segment cliqué, cela ne masque pas dans le second TCD les marques non présentes dans le 1er
  • dès que l'on a plus de deux segments, il est préférable que les segments correspondants aient un même nom de champ source sauf à bâtir une table de correspondance des segments
 

Yvan1

XLDnaute Occasionnel
Bonjour Chris,

Nouvelle tentative de ma part pour arriver à mes fins. Dans les discussions similaires, j'ai retrouvé une de tes solutions. Et suite à ta précédente remarque, j'ai uniformisé les noms des colonnes de mes deux sources pour éviter tout problème...

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
'Synchro des segments de la feuille nommée "pivots"
If Sh.Name <> "Budget" Then Exit Sub
For Each Seg In ActiveWorkbook.SlicerCaches
For Each PTlien In Seg.PivotTables
If PTlien = Target.Name Then
Application.EnableEvents = False
For Each Seg2 In ActiveWorkbook.SlicerCaches
If Seg2.Name <> Seg.Name Then ActiveWorkbook.SlicerCaches(Seg2.Name).ClearManualFilter
Next Seg2
For Each Iitem In ActiveWorkbook.SlicerCaches(Seg.Name).SlicerItems
For Each Seg2 In ActiveWorkbook.SlicerCaches
If Seg2.Name <> Seg.Name Then ActiveWorkbook.SlicerCaches(Seg2.Name).SlicerItems(Iitem.Name).Selected = Iitem.Selected
Next Seg2
Next Iitem
Application.EnableEvents = True
End If
Next
Next

End Sub

Mais ta solution ne gère visiblement qu'un segment (Marque / Marque1), car dès que j'ajoute un autre segment, j'ai un message d'erreur.
Or je souhaiterais qu'en fonction de la sélection sur le Segment Marque, puis Ex Univers, Marque 1 et Ex Univers1 s'adaptent !!!
Est-ce possible ? Et si tel n'est pas le cas, existe-t-il une autre solution ?
Merci d'avance,
 

Pièces jointes

  • Test.xlsm
    819.9 KB · Affichages: 6

chris

XLDnaute Barbatruc
Bonjour

Ce code n'était prévu que pour 2 segments.

J'ai un code qui fonctionne quel que soit le nombre de segments et sans segment "maître", mais, comme indiqué dans mon message, il ne règle pas le souci 1

IL faut noter que rien ne permet de déterminer la segment cliqué, juste le TCD auquel il est lié et donc traiter les 6 segments, ce qui n'est pas neutre en terme de temps de réactivité.

Pour le souci 1, il faudrait ajouter une table de l'état de chaque segment du TCD lié au segment cliqué et reboucler sur chaque item pour décocher ce qui n'est pas communs, donc doublerait encore le temps de traitement.

Ce type de démarche à ses limites et est davantage applicable sur de sources plus similaires (périodes différentes, prévisions vs réel...de même données) ce que tu ébauches d'ailleurs dans ce second fichier.

Pré traiter les sources et les choix avec l'add on PowerQuery (intégré à Excel à partir de 2016) serait peut-être plus efficace.

Je regarderai les 2 pistes mais pas aujourd'hui où je n'aurai pas assez de temps.
 

chris

XLDnaute Barbatruc
RE

Ci-joint le classeur avec le code mais, comme tu peux le voir, si pour les marques cela fonctionne, le souci évoqué se produit sur Univers

Ci-joint aussi une solution de synthèse par PowerQuery
Si tu ne peux pas installer PowerQuery, tu peux synthétiser par MsQuery présent depuis la nuit des temps sur toutes les versions Excel
 

Pièces jointes

  • Synchro_Segments_xld.xlsm
    821.5 KB · Affichages: 22
  • Powerquery_Segments_xld.xlsx
    906.9 KB · Affichages: 8

Yvan1

XLDnaute Occasionnel
Bonjour Chris,
J'ai solutionné le problème sur les Univers. Ils sont à présent identiques dans les deux sources. Ta solution semble parfaitement fonctionner. Je teste et reviendrai vers toi si j'ai la moindre question.
Encore merci pour ton investissement.
A plus tard,
Yvan
 

Statistiques des forums

Discussions
312 101
Messages
2 085 300
Membres
102 857
dernier inscrit
Nony1931