Bonjour,
Un des soucis avec les TCD, c'est que celui-ci garde en mémoire tous les items, même s'il n'y a plus de données dans le tableau d'origine.
Ces 2 codes permettent de supprimer les anciens items inutilisés.
Le premier a l'avantage de n'être exécutable qu'une seule fois. Après l'avoir exécuté une fois, les futurs "anciens" items n'apparaitront plus, sans qu'il soit nécessaire de dérouler le code :
Sub supprime_anciens_items()
'Excel 2002 et ultérieurs
Dim pvt As PivotTable
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
For Each pvt In sh.PivotTables
pvt.PivotCache.MissingItemsLimit = xlMissingItemsNone
pvt.PivotCache.Refresh
Next pvt
Next sh
End Sub
si souci avec ce code, tu peux également exécuter celui-ci :
Published by Debra Dalgleish 21 Juin 2003
'
'======================
Sub DeleteOldItemsWB()
'gets rid of unused items in PivotTable
' based on MSKB (202232)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim i As Integer
On Error Resume Next
For Each ws In ActiveWorkbook.Worksheets
For Each pt In ws.PivotTables
pt.RefreshTable
For Each pf In pt.PivotFields
For Each pi In pf.PivotItems
If pi.RecordCount = 0 And _
Not pi.IsCalculated Then
pi.Delete
End If
Next
Next
Next
Next
End Sub
Bonne journée sous le soleil