TCD et exlusion des valeurs vide d'un filtre

Bonjour à tous,

J’ai besoin de votre expertise car sèche complètement. Je m’explique :

J’ai un tableau croisé dynamique dans un onglet et les données sources dans un autre. Pour le filtre « N° série/lot », je souhaiterai n’afficher que les valeurs que ne sont pas ( vide ). Sur un forum, j’ai trouvé le code suivant :

Private Sub Worksheet_Activate()
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique1").RepeatAllLabels _
        xlRepeatLabels
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N° série/lot")
        .PivotItems("(blank)").Visible = False
    End With
End Sub

Je pensais que cela fonctionnait mais quand je mets à jour mes données sources, avec un nombre assez conséquent de lignes, toutes les valeurs ( vide ) ne sont pas exclues. L’image ci-dessous illustre mes propos :

1

A noter, que je n’ai pas de latitude sur les numéros de lot et je suis obligé de les conserver comme ils le sont, c.a.d. avec des chiffres, lettres, symboles, …

Avez-vous une idée de modification du code ci-dessous pour que cela fonctionne ? Mon fichier est en PJ.

Merci d’avance.

Jonathan

Bonjour

C'est pas le même sujet qu'ici ??? tcd filtres et valeurs vides

Crdlt

Salut Dan,

Si si ... C'est bien le même sujet mais finalement, cela ne fonctionne pas quand je mets à jour les données avec le code suivant :

Private Sub Worksheet_Activate()
    ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique1").RepeatAllLabels _
        xlRepeatLabels
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N° série/lot")
        .PivotItems("(blank)").Visible = False
    End With
End Sub

J'obtiens toujours une sélection non complète des lignes :

1

Comme expliqué auparavant, les numéros de lot sont aussi bien du texte, que des dates, etc ... toute chaine de caractères.

Merci d'avance pour ton aide, car là je suis complètement bloqué. J'ai essayé tout ce que j'ai vu sur les forums.

Ciao.

Jonathan

Re,

Essaie avec ce code :

Sub MasquerVideTCD()
'Macro Dan le 21/10/14
'Exclusion des valeurs vides dans un champ de TCD
Dim pi As PivotItem
Dim pt As String, champ As String
Dim feuille As Worksheet

Application.ScreenUpdating = False

Set feuille = Worksheets("TCD") 'TCD = nom de la feuille où se trouve le TCD
pt = "Tableau croisé dynamique1" 'Nom du TCD
champ = "N° série/lot" 'Nom du champ où l'on ne veut pas voir les Vides

With feuille.PivotTables(pt)
    .ClearAllFilters
    .PivotFields(champ).EnableMultiplePageItems = True
End With

For Each pi In feuille.PivotTables(pt).PivotFields(champ).PivotItems
    If pi = "(blank)" Then pi.Visible = False
Next pi

Application.ScreenUpdating = True
End Sub

De base j'ai supposé que :

  • le nom du TCD est bien "Tableau croisé dynamique1"
  • le champ "N° série/lot"
  • La feuille où se trouve le TCD s'appelle "TCD".

Attention aux espaces qui provoquent souvent des soucis dans les codes

A te relire

Bonjour Dan,

Rien à dire à part Un Grand Merci ! Cela fonctionne parfaitement. J'avais trouvé une solution avec une autre boucle mais elle prenait 10 secondes pour s’exécuter et donner le bon tri.

Par contre, j'ai aussi un filtre "Transférée" que je souhaiterais filtré sur les valeur "Non". Comment et à quel endroit dois-je inclure cette configuration ?

Au plaisir.

Jonathan

re

"Transférée" que je souhaiterais filtré sur les valeur "Non".

Tu remplaces :

champ = "N° série/lot"

par

champ = "Tranférée"

et plus bas le mot "(blank)" par "Non"

Crdlt

Merci Dan,

Ca fontionne parfaitement !!!

Au plaisir.

Jonathan

Merciiiiiiii Dan ça m'a bcp servi ton programme

Rechercher des sujets similaires à "tcd exlusion valeurs vide filtre"