Incrementation non continue

Résolu/Fermé
Tibus - 25 mars 2015 à 22:41
 Tibus - 27 mars 2015 à 08:58
Bonjour à tous,

Je développe un petit logiciel et je me frotte à un petit problème que je ne parviens pas à résoudre.

Je m'explique,
J'ai une suite de valeurs signifiants une hausse ou une baisse comme ci dessous.
L'objectif est d'obtenir une incrémentation tant que la suite non continue est positive et incrémenter négativement quand la suite est négative.

Suite / I++ /
-1 / -1
1 /3
0 /2
0 /2
1 /2
0 /1
1 /1
0 /-1
-1 /-1
0 /1
1 /1

J'éspère être clair avec mon exemple que l'on peut lire de bas en haut.

Merci d'avance pour votre aide.

Tibus


20 réponses

Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
25 mars 2015 à 23:10
Bonsoir,

Je ne pense pas que tu développes un logiciel mais plutôt un petit programme, un fichier.

Par contre avec quel logiciel et version travailles tu
2
Raymond PENTIER Messages postés 58668 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 septembre 2024 17 203
Modifié par Raymond PENTIER le 26/03/2015 à 01:32
Ton exemple n'est pas clair, et 2 données par ligne sont une source de confusion.
  • Peux-tu confirmer qu'il s'agit de 2 colonnes distinctes, et que l'incrémentation ne concerne qu'une seule colonne à la fois ?
  • Ton exemple ne correspond pas du tout à ta description
  • Peux-tu, comme le font tous les demandeurs, envoyer ton fichier avec cjoint.com/ ?

--
C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond (INSA, AFPA, CF/R)
1
Bonjour à vous Mike et Raymond et surtout merci pour votre aide.

Voici un lien cjoin http://cjoint.com/?3CAizYOaVis avec une partie du fichier.

Pour répondre à votre question Mike, c'est une erreur de ma part, je fabrique bien un classeur excel de 58 Mo avec environ 60 onglets ou feuilles.
Pour le moment, il ne beug pas trop.
L'objectif est de le faire développer bientôt d'ou mon appelation de logiciel.
Je travail avec un XLSM sous MS office excel 2007.
Raymond, l'incrémentation concerne la colonne I++ soit la colonne pyramidage dans le cjoin et que celle-ci.
Cette dernière doit s'incrémenter à partir des données dans la première colone (entrée/sortie), comme je l'ai fait à la main.

La colonne (entrée/sortie) ne sert que d'indicateur positif ou negatif ou 0 mais un 2 ne vaut pas plus qu'un 1, seul le sens compte mais pour moi le plus compliqué est d'incrémenter une "suite" non-continue.
Au final la valeur du pyramidage ira s'ajouter dans "position init" pour l'incrémenter et pyramider les positions.

Cordialement

Tibus
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 09:41
Re,

le plus compliqué est de cerner ta demande, si je comprends bien, colonne A tu saisis des valeurs qui sur l'exemple vont de -2 à 2 et en fonction de ces valeurs tu veux en colonne B incrémenter une liste de valeur, quel est la logique pour expliquer à Excel que si tu as en
colonne A 0 il faut en colonne B mettre 1 ou 2 ou 4 comme dans ton tableau ou encore -2 en colonne A et avoir 1 en colonne B
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re,

Effectivement ma demande est compliquée et pas forcément claire.

L'objectif de cette partie du excel est de pyramider des ordres d'achat ou de vente.

Quand on passe du négatif au positif, on doit mettre 1 car c'est la première fois depuis la baisse que l'on est positif.
Puis, la formule me redonne un nombre positif donc c'est la deuxième fois que je suis positif à la suite, l'incrémentation doit donc être 2 et ainsi de suite.
Entre temps je peux avoir 0 signal et je dois continuer avec la valeur 2 dans la colonne B.
Prochain signal positif de suite je met 3.
Si le signal après est négatif, je dois recommencer à compter avec 1.
Au second négatif -> 2 voici la suite mais je ne sais pas l'écrire.

Cordialement
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 10:03
Re,

j'essaye de comprendre, explique moi "Quand on passe du négatif au positif, on doit mettre 1",
alors en A4 tu as -2 et en 2 je comprends en B4 =1
mais A16 -2 et A17 0 tu as en B16 2 et en B17 tu as 1
0
Merci Mike pour ton intérêt,

Il faut lire le fichier de bas en haut car c'est une macro qui le met à jour tout les jours.
Evidemment si je ne le dis pas ca changer tout.

En remontant le fichier de haut en bas, on voit que l'incrémentation se fait à chaque changement de signe.
0 veut dire "on conserve les positions initiées" ou "ne rien faire(de plus qu'attendre)"

Merci


Tibus
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 10:26
re,
tu peux copier cette macro s'il te plait
0
La macro ne correpond pas au fichier.
Son objectif est simplement de copier les valeurs du fichier, les descendre d'une ligne en ne copiant que les valeurs et d'actualiser la nouvelle journée avec les formules et ainsi de suite.

J'obtient une anticipation du lendemain
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 10:51
Re,

même en lisant de bas en haut, dans ton exemple A16 est négatif -2 et A15 nul 0 les valeurs en B15 et B16 tu as 2
alors qu'en A4 valeur -2 comme en A16 en A3 0 comme en A15 et cette fois en B3 et B4 tu as 1

ou est la logique pour écrire un code ?
0
C'est compliqué à expliquer et je dois t'embrouiller un peu.
Pour faire plus simple, c'est une histoire de signes...
De B2 à B4 tu peux tout mettre en négatif
Tout comme de B15 à B19.
Le problème reste néanmoins intact.
La logique est dans le fait que quand tu as - en b19, c'est la première fois que c'est négatif, donc 1 ou -1 comme tu veux.
Ensuite tu as des 0 donc tu attend avec tes positions donc on doit encore mettre -1.
Par contre en B16, on a de nouveau un signal négatif, à -1 on rajoute encore -1 ce qui me donne -2 pusi vient un 0 on conserve la position donc -2.
En B14, à l'inverse, l'indicateur est + donc on arrête la suite négative et on repasse en positif. C'est la première itération on met donc 1
Juste après un second signal positif 1+1 = 2 Puis un 0 alors on attend avec notre +2 et après un nouveau signal positif etant déja positif avant on fait 2+1 = 3 et on pyramide ainsi de suite tant que l'on est positif. On recommence en inverse quand on redevient négatif.

Merci pour ton aide, j'éspère que c'est plus clair
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
26 mars 2015 à 11:21
Bonjour,

Je pense que :
- soit c'est un canular ;
- soit c'est le domaine d'activité qui veut ça (j'ai un pote qui arrive à être aussi peu clair que toi, Tibus).

Qu'est-ce qui doit bouger par formule ? Et quelles sont les données à traiter ? Qu'est-ce que ta "suite" ? Ne confonds-tu pas suite positive et suite croissante ? Que vient faire la colonne C dans le fichier cjoint ?

J'ai l'impression que tu as au moins 3 jours dans ton fichier (3 plages disjointes contenant des '1') et que c'est dans le pyramidage (colonne B) que tu dois avoir une formule d'incrémentation (on repère des suites 1 --> 2 ; 1-->2-->3-->4-->5

A+
0
Bonjour Zoul67,

Ca me flatte tout ca ! ;) Bonjour à ton pote, peut être que l'on pourrait bien s'entendre :) Trève de plaisanterie...

Je viens de passer plusieurs soirs a essayer de trouver la solution et je pense que je commence à avoir du mal.

La colone 3 ne sert à rien dans la formule elle repère juste le changement de tendance de la colone 1.
Par contre la colone 2 me permet de pyramider des ordres dans la colone 3 par la suite.

La colone 3 fonctionne, elle repère le changement de sens dans la tendance.
Elle ne passe que de 4 à -4. Mais mon objectif est de prendre en compte les autres signaux non pris en compte en tendance.
Tu passes de -1 à 1 la colonne le prend en compte mais si tu rajoutes encore un 1 dans la tendance (colonne 1) la il ne peut pas le prendre donc j'ai fait une autre colone la colone "pyramidage".

Peut être qu'au final ce que je cherche à faire est impossible.

La formule idéale, doit :
-Vérifier si la tendance est positive ou négative.
-mettre 1 ou -1 au changement de tendance
-à chaque nouveau signal qui s'inscrit dans la même tendance incrémenter la colone 2 d'où 1 -> 1+1=2 -> 2+1=3

Merci
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
26 mars 2015 à 13:29
Re,

J'ai rien compris, mais sois assuré que je transmettrai tes amitiés à mon pote (ainsi que le lien vers cette page).

La colonne 3 fonctionne ??? Alors que la suite est croissante puis décroissante et que la valeur reste à -4 ?!
C'est quoi le signaux ? Ta formule est bien à mettre en colonne B ? Suivant les valeurs (et leur évolution) en colonne A ?

A+
0
Re,
Oui effectivement c'est mon objectif de rester sur 4 et -4 car la mise de départ doit rester sur 4 lots vendus ou 4 achetés.
Par la suite si les signaux de la colonne 1 sont dans la tendance, je dois pyramider d'ou l'intérêt de la colonne 2 ou B.

La formule est bien à mettre en B suivant les valeurs de la colonne A.

Je vous remercie pour votre aide mais après une longue (interminable?) réflexion je viens de trouver la bonne formule à mettre en B.

A bientôt à tous sur le forum!

Tibus
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
26 mars 2015 à 15:25
Re,

Il est de coutume de communiquer la solution.
Merci de bien vouloir le faire, des fois que quelqu'un rencontrerait le même problème.

A+
0
Raymond PENTIER Messages postés 58668 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 septembre 2024 17 203
26 mars 2015 à 14:49
Bonjour Tibus.

Etant donné la complexité de ton explication, n'en rajoute pas inutilement !
  • Les colonnes s'appellent A,B,C. Alors pourquoi donc parler de colonnes 1,2,3 ?
  • Dans ton message #11 tu écris "De B2 à B4 tu peux tout mettre en néga-tif. Tout comme de B15 à B19. La logique est dans le fait que quand tu as - en b19, c'est la première fois que c'est négatif, donc 1 ou -1 comme tu veux" : Tu voulais parler de la colonne C ? Parce que la colonne B ne contient que des nombres positifs !
  • "Ensuite tu as des 0 donc tu attend avec tes positions donc on doit encore mettre -1. Par contre en B16, on a de nouveau un signal négatif, à -1 on rajoute encore -1 ce qui me donne -2 pusi vient un 0 on conserve la position donc -2" : Ce n'est pas du tout ce qu'on a dans ton fichier ...

0
Re,

N'étant pas famillier avec les forums je ne savais pas ... Je vais donc expliquer la solution.
Désolé Raymond, j'ai du mal m'exprimer mais dans le fichier ca a l'air de coller. Je parle de colonne 1 2 3 car on est venu à le dire dans les précédents commentaires. J'aurai du mettre A B C mais visible tout le monde a bien compris aussi avec 1 2 3 sinon j'aurai parlé de lignes.

Pour la solution.
J'ai donc arreté de penser qu'il faut developper la formule sur une seule colonne mais sur deux.

La seconde permet de connaitre le sens du marché comme la colonne C ( je n'utilise pas la colonne C car sinon je fais une référence circulaire)
Ensuite, j'additionne +1 au précédent dans pyramidage si la colonne D admettons( = colonne C) est positive depuis au moins deux séances et si dans la colonne il y a un nombre positif.
A l'inverse je soustrait 1 au précédent.
La dernière fonction si imbriquée me permet de faire en sorte de mettre 1 quand la colonne D change de signe sur les deux dernières séances.

J'éspère que c'est assez clair maintenant.

Je remercie tout le monde pour votre aide meme si le principe est compliqué.

Cordialement

Tibus
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 18:59
Re,

j'ai été obligé de décrocher, je vois que tu as résolu ton problème, tu peux donner tes formules afin que cela puisse servir de support pour une éventuelle demande du même genre
cordialement
0
Bonsoir Mike,

La formule est la suivante, je ne sais pas si elle va resservir mais elle permet d'incrémenter de la manière qu'il me faut.

=SI(ET(D1>0;D2>0;A1>0);+B2+D1;SI(ET(D1<0;D2<0;A1<0);+B2+D1;SI(SIGNE(D1)<>SIGNE(D2);0;B2)))

la colonne D à la formule suivante
:
=SI(A1>0;1;SI(A1<0;-1;D2))

Ce genre d'exemple est par exemple "utile" dans la finance pour pyramider des ordres d'achat ou de vente suite à une première entrée en position.


cdlt
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
26 mars 2015 à 22:16
Re,

je ne trouve pas que tes formulent donnent le bon résultat, essaye de mettre en hors champ exemple en G2 cette formule que tu incrémentes vers le bas, cette colonne peut être masquée
=SI(A2=0;G3;SI(ET(A2>0;A2>A3);G3+1;0))

ensuite soit dans ton tableau ou pour comparer en F2 cette formule que tu incrémentes vers le bas, donne exactement tes exemple colonne B
=SI(G2=0;SI(G2=G3;SI(A2=0;F3;NB.SI(A2:$A$19;"=-2"));1);G2)

formules à tester en changeant les données de la colonne A
0
Bonjour Mike,

Ta méthode me parait fonctionner avec le nb.si avec le critère mais je ne l'avais pas fait. Du coup aujourd'hui ca fonctionne azvec les deux colonnes comme dans l'exemple au dessus.
Pour bien tout conprendre la question, il aurait fallut que je mettre tout le projet mais impossible.
Je presente l'ensemble du projet aujourd'hui alors si ma formule être fausse ils le verraient ;)
Je tiendrais au courant.

Bonne journée
0
Mike-31 Messages postés 18336 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 septembre 2024 5 097
27 mars 2015 à 08:52
Re,

je pense que la longueur de la plage ne doit pas poser problème sauf si elle était très important ce qui ralentirait les mise à jour. dans la partie

NB.SI(A2:$A$19 tu peux nommer la plage
0
Re,

Non pour l'instant pas de problème quand je fais tourner les macros de mise à jour tous les soirs, je desactive l'affichage et le recalcul auto pour gagner du temps et je le réactive après.
Pour le moment je met à 15 colonnes qui en mettent environ 200 sur 111 périodes sori 5 mois et demi.

J'essai donc de condenser mes formules ca fait long.
0