Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre actif
    Inscrit en
    avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 31

    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")
    Excel Download
    Developpez.com
    Fichiers attachés Fichiers attachés
    S'il n'y a pas de solution, il n'y a pas de problème.
    Moi je dis ça, je dis rien.

  2. #2
    Membre actif
    Inscrit en
    avril 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 31

    Informations forums :
    Inscription : avril 2003
    Messages : 281
    Points : 160
    Points
    160

    Par défaut

    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.

  3. #3
    Invité de passage
    Inscrit en
    mars 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    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

  4. #4
    Invité de passage
    Inscrit en
    mars 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : mars 2010
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •