[Excel]Mise en forme en fonction de 3 valeurs

Résolu/Fermé
-
 zalles77 -
Bonjour,

Avant de poster, j'ai cherché ma réponse mais je n'ai pas eu la chance de trouver mon bonheur.

Voilà le problème:
J'ai un tableau à 3 entrées.
Les valeurs sont dans 3 cellules différentes.
1) Une première valeur permet d'obtenir une lettre (x, y, z).
2) La deuxième et troisième valeurs (valeurs A et B: 1, 10 ou 100) permettent d'obtenir une couleur (mise en forme): rouge (R), orange (O), vert (V).

La lettre doit être recopier dans une cellule à part avec sa mise en forme adéquate.

Je n'ai pas eu de soucis pour le (1), mais au sujet de la mise en forme, c'est plus difficile.

Je ne sais pas si j'ai été clair, alors pour être sûr, je vous mets un tableau (en espérant que le site garde la mise en page => Et bien, non. Donc j'ai fait comme j'ai pu.).

------------------------------A
--------| 100 | 10 | .1. || 100 | 10. | .1. || 100 | 10 | 1
--------|-----|----|----||----|-----|----||-----|----|-----
--| 100 |x (R) |x(R)|x(O)||y(R) |y(R)|y(O)|| z(O)|z(O)| z(V)
-B | 10 |x (R) |x(R)|x(O)||y(R) |y(O)|y(V)|| z(O)|z(V)| z(V)
----| 1 |x (O) |x(O)|x(V)||y(O) |y(V)|y(V)|| z(V)|z(V)| z(V)


Comme vous pouvez le voir, une valeur A et B de 10 peut donner soit un "x rouge", soit un "y orange", soit un "z vert". C'est donc aussi en fonction de la lettre, donc de la première valeur.
D'avance, merci ^_^.
Et si vous avez besoin de plus d'explication, n'hésitez pas.

PS: J'aimerais dans la mesure du possible éviter les macros, malgré que je ne vois que cette solution.
Je suis sous Excel 2003, donc limité à 3 "mise en forme conditionnelle".

7 réponses

Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
bonjour

j'ai un peu de mal à comprendre ton problème
s'agit il de colorer les lettres de ton tableau? si oui comment sont "calculées" les couleurs à partir de têtes de lignes/colonnes du tableau
sinon, peux tu envoyer la partie de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message avec queques explications sur ce que tu veux obtenir et à partir de quoi.

bonne suite
Le tableau est déjà donné, donc non, il ne s'agit pas de colorer les lettres du tableau.
Je ne connaissais pas Cjoint.com, très pratique.
Voilà le tableau (enfin le lien):
http://cjoint.com/?BFtmNJyWm8m
Peut-être est-ce un peu plus clair?
Merci de ta réponse si rapide
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
re

une solution avec macro
pour voir le code : Clic-droit sur l'onglet de la feuille/Visualiser le code
https://www.cjoint.com/?0FtovUGtoaI

bonne suite
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
re

une macro équivalente un peu moins "lourde"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim li As Long, co As Long, v As String, a As Long, b As Long, coul
If Not Intersect(Target, Union(Range("i"), Range("a"), Range("b"))) Is Nothing Then
  v = Range("vf").Value
  a = Range("a").Value
  b = Range("b").Value
  li = 3 - Log(b) / Log(10)
  co = 3 - Log(a) / Log(10)
  Select Case v
    Case "x"
      coul = Range("tabx").Cells(li, co).Interior.ColorIndex
    Case "y"
      coul = Range("taby").Cells(li, co).Interior.ColorIndex
    Case "z"
      coul = Range("tabz").Cells(li, co).Interior.ColorIndex
  End Select
  Range("vf").Interior.ColorIndex = coul
End If
End Sub

bonne suite
Merci pour ta rapidité.
Désolé, j'ai mis "N7" alors que c'est "N8".
Comme je l'ai signalé plus haut, j'aimerais éviter les macros pour la simple et bonne raison qu'il faut que je la comprenne, étant donné que ce n'est bien sûr pas le tableau réel (les valeurs sont plus grandes, et je ne suis pas limité à 1, 10 et 100, elles peuvent être à 68 par exemple).
Ici, je n'ai demandé que la démarche pour pouvoir l'adapter à mon travail d'origine.
Si vraiment, je n'ai pas le choix, je prendrais ta méthode.
Merci
Messages postés
55453
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
28 janvier 2022
17 230
Bonjour à tous.

Non sans mal, j'ai une proposition sans macro, avec juste deux règles de mise en forme conditionnelle.
* D'abord remplissage de N8 avec la couleur bleu-vert.
* Première règle pour N8 "Utiliser une formule pour ..." avec la formule
=OU(ET($N$8="x";MOD($N$3+$N$4;2)=0);ET($N$8="y";$N$3+$N$4>101))
et le format remplissage rouge.
* Seconde règle pour N8 "Utiliser une formule pour ..." avec la formule
=OU(ET($N$8="x";MOD($N$3+$N$4;10)=1);ET($N$8="y";OU($N$3+$N$4= 101;$N$3+$N$4=20));ET($N$8="z";$N$3+$N$4>101))
et le format remplissage orange.
Messages postés
55453
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
28 janvier 2022
17 230
Je signale au passage une inversion dans les signes > et < (tableau P1:Q5)

Comme l'opération $N$3+$N$4 revient souvent dans les formules, on peut l'effectuer dans la cellule N5 que l'on nommera A²B.
D'autre part il est superflu de conserver les références bloquées avec $, puisque seule la cellule N8 est concernée.
Ainsi les formules des règles de MFC s'écrivent plus simplement
=OU(ET(N8="x";MOD(A²B;2)=0);ET(N8="y";A²B>101))
et
=OU(ET(N8="x";MOD(A²B;10)=1);ET(N8="y";OU(A²B= 101;A²B=20));ET(N8="z";A²B>101))

https://www.cjoint.com/?BFtseYJ56M6

Cordialement.
Merci pour la rapidité.de réponse.
Effectivement, j'ai inverser les signes ">" et "<". Autant pour moi.
J'aime bien cette méthode, en plus j'ai bien l'impression que je n'ai pas besoin de reproduire le tableau d'origine. La formule sera insérer dans plusieurs cellules avec différentes références, donc pas besoin des "$".
Par contre, il y a un soucis sur une seule case: Indice: 100, Valeur A: 1, Valeur B: 1.
La cellule devrait être en vert, alors qu'elle est en rouge.
Je vais essayer de comprendre ça.
Et si les valeurs se trouvent entre 1 et 10, par exemple, est-ce que ça marcherai?
Merci.
Messages postés
10197
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
14 janvier 2022
2 275
bonjour

je me suis inspiré de, et modifié la proposition de raymond (cordiales salutations) pour ton dernier cas = = 100, a = 1, b = 1

1. j'ai nommé
N8 > vf
N2 > i
N3 > a
N4 > b

2. par défaut la cellule vf est verte
3. première formule
=OU(ET(vf="x";a+b>=20);ET(vf="y";a+b>=110)) rouge
4. deuxième formule
=OU(ET(vf="x";a+b>=11);ET(vf="y";a+b>= 20);ET(vf="z";a+b>=110)) orange

pour ce qui est des valeurs autres que 1, 10, 100, il faut te faudra définir les bornes des intervalles pour chaque cas

bonne suite
Merci à vous deux.
J'ai enfin réussi en m'inspirant de vos remarques.
En même temps, je me dis: "pourquoi je n'y ai pas pensé plus tôt?"
J'ai tout simplement pris chaque cas de rouge, de orange et de vert (donc en 3 "mise en forme conditionnelle"). Certe, c'est 3 formules plutôt longue mais ça fonctionne.
Voilà le lien:
http://cjoint.com/?BFuldYVviIq
De plus, j'ai mis les intervalles de valeurs qui se rapprochent un peu plus de mon travail.
Enfin, les formules en "L11", "L13" et "L15" sont les mises en formes conditionnelles de "N8" (c'est plus facile à corriger).
Merci encore.
PS: Maintenant cela compris, il faut que je l'applique à ma base de données de 1300 lignes ^_^.