[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
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
A voir également:
- [VBA Excel 2K] Tableau Croisé Dynamique
- Tableau croisé dynamique - Guide
- Liste déroulante excel - Guide
- Trier tableau excel - Guide
- Tableau ascii - Guide
- Tableau word - Guide
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
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
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
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
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
.Pivotitems("nouveaufruit").Visible=False
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
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
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
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
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 !!
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 !!
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
22 juil. 2009 à 18:14
j'adore les casses tete :p
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
22 juil. 2009 à 18:13
non!!! meme si c'est vide, Pi.Name = "(vide)"
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
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 ?
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 ?
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
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 ^^ )
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 ^^ )
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
24 août 2011 à 09:58
Je prend note =) Merci