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!!!
*** 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
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
Si tu fait une pause sur la ligne : ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("TDC").PivotItems(c).Visible = True
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
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 :
Là tu efface tous te items!
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
et pour les faire visible :
voili voilà
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
Partager