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 ?
Le résultat :
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
> 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é.
Résultat :
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
>Pas mal.
>Et si on ajoutait des étiquettes à la Ligne 7. Des étiquettes Bleues, ombrées et transparentes...
Résultat :
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
> 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...)
Résultat :
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
> 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.
Partager