[VBA Excel 2K] Tableau Croisé Dynamique

Résolu
LeDénicheur Messages postés 624 Statut Membre -  
LeDénicheur Messages postés 624 Statut Membre -
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 !
Configuration: Windows XP Internet Explorer 6.0

7 réponses

  1. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  2. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
  3. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    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
  4. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
    1. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
       
      j'adore les casses tete :p
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jjsteing Messages postés 1613 Date d'inscription   Statut Contributeur Dernière intervention   181
     
    non!!! meme si c'est vide, Pi.Name = "(vide)"
    0
  7. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
  8. LeDénicheur Messages postés 624 Statut Membre 366
     
    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
    1. Xian95
       
      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
    2. LeDénicheur Messages postés 624 Statut Membre 366
       
      Je prend note =) Merci
      0