Faire apparaitre en couleur des mises à jours dans un tableau croisé dynamique

Lorenzogazier

XLDnaute Nouveau
Bonjour,

tout d'abord je tient à vous féliciter pour votre super forum, grâce auquel je me suis souvent tiré de situations trés délicates sur Excel et à l'efficacité de ses visiteurs.

Voilà mon problème simplement : je souhaite faire apparaître les modifications

d'un tableau croisé dynamique en couleur dans les cellules quand je l'actualise

par un cliqué droit.En fait je dois faire ressortir les modifications qu'il y a eu

entre l'ancien tableau croisé dynamique et le nouveau issu du clic droit (actualisés les données) avec une couleur comme du rouge par exemple

si il faut coder pour cela, merci de me donner le morceau de code qui va bien parce que je n'y connait rien en VBA.

Merci par avance pour vos réponses

Et encore merci vous faites un travail remarquable

PS : s'il vous faut davantage de précision veuillez me l'indiquer
 

MichelXld

XLDnaute Barbatruc
Re : Faire apparaitre en couleur des mises à jours dans un tableau croisé dynamique

bonsoir


La procédure fait apparaitre en couleur les mises à jour effectuées dans le TCD lorsque vous utilisez le bouton "Actualiser".
Les données initiales sont stockées dans un tableau lors de l'ouverture du classeur. La procédure va comparer le contenu du
tableau et le TCD à chaque réactualisation et personnaliser la couleur des cellules modifiées.



Code:
'--- Dans un module standard ---
Option Explicit
 
Public Tableau As Variant
'-------------------------------


Code:
'--- Dans le module objet ThisWorkbook ---
 
Option Explicit
 
Private Sub Workbook_Open()
    Dim Pvt As PivotTable
 
    'Le TCD est dans la Feuil4
    Set Pvt = Worksheets("Feuil4").PivotTables("Tableau croisé dynamique1")
 
    Tableau = Pvt.TableRange1.Value
End Sub
'-----------------------------------------


Code:
'--- Dans le module objet de la feuille contenant le TCD ---
Option Explicit
Option Base 1
 
'L'évènement est déclenché à chaque mise à jour du TCD
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
    Dim Cell As Range
    Dim i As Long
    Dim j As Integer
 
    i = Target.TableRange1.Cells(1, 1).Row - 1
    j = Target.TableRange1.Cells(1, 1).Column - 1
 
    'Vérifie si un champ ou une étiquette a été ajouté ou supprimé
    If UBound(Tableau, 2) <> Target.TableRange1.Columns.Count Or _
            UBound(Tableau, 1) <> Target.TableRange1.Rows.Count Then
 
        Erase Tableau
        Tableau = Target.TableRange1.Value
 
        'Tout le TCD change de couleur lorsqu'un champ ou une étiquette
        'est supprimé ou ajouté.
        Target.TableRange1.Cells.Interior.ColorIndex = 4
 
        Exit Sub
    End If
 
    'Boucle sur les cellules du rapport pour comparer le contenu du tableau et du TCD
    For Each Cell In Target.TableRange1
        'Si la donnée a été modifiée
        If Cell.Value <> Tableau(Cell.Row - i, Cell.Column - j) Then
            'Personnalise la couleur de la cellule
            Cell.Interior.ColorIndex = 4
            Else
            Cell.Interior.ColorIndex = 9
        End If
    Next Cell
 
    'Efface le contenu du tableau
    Erase Tableau
    'Stocke les nouvelles données dans le tableau
    Tableau = Target.TableRange1.Value
End Sub
'-----------------------------------------------------------------


Bonne soirée
MichelXld
 
Dernière édition:

Lorenzogazier

XLDnaute Nouveau
Re : Faire apparaitre en couleur des mises à jours dans un tableau croisé dynamique

Merci beaucoup Michel, cela faisait en effet un moment que je bloquais sur ce problème et tu m'a apporté la réponse qu'il me fallait.

Un grand merci je vais tester cela tout de suite

Laurent
 

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 710
dernier inscrit
amin Saadaoui