Excel: nettoyage de la mémoire cache des Tableaux Croisés Dynamique (TCD)

Nettoyer le “cache” des tableaux croisés dynamiques (TCD)

Si jamais votre tableau croisé dynamique affiche une valeur qui ne devrait pas s’y trouver, c’est que vous êtes victime d’un problème de mémoire cache. En effet, il arrive qu’après des manipulations de données, le tableau croisé dynamique affiche des valeurs qui ne devraient plus y figurer. Lors de la création d’un segment par exemple, d’anciennes valeurs (déjà effacées) peuvent apparaître en tant que valeurs de filtre.

Ayant été confronté à ce problème et fait mes recherches, je vous propose de solutionner ce problème en utilisant une macro VBA.

Résoudre le problème de « mémoire cache » des TCD

Les Tableaux croisés dynamiques ont leur propre mémoire cache. Il suffit d’un petit peu de code VBA à rattacher à un bouton par exemple « Nettoyer le Cache » pour nettoyer correctement le cache des Tableaux Dynamiques Croisé (TCD)
Vous pouvez aussi appelez ce code si vous manipulez des tableaux croisés dynamique en VBA.

Code VBA pour nettoyer la mémoire cache des tableaux croisés dynamiques

La procédure VBA suivante boucle sur tous les tableaux croisés dynamiques du Classeur et vide la mémoire cache de chacun des TCD.

Nettoyage mémoire Cache des Tableaux croisés dynamiques (Pivot tables) VBA

Sub cleanTCDCache()
 
    On Error GoTo Erreur
 
    Dim TabPivot As PivotTable
    Dim F As Worksheet
   
    For Each F In ActiveWorkbook.Worksheets
        For Each TabPivot In Feuille.PivotTables
            With TabPivot 
                .MissingItemsLimit = xlMissingItemsNone
                .Refresh
            End With
        Next TabPivot 
    Next F
    
    Set TabPivot = Nothing
    Set F= Nothing
Exit Sub
 
Erreur:
    MsgBox "Une problème est survenu lors du nettoyage du cache TCD..."
End Sub