Ajouter une ligne dans un graphique
Le problème:
Ajouter une ligne de seuil dans un histogramme Excel.
Dans une graphique (en ligne mais aussi en histogramme), on veut ajouter une ligne pour marquer une borne, un plafond, etc...
Le tableur ne propose pas de solution simple et immédiate valable dans tous les cas (dans le cas d'une graphique en ligne, on peut toujours ajouter une nouvelle série, cela fait l'affaire).
Pour illustrer, voici un graphique très simple:
Il s'agit de prendre ce graphique et d'ajouter une ligne, rien qu'une simple ligne pour obtenir le graphique suivant:
Une solution :
Même si ça peut paraître un peu lourd, un petit bout de VBA sous Excel fait l'affaire!
Sub AddCap()
'
' Add a line to mark a cap or limit value
'
Dim wValue As Double
'
'Get value cap in sheet
wValue = Range("B12").Value
'Select chart (name can be found by recording a macro)
ActiveSheet.ChartObjects("Graphique 1").Activate
wTop = ActiveChart.PlotArea.Top
wTop = wTop + ActiveChart.PlotArea.InsideHeight
wLeft = ActiveChart.PlotArea.Left
wRight = wLeft + ActiveChart.PlotArea.Width
wLeft = wRight - ActiveChart.PlotArea.InsideWidth
wHauteur = ActiveChart.Axes(xlValue).MaximumScale - ActiveChart.Axes(xlValue).MinimumScale
wPos = wValue / wHauteur * ActiveChart.PlotArea.InsideHeight
wTop = wTop - wPos
ActiveChart.Shapes.AddConnector(msoConnectorStraight, wLeft, wTop, wRight, wTop).Select
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(200, 0, 0) ' Set color to red
.Weight = 2.25 'set width
End With
' Now add a small text box it
AddTextCap wTop - 20, (wRight + wLeft) / 2, "Cap=" & wValue
End Sub
Sub AddTextCap(ByVal wHaut As Double, wHoriz As Double, wLib As String)
ActiveChart.Shapes.AddTextbox(msoTextOrientationHorizontal, wHoriz - 40, wHaut, 80, 20).Select
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = wLib
End Sub
Un exemple de fichier donnant ce résultat