Positionnement de la zone de traçage avec PlotArea
Bonjour, je m'initie aux arcanes de VBA en cherchant à réaliser un VuMêtre à l'aide d'un graphique (demi-anneau, 2 couleurs).
Ce qui me bloque actuellement c'est le comportement de PlotArea.Top (voir ligne 52 et suivantes)
Les propriétés Left, Height et Width réagissent normalement mais Top bloque. Le code qui suit retourne la valeur 26,98... au lieu des 20 attendus.
A quoi correspondent exactement ces propriétés ?
Vaut-il mieux utiliser les propriétés InsideLeft, InsideTop, etc. ?
Quelle différence y a-t-il ? (l'aide d'Excel VBA n'est pas explicite)
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
| 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
Set MaSerie = .SeriesCollection(1)
'Type de graphique
.ChartType = xlDoughnut
'Suppression de la légende
.HasLegend = False
'Rotation
.Rotation = 270
'Partie gauche en rouge
.SeriesCollection(1).Points(1).Select
Selection.Format.Fill.ForeColor.RGB = RGB(255, 0, 0)
'Partie droite en vert
.SeriesCollection(1).Points(2).Select
Selection.Format.Fill.ForeColor.RGB = RGB(0, 176, 80)
'Effacement du secteur inférieur
.SeriesCollection(1).Points(3).Select
Selection.Format.Fill.Visible = msoFalse
'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 |