Comment en VBA 'décocher' en 1 seule fois tout les 'PivotItems' d'un tableau Dyn

corvelc

XLDnaute Occasionnel
Je souhaite savoir, s'il est possible par ordre VBA de 'décocher' en une seule fois l'ensemble des 'PivotItems' dans un tableau dynamique , pour ne pas etre obligé de le faire, "PivotItems" par "PivotItems", comme je le fais actuellement (voir example) car j'en ai plus de 800 et cela change chaque semaine.

le but étant de pouvoir supprimer tout les "PivotItem" du tableau (ça je ne sais pas faire, autrement que par mon exemple) , puis par passage d'une variables par macro (ça je sais faire) pour avoir les seules données correspondandes à l'Item concerné par un choix de l'utilisateur (ça je sais faire) .

Comment je procède actuellement :

With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Code ProjSys")
' Pour décocher les Item de la colonne 'Code projet'
.PivotItems("0").Visible = False
.PivotItems("0,5").Visible = False
.PivotItems("1").Visible = False
.PivotItems("2,5").Visible = False
.PivotItems("1,5").Visible = False
.PivotItems("FARCC ").Visible = False
.PivotItems("FASSI ").Visible = False
' ==> ETC sur 800 lignes
' Puis active l'Item par Variable passée par autre macro pour une selection du seul Item concerné

.PivotItems( Mavariable ).Visible = True
End With

Merci pour votre aide
 

Bebere

XLDnaute Barbatruc
Re : Comment en VBA 'décocher' en 1 seule fois tout les 'PivotItems' d'un tableau Dyn

bonsoir Corvelc
essaye ce qui suit
Dim monPivIt As Object, Mavariable
Mavariable = "FASSI "
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Code ProjSys")

For Each monPivIt In .PivotItems
monPivIt.Visible = True
Next
On Error Resume Next
For Each monPivIt In .PivotItems
If monPivIt.Name <> Mavariable Then monPivIt.Visible = False
Next
End With
Application.ScreenUpdating = True
à bientôt
 

Nairolf87

XLDnaute Nouveau
Re : Comment en VBA 'décocher' en 1 seule fois tout les 'PivotItems' d'un tableau Dyn

Salut j'ai reprise ton code, mais mon problème viens du fait de si j'ai 3 pivotitems que je veux affiché, je fais comment ?

j'ai essayé de faire ca :

If monPivIt.Name <> Mavariable1 and Mavariable2 and Mavariable3 Then monPivIt.Visible = False


en définissant mes variables
mais ca marche pas !

bonsoir Corvelc
essaye ce qui suit
Dim monPivIt As Object, Mavariable
Mavariable = "FASSI "
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Code ProjSys")

For Each monPivIt In .PivotItems
monPivIt.Visible = True
Next
On Error Resume Next
For Each monPivIt In .PivotItems
If monPivIt.Name <> Mavariable Then monPivIt.Visible = False
Next
End With
Application.ScreenUpdating = True
à bientôt
 

Alain 7633

XLDnaute Nouveau
bonjour,
ça ne fonctionne pas en remplaçant "and" par "or"
j'ai testé ces 2 syntaxes :
If (monPivIt.Name <> Mavariable1) Or (monPivIt.Name <> Mavariable2) Then monPivIt.Visible = False
If (monPivIt.Name <> Mavariable1 Or Mavariable2) Then monPivIt.Visible = False
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 333
Membres
111 103
dernier inscrit
Maxime@mar