Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Essaie de remplacer :
.PivotItems(pt.Name).Visible = False
par
.pt.visible = false

Mais c'est bizarre ...
Tu as essayé de le faire la main en enregistrant la macro pour voir le code qu'il sort comme code ...
 
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
613
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…