Mettre à jour TCD par VBA

Bonjour,

Je suis en train de développer un utilitaire mettant à jour des Tableaux Croisés Dynamiques par le VBA.

Je défini donc un objet PivotTable de la manière suivante :

set pvt = Sheet.Range("A1").PivotTable

Mais pour le mettre à jour je ne comprend pas les différences entre les méthodes suivantes (malgré la documentation) :

pvt.PivotCache.Refresh

et

pvt.RefreshTable

Laquelle privilégiée et dans quel cas ?

De plus, existe-t-il un objet qui regroupe l'objet PivotTable et l'objet ListObject afin de mettre à jour la table qu'elle soit TCD ou juste Tableau ?

Merci d'avance de votre aide !

Bonjour,

Mais pour le mettre à jour je ne comprend pas les différences entre les méthodes suivantes (malgré la documentation) :

pvt.PivotCache.Refresh

et

pvt.RefreshTable

Laquelle privilégier et dans quel cas ?

Il s'agit de 2 cas différents :

La première instruction vide la mémoire tampon utilisée par le TCD pour restituer son rapport. D'ailleurs cette mémoire peut continuer à afficher des données qui n'existent plus notamment après l'utilisation de filtres.

La seconde instruction actualise le TCD à partir de sa source de données

De plus, existe-t-il un objet qui regroupe l'objet PivotTable et l'objet ListObject afin de mettre à jour la table qu'elle soit TCD ou juste Tableau ?

La relations entre l'objet ListObject et le TCD est tout simplement le nom du tableau structuré :

1- pour un TCD existant

    Dim pvt As PivotTable
    Dim table As ListObject

    Set pvt = Sheet.Range("A1").PivotTable
    pvt.SourceData = table.Name

2- pour la création d'un TCD

    Dim pvtcache As PivotCache
    Dim pvt As PivotTable
    Dim table As ListObject

    Set pvtcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, table.Name)
    Set pvt = pvtcache.CreatePivotTable(Sheet.Range("A1"), "TCD1")
Rechercher des sujets similaires à "mettre jour tcd vba"