Formules avec plusieurs conditions

bientot50

XLDnaute Nouveau
Bonjour à vous toutes et à vous tous.

Je voudrais regrouper en une seule formule, plusieurs formules conditionnelles, et bien sur je n'y arrive pas. J'ai donc pensé à mon forum favori.
Avec tous mes remerciements.
Alain
 

Pièces jointes

  • FormulesConditionnelles.xls
    18 KB · Affichages: 71

jeanpierre

Nous a quitté
Repose en paix
Re : Formules avec plusieurs conditions

Bonjour bientot50, re le forum,

En E2, essaies ceci, avec en B2 soit NC soit C

=SI(D2<2;0;SI(B2="NC";SI(D2<=10;C2/10*D2;SI(D2>10;C2/10*D2+C2/15*(D2-10)));SI(D2<=5;C2/2;SI(D2<=10;C2;C2*2+C2/5*(D2-10)))))

Et tu tires vers le bas, ou Copier et coller

Tu nous dis.

Jean-Pierre
 

bientot50

XLDnaute Nouveau
Re : Formules avec plusieurs conditions

Salut JEAN PIERRE,

Ta formule est super géniale; tous les tests que j'ai fait sont bons. Il me reste juste à la comprendre en détails.
Un grand merci pour ta célérité et ta compétence.
Alain
 

Gorfael

XLDnaute Barbatruc
Re : Formules avec plusieurs conditions

bientot50 à dit:
Bonjour à vous toutes et à vous tous.

Je voudrais regrouper en une seule formule, plusieurs formules conditionnelles, et bien sur je n'y arrive pas. J'ai donc pensé à mon forum favori.
Avec tous mes remerciements.
Alain
Salut
NON CADRE(colonne B)
Si D < 2 ans alors E = 0
Si 2 ans <= D <=10 ans alors E = C /10 * E
Si D > 10 ans alors E = (C/10*E)+(C/15*(E-10))
CADRE(= C dans la colonne B)
Si D < 2 ans alors E = 0
Si 2 ans <= D <=5 ans alors E = C / 2
Si 5 ans < D <=10 ans alors E = C
Si D > 10 ans alors E = (C*2)+(C/5*(E-10))
Serait il possible de faire avec tout ca une seule formule que je pourrais appliquer à la colonne E.
Pour le moment j'ai des formules différentes en fonction des colonnes B et C
Petit problème :
Si 2 ans <= D <=10 ans alors E = C /10 * E
Tu ne peux pas avoir la même colonne des 2 cotés de l'égalité
De plus, quand tu fais un fichier exemple, ce serait bien de mettre un exemple de résultat (1 pour chaque type différent), et comment tu l'as calculé : ça permet de ne pas t'envoyer des résultats qui ne correspondent pas

Je change la colonne résultat, puisque E ne correspond pas. Mais c'est pour expliquer le principe
1-Si D < 2 ans alors F = 0
2-Si 2 ans <= D <=10 ans alors F = C /10 * E
3-Si D > 10 ans alors F = (C/10*E)+(C/15*(E-10))

F=(B<>"C") ou F=(B="")
Si B est vide , F=Vrai si B="C" F=Faux. Pour le transformer en nombre, il faut l'inclure dans une opération : dans ce cas, Excel transforme la valeur logique (Vrai/Faux) en nombre (1/0)
Attention Excel est un peu bizarre : Dans une formule ou en VBA, Faux est toujours égal à 0.
Mais la valeur Vrai varie : En VBA, Vrai = -1
en Formule : si excel calcule la valeur Vrai, il renvoie 1
Si Excel teste la valeur Vrai, elle correspond à "<>0"
1-F=(B="")*(2<=D)
si les 2 conditions sont remplies, F=1, si au moins une des 2 est à Faux, F=0

2-F=(B="")*(2<=D) *[(C /10) * E]
Je préfère mettre des parenthèses, ça évite toute surprise
{} et [] ne sont là que pour différencier les parenthèses

3-F=(B="")*(2<=D) **[{(C /10) * E} +{(10<D)*({C/15}*{E-10})}]
Toutes les parties de formule en gras sont des tests qui en multipliant les formule par 1 donne le résultat de la formule et par 0 donne 0 (c'est magique

Même principe pour les cadres
1-Si D < 2 ans alors F = 0
2-Si 2 ans <= D <=5 ans alors F = C / 2
3-Si 5 ans < D <=10 ans alors F = C
4-Si D > 10 ans alors F = (C*2)+(C/5*(E-10))

1-F=(B="C")*(2<=D)
Attention à C : il doit être comme dans la colonne B (majuscule ou minuscule)

2-F=(B="C")*(2<=D)*(C/2)
Comme j'ai une fourchette, je verrais à la suivante

3-F=(B="C")*(2<=D)*((C/2)*(1+(5<D)*(D<=10)))
Là, je complique :p
(5<D)*(D<=10)=1 si 5<D<=10 sinon : =0 =>
(1+(5<D)*(D<=10))=2 si 5<D<=10 sinon, =1 =>
((C/2)*(1+(5<D)*(D<=10)))=2×(C/2)=C si 5<D<=10 sinon, =C/2

4-F=(B="C")*(2<=D)*[[(C/2)*{1+(5<D)*(D<=10)}]+[(10<D)*{(C*1,5)+[(C/5)*(E-10)]}]]

Ce qui donne au final
F=(2<=D)*{[(B="")*[{(C /10) * E} +{(10<D)*({C/15}*{E-10})}]] +
[(B="C")*[[(C/2)*{1+(5<D)*(D<=10)}]+[(10<D)*{(C*1,5)+[(C/5)*(E-10)]}]]]}
D'où la nécessité évidente de vérifier la justesse de chacune des formules en testant aux limites (1,99/2/5/5,1/10/10,1), C ou non-C 6+4=10 tests

A+

Fait ch..., Jeanpierre m'a encore grillé. Mais je reviendrais et ma réponse ser la plus rapide ^^
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 153
dernier inscrit
SamirN