[VBA Excel 2K] Tableau Croisé Dynamique

Résolu/Fermé
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 22 juil. 2009 à 14:00
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 - 24 août 2011 à 09:58
Bonjour,
Je voudrais savoir si il existe une commande pour désactiver tout l'affichage des pivotitems.
Une formule du genre :

With ActiveSheet.PivotTables("Somme Quantité").PivotFields("PROJET")
.PivotItemsAll.Visible = False
End With

Mais qui marcherait =D
===============> ".PivotItemsAll.Visible = False" n'existe pas

Merci d'avance !
A voir également:

7 réponses

jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
22 juil. 2009 à 17:49
jjsteing à la rescousse :p

Dim xlApp As Object
Dim xlWb As Object
Dim xlWs As Object
Dim MyRange As String
Dim MyRange2 As String

Dim PTCache As PivotCache
Dim PTable As PivotTable

Set xlWb = ActiveWorkbook
Set xlWs = xlWb.Sheets("Feuil1")

a = xlWs.Range("A1").Address
b = xlWs.Range("B8").Address
MyRange = xlWs.Name & "!" & a & ":" & b

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
MyRange).CreatePivotTable TableDestination:=Range("A11"), _
TableName:="Tableau croisé dynamique1"


ActiveSheet.PivotTables("Tableau croisé dynamique1").SmallGrid = False
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
"Produit", ColumnFields:="Quantité"
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Quantité"). _
Orientation = xlDataField
Range("H22").Select
Application.CommandBars("PivotTable").Visible = False
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Produit" _
)
For Each Pi In .PivotItems
MsgBox Pi.Name
Next
.PivotItems("Banane").Visible = False
.PivotItems("Poireau").Visible = False
.PivotItems("(vide)").Visible = False
End With




Attention, ce n'est pas feuille1!A1:B5 qui est attendu dans le add.. mais son adresse...d ou l erreur
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
22 juil. 2009 à 17:57
J'ai pas tout compris, enfin ça résout pas le problème que, en gros , si je veux faire varier le nombre de "fruits" on va dire xD, bah les fruits que j'vais rajouter bah vont pas être cachés quand j'vais vouloir affiche que certains d'entre eux, si je rentres pas dans la macro
.Pivotitems("nouveaufruit").Visible=False
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
22 juil. 2009 à 18:09
dans ce cas :

For Each Pi In .PivotItems
if Pi.Name <> "Cerise" and Pi.Name <> "Pomme" then
.PivotItems( Pi.Name).Visible = False
Next
:)
et que les cerise et pommes seront affichés!!

ps supprimme les autres lignes .PivotItems("XXX").Visible = False
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
22 juil. 2009 à 18:12
Oui mais là un autre soucis apparait, celui de l'autre fois, c'est que je veux faire varier le nombre de valeur que je veux afficher... je vais essayer avec
For Each Pi In .PivotItems
if Pi.Name <> ""
.PivotItems( Pi.Name).Visible = False
Next
et coller la boucle de l'autre jour...j'rentre et j'te dis ce que ça donne :)
Merci pour tout en tout cas !!! tu te donnes du mal et je t'en remercie !!
0
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
22 juil. 2009 à 18:14
j'adore les casses tete :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1670 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
22 juil. 2009 à 18:13
non!!! meme si c'est vide, Pi.Name = "(vide)"
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
23 juil. 2009 à 09:01
Bon j'ai juste rajouté ceci dans mon programme :
With ActiveSheet.PivotTables("Somme Quantité").PivotFields("PROJET")
Dim valeur(41)
For i = 0 To nblignes - 1
valeur(i) = "806" & Sheets("Menu").Range("B" & 6 + i & "") & ""
Next i
i = 0
Do While i < nblignes
For Each Pi In .PivotItems
If Pi.Name <> valeur(i) Then .PivotItems(Pi.Name).Visible = False
Next
.PivotItems("" & valeur(i) & "").Visible = True
i = i + 1
Loop
End With

Lorsque nblignes = 1 , tout marche bien, mais dès que nblignes = 2 , VBA bloque sur "Then .PivotItems(Pi.Name).Visible = False" Une idée ?
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
23 juil. 2009 à 09:58
Problème résolu :)
Je devais redéfinir plus haut : Dim valeur(41)
Comme il existait plus de 41 valeurs de Pi.Name, j'ai remplacer par
Dim valeur(99)
et comme il n'existe que 85 pi.name dans mon cas,
if i < 84
(ma boucle)
end if
Et tout marche niquel ^^.
( Message personel pour JJsteing : J'ai une autre question ICI ^^ )
0
Bonjour, c'est un peu tard, mais cela peut servir:
dans Off 2k7 et 2k10
Pour le PivotItems("(vide").visible = false, il faut mettre PivotItems("(blank").visible = false
A bientôt pour de nouvelles aventures
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 362
24 août 2011 à 09:58
Je prend note =) Merci
0