XL 2010 Calcul en fonction des cellules au dessus

Orson83

XLDnaute Impliqué
Bonsoir à tous,
Je rencontre un problème en fonction des valeurs des cellules au dessus selon une valeur de décalage.
En effet, si les cellules au dessus (selon valeur décalage) sont supérieures, alors Action 1 ou si les cellules au dessus (selon valeur décalage) sont inférieures, alors Action 2.
Si ce n'est pas l'un des 2 cas, alors VIDE.
Merci pour votre aide.
Je joins un fichier exemple dans ce ticket.
Bonne soirée ;)
 

Pièces jointes

  • Ex 1.xlsx
    11.9 KB · Affichages: 9

Chris401

XLDnaute Accro
Essaye :
Code:
=SIERREUR(SI(ET(C6="Calcul A";SOMMEPROD(N(DECALER(B6;-$D$2;;$D$2;1)<B6))=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))<$D$3));"Action 1";
SI(ET(C6="Calcul B";SOMMEPROD(N(DECALER(B6;-$D$2;;$D$2;1)>B6))=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))>$D$3));"Action 2";""));"")

Ou on peut réutiliser NB.SI
Code:
=SIERREUR(SI(ET(C6="Calcul A";NB.SI(DECALER(B6;-$D$2;;$D$2;1);"<"&B6)=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))<$D$3));"Action 1";
SI(ET(C6="Calcul B";NB.SI(DECALER(B6;-$D$2;;$D$2;1);">"&B6)=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))>$D$3));"Action 2";""));"")
 
Dernière édition:

Orson83

XLDnaute Impliqué
Essaye :
Code:
=SIERREUR(SI(ET(C6="Calcul A";SOMMEPROD(N(DECALER(B6;-$D$2;;$D$2;1)<B6))=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))<$D$3));"Action 1";
SI(ET(C6="Calcul B";SOMMEPROD(N(DECALER(B6;-$D$2;;$D$2;1)>B6))=$D$2;OU($D$3=0;ABS(B6-DECALER(B6;-$D$2;))>$D$3));"Action 2";""));"")
Non, fonctionne q'avec 0.
Autre explication pour D21 : si le gain entre B21- B19 est inférieur à D3, alors pas d'affichage.
 

Chris401

XLDnaute Accro
Pour ma compréhension, à quoi sert $D$3=0 ?
Voir post #11

Et pour chipoter, comment indiquer > ou = à $D$3 ? J'ai essayé ")>=$D$3));"Action" mais ça ne fonctionne pas. En effet, si j'indique 16,84 en D3 alors que la dif. est bien de 16,84, alors pas d'affichage.

En réalité tu n'as pas 16.84 mais 16.8399999999999
Donc il faut arrondir dans la formule

Code:
=SIERREUR(SI(ET(C6="Calcul A";NB.SI(DECALER(B6;-$D$2;;$D$2;1);"<"&B6)=$D$2;OU($D$3=0;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3));"Action 1";
SI(ET(C6="Calcul B";NB.SI(DECALER(B6;-$D$2;;$D$2;1);">"&B6)=$D$2;OU($D$3=0;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3));"Action 2";""));"")
 

Orson83

XLDnaute Impliqué
Actuellement; si tu mets D3 à 0 cela sous entend que les valeurs doivent être égales à la cellule étudiée pour retourner l'action.
Donc, il faut ajouter que D3 doit être différent de 0 pour que l'argument 2 soit pris en compte.

Voir post #11



En réalité tu n'as pas 16.84 mais 16.8399999999999
Donc il faut arrondir dans la formule

Code:
=SIERREUR(SI(ET(C6="Calcul A";NB.SI(DECALER(B6;-$D$2;;$D$2;1);"<"&B6)=$D$2;OU($D$3=0;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3));"Action 1";
SI(ET(C6="Calcul B";NB.SI(DECALER(B6;-$D$2;;$D$2;1);">"&B6)=$D$2;OU($D$3=0;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3));"Action 2";""));"")
Si j'ai bien compris, il faut laisser $D$3=0 même si ça ne change rien en le supprimant ?
Ok pour l'arrondi, merci.
 

Chris401

XLDnaute Accro
Effectivement, on peut sortir D3=0 - Je l'avais mis dans le fichier ex2 car cela était nécessaire selon la compréhension que j'avais de ta demande.

Code:
=SIERREUR(SI(ET(C6="Calcul A";NB.SI(DECALER(B6;-$D$2;;$D$2;1);"<"&B6)=$D$2;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3);"Action 1";
SI(ET(C6="Calcul B";NB.SI(DECALER(B6;-$D$2;;$D$2;1);">"&B6)=$D$2;ABS(ARRONDI(B6-DECALER(B6;-$D$2;);2))>=$D$3);"Action 2";""));"")
 

Discussions similaires

Réponses
46
Affichages
831

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 006
dernier inscrit
blkevin