[VBA Excel 2K] Tableau Croisé Dynamique

Résolu
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. 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. 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. Je prend note =) Merci
      0
  2. 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
    1. Contributeur
      non!!! meme si c'est vide, Pi.Name = "(vide)"
      0
      1. 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. Contributeur
          j'adore les casses tete :p
          0
      2. Contributeur
        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
        1. 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
          1. Contributeur
            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