Bonjour,
Une procédure à tester.
Cdlt.
Public Sub DEMO()
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem
Dim strPF As String
Application.ScreenUpdating = False
Set ws = ActiveWorkbook.Worksheets("TCDs") 'Nom à adapter
strPF = "CATEGORIE"
For Each pt In ws.PivotTables
pt.PivotCache.Refresh
pt.PageFields(strPF).ClearAllFilters
pt.PageFields(strPF).EnableMultiplePageItems = True
Next pt
Set pt = ws.PivotTables("Tableau croisé dynamique1")
For Each pi In pt.PageFields(strPF).PivotItems
Select Case pi.Value
Case "C1", "C2", "C3", "C4", "S1", "S2", "S3"
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
Set pt = Nothing
Set pt = ws.PivotTables("Tableau croisé dynamique3")
For Each pi In pt.PageFields(strPF).PivotItems
Select Case pi.Value
Case "N1", "O1", "O2", "O4", "P1", "P2"
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
Set pt = Nothing
Set pt = ws.PivotTables("Tableau croisé dynamique4")
For Each pi In pt.PageFields(strPF).PivotItems
Select Case pi.Value
Case "B1", "B2", "M1", "M2", "M3", "M4", "M5", "EML"
pi.Visible = True
Case Else
pi.Visible = False
End Select
Next pi
Set pt = Nothing
Application.ScreenUpdating = False
MsgBox "Mise à jour des montants effectuée", vbInformation
Set ws = Nothing
End Sub