Mise en forme conditionnelle
Bonjour!
Est-ce possible d'ajouter des conditions dans l'option "Mise en forme conditionnelle" qui n'en contient que 3 ?
Merci pour l'attention apportée.
bloubee
Bonjour et bienvenue,
Une recherche sur le forum t'aurais apporté la réponse suivante : https://forum.excel-pratique.com/viewtopic.php?t=510
En espérant que cela corresponde à ton attente...
A +
Bonjour,
Voici une autre méthode, peut être plus lourde à mettre en oeuvre mais qui n'a pas de limite
On connaît la mise en forme conditionnelle d’Excel. Mais celle-ci est limité à 3 conditions.
Pour palier cette limite voici une solution :
Placer ces macros dans la feuille
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mev_01 1, 1, 10, 1
mev_01 17, 7
End Sub
‘=======================================================
Private Sub mev_01(l1, c1, Optional l2, Optional c2)
If IsMissing(l2) Then l2 = l1
If IsMissing(c2) Then c2 = c1
Set zone1 = Range(Cells(l1, c1), Cells(l2, c2))
Dim cellule As Object
For Each cellule In zone1
With cellule.Interior
.ColorIndex = none
.Pattern = xlSolid
End With
cellule.Value = UCase(cellule.Value)
Select Case UCase(cellule.Value)
Case “DA”: cellule.Interior.Color = RGB(255, 200, 80)
Case “SE”: cellule.Interior.ColorIndex = 5
Case “PF”: cellule.NumberFormat = “””--> “”@”
End Select
Next
End SubLa macro mev_01 (Mise En Valeur) possède 4 arguments dont 2 facultatifs.
mev_01 arg1, arg2, arg3, arg4
arg1: numéro de la première ligne de la plage à mettre en valeur
arg2: numéro le la première colonne de la plage
arg3: numéro de la dernière ligne de la plage
arg4: numéro de la dernière colonne de la plage
Par ces arguments on peut affecter une mise en valeur à une plage de cellule.
Si arg3 et arg4 ne sont pas définits, on considèrera qu’ils prennent les valeurs respectives arg1 et arg2. Dans ce cas la plage se limite à une seule cellule (mev_01 arg1, arg2).
Salutation.
Un gros merci pour ces deux réponses et très rapide en plus. Je dois préciser que ce n'est pas le texte que je dois colorer mais la cellule. J'explique en quelques mots...
Je dois compiler des cartes de score de joueurs de golf et les couleurs des cellules varient selon le pointage.
Exemple:
Albatros---> cyan
Eagle---> mauve
Birdie---> jaune
Par---> bleu
bogey---> vert
double et plus---> rouge
sur une normale 3 la cellule contenant le chiffre 3 est bleue
sur une normale 4 la cellule contenant le chiffre 4 est bleue
sur une normale 5 la cellule contenant le chiffre 5 est bleue
et ainsi de suite pour les autres scores.
Encore merci pour l'aide apportée
Bloubee
Voici ce que j'ai appliqué, sauf que je dois cliquer sur un bouton pour démarrer. Ce serait plus pratique si les couleurs s'appliqueraient à l'entrée des données.
Private Sub CommandButton1_Click()
Dim valeur As Range
Range("b7:d40,i7:j40,l7:n40,s7:t40").Select
For Each valeur In Selection.Cells
If valeur.Value = 4 Then
valeur.Interior.ColorIndex = 20
ElseIf valeur.Value = 5 Then
valeur.Interior.ColorIndex = 43
ElseIf valeur.Value >= 6 Then
valeur.Interior.ColorIndex = 3
ElseIf valeur.Value = 3 Then
valeur.Interior.ColorIndex = 6
ElseIf valeur.Value = 2 Then
valeur.Interior.ColorIndex = 39
Else
valeur.Interior.ColorIndex = 2
End If
Next
Range("b7").Select
Range("e7:e40,g7:g40,o7:o40,q7:q40").Select
For Each valeur In Selection.Cells
If valeur.Value = 3 Then
valeur.Interior.ColorIndex = 39
ElseIf valeur.Value = 4 Then
valeur.Interior.ColorIndex = 6
ElseIf valeur.Value >= 7 Then
valeur.Interior.ColorIndex = 3
ElseIf valeur.Value = 5 Then
valeur.Interior.ColorIndex = 20
ElseIf valeur.Value = 6 Then
valeur.Interior.ColorIndex = 43
ElseIf valeur.Value = 2 Then
valeur.Interior.ColorIndex = 40
Else
valeur.Interior.ColorIndex = 2
End If
Next
Range("b7").Select
Range("f7:f40,h7:h40,p7:p40,r7:r40").Select
For Each valeur In Selection.Cells
If valeur.Value = 2 Then
valeur.Interior.ColorIndex = 6
ElseIf valeur.Value = 1 Then
valeur.Interior.ColorIndex = 39
ElseIf valeur.Value >= 5 Then
valeur.Interior.ColorIndex = 3
ElseIf valeur.Value = 3 Then
valeur.Interior.ColorIndex = 20
ElseIf valeur.Value = 4 Then
valeur.Interior.ColorIndex = 43
Else
valeur.Interior.ColorIndex = 2
End If
Next
Range("b7").Select
End Sub
Merci à tous
Bloubee