Mise en forme conditionnelle à plus de 3 éléments

LNRO

XLDnaute Nouveau
Bonjour,

J'ai un très vaste tableau sur lequel appliquer une mise en forme conditionnelle avec 5 conditions. Cette MFC doit intervenir après le remplissage automatique dudit tableau, alors je compte l'inclure dans la macro concernée.

Les 5 conditions sont toutes du type xlBetween avec deux valeurs définies dans des cellules. Jusque là, tout va bien, le code fonctionne très bien.

Toutefois, la méthode Add (Selection.FormatConditions.Add) renvoie une erreur si la cellule contient déjà trois conditions.

Comment faire pour en rajouter deux ?

Merci de votre aide,
 

wilfried_42

XLDnaute Barbatruc
Re : Mise en forme conditionnelle à plus de 3 éléments

Bonjour

Tu es limité à 3 mises en forme conditionnelle, pas 3 conditions, si tu as 5 couleurs, ou 5 mise en forme differentes, il va te falloir les traiter

si tu as 5 conditions, mais une seule mise en forme (une seule couleur), c'est faisable en une seule ligne

sinon un bout de ton fichier serait souhaitable sans donnée confidentielle

@ te lire
 

LNRO

XLDnaute Nouveau
Re : Mise en forme conditionnelle à plus de 3 éléments

Tu es limité à 3 mises en forme conditionnelle, pas 3 conditions, si tu as 5 couleurs, ou 5 mise en forme differentes, il va te falloir les traiter

Oui pardon, je me suis peut être mal exprimé : j'ai bel et bien 5 cas différents, avec 5 mises en formes différentes.


Pour faire court, j'ai un tableau de 24 colonnes * 16 lignes, d'angles C4 et Z19 (sans en-tête, que des nombres).

- Si dans une cellule la valeur est égale à 0, je dois la colorier de telle couleur.
- Si elle est comprise entre 0 et la valeur de la cellule V27 (par exemple), on la colorie en telle autre couleur.
- Si elle est comprise entre la valeur de la cellule V27 et celle de V28, on la colorie en une troisième.
- ... entre V28 et V29, une quatrième couleur.
- et enfin, au-dessus de la valeur de V29, en une dernière couleur.
 

Pyrof

XLDnaute Occasionnel
Re : Mise en forme conditionnelle à plus de 3 éléments

Bonjour,

Voici une méthode que j'utilise et qui devra être adapté à tes besoins

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 Sub

La 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).
 

LNRO

XLDnaute Nouveau
Re : Mise en forme conditionnelle à plus de 3 éléments

Merci pour ton code !

Néanmoins, je suis un très grand débutant dans la macro : comment formules-tu la condition ? Dans les case j'imagine, mais au niveau de la syntaxe je coince.

A part ce détail, le reste du code me paraîtn très clair, j'ai a priori tout compris et je saurais adapter ça à mes données.
 

LNRO

XLDnaute Nouveau
Re : Mise en forme conditionnelle à plus de 3 éléments

J'ai fini par trouver, en tâtonannt.

Sub MEFC()
'
' Mise en forme conditionnelle
'
Dim RngCell As Range

Sheets("la_feuille_concernee").Select

For Each RngCell In Range("C4:Z19").Cells
If RngCell.Value = 0 Then RngCell.Interior.Color = RGB(83, 142, 213) 'Bleu si 0
If RngCell.Value > 0 Then RngCell.Interior.Color = RGB(255, 0, 0) 'Rouge si <A
If RngCell.Value > Range("$V$27").Value Then RngCell.Interior.Color = RGB(255, 192, 0) 'Orange si A<x<B
If RngCell.Value > Range("$V$28").Value Then RngCell.Interior.Color = RGB(255, 255, 0) 'Jaune si B<x<C
If RngCell.Value > Range("$V$29").Value Then RngCell.Interior.Color = RGB(255, 255, 204) 'Jaune pâle si C<x
Next RngCell
Range("A1").Select

End Sub


Je relie ça au bouton déclenchant ma macro initiale et voilà. Merci à tous pour votre patience et vos conseils.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 931
Membres
103 984
dernier inscrit
maliko67