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 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 - 23 févr. 2012 à 16:59
Bonjour,

Je cherche à établir une formule qui vérifie toutes les conditions possibles pour déterminer le montant d'une prime mais je n'arrive à rien...

J'ai posé et cherché à modifier la formule suivante, sans succès.

=SI(D8+E8+F8=0;550;SI(0<=E8+F8<=5)ET(D8=0);400;SI(6<=E8+F8<=10)ET(D8=0);200;SI(E8+F8<=5)ET(D8=1);200;SI(E8+F8>10)OU(D8>=2);0;SI(E8+F8>=6)ET(D8>=1);0))))))

E8, F8 et D8 correspondent à différentes types d'absences.

Voici les conditions de la prime :

Prime = 550 si D8+E8+F8 = 0

Prime = 400 si E8 + F8 compris entre 0 et 5 (inclus) et D8 = 0

Prime = 200 si E8 + F8 compris entre 6 et 10 (inclus)et D8 = 0

Prime = 200 si E8 + F8 < ou = 5 et D8 = 1

Prime = 0 si E8 + F8 > 10 ou D8 > ou = 2

Prime = 0 si E8 + F8 > ou = 6et D8 > ou = 1

Merci d'avance pour votre aide :)
A voir également:

7 réponses

Raymond PENTIER Messages postés 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
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).
0
Raymond PENTIER Messages postés 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
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
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
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.
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 à 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?
0

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
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.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
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 :
=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!!
0
Raymond PENTIER Messages postés 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
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)))
0
Raymond PENTIER Messages postés 58392 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 22 avril 2024 17 095
23 févr. 2012 à 16:59
0