vba filtrer un tableau croisé dynamique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BlondeouBrune

XLDnaute Nouveau
Bonjour à toutes et à tous,
je suis nouvelle sur le forum, j'espère donc que vous pourrez m'aider 🙂

je souhaite faire un filtre dans un tableau croisé dynamique de telle sorte que dans la colonne E je n'ai que les données qui correspondent à m1.

je voudrais pouvoir cocher ou décocher certaines valeurs de la colonne E en VBA.

SVP aidez moi parce que je commence vraiment à manquer d'inspiration !!!
 
Re : vba filtrer un tableau croisé dynamique

Salut,

Pour créer un tableau croisé c'est du style

Code:
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        Sheets("aaa").Range(Cells(3, 21), Cells(lmax - 1, 23))).CreatePivotTable TableDestination:="", TableName:= _
        "xxx", DefaultVersion:=xlPivotTableVersion10
pour cacher certaines valeurs de champs :
Code:
    With ActiveSheet.PivotTables("xxx").PivotFields( _
        "yyy")
        .PivotItems("0").Visible = False
    End With
le "0" de pivot item represente la valeur que tu veux cacher pour le champ "yyy"

C'est un exemple d'un petit prog que j'avas fait. Bien sûr faut adapter...
 
Re : vba filtrer un tableau croisé dynamique

merci de t'être penché sur mon souci 😉

pour la création du tableau je n'ai pas eu de problèmes mais pour l'histoire des filtres voici ce que j'ai fait mais ça ne fonctionne pas :

Sub test()
Dim pt As PivotItem
'je parcours chaque valeur de ma colonne location
For Each pt In ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("location").PivotItems
'si la valeur parcouru est la même que ma variable mag
If (pt.Name = mag) Then
'je rends visible
'ca plante à la ligne suivante
.PivotItems(pt.Name).Visible = True
'sinon je laisse invisible
Else: .PivotItems(pt.Name).Visible = False
End If
Next pt
End Sub
 
Re : vba filtrer un tableau croisé dynamique

et en rajoutant les with ?

Code:
Dim pt As PivotItem

For Each pt In ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("location").PivotItems

If (pt.Name = mag) Then
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"location")
.PivotItems(pt.Name).Visible = True
End With

Else:
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"location")
.PivotItems(pt.Name).Visible = False
End With
End If
Next pt
 
Re : vba filtrer un tableau croisé dynamique

hello !

j'ai finalement trouvé une autre méthode mais je vais quand même essayé la tienne parce qu'elle est moins compliquée.
Si jamais ça interesse des gens, je mets la ma fonction qui contient un second tableau dynamique dans lequel je mets la liste des valeurs à vérifier:

Sub test()
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("location")
.PivotItems(mag).Visible = True
'plage qui parcourt l'ensemble des valeurs
Set plage = Worksheets("tdc final").Range("K11:K" & tous_les_mag)
'je parcours les éléments de la liste un à un
For Each z In plage
If z.Value <> mag Then
.PivotItems(z.Value).Visible = False
End If
Next
End With
End Sub

merci 1OOO fois pour ton aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
546
Réponses
9
Affichages
612
Retour