Fonction Excel à conditions multiples
Résolu/Fermé
Aaltra101
Messages postés
4
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
-
Modifié par Aaltra101 le 21/02/2012 à 16:39
Raymond PENTIER Messages postés 58902 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 31 mars 2025 - 23 févr. 2012 à 16:59
Raymond PENTIER Messages postés 58902 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 31 mars 2025 - 23 févr. 2012 à 16:59
A voir également:
- Fonction Excel à conditions multiples
- Fonction si et excel - Guide
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne excel - Guide
- Fonction moyenne excel - Guide
7 réponses
Raymond PENTIER
Messages postés
58902
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
31 mars 2025
17 302
21 févr. 2012 à 17:36
21 févr. 2012 à 17:36
Bonjour Aaltra101.
Tu n'arrives à rien parce que tu n'as pas respecté la syntaxe des fonctions condi-tionnelles ; d'où ton manque de succès.
Il ne faut pas écrire SI(0<=E8+F8<=5)ET(D8=0) mais
SI(ET(0<=E8+F8;E8+F8<=5;D8=0)
De même on n'écrit pas SI(E8+F8>10)OU(D8>=2);0;SI ... mais
SI(OU(E8+F8>10;D8>=2);0;SI ...
Enfin dans ta dernière fonction SI il manque l'argument [valeur_si_faux] :
SI(...;0) devrait s'écrire SI(...;0;nnn).
Tu n'arrives à rien parce que tu n'as pas respecté la syntaxe des fonctions condi-tionnelles ; d'où ton manque de succès.
Il ne faut pas écrire SI(0<=E8+F8<=5)ET(D8=0) mais
SI(ET(0<=E8+F8;E8+F8<=5;D8=0)
De même on n'écrit pas SI(E8+F8>10)OU(D8>=2);0;SI ... mais
SI(OU(E8+F8>10;D8>=2);0;SI ...
Enfin dans ta dernière fonction SI il manque l'argument [valeur_si_faux] :
SI(...;0) devrait s'écrire SI(...;0;nnn).
Raymond PENTIER
Messages postés
58902
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
31 mars 2025
17 302
21 févr. 2012 à 19:09
21 févr. 2012 à 19:09
Peux-tu confirmer que
* si E8+F8 compris entre 0 et 5 (inclus) et D8>1 on passe au test E8+F8>10 ?
* si E8+F8 compris entre 6 et 10 (inclus) et D8>0 on passe au test E8+F8>10 ou D8>=2 ?
Par ailleurs, que se passe-t-il
* si E8+F8=0 et D8=1 ?
Actuellement, la table de vérité est :
D8.....0......1à5.....6à10....>10
.0....550...400.....200........0
.1.....?.......200.......0..........0
>1.....0........0.........0..........0
* si E8+F8 compris entre 0 et 5 (inclus) et D8>1 on passe au test E8+F8>10 ?
* si E8+F8 compris entre 6 et 10 (inclus) et D8>0 on passe au test E8+F8>10 ou D8>=2 ?
Par ailleurs, que se passe-t-il
* si E8+F8=0 et D8=1 ?
Actuellement, la table de vérité est :
D8.....0......1à5.....6à10....>10
.0....550...400.....200........0
.1.....?.......200.......0..........0
>1.....0........0.........0..........0
Aaltra101
Messages postés
4
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
23 févr. 2012 à 10:26
23 févr. 2012 à 10:26
Bonjour,
Et tout d'abord merci pour ton coup de main.
Je reprends ton message:
" si E8+F8 compris entre 0 et 5 (inclus) et D8>1 on passe au test E8+F8>10 ?"
Ce n'est pas le cas de figure exact pour le calcul de la prime. En conservant E8 + F8 comme tu l'as indiqué, si D8 = 1, la prime est divisée par 2 et atteint 200 mais si D8 > 1, cela fait 0.
Donc, quand E8 + F8 est compris entre 0 et 5 inclus, et D8 = 0, la prime est de 400 et on passe à:
prime = 200 si E8 + F8 compris entre 6 et 10 inclus et D8 = 0
Ensuite, tu demandais:
"si E8+F8 compris entre 6 et 10 (inclus) et D8>0 on passe au test E8+F8>10 ou D8>=2 ?"
si E8 + F8 compris entre 6 et 10 inclus et D8 =0, on passe à E8 + F8 < ou = 5 et D8 = 1
puis à E8 + F8 > 10 et D8 > ou = 2 (avant dernière condition)
Pour répondre à ta dernière question:
" Par ailleurs, que se passe-t-il
* si E8+F8=0 et D8=1 ? "
Si E8 + F8 = 0 et D8 = 1 alors la prime = 200
J'espère t'avoir bien renseigné. Je vais jeter un oeil aux règles d'écritures énoncées et réfléchir à tout ça de mon côté à nouveau.
Encore merci.
Et tout d'abord merci pour ton coup de main.
Je reprends ton message:
" si E8+F8 compris entre 0 et 5 (inclus) et D8>1 on passe au test E8+F8>10 ?"
Ce n'est pas le cas de figure exact pour le calcul de la prime. En conservant E8 + F8 comme tu l'as indiqué, si D8 = 1, la prime est divisée par 2 et atteint 200 mais si D8 > 1, cela fait 0.
Donc, quand E8 + F8 est compris entre 0 et 5 inclus, et D8 = 0, la prime est de 400 et on passe à:
prime = 200 si E8 + F8 compris entre 6 et 10 inclus et D8 = 0
Ensuite, tu demandais:
"si E8+F8 compris entre 6 et 10 (inclus) et D8>0 on passe au test E8+F8>10 ou D8>=2 ?"
si E8 + F8 compris entre 6 et 10 inclus et D8 =0, on passe à E8 + F8 < ou = 5 et D8 = 1
puis à E8 + F8 > 10 et D8 > ou = 2 (avant dernière condition)
Pour répondre à ta dernière question:
" Par ailleurs, que se passe-t-il
* si E8+F8=0 et D8=1 ? "
Si E8 + F8 = 0 et D8 = 1 alors la prime = 200
J'espère t'avoir bien renseigné. Je vais jeter un oeil aux règles d'écritures énoncées et réfléchir à tout ça de mon côté à nouveau.
Encore merci.
Aaltra101
Messages postés
4
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
23 févr. 2012 à 12:14
23 févr. 2012 à 12:14
Re-bonjour,
J'ai essayé de suivre tes conseils et j'ai modifié la formule de façon à obtenir cela:
SI(D8+E8+F8=0;550;SI(ET(0<=E8+F8;E8+F8<=5;D8=0);400;SI(ET(6<=E8+F8;E8+F8<=10;D8=0);200;SI(ET(E8+F8<=5;D8=1);200;SI(OU(E8+F8>10;D8>=2);0;SI(ET(E8+F8>=6;D8>=1);0;nnn))))))
Il me semble qu'il faille fermer avec autant de parenthèses qu'il y a de conditions.
Je pense que le "nnn" correspond à un montant de la prime si la dernière possibilité n'est pas validée. J'ai donc essayé avec 5 conditions dns un premier temps.
Mais ce qui m'embête avec cette condition "false" à la fin, c'est que si le montant n'a tjs pas été déterminé avec cette suite de condtions, c'est que le problème vient d'un cas que je n'ai pas envisagé.
Cela dit, même avec 5 conditions, la formule n'est tjs pas fonctionnelle. Que pourrais-je faire pour la rendre utilisable?
J'ai essayé de suivre tes conseils et j'ai modifié la formule de façon à obtenir cela:
SI(D8+E8+F8=0;550;SI(ET(0<=E8+F8;E8+F8<=5;D8=0);400;SI(ET(6<=E8+F8;E8+F8<=10;D8=0);200;SI(ET(E8+F8<=5;D8=1);200;SI(OU(E8+F8>10;D8>=2);0;SI(ET(E8+F8>=6;D8>=1);0;nnn))))))
Il me semble qu'il faille fermer avec autant de parenthèses qu'il y a de conditions.
Je pense que le "nnn" correspond à un montant de la prime si la dernière possibilité n'est pas validée. J'ai donc essayé avec 5 conditions dns un premier temps.
Mais ce qui m'embête avec cette condition "false" à la fin, c'est que si le montant n'a tjs pas été déterminé avec cette suite de condtions, c'est que le problème vient d'un cas que je n'ai pas envisagé.
Cela dit, même avec 5 conditions, la formule n'est tjs pas fonctionnelle. Que pourrais-je faire pour la rendre utilisable?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Aaltra101
Messages postés
4
Date d'inscription
mardi 21 février 2012
Statut
Membre
Dernière intervention
23 février 2012
23 févr. 2012 à 13:58
23 févr. 2012 à 13:58
Au temps pour moi, Raymond PENTIER. Comme un benêt, je n'avais pas mis le = au début de la ligne quand j'ai fait mes tests, ce matin. Forcément, excel ne s'en servait pas comme une fonction !
Maintenant, grâce à tes conseils, la formule est bien écrite et elle fonctionne !
Il y a juste le cas particulier où D8 = 0.5 ou 1.5 qui ne se calcule pas automatiquement, mais, de toute façon, cela se résout en arrondissant l'entrée à l'unité supérieure. Comme D8 correspond à une absence injustifiée, demi journée ou journée entière, même incidence, prime divisée par 2.
Un grand merci.
Maintenant, grâce à tes conseils, la formule est bien écrite et elle fonctionne !
Il y a juste le cas particulier où D8 = 0.5 ou 1.5 qui ne se calcule pas automatiquement, mais, de toute façon, cela se résout en arrondissant l'entrée à l'unité supérieure. Comme D8 correspond à une absence injustifiée, demi journée ou journée entière, même incidence, prime divisée par 2.
Un grand merci.
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
23 févr. 2012 à 14:40
23 févr. 2012 à 14:40
Bonjour,
J'ai repris exactement ta suite de règles sans m'intéresser à leur validité.
a=(D8+E8+F8=0)
b=ET(E8+F8<=5,E8+F8>=0)
c=ET(E8+F8<=10,E8+F8>=6)
d=(D8=0)
e=(E8+F8<=5)
f=(D8=1)
g=(E8+F8>10)
h=(D8>=2)
i=(E8+F8>=6)
j=(D8>=1)
Les conditions deviennent :
1) Prime = 550 si D8+E8+F8 = 0 --> Cond1=a
2) Prime = 400 si E8 + F8 compris entre 0 et 5 (inclus) et D8 = 0 --> Cond2=ET(d,b)
3) Prime = 200 si E8 + F8 compris entre 6 et 10 (inclus)et D8 = 0
Prime = 200 si E8 + F8 < ou = 5 et D8 = 1 -- > Cond3=OU(ET(c,d),ET(e,f))
4) Prime = 0 si E8 + F8 > 10 ou D8 > ou = 2
Prime = 0 si E8 + F8 > ou = 6et D8 > ou = 1 -- > Cond4=OU(ET(i,j),OU(g,h))
Je t'alerte sur le "ou D8 > ou = 2" qui pourrait bien être en fait un "ET D8 > ou = 2"
ta formule sera alors :
jeu de test :
Remarques :
* Il me semble que e=b. Ne sachant pas si (E8+F8) peut prendre des valeurs négatives, j'ai distingué les 2 règles.
* si tes types d'absence ne prennent que des valeurs entières relatives, tu as des redondances dans tes règles : i = OU(c_,g), j = OU(f,h)
* et pour conclure, comme dans tous mes posts, il faut remplacer les "," pas des ";"
cordialement
PS : j'espère ne pas m'être trop croisé les yeux!!
J'ai repris exactement ta suite de règles sans m'intéresser à leur validité.
a=(D8+E8+F8=0)
b=ET(E8+F8<=5,E8+F8>=0)
c=ET(E8+F8<=10,E8+F8>=6)
d=(D8=0)
e=(E8+F8<=5)
f=(D8=1)
g=(E8+F8>10)
h=(D8>=2)
i=(E8+F8>=6)
j=(D8>=1)
Les conditions deviennent :
1) Prime = 550 si D8+E8+F8 = 0 --> Cond1=a
2) Prime = 400 si E8 + F8 compris entre 0 et 5 (inclus) et D8 = 0 --> Cond2=ET(d,b)
3) Prime = 200 si E8 + F8 compris entre 6 et 10 (inclus)et D8 = 0
Prime = 200 si E8 + F8 < ou = 5 et D8 = 1 -- > Cond3=OU(ET(c,d),ET(e,f))
4) Prime = 0 si E8 + F8 > 10 ou D8 > ou = 2
Prime = 0 si E8 + F8 > ou = 6et D8 > ou = 1 -- > Cond4=OU(ET(i,j),OU(g,h))
Je t'alerte sur le "ou D8 > ou = 2" qui pourrait bien être en fait un "ET D8 > ou = 2"
ta formule sera alors :
=SI(Cond1,500,SI(Cond2,400,SI(Cond3,200,SI(Cond4,0,"?????"))))Tu ne définis pas ce qui se passe dans le dernier "sinon", d'où les "?????" mais ça n'est pas dramatique puisque tu n'y arrives pas. Si comme dans mon alerte du point 4) il s'agissait d'un ET au lieu d'un OU, là il faudrait spécifier le "sinon".
jeu de test :
D8 E8 F8 Cond1 Cond2 Cond3 Cond4 Prime 0 0 0 VRAI VRAI FAUX FAUX 500 0 0 2 FAUX VRAI FAUX FAUX 400 0 2 0 FAUX VRAI FAUX FAUX 400 0 0 5 FAUX VRAI FAUX FAUX 400 0 5 0 FAUX VRAI FAUX FAUX 400 0 2 3 FAUX VRAI FAUX FAUX 400 0 3 2 FAUX VRAI FAUX FAUX 400 0 1 1 FAUX VRAI FAUX FAUX 400 1 0 0 FAUX FAUX VRAI FAUX 200 1 0 2 FAUX FAUX VRAI FAUX 200 1 2 0 FAUX FAUX VRAI FAUX 200 1 0 5 FAUX FAUX VRAI FAUX 200 1 5 0 FAUX FAUX VRAI FAUX 200 1 2 3 FAUX FAUX VRAI FAUX 200 1 3 2 FAUX FAUX VRAI FAUX 200 1 1 1 FAUX FAUX VRAI FAUX 200 2 0 0 FAUX FAUX FAUX VRAI 0 2 0 2 FAUX FAUX FAUX VRAI 0 2 2 0 FAUX FAUX FAUX VRAI 0 2 0 5 FAUX FAUX FAUX VRAI 0 2 5 0 FAUX FAUX FAUX VRAI 0 2 2 3 FAUX FAUX FAUX VRAI 0 2 3 2 FAUX FAUX FAUX VRAI 0 2 1 1 FAUX FAUX FAUX VRAI 0 2 0 0 FAUX FAUX FAUX VRAI 0 2 0 2 FAUX FAUX FAUX VRAI 0 2 2 0 FAUX FAUX FAUX VRAI 0 2 0 5 FAUX FAUX FAUX VRAI 0 2 5 0 FAUX FAUX FAUX VRAI 0 3 2 3 FAUX FAUX FAUX VRAI 0 3 3 2 FAUX FAUX FAUX VRAI 0 3 1 1 FAUX FAUX FAUX VRAI 0 0 0 6 FAUX FAUX VRAI FAUX 200 0 6 0 FAUX FAUX VRAI FAUX 200 0 0 10 FAUX FAUX VRAI FAUX 200 0 10 0 FAUX FAUX VRAI FAUX 200 0 4 4 FAUX FAUX VRAI FAUX 200 0 6 2 FAUX FAUX VRAI FAUX 200 0 2 6 FAUX FAUX VRAI FAUX 200 1 0 6 FAUX FAUX FAUX VRAI 0 1 6 0 FAUX FAUX FAUX VRAI 0 1 0 10 FAUX FAUX FAUX VRAI 0 1 10 0 FAUX FAUX FAUX VRAI 0 1 4 4 FAUX FAUX FAUX VRAI 0 1 6 2 FAUX FAUX FAUX VRAI 0 1 2 6 FAUX FAUX FAUX VRAI 0 2 0 6 FAUX FAUX FAUX VRAI 0 2 6 0 FAUX FAUX FAUX VRAI 0 2 0 10 FAUX FAUX FAUX VRAI 0 2 10 0 FAUX FAUX FAUX VRAI 0 2 4 4 FAUX FAUX FAUX VRAI 0 2 6 2 FAUX FAUX FAUX VRAI 0 2 2 6 FAUX FAUX FAUX VRAI 0 3 0 6 FAUX FAUX FAUX VRAI 0 3 6 0 FAUX FAUX FAUX VRAI 0 3 0 10 FAUX FAUX FAUX VRAI 0 3 10 0 FAUX FAUX FAUX VRAI 0 3 4 4 FAUX FAUX FAUX VRAI 0 3 6 2 FAUX FAUX FAUX VRAI 0 3 2 6 FAUX FAUX FAUX VRAI 0 0 0 11 FAUX FAUX FAUX VRAI 0 0 0 11 FAUX FAUX FAUX VRAI 0 0 1 10 FAUX FAUX FAUX VRAI 0 0 10 1 FAUX FAUX FAUX VRAI 0 0 6 5 FAUX FAUX FAUX VRAI 0 0 5 6 FAUX FAUX FAUX VRAI 0 0 13 12 FAUX FAUX FAUX VRAI 0 0 12 13 FAUX FAUX FAUX VRAI 0 1 0 11 FAUX FAUX FAUX VRAI 0 1 0 11 FAUX FAUX FAUX VRAI 0 1 1 10 FAUX FAUX FAUX VRAI 0 1 10 1 FAUX FAUX FAUX VRAI 0 1 6 5 FAUX FAUX FAUX VRAI 0 1 5 6 FAUX FAUX FAUX VRAI 0 1 13 12 FAUX FAUX FAUX VRAI 0 1 12 13 FAUX FAUX FAUX VRAI 0 2 0 11 FAUX FAUX FAUX VRAI 0 2 1 10 FAUX FAUX FAUX VRAI 0 2 10 1 FAUX FAUX FAUX VRAI 0 2 6 5 FAUX FAUX FAUX VRAI 0 2 5 6 FAUX FAUX FAUX VRAI 0 2 13 12 FAUX FAUX FAUX VRAI 0 2 12 13 FAUX FAUX FAUX VRAI 0 3 0 11 FAUX FAUX FAUX VRAI 0 3 1 10 FAUX FAUX FAUX VRAI 0 3 10 1 FAUX FAUX FAUX VRAI 0 3 6 5 FAUX FAUX FAUX VRAI 0 3 5 6 FAUX FAUX FAUX VRAI 0 3 13 12 FAUX FAUX FAUX VRAI 0 3 12 13 FAUX FAUX FAUX VRAI 0
Remarques :
* Il me semble que e=b. Ne sachant pas si (E8+F8) peut prendre des valeurs négatives, j'ai distingué les 2 règles.
* si tes types d'absence ne prennent que des valeurs entières relatives, tu as des redondances dans tes règles : i = OU(c_,g), j = OU(f,h)
* et pour conclure, comme dans tous mes posts, il faut remplacer les "," pas des ";"
cordialement
PS : j'espère ne pas m'être trop croisé les yeux!!
Raymond PENTIER
Messages postés
58902
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
31 mars 2025
17 302
23 févr. 2012 à 15:29
23 févr. 2012 à 15:29
Salut.
Ta table de vérité est devenue
.......|............ E8 + F8 ...............
.D8 |.. 0......1à5..... 6à10 .. >10
-----+---------------------------------
.0 ...|.550....400.....200....... 0
.1 ...|.200....200.......0..........0
>1 ..|...0.........0.........0..........0
Au départ tu avais 11 tests à effectuer, et il t'en manquait encore 2 pour traiter du cas [E8+F8=0 ET D8=1]. La formule suivante ne contient plus que 8 tests :
=SI(E8+F8=0;SI(D8=0;550;SI(D8=1;200;0));SI(E8+F8<=5;SI(D8=0;400;
SI(D8=1;200;0));SI(E8+F8<=10;SI(D8=0;200;0);0)))
Ta table de vérité est devenue
.......|............ E8 + F8 ...............
.D8 |.. 0......1à5..... 6à10 .. >10
-----+---------------------------------
.0 ...|.550....400.....200....... 0
.1 ...|.200....200.......0..........0
>1 ..|...0.........0.........0..........0
Au départ tu avais 11 tests à effectuer, et il t'en manquait encore 2 pour traiter du cas [E8+F8=0 ET D8=1]. La formule suivante ne contient plus que 8 tests :
=SI(E8+F8=0;SI(D8=0;550;SI(D8=1;200;0));SI(E8+F8<=5;SI(D8=0;400;
SI(D8=1;200;0));SI(E8+F8<=10;SI(D8=0;200;0);0)))
Raymond PENTIER
Messages postés
58902
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
31 mars 2025
17 302
23 févr. 2012 à 16:59
23 févr. 2012 à 16:59