Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Mise en forme conditionnelle > à trois critères

hobbit41

XLDnaute Nouveau
Bonjour,
Voici, j'ai un tableau et je voudrais colorier certaines cellules en fonction du contenu d'autres.
Le nombre de paramètres étant trop élevé, la mise en forme conditionnelle d'excel ne suffit pas.
Je met un fichier pour une meilleure compréhension.
Merci
 

Pièces jointes

  • planning test.xls
    31 KB · Affichages: 89
  • planning test.xls
    31 KB · Affichages: 92
  • planning test.xls
    31 KB · Affichages: 89

Gorfael

XLDnaute Barbatruc
Re : Mise en forme conditionnelle > à trois critères

Salut hobbit41 et le forum
Pas regarder ton exemple, pas envie
Le sujet a déjà été maintes et maintes fois traité. En pièce jointe, un exemple de myDF récupéré il y a des années.
A+
 

Pièces jointes

  • mDF_MFCmultiples.xls
    35.5 KB · Affichages: 165
  • mDF_MFCmultiples.xls
    35.5 KB · Affichages: 164
  • mDF_MFCmultiples.xls
    35.5 KB · Affichages: 164

hobbit41

XLDnaute Nouveau
Re : Mise en forme conditionnelle > à trois critères

Bonjour,
J'avais vu cet exemple mais il ne correspond pas à mes besoins, ou tout du moins en partie pour le nombre de couleurs, d'ou le fichier joint pour m'expliquer ( comme tu le souhaites dans ta signature)
@+
 

Lebonetletruand

XLDnaute Occasionnel
Re : Mise en forme conditionnelle > à trois critères

Bonsoir,

Il y a beaucoup de couleurs... tu devrais trouver sur le site la palette avec les codes correpondants.

Essaye peut être avec ce code (Switch) à adapter à ton cas (permet d'éviter les boucles) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F15:F358")) Is Nothing Then
With Target.Interior
.ColorIndex = Switch(Target.Value = "e", 8, _
Target.Value = "b", 4, _
Target.Value = "c", 38, _
Target.Value = "a", 18, _
Target.Value = "p", 17, _
Target.Value = "", -4142)
End With
End If
End Sub

Comme le signale Gorfael, je l'ai trouvé sur ce site il y a quelques temps

Voir le lien suivant
https://www.excel-downloads.com/thr...-fond-a-une-cellule-selon-un-resultat.152248/

J'espère que ça répond à ton attente.
Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re : Mise en forme conditionnelle > à trois critères

Bonsoir tout le monde

Pour infos
Avec cette modif, on peut s'éviter les répétitions de Target

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("F15:F358")) Is Nothing Then
With Target
.Interior.ColorIndex = _
Switch(.Value = "e", 8, .Value = "b", 4, _
.Value = "c", 38, .Value = "a", 18, _
.Value = "p", 17, .Value = "", -4142)
End With
End If
End Sub

PS: c'était mon hommage du jour à mes endives
 

hobbit41

XLDnaute Nouveau
Re : Mise en forme conditionnelle > à trois critères

Bonjour et merci à tous
J'ai un peu avancé dans mon tableau.
J'arrive bien a donner une couleur à mes cellules ( C8 à AZ16) en fonction du contenu d'une autre( BA8 à CI16).La méthode est certainement empirique, car je dois taper de nombreuse lignes de (target offset).
Mes problèmes:
lorsque j'efface le contenu d'une cellule de BA8 à CI16, la couleur de fond reste dans la cellule C8 à AZ16.
Comment vérifier qu'une cellule n'a pas de fond
Comment vérifier qu'une cellule a une couleur
D'avance merci
 

Pièces jointes

  • planning2.zip
    28.2 KB · Affichages: 37
  • planning2.zip
    28.2 KB · Affichages: 38
  • planning2.zip
    28.2 KB · Affichages: 39

Gorfael

XLDnaute Barbatruc
Re : Mise en forme conditionnelle > à trois critères

Salut hobbit41 et le forum
Ta macro, en plus court, vite fait :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [BA8:BA370]) Is Nothing And Target.Count = 1 Then
    If Left(UCase(Target), 1) = "T" Then
        Target.Offset(0, CInt(Right(Target, 2)) - 51).Interior.ColorIndex = 6
    End If
End If
If Not Intersect(Target, [BB8:BB370]) Is Nothing And Target.Count = 1 Then
    If Left(UCase(Target), 1) = "T" Then
        Target.Offset(0, CInt(Right(Target, 2)) - 52).Interior.ColorIndex = 4
    End If
End If
If Not Intersect(Target, [BC8:BC370]) Is Nothing And Target.Count = 1 Then
    If Left(UCase(Target), 1) = "T" Then
        Target.Offset(0, CInt(Right(Target, 2)) - 53).Interior.ColorIndex = 6
    End If
End If
If Not Intersect(Target, [BD8:BD370]) Is Nothing And Target.Count = 1 Then
    If Left(UCase(Target), 1) = "T" Then
        Target.Offset(0, CInt(Right(Target, 2)) - 54).Interior.ColorIndex = 4
    End If
End If
End Sub
Mais ça ne résout pas ta demande
BB8 : on met T01 => C8 en jaune : ça j'ai compris
BC8 : on met T01 => C8 passe en vert, bien que BB8 soit en jaune

En gros, que doit-on faire ? Seul, toi, tu peux nous le dire

Je propose => si on change une cellule avec une valeur commençant par T
- On efface les 3 autres cellules (concerne BA, BB, BC et BD), on colorie la cellule
-si on efface les 4 cellules (ou qu'elle ne commence pas par T => on efface la couleur de la ligne (cellule de C à AZ en couleur xlnone)

Est-ce que les 4 cellules peuvent avoir d'autres valeurs que T01 à T50 ?
A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…