[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. 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
    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
        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. 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
          non!!! meme si c'est vide, Pi.Name = "(vide)"
          0
          1. 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. 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