Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, faq, codes sources, astuces pour VBA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2007, 13h41   #1
Membre actif
 
Inscription : avril 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2003
Messages : 281
Points : 160
Points : 160
Par défaut Garder le format à l'actualisation d'un graphe croisé dynamique

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" :
Code :
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
(Il ne faut pas oublier la déclaration de myChartClass)

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) :
Code :
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
Comme cela, le code s'executera à l'ouverture du fichier excel.

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")
Excelabo
Excel Download
Developpez.com
Fichiers attachés
Type de fichier : zip Format graphe dynamique.zip (50,5 Ko, 49 affichages)
__________________
S'il n'y a pas de solution, il n'y a pas de problème.
Moi je dis ça, je dis rien.
sunvialley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2007, 14h12   #2
Membre actif
 
Inscription : avril 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2003
Messages : 281
Points : 160
Points : 160
en fait le code, n'est pas parfait.
A certaine ouverture, cela fait ramer... en effet, je fais une actualisation dans la fonction d'actualisation. Donc ca boucle ... aie
__________________
S'il n'y a pas de solution, il n'y a pas de problème.
Moi je dis ça, je dis rien.
sunvialley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2010, 14h22   #3
Invité de passage
 
Inscription : mars 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 1
Points : 1
Points : 1
Bonjour,

Le problème que tu as et la solution que tu propose correspondent exactement a mon souci.
Le problème c'est que mon fichier ne fonctionne pas, j'ai donc télécharger ton fichier. il ne fonctionne pas non plus.
Est ce qu'il y a une manip a faire dans excel.
ou les formules ne son pas correct ? je ne sais pas.

En tout cas si tu pouvais m'aider sur ce sujet
fumesta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2010, 17h22   #4
Invité de passage
 
Inscription : mars 2010
Messages : 1
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 1
Points : 1
Points : 1
Bonjour,

après avoir un peu galéré, la solution que j'ai trouvé la plus pratique est de créer un graphique "normal" à partir des données du tableau dynamique croisé.
Pour cela, il faut un peu ruser, car Excel semble tenir absolument à ce que tout graphique créé à partir de données d'un tableau dynamique croisé soit un "Graphe dynamique croisé".
La méthode que j'utilise est la suivante:
1. Cliquer sur le bouton "Assistant graphique" en ayant pris garde que la cellule active soit en dehors du tableau dynamique croisé.
2. Séléctionner le type de graphique souhaité
3. Cliquer sur l'onglet "Série" en haut
4. Ajouter les séries une par une à l'aide du bouton ad-hoc et sélectionner les plages souhaitées du tableau dynamique.

On obtient un graphique "normal" qui ne perd pas son format lors du rafraichissement des données du tableau dynamique croisé.
En contrepartie, il ne faut pas que la structure du tableau change (insertion de nouveaux champs, ...) car dans ce cas le résultat sur le graphique est imprévisible...

En espérant que cela puisse aider.
owl2010 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h57.


 
 
 
 
Partenaires

Hébergement Web