Actualiser Filtre Pivotitem d'un TDC après màj table

Bonjour,

A partir d'une table où j'enregistre des évolutions chronologiques , j'affiche le résultat dans un TDC en filtrant un champs nommé "DateR" pour n'afficher que les lignes contenant une date dans ce champs.

Lorsque j'enregistre un nouveau mouvement sur une ligne de la table le filtre du pivotitem "DateR" ne prend pas en compte la nouvelle saisie. Je dois cocher manuellement la case pour actualiser le filtre et afficher le résultat correct dans le TDC.

J'ai essayé de saisir automatiquement le code en enregistrant une macro, mais le résultat n'est pas utilisable.

[/Sub Macro1()
'
' Macro1 Macro
'
    ' Coche manuelle du nouveau pivot item
    With ActiveSheet.PivotTables("TDCRembt").PivotFields("DateR")
        .PivotItems("11/05/2020").visible = True
    End With

    ' Sélection de tous les items et décoche des "Blank"
   With ActiveSheet.PivotTables("TDCRembt").PivotFields("DateR")
        .PivotItems("01/04/2017").visible = True
        .PivotItems("14/05/2017").visible = True
        .PivotItems("11/08/2017").visible = True
        .PivotItems("27/01/2018").visible = True
        .PivotItems("27/02/2018").visible = True
        .PivotItems("12/03/2018").visible = True
        .PivotItems("22/03/2018").visible = True
        .PivotItems("27/07/2018").visible = True
        .PivotItems("27/01/2019").visible = True
        .PivotItems("23/03/2019").visible = True
        .PivotItems("27/03/2019").visible = True
        .PivotItems("09/04/2019").visible = True
        .PivotItems("15/04/2019").visible = True
        .PivotItems("27/04/2019").visible = True
        .PivotItems("07/06/2019").visible = True
        .PivotItems("28/06/2019").visible = True
        .PivotItems("21/07/2019").visible = True
        .PivotItems("27/07/2019").visible = True
        .PivotItems("28/07/2019").visible = True
        .PivotItems("11/03/2020").visible = True
        .PivotItems("11/05/2020").visible = True
    End With
    With ActiveSheet.PivotTables("TDCRembt").PivotFields("DateR")
        .PivotItems("(blank)").visible = False
    End With
End Sub]
[code]

Existe-il une instruction VBA qui permet d'actualiser le filtrage des pivotitems qui s'affichent dans un TDC sans passer par une routine avec boucle pour tester la valeur de chaque pivotitem?

Pour ce cas particulier, je veux afficher tous les pivotitems qui ne sont pas à "Blank"

Merci par avance pour votre aide.

Cdt

JMV

Bonjour

Pas facile avec des TCD sans le fichier.

Peut être essayer ce code..

Sub Macro1()
'Macro Dan
Dim pi As PivotItem

With ActiveSheet.PivotTables("TDCRembt")
    .PivotCache.Refresh
    For Each pi In .PivotFields("DateR").PivotItems
        On Error Resume Next
        If pi.DataRange = 0 Then pi.Visible = False Else: pi.Visible = True
    Next
End With
End Sub

Cordialement

Bonjour,

merci pour la réponse.

Pour illustrer le problème, j'ai créé un fichier avec deux onglets. Le premier onglet contient un extrait de table avec les données. J'ai rajouté manuellement la dernière ligne de la table. Si l'on affiche l'onglet TDC, cette ligne n'apparait pas dans le TDC même après refresh. Il faut aller sur le filtre du pivotitem pour cocher la case correspondant à cette ligne entrée aujourd'hui pour qu'elle apparaisse dans le TDC.

En fait, je voudrais éviter de passer par une boucle qui teste la valeur de chaque pivotitem pour lui attribuer la propriété "visible" si elle n'est pas égale à "Blank"

Existe-t-il pas une instruction VBA qui force l'affichage de tous les pivot items même s'il existe un filtre actif.

Si c'est le cas, il suffirait de tout sélectionner avec cette instruction et ensuite de rajouter la ligne

PivotItems("(blank)").visible = False

pour masquer tous les pivotitems ne contenant pas d'info.

J'espère que mes explications permettent de comprendre ce que je recherche;

Cdt

JMV

Bonjour,

Une proposition à tester.

Cdlt.

Public Sub JMV()
Dim rng As Range, maxDate As Date
    Set rng = Range("Invest").Columns(15)
    maxDate = WorksheetFunction.Max(rng)
    With Worksheets("TDC").PivotTables(1)
        .RefreshTable
        With .PivotFields("DateR")
            .ClearAllFilters
            .PivotFilters.Add Type:=xlSpecificDate, Value1:=CStr(maxDate)
        End With
    End With
End Sub

Bonsoir Jean-Eric,

je viens de tester ta proposition dans mon application.

Cela fonctionne parfaitement.

Un grand merci pour ton aide.

Bonne soirée

Cdt

JMV

Bonjour à tous

Ceci suffit

tcd filtre

Bonsoir Chris,

OK, c'est encore plus simple comme cela!

Merci

Cdt,

JMV

Bonjour

Désolé du retard... Vu que vous avez réponse qui vous convient, merci de cloturer le fil en cliquant sur le petit v en haut à droite.

Cordialement

Rechercher des sujets similaires à "actualiser filtre pivotitem tdc maj table"