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").PivotTableMais pour le mettre à jour je ne comprend pas les différences entre les méthodes suivantes (malgré la documentation) :
pvt.PivotCache.Refreshet
pvt.RefreshTableLaquelle 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 !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Mais pour le mettre à jour je ne comprend pas les différences entre les méthodes suivantes (malgré la documentation) :
pvt.PivotCache.Refreshet
pvt.RefreshTableLaquelle 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.Name2- 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")