"Défilter" un TCD rapidement et le "refiltrer" rapidement pour un seul élément

Signaler
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
Bonjour,

j'ai étudié votre forum et malheureusement, je n'ai pas trouvé LA solution idéale, d'ou mon message.

Je souhaite "dé filtrer" un TCD en VBA sous excel en une seule manipulation pour la "refiltrer" sauf pour une seule variable

En faisant comme ci-dessous, cela se fait très (trop) lentement ...

Dim monPivIt As Object, Mavariable
Mavariable = "BNP "
Application.ScreenUpdating = False
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("ETAB")

For Each monPivIt In .PivotItems
monPivIt.Visible = True
Next

On Error Resume Next
For Each monPivIt In .PivotItems
If monPivIt.Name <> Mavariable Then monPivIt.Visible = False
Next
End With
Application.ScreenUpdating = True


Comment faire pour que cela soit quasiment immédiat, comme lorsqu'on le fait manuellement en sélectionnant nous même les items dans le TCD ?

Un grand merci d'avance

Coridalement
A voir également:

1 réponse

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Bonjour,

Je ne pense pas qu'il soit possible d'aller plus vite que ceci:
For Each monPivIt In .PivotItems 
   If monPivIt.Name = Mavariable Then 
      monPivIt.Visible = True
   Else
      monPivIt.Visible = False
   End If
Next


et tu laisses tomber la partie précédente
For Each monPivIt In .PivotItems 
monPivIt.Visible = True 
Next


Le problème, comme tu le sais probablement, est que le filtre doit avoir au moins une valeur sélectionnée. Il faut donc s'assurer que la variable "MaVariable" soit valide.

Personnellement, j'utilise une boucle comme suit, mais ce n'est probablement pas plus rapide...
For I = 1 To .PivotItems.Count
   If .PivotItems.Item(I) = MaVariable Then
      .PivotItems.Item(I).Visible = True
   Else
      .PivotItems.Item(I).Visible = False
   End If
Next


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI