Garder le format à l'actualisation d'un graphe croisé dynamique
Pour graphique incorporé (pas une feuille graphique)
J'avais un problème de format pour mes graphes croisés dynamiques. A chaque fois que je changeais un champ dynamique, le format par défaut revenait (avec ses jolies couleurs).
Voici comment j'ai résolu mon problème, en espérant que ce soit utile. C'est un mix de plusieurs choses que j'ai vues... donc merci à ceux qui m'ont aidé. Ce post est juste un regroupement de ces infos.
Il y a surement d'autres solutions.
1) Création du graphe
Pour cela, c'est tout simple. On sélectionne ses données, on fait un tableau croisé dynamique ("Données > Rapport de tableau croisé dynamique") que l'on transforme en graphe (clic droit sur le tableau puis "Graphique croisé dynamique").
Pour utiliser le code ci dessous, j'ai renommé mon graphique. Pour cela, sélectionner votre graphique en appuyant sur la touche "Ctrl" ce qui fera apparaître le nom actuel que vous pourrez modifier (dans le coin haut gauche d'excel, à gauche de la barre de formule). Dans mon exemple, je l'ai appelé "graphNoteEncours".
2) Définir le style
Donnez à votre graphe le format que vous voulez et enregistrer le. Pour cela, clic droit sur le graphe, "Type de Graphique...". Allez dans l'onglet "Type personnalisé" et choisissez le bouton radio ("sélectionner parmi les") "Type pesonnalisé". A ce moment là, un bouton "Ajouter..." apparait, cliquez dessus et saisissez un nom de modèle (pour mon exemple, "noteEncours").
Note : on peut remettre à la main ce modèle, le but de l'exemple est en fait d'automatiser l'activation de ce modèle après un changement.
3) Code pour automatiser l'activation du modèle
Mon exemple correspond à des graphes incorporés, c'est à dire un objet graphique et non une feuille graphique. Pour le cas d'une feuille graphique, on peut agir directement sur les évènements de la feuille. Dans le cas de graphes objets, il faut créer un module de classe et lier le graphe à ce module.
Donc, direction l'éditeur VBa (Alt + F11).
Clic droit (j'aime le clic droit ), donc clic droit sur le projet (dans l'arborescence du projet) et faites "Insertion > Module de Classe".
Nommer ce module "EventClassModule" (le nom dans la fenêtre de propriété).
Voici le code du module de classe "EventClassModule" :
(Il ne faut pas oublier la déclaration de myChartClass)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public WithEvents Public WithEvents myChartClass As Chart ' fonction appelée à chaque MAJ du graphe Private Sub myChartClass_Calculate() ' activation du modèle de format myChartClass.ApplyCustomType ChartType:=xlUserDefined, TypeName:= _ "noteEncours" End Sub
Ensuite, il faut lier le module de classe au graphe lui même. Pour cela, on va mettre le code suivant dans le workbook ("ThisWorkbook" par défaut) :
Comme cela, le code s'executera à l'ouverture du fichier excel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim myClassModule As New EventClassModule ' lier le graphique au module de classe Private Sub Workbook_Open() Set myClassModule.myChartClass = _ Sheets("Note Encours").ChartObjects("graphNoteEncours").Chart End Sub
Maintenant, pour chaque MAJ ou recalcule du graphe, on gardera le même modèle.
Pour ajouter un autre graphe au même modèle, il suffit de définir une autre instanciation du module de classe et de lier le module au graphe.
Fichier exemple en PJ.
Sources :
aide Excel ("Utilisation d'événements avec des graphiques incorporés")
Excel Download
Developpez.com
Partager