Probleme de filtre sur TCD

anisbens45

XLDnaute Nouveau
Bonjour a tous,

J'ai un petit souci, j'essaye de creer un tableau croise dynamique ou je veux faire un filtre multiple afin de conserver les objets de 2 noms (je ne sais pas si je suis tres clair).

Quand je fais "record macro", vba prend en fait tous les autres noms qu'il "defiltre". Le probleme est que les autres noms varient et donc j'aurai un message d'erreur si un nom n'existe pas dans mes futurs tableaux.

J'ai essaye le code suivant :

Code:
With ActiveSheet.PivotTables("PivotTable5").PivotFields( _
        "VendorVname").PivotItems("Didier").Visible = True
    End With
    
    With ActiveSheet.PivotTables("PivotTable5").PivotFields( _
        "VendorVname").PivotItems("Robert").Visible = True
    End With

Mais ca ne filtre rien (en fait toutes les autres doivent etre "True" au debut).

Y'a-t-il un moyen de tous mettre en "False" puis de rajouter uniquement ces deux noms ?

Desole de mon manque de clarte,

Cordialement,

Anis B
 

JCGL

XLDnaute Barbatruc
Re : Probleme de filtre sur TCD

Bonjour à tous,

Peut-être un code du genre :

VB:
Option Explicit


Sub Test()
    Dim i%


    With ActiveSheet.PivotTables("PivotTable5").PivotFields("VendorVname")
        For i = 1 To .PivotItems.Count
            .PivotItems(i).Visible = False
        Next
    End With


    With ActiveSheet.PivotTables("PivotTable5").PivotFields("VendorVname")
        .PivotItems("Robert").Visible = True
        .PivotItems("Didier").Visible = True
    End With
End Sub

Sans fichier difficile de t'aider plus...

A+ à tous

Edition : Salut mon Pierrot... Effectivement au moins un PivotItems visible... A+++
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Probleme de filtre sur TCD

Bonjour Anis, Jean-Claude:)

une autre approche :
Code:
Option Explicit
Sub test()
Dim p As PivotItem
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("PivotTable5").PivotFields("VendorVname")
    For Each p In .PivotItems
        p.Visible = True
    Next p
    For Each p In .PivotItems
        If p.Value <> "Didier" And p.Value <> "Robert" Then p.Visible = False
    Next p
End With
End Sub

Aarf Jean-Claude:), sauf erreur il me semble qu'au moins un item doit être visible, non....

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Probleme de filtre sur TCD

Re,

pour éviter le bogue au cas ou aucun "robert" et aucun "Didier", modifier la 2ème boucle ainsi :
Code:
    For Each p In .PivotItems
        If p.Value <> "Didier" And p.Value <> "Robert" And .VisibleItems.Count > 1 Then p.Visible = False
    Next p
 

anisbens45

XLDnaute Nouveau
Re : Probleme de filtre sur TCD

(Re)bonjour a tous,

Tout d'abord, merci a tous de vos reponses.

J'ai teste le code de Jean-Claude mais il me fait un message d'erreur "Unable to see the Visible property of the PivotItem class".

Le code de Pierrot ne meme fait aucun filtre. Pourtant, ca a l'air d'etre correcte, je n'ai pas de message d'erreur ni rien...Je travaille avec excel 2007, j'aurais peut etre du le mettre en prefixe...
 

anisbens45

XLDnaute Nouveau
Re : Probleme de filtre sur TCD

Bonjour a tous,

Je vous joins le fichier sur lequel je travaille ainsi que le code que j'utilise pour realiser le TCD. J'ai essaye le dernier code de Pierrot, le TCD est realise mais il n'est pas filtre selon le "VendorVName".

Merci encore de votre aide,

Anis B

Voici le code
Code:
Sub TEST()
Set Maplage = Range("A1").CurrentRegion
Maplage.Name = "TCD"

    Application.CutCopyMode = False
    Sheets.Add
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "TCD").CreatePivotTable TableDestination:="Sheet4!R3C1", TableName:="PivotTable5", DefaultVersion:=xlPivotTableVersion10
    Sheets("Sheet4").Select
    Cells(3, 1).Select

    Dim p As PivotItem
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("PivotTable5").PivotFields("VendorVname")
    For Each p In .PivotItems
        p.Visible = True
    Next p
   For Each p In .PivotItems
        If p.Value <> "Didier" And p.Value <> "Robert" And .VisibleItems.Count > 1 Then p.Visible = False
    Next p
End With
    
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Facture")
        .Orientation = xlRowField
        .Position = 1
    End With
    
    ActiveSheet.PivotTables("PivotTable5").AddDataField ActiveSheet.PivotTables( _
        "PivotTable5").PivotFields("Montant"), "Count of Montant", xlCount
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Count of Montant")
        .Caption = "Sum of Montant"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("PivotTable5").PivotFields("Compte")
        .Orientation = xlColumnField
        .Position = 1
    End With

End Sub
 

Pièces jointes

  • Fichier pour TCD.xlsx
    57.1 KB · Affichages: 31

JCGL

XLDnaute Barbatruc
Re : Probleme de filtre sur TCD

Bonjour à tous,

Je pense que tu as oublié de placer les Vendeurs :

Code:
With ActiveSheet.PivotTables("PivotTable5").PivotFields("VendorVname")
        .Orientation = xlRowField
        .Position = 1
 End With


A+ à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 506
Messages
2 089 127
Membres
104 041
dernier inscrit
jcourtei