Je n'arrive pas à trouver un moyen de changer la couleur d'une barre de données Excel en fonction de la valeur. Les options de formatage actuelles n'autorisent que différentes couleurs basées sur des valeurs positives/négatives. J'utilise actuellement Excel 2010.
J'aimerais que la couleur d'une barre de données apparaisse en "rouge" si la valeur est comprise entre 0-0,3, "en jaune" si la valeur est comprise entre 0,3 et 0,6 et "en vert" si la valeur est entre> 0,6.
J'apprécierais vraiment toutes les informations que les gens pourraient partager.
Merci,
TB
Les barres de données ne prennent en charge qu'une seule couleur par jeu. L'idée est que la longueur de la barre de données vous donne une indication de haut, moyen ou bas.
Les couleurs conditionnelles peuvent être obtenues avec des échelles de couleurs.
Ce que vous décrivez ressemble à une combinaison des deux, mais cela n'existe pas dans Excel et je ne vois pas de moyen facile de le pirater.
Vous pouvez utiliser une sorte de "graphique" dans la cellule qui était populaire avant l'apparition des sparklines. Utilisez une formule pour répéter un caractère (dans la capture d'écran, le caractère g
mis en forme avec la police Marlett), puis utilisez la mise en forme conditionnelle pour changer la couleur de la police.
Pour une meilleure sensation de "barre", utilisez le caractère unicode 2588 avec une police normale.
Edit: Tous les caractères Unicode ne sont pas représentés dans toutes les polices. Dans ce cas, l'unicode 2588 montre bien avec la police Arial mais pas avec le Calibri par défaut d'Excel. Sélectionnez vos polices en conséquence. La boîte de dialogue Insérer> Symbole vous aidera à trouver les caractères appropriés.
Cet article explique une astuce qui fait le travail:
http://www.Excel-user.com/2012/05/conditional-formatting-bar-chart.html
Je configure la mise en forme conditionnelle dans la cellule adjacente à la barre de données, qui change de couleur en fonction de la valeur de la cellule cible (vert, jaune, rouge, orange). Ensuite, nous parcourons VBA ci-dessous pour mettre à jour la couleur de la barre de données en fonction du formatage conditionnel de la cellule adjacente.
Dim intCount As Integer
Dim db As DataBar
On Error Resume Next
For intCount = 9 To 43 'rows with data bars to be updated
Worksheets("Worksheet Name").Cells(intCount, 10).FormatConditions(1).BarColor.Color = Worksheets("Worksheet Name").Cells(intCount, 11).DisplayFormat.Interior.Color
Next intCount
Dans votre cas, surligner la cellule sera plus approprié car nous ne pouvons pas former de barre de données avec plusieurs couleurs
Formation conditionnelle> Gérer les règles ...> Nouvelle règle
Sous Sélectionner un type de règle, choisissez "Utiliser une formule pour déterminer les cellules à formater" et y définir vos règles.
Au lieu de créer une mise en forme conditionnelle pour une plage de cellules, j'ai mis en forme chaque cellule individuellement à l'aide de VBA en fonction des deux sous-éléments ci-dessous. Le résultat est affiché dans le lien sous le code. J'espère que cela t'aides.
' The purpose of this sub is to add a data bar to an individual cell
' The value in the cell is expected to be decimal numbers between -1 and 1
' If the value is greater than or equal to -0.1 and less than or equal to 0.1, then display green bars
' If the value is less than -0.1 and greater than -.2, OR greater than 0.1 and less than 0.2 then yellow bars
' All other scenarios display red bars
Sub Add_Data_Bar(rngCell As Range, dblValue As Double)
' Clears existing conditional formatting from the cell
' Adds a new data bar to the cell
With rngCell.FormatConditions
.Delete
.AddDatabar
End With
' Creates a databar object for the databar that has been added to the cell
Dim dbar As Databar
Set dbar = rngCell.FormatConditions(rngCell.FormatConditions.Count)
' Sets the databar fill type to display as gradient
dbar.BarFillType = xlDataBarFillGradient
' Sets the databar border style
dbar.BarBorder.Type = xlDataBarBorderSolid
' Sets the databar axis position
dbar.AxisPosition = xlDataBarAxisMidpoint
' Sets the minimum limit of the data bar to -1
With dbar.MinPoint
.Modify newtype:=xlConditionValueNumber, newvalue:=-1
End With
' Sets the maximum limit of the data bar to +1
With dbar.MaxPoint
.Modify newtype:=xlConditionValueNumber, newvalue:=1
End With
' Sets the color based on what value has been passed to the sub
' Green
If dblValue <= 0.1 And dblValue >= -0.1 Then
With dbar
.BarColor.Color = RGB(99, 195, 132) ' Green
.BarBorder.Color.Color = RGB(99, 195, 132)
End With
' Yellow
ElseIf (dblValue > 0.1 And dblValue <= 0.2) Or (dblValue < -0.1 And dblValue >= -0.2) Then
With dbar
.BarColor.Color = RGB(255, 182, 40) ' Yellow
.BarBorder.Color.Color = RGB(255, 182, 40)
End With
' Red
Else
With dbar
.BarColor.Color = RGB(255, 0, 0) ' Red
.BarBorder.Color.Color = RGB(255, 0, 0)
End With
End If
End Sub
' Applies the databar formatting to each cell in a range
‘ Call this on the Worksheet_Change event so that the formatting updates when data is refreshed
Sub Loop_Through_Range()
' Range to be looped through
Dim rng As Range
Set rng = Sheet1.Range("A2:A22")
' Range for For Loop
Dim cell As Range
' Loops through each cell in your range
For Each cell In rng.Cells
Call Add_Data_Bar(cell, cell.Value)
Next
End Sub