Selectionner certains Pivotitems
a51432 Messages postés 37 Date d'inscription Statut Membre Dernière intervention -
a51432 Messages postés 37 Date d'inscription Statut Membre Dernière intervention - 14 août 2015 à 17:22
a51432 Messages postés 37 Date d'inscription Statut Membre Dernière intervention - 14 août 2015 à 17:22
A voir également:
- Vba pivotitems
- Excel compter cellule couleur sans vba - Guide
- Forum VB / VBA
- Forum Excel
- Forum Programmation
- Forum VB / VBA
2 réponses
Merci pour ta réponse.
J'ai effectivement testé avec les msgbox et cela me renvoit bien les noms correctement. Il fallait également utiliser TC(z) plutot que z pour renvoyer le mot et non la position dans l'Array.
Le code me déselectionne bien les PivotItems à décocher et fonctionne pour le premier mot de l'Array mais il plante dès le 2ème mot à seléctionner sur la ligne désignée dans le code ci-dessous (Erreur 1004 : impossible de définir la propriété Visible de la classe PivotItems)
Code :
J'ai effectivement testé avec les msgbox et cela me renvoit bien les noms correctement. Il fallait également utiliser TC(z) plutot que z pour renvoyer le mot et non la position dans l'Array.
Le code me déselectionne bien les PivotItems à décocher et fonctionne pour le premier mot de l'Array mais il plante dès le 2ème mot à seléctionner sur la ligne désignée dans le code ci-dessous (Erreur 1004 : impossible de définir la propriété Visible de la classe PivotItems)
Code :
Sub TCD()
Application.ScreenUpdating = False
Dim TC()
Dim z
Dim monPivIt As Object
TC = Array("TOTO", "TITI", "TATA", "TETE")
With Workbooks("Classeur").Sheets("Feuille").PivotTables("TCD").PivotFields("MOT")
.ClearAllFilters
For Each monPivIt In .PivotItems
For z = LBound(TC) To UBound(TC)
If monPivIt <> TC(z) Then
monPivIt.Visible = False
Else
If monPivIt.Visible = False Then
monPivIt.Visible = True 'Ligne qui bug
Exit For
Else
Exit For
End If
End If
Next z
Next monPivIt
End With
Application.ScreenUpdating = True
End Sub
Bonjour,
Si le IF ne retourne pas les résultat prévu. faire un test sur les éléments qui sont évalué.
Comme ca au moins tu as des pistes pour trouver le problème.
P.S. peut-être essayer un msgbox TC(z) pour voir si c'est plus adapté à ton besoin.
Si le IF ne retourne pas les résultat prévu. faire un test sur les éléments qui sont évalué.
For Each monPivIt In .PivotItems For z = LBound(TC) To UBound(TC) Msgbox monPivIt.Name Msgbox z If monPivIt.Name <> z Then
Comme ca au moins tu as des pistes pour trouver le problème.
P.S. peut-être essayer un msgbox TC(z) pour voir si c'est plus adapté à ton besoin.