Microsoft 365 VBA-synchro slicer differentes feuilles ( differents sources ).

almourasel

XLDnaute Occasionnel
salut les amis

j'ai ce code qu fait la synchornisation entre les slicers mais le problème qu'il est un peu lourd , est ce qu il ya un moyen de le modifier pour que son excusion sera plus rapide ?

il consomme de temps qu'on je filtre avec SC3 et SC4.

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Dim sc1 As SlicerCache
Dim sc2 As SlicerCache
Dim SI1 As SlicerItem
Dim sc3 As SlicerCache
Dim sc4 As SlicerCache
Dim SI3 As SlicerItem

' These names come from Slicer Settings dialog box
Set sc1 = ThisWorkbook.SlicerCaches("Slicer_line")
Set sc2 = ThisWorkbook.SlicerCaches("Slicer_line1")
Set sc3 = ThisWorkbook.SlicerCaches("Slicer_Drawg")
Set sc4 = ThisWorkbook.SlicerCaches("Slicer_DRW")

Application.ScreenUpdating = False
Application.EnableEvents = False

sc2.ClearManualFilter
sc4.ClearManualFilter

For Each SI1 In sc1.SlicerItems
sc2.SlicerItems(SI1.Name).Selected = SI1.Selected
Next SI1

For Each SI3 In sc3.SlicerItems
sc4.SlicerItems(SI3.Name).Selected = SI3.Selected
Next SI3

Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
 

almourasel

XLDnaute Occasionnel
je veux qu'on ke selectione ici n importe quel champs , sa change dans l autre slicer .
( deja liée a une autre Slicer dans une autre feuille ).
=> ce que je cherche 1 Slicer est liée avec 2 autres slicers.

1598695563866.png


celle le slicer que je cherche a faire liaison avec :

1598695630592.png
 

danielco

XLDnaute Accro
Bonjour,

essaie. Je n'aime pas beaucoup avoir été obligé de positionner un "On Error"...

VB:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    Dim sc1 As SlicerCache
    Dim SI1 As SlicerItem
    Dim SC As SlicerCache
    
    
    ' These names come from Slicer Settings dialog box
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Set sc1 = ThisWorkbook.SlicerCaches("Slicer_line")
    For Each SC In ThisWorkbook.SlicerCaches
      If SC.Name <> "Slicer_line" Then
        SC.ClearManualFilter
      End If
    Next SC
    On Error Resume Next
    For Each SI1 In sc1.SlicerItems
      For Each SC In ThisWorkbook.SlicerCaches
        SC.SlicerItems(SI1.Name).Selected = SI1.Selected
      Next SC
    Next SI1
    On Error GoTo 0
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Daniel
 

almourasel

XLDnaute Occasionnel
Bonjour,

essaie. Je n'aime pas beaucoup avoir été obligé de positionner un "On Error"...

VB:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

    Dim sc1 As SlicerCache
    Dim SI1 As SlicerItem
    Dim SC As SlicerCache


    ' These names come from Slicer Settings dialog box

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Set sc1 = ThisWorkbook.SlicerCaches("Slicer_line")
    For Each SC In ThisWorkbook.SlicerCaches
      If SC.Name <> "Slicer_line" Then
        SC.ClearManualFilter
      End If
    Next SC
    On Error Resume Next
    For Each SI1 In sc1.SlicerItems
      For Each SC In ThisWorkbook.SlicerCaches
        SC.SlicerItems(SI1.Name).Selected = SI1.Selected
      Next SC
    Next SI1
    On Error GoTo 0
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Daniel
Bonjour

pour qu il foncitonne j'ai changé le nom de Sc1 pour devenir Slicer.Line ( L en majuscule ) => je sais pas si je dois changé ou non?
j 'ai perdu l'ancienne liaison de Slicer Drawg avec sa graph et le slicer _Line2 il selectionne 2 items au même temps n est pas 1 seul suite au filtre de Slicer_Line.


1598781289089.png
 

Pièces jointes

  • 1598780420906.png
    1598780420906.png
    286.2 KB · Affichages: 25
Dernière édition:

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD