TCD, filtres et valeurs vide

Bonjour à tous les pros d’Excel !

Je me permets de faire appel à vos compétences car je suis au bout de mes possibilités malgré mes nombreuses recherches et essais.

Dans un onglet, j’ai réussi à associer à un tableau croisé dynamique les fonctions suivantes, lorsque l’on active l’onglet :

  • Rafraichissement du TCD ;
  • Répétition des valeurs d’étiquettes de ligne pour les versions office 2003
  • Sélection de l’ensemble des valeurs du filtre « N° série/lot » sauf des valeurs vide

Maintenant, je souhaiterai conserver les fonctions 1 & 2, mais avoir l’inverse de la fonction 3, c.a.d. n’afficher que les lignes du TCD où la valeur « N° série/lot » est vide. J’ai tout essayé avec l’enregistreur de macro et les forums mais n’y arrive pas notamment quand j’ajoute des lignes à la source de données du TCD et que je l’actualise. J’ai imaginé, via l’enregistreur de macro, la sélection de l’ensemble des valeurs pour prendre en compte les nouvelles lignes, la désélection de l’ensemble des valeurs et enfin la sélection uniquement des valeurs « vide ». Cela ne fonctionne pas automatiquement …

Voici mon code actuel :

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

Comment dois-je changer la dernière partie, ci-dessous, pour avoir uniquement les valeurs « vide » dans le filtre « N° série/lot » du TCD ?

    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("N° série/lot")
        .PivotItems("(blank)").Visible = False
    End With

Merci par avance.

Jonathan

Bonjour,

1er. point : Ton profil indique tu utilises Excel 2003. La méthode 'RepeatAllLabels' n'existe pas dans cette version (Excel 2010+).

2ème. point : Sans fichier, il est difficile de t'aider davantage. On ne connaît pas la structure de ton TCD.

A te relire.

Cdlt.

Bonjour Jean-Eric,

Merci pour ta remarque, j'adjoins à cet email un TCD avec l'onglet donnees. C'est dans ce dernier que je voudrais ajouter des données et que seules les lignes avec les filtres "Transférée" avec NON et "N° série/lot" avec "vide" s'affichent.

Merci pour votre aide.

Jonathan

42tcd-filtre.xlsx (176.96 Ko)

Bonjour,

1 - Actualisation automatique du TCD.

Voir gestionnaire de noms (définir un nom, je crois avec Excel 2003) ---> Plage dynamique nommée 'tblDonnées'

Faire ALT F11 et voir module Feuil1(TCD)

Private Sub Worksheet_Activate()
Dim pt As PivotTable
    Application.ScreenUpdating = False
    Set pt = ActiveSheet.PivotTables(1)
    pt.PivotCache.Refresh
    Set pt = Nothing
End Sub

2 - Comme écrit précédemment, impossible à réaliser avec les versions Excel <2010. Il y a un moyen de contourner cette restriction avec VBA. Préciser le nom des champs concernés.

3 - L'actualisation automatique du TCD peut répondre, semble-t-il à ta demande. Dans la négative, envoyer une représentation visuelle de tes attentes (copier/coller).

4 - le plus important : ta colonne A ne devrait pas comporter de cellules vides.

4 - Travailler avec Excel 2003, envoyer un fichier Excel 2007 peut générer des problèmes de mise en forme et de compatibilté (les TCDs ayant considérablement évolués)

Cdlt.

51tcd-filtre.rar (34.77 Ko)

Bonjour Jean-Eric,

Merci pour le fichier mis à jour, c'est compréhensible même si je n'ai pas tout compris

J'ai testé sur mon tableau et cela semblait fonctionner comme le montre la 1ère image :

image1

Cependant, à partir d'un certain nombre de lignes, les numéros de lot même non vides sont cochés comme le montre l'image 2 :

image2

Avez-vous une petite idée ?

Jonathan

Bonjour,

N'hésite pas à poser des questions

Sinon, aucune réponse à mes remarques?

Merci pour les images, mais je pensais à l'envoi d'un nouveau fichier (représentatif de tes vraies données)

et une représentation visuelle des résultats souhaités.

* Il n'est pas normal d'avoir un champ qui comporte plusieurs types de données (dates, nombres et texte.

A te relire.

Cdlt.

Bonjour Jean-Eric,

Finalement, cela fonctionne ... erreur de mon coté !

Merci pour tout.

Jonathan

Finalement Jean-Eric,

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.

Quelqu'un a une idée ?

Jonathan

Rechercher des sujets similaires à "tcd filtres valeurs vide"