Filtrage des champs d'un TCD (Tableau Croisé Dynamique) en VBA
Bonjour,
Je suis débutant en VBA , j'ai une feuille dans laquelle j'ai construit un TCD en macro VBA.
La source de données de ce TCD est récupérée dans une deuxième feuille se trouvant dans un répertoire de fichier.
1- Je souhaiterais filtrer les trois (Type Spécificité, Métier du commercial, Unité) par vide , mais ma macro ci-dessous ne fonctionne pas, pourtant ça s'exécute sans aucun souci, le problème quand je vais dans mon TCD je ne vois aucun filtrage sur ces champs.
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Type Spécificité").ClearAllFilters
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Type Spécificité").Curren = "(blank)" 'CurrentPage
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Métier du Commercial").ClearAllFilters
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Métier du commercial").CurrentPage = "(blank)"
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Unite").ClearAllFilters
ActiveSheet.pivotables("mon tableau croisé dynamique").pivofields("Unite").CurrentPage = "(blank)"2- J'ai le meme problème quand je fais le filtrage sur le champ "Libelé du groupe Perf", la macro s'exécute sans aucun souci , mais quand je vais dans mon TCD je ne vois aucun filtrage sur le champ "Libelé du groupe Perf".
Voici le code:
' filtre champs Libellé du Groupe Perf
' le filtrage ne sélectionne pas les items spécifiés en objet
With ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Libellé du Groupe Perf")
.PivotItems("Prev PP globale").Visible = True
.PivotItems("Val Désirio").Visible = True
.PivotItems("Val Epargne Vie").Visible = True
.PivotItems("Val Gestion Préconisée").Visible = True
.PivotItems("Val Ret ind.").Visible = True
.PivotItems("Conquêtes Part multirisques").Visible = True
.PivotItems("Conquetes Pro Agri").Visible = True
.PivotItems("Conquetes Pro ACPS").Visible = True
.PivotItems("PN IARD HT").Visible = True
.PivotItems("Nb Auto").Visible = True
.PivotItems("Nb GAV").Visible = True
.PivotItems("Nb Habitation").Visible = True
.PivotItems("Nb Santé ind.").Visible = True
.PivotItems("Nb GBH").Visible = True
End With
'Filtre sur le champ service se trouvant en collonne
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Service").ClearAllFilters
With ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Service")
.PivotItems("Développement 02").Visible = True
.PivotItems("Développement 08-51").Visible = True
.PivotItems("Développement 10").Visible = True
.PivotItems("Développement 51").Visible = True
.PivotItems("Développement 59 Nord").Visible = True
.PivotItems("Développement 59 Sud").Visible = True
.PivotItems("Développement 62").Visible = True
End WithSVP quelqu'un pourrait m'aider à résoudre ce problème ?
Depuis hier je cherche de gauche à droite pour résoudre ce problème de filtrage mais je n'arrive pas
Si vous avez des idées ou des suggestions à me faire ça va beaucoup m'aider.
En comptant sur votre bonne compréhension et dans l'attente de votre retour , je vous souhaite une excellente journée.
Bien cordialement,
- Messages
- 3'678
- Excel
- 365, 2019
- Inscrit
- 11/04/2020
- Emploi
- Formateur bureautique, dvpt de fichiers
Bonjour,
Pour le 1er exemple, pourquoi ne pas utiliser la même structure que pour le 2nd ?
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Type Spécificité").PivotItems("(blank)").Visible = FalsePour le 2ème exemple, quand tu mets clearallfilters, cela réaffiche toutes tes valeurs. Puis tu demandes à tout un tas de champs d'être affichés. Il y a un truc qui coince là-dessus à mon avis.
Bonjour et bienvenue,
Un petit fichier ?
Cdlt.
21Formatic je vous remercie pour votre retour , j'ai résolu mon premier problème de filtrage par vide , j'ai oublié de mettre "t " au niveau de la méthode "PivotTable"
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Type Spécificité").ClearAllFilters
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Type Spécificité").CurrentPage = "(blank)"- Je n'arrive toujours pas à résoudre mon deuxième problème , je souhaiterais afficher les éléments du champ "Libellé du Groupe Perf" , ma macro s'exécute bien sans souci, mais en venant dans mon TCD je trouve que le champ" Libellé du Groupe Perf " n'est pas filtré
voici le code ci dessous :
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Libellé du Groupe Perf").ClearAllFilters
With ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Libellé du Groupe Perf")
.PivotItems("Prev PP globale").Visible = True
.PivotItems("Val Désirio").Visible = True
.PivotItems("Val Epargne Vie").Visible = True
.PivotItems("Val Gestion Préconisée").Visible = True
.PivotItems("Val Ret ind.").Visible = True
.PivotItems("Conquêtes Part multirisques").Visible = True
.PivotItems("Conquetes Pro Agri").Visible = True
.PivotItems("Conquetes Pro ACPS").Visible = True
.PivotItems("PN IARD HT").Visible = True
.PivotItems("Nb Auto").Visible = True
.PivotItems("Nb GAV").Visible = True
.PivotItems("Nb Habitation").Visible = True
.PivotItems("Nb Santé ind.").Visible = True
.PivotItems("Nb GBH").Visible = True
End With
'Filtre sur le champ service se trouvant en collonne
ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Service").ClearAllFilters
With ActiveSheet.PivotTables("mon tableau croisé dynamique").PivotFields("Service")
.PivotItems("Développement 02").Visible = True
.PivotItems("Développement 08-51").Visible = True
.PivotItems("Développement 10").Visible = True
.PivotItems("Développement 51").Visible = True
.PivotItems("Développement 59 Nord").Visible = True
.PivotItems("Développement 59 Sud").Visible = True
.PivotItems("Développement 62").Visible = True
End WithQuand je mets = True aucun élément n'est sélectionné , pourtant la macro s'exécute bien
Et quand je mets = False l'élément spécifié est déselectionné
Auriez-vous des idées à me proposer svp pour résoudre ce problème de filtrage sur le champ "Libellé du Groupe Perf "?
Jean-Eric j'arrive pas à joindre le fichier