La table pivot basée sur le jeu d'loggings généré par programme n'a pas le button de rafraîchissement

Excel 2016.

J'ai des données dans la memory que je parsing dans une table Pivot en définissant le cache Pivot dans un jeu d'loggings créé par programme. Cela fonctionne très bien! La seule chose manquante est que l'option de rafraîchissement que vous obtenez normalement dans le menu contextuel lorsque vous cliquez avec le button droit de la souris sur la table Pivot est grisée. Outre ce petit ennui, toutes les fonctionnalités d'une table pivotante sont là.

Aujourd'hui, je résolus le problème de rafraîchissement en ajoutant une command "Refresh Pivot Table" à un menu personnalisé pour mon complément Excel. Cela fonctionne, mais je ne pense pas que ce soit la bonne façon de le faire. La mise à jour de la table pivot doit être effectuée par la command "Refresh" régulière dans le menu contextuel.

Mes questions sont les suivantes: 1) Comment puis-je activer la command de mise à jour du menu contextuel pour une table Pivot lors de l'utilisation d'un jeu d'loggings généré par programme? 2) Comment puis-je capturer l'événement de rafraîchissement qui résulterait de la sélection de la command Refresh?

Pour vous donner plus de détails:

Le jeu d'loggings est créé par un code similaire à celui-ci (raccourci pour plus de commodité)

Public Function GetAllDataAsRecordSet() As Recordset Dim record As CSummaryDatabaseRecord Dim rst As Recordset 'Create the recordset Set rst = New Recordset 'Prepare fields With rst.fields .Append "Type", adVarChar, 25 .Append "Project Number", adInteger 'More fields here in the real application End With 'Open the recordset for data insertion rst.Open 'Get the data as a collection and create one record for each item in the collection For Each record In GetAllData() rst.AddNew With record rst.fields("Type") = .tag rst.fields("Project Number") = .ProjectNumber 'More data here in the real application End With Next 'record Set GetAllDataAsRecordSet = rst End Function 

Le cache pivot est mis à jour et actualisé par le code ci-dessous qui appelle la méthode de class ci-dessus

 Set pivot.PivotCache.Recordset = allocationDB.GetAllDataAsRecordSet pivot.PivotCache.Refresh 

où la variable "pivot" fait reference à la table Pivot en question.

Le cache Pivot et la table Pivot ont été créés à l'origine avec le code ci-dessous, mais une fois en place, seul le jeu d'loggings du cache est mis à jour conformément à l'extrait ci-dessus.

 Set mainCache = ActiveWorkbook.PivotCaches.Create(xlExternal) Set mainCache.Recordset = allocationDB.GetAllDataAsRecordSet mainCache.CreatePivotTable Range("A4"), "MainPivot" 

Dans l'set, il fonctionne très bien, sauf pour le manque de menu du menu de la table pivotante "Refresh", l'option étant grisée.

Toute aide est grandement appréciée.

PERE