XL 2021 Segments et tcd non liés

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jozerebel

XLDnaute Occasionnel
bonjour à tous,

Pour commencer, je précise que je travaille sous excel 2021 mais que mon fichier sera ouvert par des utilisateurs n ayant ni power query ni power pivot et que la structure des tables ne permet pas une compilation.

Mon fichier comporte plusieurs base de données que je ne peux donc pas compiler même si plusieurs colonnes comportent les mêmes valeurs (comme des dates ou des secteurs par exemple).

Prenons un exemple de mon pb :
J ai un tcd pour la facturation mensuelle organismes (Dépendant d une bdd)
J ai un tcd pour la facturation mensuelle clients (dependant d une autre bdd)
Je crée un segment pour filtrer la date sur le tcd1
J aimerais que ce segment s'applique aussi au tcd2 alors même qu aucune liaison n est possible puisque les deux tcd sont issus de deux bdd différentes. Pour autant les conditions de filtres du tcd1 pourraient s appliquer au tcd2 (dates dans mon exemple).

Comment puis je gérer cela sans obliger l utilisateur à saisir plusieurs segments pour une même condition ? (Date dans mon exemple).

Je ne suis pas contre une solution par macro.

Je vous remercie pour votre aide précieuse.

Jo
 
Salut Chris,

J'ai testé ta macro qui fonctionne bien mais prend beaucoup de temps d'exécution.

J'ai en effet plusieurs segments dont les sélections doivent se reporter dans d'autres segments.

J'ai adapté ta macro à ma situation et je te joins le code.

Vois-tu une solution ou une amélioration du code pour accélérer le traitement?

Je te remercie pour tout.
VB:
Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
'Synchro des segments de la feuille nommée "TCD"
    If Sh.Name <> "Saad_Tcd_Heures" Then Exit Sub
    On Error GoTo Fin
    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 And Seg2.Name Like 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 And Seg2.Name Like Seg.Name & "*" Then ActiveWorkbook.SlicerCaches(Seg2.Name).SlicerItems(Iitem.Name).Selected = Iitem.Selected
                    Next Seg2
                    
                Next Iitem
                
                Application.EnableEvents = True
            End If
        Next
    Next

Fin:
Application.EnableEvents = True
End Sub
 
Bonjour

Le Pb est de parcourir tous les items : les boucles sont toujours une solution lente.

On peut tenter la synchro un champ de filtre des TCD, mono valué, mais si une valeur n'existe pas, cela entraîne la modification des libellés donc à réserver aux cas dont on est certains...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
201
Réponses
12
Affichages
431
Réponses
12
Affichages
619
Réponses
5
Affichages
530
Réponses
3
Affichages
623
  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
778
Réponses
3
Affichages
481
Retour