Selectionner certains Pivotitems
Fermé
a51432
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015
-
Modifié par NHenry le 14/08/2015 à 18:55
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 - 14 août 2015 à 17:22
a51432 Messages postés 37 Date d'inscription lundi 13 juillet 2015 Statut Membre Dernière intervention 20 octobre 2015 - 14 août 2015 à 17:22
A voir également:
- Vba pivotitems
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Erreur 1004 vba ✓ - Forum VB / VBA
2 réponses
a51432
Messages postés
37
Date d'inscription
lundi 13 juillet 2015
Statut
Membre
Dernière intervention
20 octobre 2015
1
14 août 2015 à 17:22
14 août 2015 à 17:22
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
PlacageGranby
Messages postés
393
Date d'inscription
mercredi 26 mars 2014
Statut
Membre
Dernière intervention
7 mars 2019
26
Modifié par PlacageGranby le 14/08/2015 à 16:50
Modifié par PlacageGranby le 14/08/2015 à 16:50
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.