XL 2013 TCD passer sur tous les champs pour filtrer (masquer) les "vides"

Raynaud.JF

XLDnaute Nouveau
Bonjour, je cherche désespérément comment faire pour dans un tcd
1/ défiltrer tous les champs
2/ refiltrer toutes les valeurs "vide"

Merci par avance de votre aide.

voila ce que je fais
Set Pvt = ActiveSheet.PivotTables("TCD") '=> MON TCD

For Each pf In Pvt.PivotFields ' => je passe sur tous les pivot fields
pf.ClearAllFilters '=> je de filtre
Next

A partir de là cela ne fonctionne plus,

For Each pf In Pvt.PivotFields
For Each pi In Pvt.PivotFields(pf).PivotItems '=> ERREUR DEFINI PAR L'APPLICATION OBJET
If pi = "(blank)" Then pi.Visible = False
Next pi
Next
 

chris

XLDnaute Barbatruc
Bonjour

En complément de la remarque de Gégé-45550

Sachant qu'on peut filtrer par segment, le VBA s'impose-t-il ?

Il y avait un bug, sur 2010 et 2013, peut-être corrigé par un SP depuis, qui plantait le filtrage par VBA sur les dates et les blank

Les vides ne sont-ils pas évitables dès la source ? C'est le cas dans 95% des cas
 

Raynaud.JF

XLDnaute Nouveau
Bonjour et Merci à vous.
Gégé a trouvé, super !!! le code qui fonctionne ci-dessous.
Merci aussi Chris, effectivement je pourrai essayer de de ne pas prendre les "vides" dans la table qui sera utilisée par le TCD. Cela aurai été ma seconde source.

Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
On Error Resume Next

With ActiveSheet 'For Each ws In ActiveWorkbook.Worksheets
For Each pt In ActiveSheet.PivotTables
pt.RefreshTable
For Each pf In pt.PivotFields
pf.ClearAllFilters
For Each pi In pf.PivotItems
If pi = "(blank)" Then pi.Visible = False
Next
Next
Next
End With
 

Discussions similaires