web-dev-qa-db-fra.com

Barres de données de mise en forme conditionnelle Excel basées sur la couleur

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

8
TheBlake

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. 

enter image description here

Pour une meilleure sensation de "barre", utilisez le caractère unicode 2588 avec une police normale.

enter image description here

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.

enter image description here

10
teylyn

Cet article explique une astuce qui fait le travail:

http://www.Excel-user.com/2012/05/conditional-formatting-bar-chart.html

 enter image description here

1
Tohid

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
0
clarencebuttowski

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.
enter image description here

0
keong kenshih

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

Vue de la feuille de travail

0
JR Massel