Compter des résultats positifs et "arrêter" la formule dès qu'un résultat est négatif

NZL

XLDnaute Junior
Bonjour,

Je cherche à calculer des variations de CA journalier ; je cherche à savoir combien de jours de hausse de CA suivent après un jour ou mon CA est en hausse,

Ex ci-dessous : après +1,28%, combien ai-je de jours de hausse avant de rechuter?
J'ai donc besoin d'une formule (par ex. nb.si) qui soit capable de "s'arrêter" dès que le nombre devient négatif.

Ma formulation est-elle claire? Le cas échéant, est-ce possible? Que me conseillez-vous?

Merci.

NZL

Ex :
+1,28%
+2,24%
-1,49%
+0,35%
-1,03%
-2,41%
-3,46%
+0,97%
+1,44%
+2,39%
-0,86%
+1,80%
-0,86%
-3,24%
+0,78%
+0,51%
+0,66%
+2,48%
+1,24%
+1,23%
-1,40%
-1,29%
-0,51%
+0,16%
-0,48%
 

Dranreb

XLDnaute Barbatruc
Re : Compter des résultats positifs et "arrêter" la formule dès qu'un résultat est né

Bonjour.
À supposer que le premier chiffre est en B12, mettre en C12 :
Code:
=SI(SIGNE($B12)=SIGNE(DECALER($B12;1;0));DECALER(C12;1;0)+1;0)
et propager vers le bas.
Remarque: la formule ne sera juste qu'après avoir propagé, a moins de la mettre d'abord sur l'avant dernière puis de propager en remontant. Sur la dernière on peut saisir 0 puisqu'elle n'est suivie d'aucune variation de même signe.
À +
 
Dernière édition:

NZL

XLDnaute Junior
Re : Compter des résultats positifs et "arrêter" la formule dès qu'un résultat est né

Merci beaucoup Dranreb, j'ai utilisé ta formule et ça fonctionne ; ci-dessous le résultat en colonne C

Maintenant j'aimerais appliquer (et si tu arrives m'aider, ça serait MAGIQUE!) ce % de manière suivante :

Si en colonne "B" l'occurrence Bn+1 est de même signe que Bn, appliquer en colonne "D" (par ex en D2) : D2 = D1*(1+B2) si B1 est +++ et D2 = D1*(1-B2) si B1 est ---
La subtilité de mon calcul réside dans le fait que une fois que le calcul a été fait, il n'y a pas de nouveau calcul tant que l'occurrence suivante change de signe. Pour être plus clair, j'ai écris ci-dessous ce que j'aimerais automatisé.

B C D
1 1,28% 1 =100
2 2,24% 0 =100*(1+B2) >> car B2 et B1 sont de même signe et B1 +++
3 -1,49% 0 =D2 >> on ne fait rien car B3 et B2 sont de signe opposé
4 0,35% 0 =D3 >> idem avec B4 et B3
5 -1,03% 2 =D4 >> idem avec B5 et B4
6 -2,41% 1 =D5*(1-B6) >> car B6 et B5 sont de même signe et B5 ---
7 -3,46% 0 =D6 >> on ne fait rien même si B7 et B6 sont de même signe car le calcul a déjà été fait en D6
8 0,97% 2 =D7 >> on ne fait rien car B3 et B2 sont de signe opposé
9 1,44% 1 =D8*(1+B9) >> car B9 et B8 sont de même signe et B8 +++
10 2,39% 0 =D9 >> on ne fait rien même si B10 et B9 sont de même signe car le calcul a déjà été fait en D9
11 -0,86% 0 =D10 >> on ne fait rien car B11 et B10 sont de signe opposé
12 1,80% 0 =D11 >> idem avec B12 et B11
13 -0,86% 1 =D12 >> idem avec B13 et B12
14 -3,24% 0 =D13*(1-B14) >> car B14 et B13 sont de même signe et B13 ---
15 0,78% 5 =D14 >> on ne fait rien car B15 et B14 sont de signe opposé
16 0,51% 4 =D15*(1+B16) >> car B16 et B15 sont de même signe et B15 +++
17 0,66% 3 et ça continue ...
18 2,48% 2
19 1,24% 1
20 1,23% 0
21 -1,40% 3
22 -1,29% 2
23 -0,51% 1
24 -0,48% 0
25 0,16% 0
26 -2,78% 1
27 -0,91% 0
28 1,76% 0
29 -0,29% 0
30 0,12% 0
31 -0,32% 1
32 -1,65% 0
33 1,35% 4
34 2,25% 3
35 0,86% 2
36 1,01% 1
37 0,14% 0
38 -1,45% 2
39 -1,44% 1

NZL
 

Dranreb

XLDnaute Barbatruc
Re : Compter des résultats positifs et "arrêter" la formule dès qu'un résultat est né

En relisant la question, toujours en supposant le premier chiffre en B12 (parce que c'est là que je les ai copiés dans un classeur que j'avais sous la main), pour ne compter que les successions de hausses qui suivent :
Code:
=SI(ET($B12>0;DECALER($B12;1;0)>0);DECALER(C12;1;0)+1;0)
Celle ci compterait aussi, mais en négatif cestte fois, les successions de baisses :
Code:
=SI(SIGNE($B12)=SIGNE(DECALER($B12;1;0));DECALER(C12;1;0)+SIGNE(B12);0)
hanov, je n'ai pas réussi à faire fonctionner ta formule:
Code:
=MIN(SI(B12:B36<0;LIGNE(B12:B36)-12))
de E12 à E36 validé par Ctrl+Maj+Entrée me met des 2 partout.

P.S. Je n'avais pas vu ta réponse, je répondais à ce qui précédait. Je vais lire maintenant...

À +

Pas sur d'avoir compris: si b1<0: -b1 sinon b1 c'est donc Abs(B1) ? alors en D2 :
Code:
=DECALER(D2;-1;0)*(1+SI(SIGNE(DECALER($B2;1;0))=SIGNE($B2);ABS($B2);0))

À +
 
Dernière édition:

haonv

XLDnaute Occasionnel
Re : Compter des résultats positifs et "arrêter" la formule dès qu'un résultat est né

Re,

Je n'avais pas compris la demande comme toi ,Dranreb,
Je ne pensais pas que l'on voulait suivre l'évolution ,mais que l'on voulait l'afficher dans UNE cellule .
Le résultat est 2,car on a les deux premières lignes positives.
A+
 

Statistiques des forums

Discussions
312 310
Messages
2 087 134
Membres
103 480
dernier inscrit
etaniere