VBA tcd filtre non operationnel

Bonjour à tous,

Je post le fichier pour tenter d'avoir une explication :

Il y a trois onglet :

1) base T_CA

2) TCD : une procédure évènementielle se lance à l'activation de la feuille afin de filtrer le TCD aux dates indiquées en J2/J3

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False

With PivotTables(1)
    .PivotCache.Refresh
    .ClearAllFilters
    .PivotFields("DATE").PivotFilters.Add2 _
        Type:=xlDateBetween, Value1:=Str(Range("J2").Value), Value2:=Str(Range("J3").Value)
End With

End Sub

3)TCD POWER PIVOT : une procédure évènementielle se lance également à l'activation de la feuille afin de filtrer le TCD aux dates indiquées en J2/J3 :

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False

With PivotTables(1)
    .PivotCache.Refresh
    .ClearAllFilters
    .PivotFields("[T_CA].[DATE].[DATE]").PivotFilters.Add2 _
        Type:=xlDateBetween, Value1:=Str(Range("J2").Value), Value2:=Str(Range("J3").Value)
End With

End Sub

Message d'erreur : impossible de lire la propriété PivotFields de la classe PivotTable, le champs date est pourtant bien présent ?

Merci d'avance,

Cordialement,

Bonjour,

Pour une raison que j'ignore quand j'essaye d'utiliser un espion sur les PivotFields du TCD et que je veux regarder le deuxième item, ça fait systématiquement planter Excel.

J'ai toutefois trouvé une parade avec l'enregistreur de macro et en utilisant le Segment:

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False

ActiveWorkbook.SlicerCaches("Chronologie_DATE").ClearDateFilter
ActiveWorkbook.SlicerCaches("Chronologie_DATE").TimelineState. _
        SetFilterDateRange Range("J2").Value, Range("J3").Value
End Sub

Avec ça on peut définir le filtre de date avec le Segment qui va directement changer les données du TCD, et aucun message d'erreur.

Bonjour Ausecour,

Merci pour votre retour, j'ai donc adopté cette alternative

J'ai modifié sur mon fichier de travail perso comme ceci :

Application.EnableEvents = False

    Me.PivotTables(1).PivotCache.Refresh

    With ActiveWorkbook.SlicerCaches("Chronologie_DATE")
        .ClearDateFilter
        .TimelineState. _
        SetFilterDateRange Range("F4").Value, Range("E4").Value
    End With

Application.EnableEvents = True

Je met la procédure en point d'arrêt sur VBA puis avance pas à pas (fn F8) et tout se passe relativement vite mais ça rame un peu lorsque le code arrive sur With ?,

Auriez vous une idée?, ou existe il une autre façon d'appeler l'objet de manière plus efficace?,

Merci d'avance,

Cordialement,

Rebonjour,

Malheureusement je n'ai pas particulièrement plus d'idées non, j'avoue assez rarement travailler avec ces objets en VBA au point où j'en appelle à l'enregistreur de macro pour savoir où se trouve ce que je cherche.

Bonjour Ausecour,

Merci tout de même pour votre retour,

Cordialement,

Rechercher des sujets similaires à "vba tcd filtre operationnel"