Re : Problème de condition sur plage d'une colonne
noobster à dit:
Bonjour à tous,
Je rame tellement que j'ai décidé de faire appel aux plus initiés ...que moi 😛
Voilà, je bloque sur ce qui me semble tellement basique:
j'ai une colonne de valeurs , ces valeurs sont soit OK;PAS OK;EN COURS d'une liste déroulante
je voudrais soit en tête de colonne ou une autre cellule inscrire une formule qui mettra la cellule en rouge si le texte de UNE des cellule de la colonne est PAS OK et en VERT si le texte de TOUTES les cellules de la colonne est OK ; cellule orange SI une des cellules est EN COURS
j'ai essayé de faire une mise en forme conditionnelle dans tous les sens
ex (ma colonne commence en G3 avec les données le restant étant entêtes etc. :
LA FORMULE EST =(G3:G100<>règlé)
-->rouge pour exemple
mais dans ce cas il ne me prend en compte que la cellule G3
en mettant également dans une cellule cette formule matricielle
{=SI((G3:G100)<>"règlé";"PASOK";"ok")}
l'affichage de ma cellule ne change que lorsque je change le contenu de la cellule G3 et non pas les autres
j'ai fait un paquet d'autres tests mais je ne suis pas sur de comprendre la subtilité d'excel..et sa logique implacable 😛
merci d'avance por toute reponse à mon chti soucis.
Bonne journée
Salut
si t'as les boules, c'est à cause de l'algèbre de Boole
🙂
Menu>>Format>>Mise en forme conditionnelle
Condition 1
Case 1 : La formule est
Case 2 : sommeprod(($G$3:$G$100)="PAS OK")*1)
format fond rouge
Condition 2 (par bouton ajouter)
Case 1 : La formule est
Case 2 : sommeprod(($G$3:$G$100)="EN COURS")*1)
format fond orange
Condition 3 (par bouton ajouter)
Case 1 : La formule est
Case 2 : non(sommeprod(($G$3:$G$100)<>"OK")*1))
format fond vert
Explications :
L'algèbre de boole(logique) admet 2 valeurs dans Excel :
VRAI => 1 enfin plutot : ce qui est différent de 0
FAUX => 0
Condition 3 :
($G$3<>"OK)*1
si G3="OK" alors ($G$3<>"OK)*1 => 0*1 = 0
si G3="Pas OK" alors ($G$3<>"OK)*1 = 1*1 = 1
si G3="EN COURS" idem
sommeprod(($G$3:$G$100)<>"OK")*1) <=>
(($G$3<>"OK)*1) + (($G$2<>"OK)*1) + ... + (($G$100<>"OK)*1)
cette formule sera égale à 0 si et seulement si toutes les cellules sont égale = "OK", sinon le résultat sera >0
Donc, si toutes les cellules sont = "OK", formule = 0 (Faux)
Si au moins une des cellules <> "OK" alors formule = 1 (vrai]
avec Non on inverse le résultat : Non(Vrai)=Faux et Non(Faux)=Vrai
donc la formule de la condition 3 est :
si l'inverse de il existe une cellule de G3:G100 qui est <> "OK" revient à aucune cellule de G3:G100 <> "OK" ou plus simplement, toutes les cellules de G3:G100 = "Ok" (CQFD)
L'ordre des conditions est primordial :
La condition 2 n'est testée que si la condition 1 n'est pas remplie
La condition 3 que si 1 et 2 ne sont pas remplies
Donc:
- si une cellule "PAS OK" => fond rouge
- Si toutes les cellules <>"PAS OK" et si une cellule = "En cours" => fond orange
- Si toutes les cellules = "OK" fond vert
Comme je ne connais pas tes besoins, j'ai répondu textuellement à la demande, mais....
Si au moins une cellule est vide, tu n'auras jamais du vert
donc, le test devrait tenir compte du fait que la cellule n'est pas vide
donc pour la condition 3, la formule :
non(sommeprod(($G$3:$G$100)<>"OK")*($G$3:$G$100)<>"")))
me semblerait plus adaptée, sauf si G3:G100 contient une formule de calcul qui donne le texte à tester
A+