IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

[E-07] Macro création d'un graphique sous Excel 2007


Sujet :

Contribuez

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 103
    Points : 91
    Points
    91
    Par défaut [E-07] Macro création d'un graphique sous Excel 2007
    J'AI INSÉRÉ DES COPIES D'ÉCRAN HÉBERGÉES PAR SERVIMG. ÇA PREND DU TEMPS A CHARGER PARFOIS...

    Soit un tableau MS-Excel 2007 et un bouton comme le montre l'image ci-dessous.
    Et un bouton


    Je veux créer automatiquement un graphique à partir du tableau en cliquant sur le bouton. Quel code dois-je écrire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub Bouton1_Clic()
    'Création d'un graphique dans la feuille active.
        ActiveSheet.Shapes.AddChart
    'Activation du graphique sans le sélectionner
        ActiveSheet.ChartObjects(1).Activate
    'Propriétés du graphique
        With ActiveChart
                    'Selection de la source des données
                    'Cette méthode fonctionne très bien pour ce tableau
                    'Le nom abscices et des ordonnées est trouvé automatiquement par Excel
                    'Il y a une autre méthode pour créer chaque série une à une. Mais là c'est pour faire simple.
                    .SetSourceData Source:=Worksheets(1).Range("A$1:$F$10"), PlotBy:=xlRows
                    'Définition du Type du Graphique en courbes
                    .ChartType = xlLine
                   'Déplacement du graphique dans une feuille Graph plutôt que de le laisser dans une Feuille Sheet
                    .Location Where:=xlLocationAsNewSheet
        End With
     
    End Sub
    Le résultat :


    > Pas bien fameux... J'ai effectivement un graphique sur une nouvelle feuille, mais, les lignes 8 et 9 ont des valeurs trop importantes, les valeurs des autres lignes sont écrasées dans le bas du graphique.
    > Il faut créer un axe secondaire pour les lignes 8 et 9. Pour distinguer ces courbes des autres, on va les modifier pour les remplacer par un histogramme empilé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        'Intervention sur la ligne 8 et 9
        'Création d'une boucle
        For MaLigneEnBoucle = 8 To 9
                With ActiveChart.SeriesCollection(MaLigneEnBoucle)
                        'Affichage des données sur l'axe secondaire
                        .AxisGroup = xlSecondary
                        'Modification du type du graphique par un histogramme empilé
                        .ChartType = xlColumnStacked
                End With
        Next MaLigneEnBoucle
    Résultat :

    >Pas mal.
    >Et si on ajoutait des étiquettes à la Ligne 7. Des étiquettes Bleues, ombrées et transparentes...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
        'Interventin sur les étiquettes de la Ligne 7
        'Création des étiquettes
        ActiveChart.SeriesCollection(7).ApplyDataLabels
        'Sélection pour mise en forme
        ActiveChart.SeriesCollection(7).DataLabels.Select
        'Création d'un bloc d'instructions via la commande With
        With Selection
            'Poisition de l'étiquette au dessus du point.
            .Position = xlLabelPositionAbove
            'Affiche le nom de la série dans l'étiquette
            .ShowSeriesName = True
            'Création d'un retour à la ligne dans l'étiquette
            .Separator = "" & Chr(10) & ""
            'Affiche le nom de la Ligne
            .ShowCategoryName = True
            'Affiche les étiquettes de la ligne 7 dans la couleur du thème accent 1
            .Format.Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent1
            'Rendre les étiquettes transparentes à 50%
            .Format.Fill.Transparency = 0.3
     
            'Ajoute de l'ombre aux étiquettes
            'Création d'un bloc d'instructions imbriqué dans le premier bloc
            With .Format.Shadow
            .Visible = msoTrue 'Ombre visible
            .Obscured = msoTrue 'Ombre recouverte par la forme
            .Blur = 5 'Flou de  niveau 5 : l'ombre est diffuse
            .OffsetX = -5 'décale l'ombre à gauche
            .OffsetY = 5 'décale l'ombre vers le bas
            .Transparency = 0.5 'rend l'ombre transparente à 50%
            .ForeColor.ObjectThemeColor = msoThemeColorText1 'Couleur de l'iombre Thème Text1
            End With
     
        End With
    Résultat :

    > Vraiment bien, sauf que l'ombre est visible sous la forme... Une erreur de programmation que je ne sais pas résoudre... désolé...

    > Pour terminé, j'ai envie de mettre en lumière la Ligne 6
    (Fastoche, on vient juste de me dire comment faire...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Intervention sur la ligne 6
    With ActiveChart.SeriesCollection(6).Format
        'Définit la couleur de lumière Thème Accent 6
        .Glow.Color.ObjectThemeColor = msoThemeColorAccent6
        'Défint la teinte plus claire 25%
        .Glow.Color.TintAndShade = 0.25
        'Définit l 'épaisseur de la lumière
        .Glow.Radius = 8
    End With
    Résultat :


    > Fastoche, mon œil ! L'effet de lumière n'est pas transparent !... Je chercherais plus tard sauf si quelqu'un sait....


    Voilà, le savoir ça se partage.
    On m'a mis le pied à l'étrier, et j'ai fini par comprendre deux ou trois petits trucs de plus.
    Je maintien qu'il faut ajouter un mode d'emploi à l'aide de MS.
    J'espère que tout ces petits bouts de codes vous permettrons de répondre à certaines des petites questions que vous vous posez sur ce sujet.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2006
    Messages : 28
    Points : 35
    Points
    35
    Par défaut
    Bonjour à tous,

    Je vous remercie pour ce fil, le code me sera très utile pour personnaliser mes graphiques.

    Bonne fin de journée

Discussions similaires

  1. [SP-2007] Création d un graphique sous sharepoint 2007
    Par Yass21 dans le forum SharePoint
    Réponses: 8
    Dernier message: 20/02/2015, 02h29
  2. Réponses: 2
    Dernier message: 29/07/2011, 13h55
  3. [VB.NET] Création de graphique sous excel
    Par krfa1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/06/2006, 10h11
  4. [VBA-E]Deplacer un graphique sous Excel
    Par gaudy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2006, 06h43
  5. Création d'un sommaire sous excel
    Par franckh99 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/03/2006, 17h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo