Couleurs positives et négatives dans un graphique (Microsoft Excel)
Merril a demandé s’il y avait un moyen de créer un graphique en courbes de sorte que lorsqu’une ligne représentait une valeur négative, la couleur de la ligne changerait au moment où elle devenait négative. Par exemple, dans une série de données particulière, tant que la ligne représentait des valeurs positives, elle serait bleue, mais lorsque la ligne représentait des valeurs négatives, elle deviendrait rouge.
Malheureusement, il n’existe aucun moyen de le faire facilement dans Excel. Il existe cependant quelques solutions de contournement que vous pouvez essayer. La première consiste à utiliser une macro pour modifier les couleurs des lignes du graphique qui représentent des valeurs négatives. La macro suivante est un exemple d’une telle approche:
Sub PosNegLine() Dim chtSeries As Series Dim SeriesNum As Integer Dim SeriesColor As Integer Dim MyChart As Chart Dim R As Range Dim i As Integer Dim LineColor As Integer Dim PosColor As Integer Dim NegColor As Integer Dim LastPtColor As Integer Dim CurrPtColor As Integer PosColor = 4 'Green NegColor = 3 'red SeriesNum = 1 Set MyChart = ActiveSheet.ChartObjects(1).Chart Set chtSeries = MyChart.SeriesCollection(SeriesNum) Set R = GetChartRange(MyChart, 1, "Values") For i = 2 To R.Cells.Count LastPtColor = IIf(R.Cells(i - 1).Value < 0, NegColor, PosColor) CurrPtColor = IIf(R.Cells(i).Value < 0, NegColor, PosColor) If LastPtColor = CurrPtColor Then LineColor = LastPtColor Else If Abs(R.Cells(i - 1).Value) > Abs(R.Cells(i).Value) Then LineColor = LastPtColor Else LineColor = CurrPtColor End If End If chtSeries.Points(i).Border.ColorIndex = LineColor Next i End Sub
Function GetChartRange(Ch As Chart, Ser As Integer, _ ValXorY As String) As Range Dim SeriesFormula As String Dim ListSep As String * 1 Dim Pos As Integer Dim LSeps() As Integer Dim Txt As String Dim i As Integer Set GetChartRange = Nothing On Error Resume Next SeriesFormula = Ch.SeriesCollection(Ser).Formula ListSep = "," For i = 1 To Len(SeriesFormula) If Mid$(SeriesFormula, i, 1) = ListSep Then Pos = Pos + 1 ReDim Preserve LSeps(Pos) LSeps(Pos) = i End If Next i If UCase(ValXorY) = "XVALUES" Then Txt = Mid$(SeriesFormula, LSeps(1) + 1, LSeps(2) - LSeps(1) - 1) Set GetChartRange = Range(Txt) End If If UCase(ValXorY) = "VALUES" Then Txt = Mid$(SeriesFormula, LSeps(2) + 1, LSeps(3) - LSeps(2) - 1) Set GetChartRange = Range(Txt) End If End Function
Lorsque vous sélectionnez un graphique, puis exécutez la macro PosNegLine, il examine le graphique et, pour les segments de ligne entre des valeurs de point de données négatives, change la couleur de la ligne en rouge. Pour les segments de ligne reliant des points de données positifs, la couleur de la ligne est définie sur le vert.
Le problème avec cette solution est qu’elle ne fournit qu’une approximation; il ne fonctionne qu’avec des lignes reliant deux points de données, et il peut changer le segment de ligne entier ou non. Si le point de données de début est positif et le point de données de fin est négatif, il ne peut pas changer la couleur d’une ligne à droite lorsqu’elle passe en valeurs négatives.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (1796) s’applique à Microsoft Excel 2007 et 2010. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Positive_and_Negative_Colors_in_a_Chart [Couleurs positives et négatives dans un graphique]
.