Rapport entre les objets Shape, ChartObject et Chart
Bonjour, je m'initie aux arcanes de VBA en cherchant à réaliser un VuMêtre à l'aide d'un graphique (demi-anneau, 2 couleurs).
Dans le code qui suit j'utilise des objets Shape, ChartObject et Chart pour faire référence au même graphique. Puis-je utiliser le même objet (par exemple ChartObject) partout ?
Un Chart serait un ChartObject qui serait lui-même un Shape !!! est-ce bien cela ?
Merci pour votre aide
PS : j'ai posté une autre question sur cette procédure
Voici la procédure
Code:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| Sub Graphique()
Dim Plage As Variant
Dim NomDuGraphe As String
Dim MonVuMetre As Chart
Dim MaSerie As Series
'Entrée des valeurs de la série
Plage = Array(20, 30, 50)
'Création du graphique vide
ActiveSheet.Shapes.AddChart.Select
'Nom du graphique
NomDuGraphe = ActiveChart.Parent.Name
'Index du graphique (c'est le dernier)
nb = Shapes.Count
'Mise à l'échelle du graphique
With ActiveSheet.Shapes(nb)
.Left = 30
.Top = 80
.Width = 100
.Height = 100
End With
'Mise en forme du graphique
Set MonVuMetre = ActiveChart
With MonVuMetre
'Ajout de la série
.SeriesCollection.NewSeries.Values = Plage
'Type de graphique
.ChartType = xlDoughnut
'Suppression de la légende
.HasLegend = False
'Rotation
.Rotation = 270
Set MaSerie = .SeriesCollection(1)
With MaSerie
'Partie gauche en rouge
.Points(1).Select
Selection.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
'Partie droite en vert
.Points(2).Select
Selection.Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
'Effacement du secteur inférieur
.Points(3).Select
Selection.Format.Fill.Visible = msoFalse
End With
'Titre du graphique
.HasTitle = True
With .ChartTitle
.Text = Plage(0)
.Top = 52
.Left = 42
.Font.Size = 9
End With
'Zone de traçage
.PlotArea.Select
With Selection
.Left = 20
.Top = 20
.Height = 60
.Width = 60
MsgBox "Left " & .Left
MsgBox "Top " & .Top
MsgBox "Height " & .Height
MsgBox "Width " & .Width
End With
End With
Cells(1, 1).Select
End Sub |