Ce que tu viens de faire est exactement la même chose:

'**** ici dans feuil1 tu réceptionne tous les PivotItems qui sont dans ta base de donnée colonne A. Mais attention ici on se limite à 600 lignes! Donc sur ton fichier on en a bien 4 items!!!

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Sub Essai()
Dim c As Variant
Dim MonDico As Object, Cellule As Range
 
 
 
 Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Sheets("Feuil1").Range("A2:A600") 'ADAPTE TA PLAGE DE DONNÉE
     MonDico.Item(c.Value) = MonDico.Item(c.Value) + 1
  Next c
*** Ici on passe tous les PivotItems existants et si ils sont à FAUX tu les passes à VRAI. Donc MonDico.keys =4

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 For Each c In MonDico.keys
 
    If c <> "" Then
     If ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = False Then _
      ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = True
    End If
 
  Next c
Si tu fait une pause sur la ligne : ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = True
alors tu verras que c prendra la valeur de "TDCMS" puis "TDCMY" et ainsi de suite....

Dans le fichier que je t'ais envoyé tu as la listbox ne correspond pas au code qui est placé sur le module 1. mais sur l'activation de la feuil! Le but est de choisir de façon plus lisible ceux que tu veux qui apparaissent .

Maintenant tu peux faire ainsi :

Tout d'abord ta source de donnée pour ton TCD tu l'affecte ainsi : Feuil1!$A:$E (cela permet d'avoir un PivotItems se nommant "vide")

Ensuite tu place dans un module :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub RemiseAzero()
Dim c As Variant
Dim DerLigne As Variant
Dim MonDico As Object, Cellule As Range
 
  DerLigne = Sheets("feuil1").Range("a65536").End(xlUp).Row ' on recherche ta dernière ligne
 
 
 Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Sheets("Feuil1").Range("A2:A" & DerLigne) 'ICI TU VAS A TA DERNIERE LIGNE
     MonDico.Item(c.Value) = MonDico.Item(c.Value) + 1
  Next c
 
  For Each c In MonDico.keys
 
    If c <> "" Then
     If ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = True Then _
      ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = False
    End If
 
  Next c
End Sub
Là tu efface tous te items!

et pour les faire visible :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub ToutEclate()
Dim c As Variant
Dim DerLigne As Variant
Dim MonDico As Object, Cellule As Range
 
  DerLigne = Sheets("feuil1").Range("a65536").End(xlUp).Row ' on recherche ta dernière ligne
 
 
 Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Sheets("Feuil1").Range("A2:A" & DerLigne) 'ICI TU VAS A TA DERNIERE LIGNE
     MonDico.Item(c.Value) = MonDico.Item(c.Value) + 1
  Next c
 
  For Each c In MonDico.keys
 
    If c <> "" Then
     If ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = False Then _
      ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = True
    End If
 
  Next c
End Sub
voili voilà