VBA erreur suite requête query & pivot

Bonjour à tous,

Sur le fichier joint, en allant sur l'onglet TCD, j'ai le message suivant : erreur d'éxecution 1004 impossible de lire la propriété PivotFields de la classe PivotTable

Le code vba bloque sur le défiltrage du tableau croisé dynamique 1,

Merci d'avance,

Cordialement,

Bonjour massari59264,

Voir dans le fichier ci-joint le code modifié et commenté dans le fichier ci-joint.

Cdlt,

Cylfo

Bonjour Cylfo,

C'est parfait cela fonctionne,

En essayant de comprendre pas par pas votre proposition , et par curiosité, pourriez vous me dire pourquoi en installant la suspension de la gestion évènementielle et la réactivation de celle ci, la ligne suivant bloque si je la laisse écrite telle qu'elle à l'origine ?

.PivotFields("DATE").ClearAllFilters

J'ouvre un autre post sur une interrogation de la date traité par power pivot,

Merci pour votre aide,

Cordialement,

Re,

Il y avait 2 soucis :

  1. ClearAllFilters efface TOUS les filtres donc il s'applique au tableau "Feuil1.PivotTables(1)" et pas à un champ.
  2. L'effacement des filtres provoquait l'appel à l'événement "worksheet_PivotTableUpdate" et comme les filtres étaient effacés "ActiveWorkbook.SlicerCaches(1).TimelineState" n'étaient plus valorisés, la tentative d'affecter une valeur aux variables D et F provoquait une erreur. Donc en suspendant la gestion événementielle on ne déclenche plus cet événement lors de l'effacement des filtres. On la réactive ensuite avant de réinitialiser les filtres ce qui déclenche l'événement et les mises à jours sans erreur.

Bonjour,
Une autre proposition.
Cdlt.

Bonjour Cylfo,

Pourquoi sur le fichier la partie ci-jointe ne fonctionne pas :

    .PivotFields("DATE_TB").PivotFilters.Add2 _
        Type:=xlDateBetween, Value1:=(Range("J2").Value), Value2:=(Range("J3").Value)

Vous l'avez remplacer par un filtre sur la chronologie, mais pourquoi ne peut passer par le TCD?

Merci également à Jean Eric dont j'étudierai la proposition plus tard, étant très pris de suite,

Cordialement,

Re,

Je n'ai pas pu remplacer ce code, il ne figurait pas dans le fichier transmis ...

Visiblement le champ "DATE_TB" ne fait pas partie de la collection "PivotFields" qui n'en comporte que 2, voir ci-dessous résultats obtenus dans la fenêtre exécution :

image

Cdlt,

Cylfo

Bonjour Cylfo,

Désolé erreur dans le code c'est :

    .PivotFields("DATE").PivotFilters.Add2 _
        Type:=xlDateBetween, Value1:=(Range("J2").Value), Value2:=(Range("J3").Value)

qui ne fonctionne pas ?, alors que le champ date apparait bien dans le TCD?,

J'ai lancé une macro a l'aide de l'enregistreur, et j'obtiens :

    .PivotFields( _
        "[T_CA].[DATE].[DATE]").PivotFilters.Add2 _
        Type:=xlDateBetween, Value1:=(Range("J2").Value), Value2:=(Range("J3").Value)

Cependant toujours le même message d'erreur,

Merci d'avance,

Cordialement,

Rechercher des sujets similaires à "vba erreur suite requete query pivot"