où est le dernier ......

  • Initiateur de la discussion philou23
  • Date de début
P

philou23

Guest
Bonjour a tous

voila mon probleme du jour

ci joint un fichier a peu pres tel quil est chez moi a la difference du nombre de ligne (bien sur)

je voudrais que chaque fois qu un achat est detecté ,on puisse faire la difference avec la premiere vente trouvée plus haut et inversement en reprenat comme point de depart le dernier (achat/vente)

mon probleme c est que les achats et les ventes ne sont pas regulier au niveau du tablo et bien sur si on peut le faire sans macro ca serait mieux (j y pipe que dalle (pour linstant))

en exemple ce que je voudrais


1.2358 ACHAT #N/A
1.235 #N/A VENTE -0.008
1.2339 #N/A #N/A
1.2349 #N/A #N/A
1.2355 ACHAT #N/A - 0.005
1.2348 #N/A #N/A
1.2333 #N/A VENTE -0.022
1.2337 #N/A #N/A
1.2309 #N/A #N/A
1.2268 #N/A #N/A
1.2286 #N/A #N/A
1.2273 #N/A #N/A
1.2264 #N/A #N/A

je sais pas si jai etais clair mais bon je pense trouver des ames sensibles qui se pencheront sur ce probleme

merci davance ......
Philou
 

Pièces jointes

  • ED.zip
    3 KB · Affichages: 23
  • ED.zip
    3 KB · Affichages: 15
  • ED.zip
    3 KB · Affichages: 16
R

RENATO

Guest
Voici je pense un projet de réponse qui peut répondre à tes attentes, sans VBA.

Bien cordialement.
 

Pièces jointes

  • ED1.zip
    4.6 KB · Affichages: 23
  • ED1.zip
    4.6 KB · Affichages: 17
  • ED1.zip
    4.6 KB · Affichages: 15
@

@+Thierry

Guest
Bonjour Renato, Philou

Voici une solution par VBA, subordonnée à ce que tes retours d'info soient bien en colonnes C à E.

Sub BidAsk()
Dim Plage As Range
Dim Cell As Range
Dim LastAchat As Integer, LastVente As Integer


Set Plage = Range("D6:E" & Range("E65536").End(xlUp).Row) '<<<< à ajuster à ta plage

For Each Cell In Plage
If Not IsError(Cell.Value) Then
Select Case Cell.Value
Case "ACHAT"
LastAchat = Cell.Row
If LastVente <> 0 Then Cells(LastAchat, 6) = Cells(LastAchat, 3) - Cells(LastVente, 3)
Case "VENTE"
LastVente = Cell.Row
If LastAchat <> 0 Then Cells(LastVente, 6) = Cells(LastVente, 3) - Cells(LastAchat, 3)
End Select
End If
Next
End Sub


Bonne nouvelle, j'ai les même résultats que Rénato !!!

@+Thierry
 
M

Monique

Guest
Bonjour,

Excusez-moi si je m'en mêle,
mais je verrais bien un formule conditionnelle
qui multiplie par -1 si, en colonne D, il n'y a pas #NA
=SI(ET(ESTNA(D7);ESTNA(E7));"";(C7-RECHERCHEV(B7-1;B:C;2;0))*SI(NON(ESTNA(D7));-1;1))

Dans la formule, NA à la place de ERREUR et 0 à la place de FAUX,
ça raccourcit la formule, elle tient en une seule ligne.
 
P

philou23

Guest
bon bien bien
je reviens vers vous
avec deux problems


la colonne critere doit etre absolument apres la colnne de donnees ...............


et lautre probleme est :
comme on reprend la valeur de la vente pour le soustraire a lachat suivant si la vente est superieur a lachat le resultat doit etre positif (1.2333-1.2268)et inversement

6 1.2338 #N/A #N/A
6 1.2344 #N/A #N/A
7 1.2358 ACHAT #N/A -0.0042
8 1.235 #N/A VENTE -0.0008 0.0008
8 1.2339 #N/A #N/A
8 1.2349 #N/A #N/A
9 1.2355 ACHAT #N/A 0.0005 -0.0005
9 1.2348 #N/A #N/A
10 1.2333 #N/A VENTE -0.0022
10 1.2337 #N/A #N/A
10 1.2309 #N/A #N/A
11 1.2268 achat #N/A -0.0065 0.0065
11 1.2286 #N/A #N/A
11 1.2273 #N/A #N/A
11 1.2264 #N/A #N/A



et pareil si lacahtr est superieur a la vente le resultat doit etr positif
1.2358-1.235


je sais pas si je suis clair
peut etre doit on le faire sur 2 colonnes differentes
1-- colonne = achat - vente pour avior resultat +/-
2- colonne = vente - acaht pour avoir resultat +/-

enfin jai deja du mal avec la formule de Renato

jai encore du boulot pour vous arriver a la cheville .............

merci de votre aide
philou
 
M

Monique

Guest
Re,

Tu déménages tes critères, tu les mets en colonne F
Pour la ligne 7 :
=SI(F7=F6;"";(C7-INDEX(C:C;EQUIV(F7-1;F:F;0)))*SI(NON(ESTNA(D7));-1;1))
à moins que ce soit juste le contraire, tu verras.
 
@

@+Thierry

Guest
Re à tous et toutes

si on doit avoir des résultats inverses en VBA c'est facile !

Option Explicit
Option Compare Text
Sub BidAskInverse()
Dim Plage As Range
Dim Cell As Range
Dim LastAchat As Integer, LastVente As Integer


Set Plage = Range("D6:E" & Range("E65536").End(xlUp).Row)

For Each Cell In Plage
If Not IsError(Cell.Value) Then
Select Case Cell.Value
Case "ACHAT"
LastAchat = Cell.Row
If LastVente <> 0 Then Cells(LastAchat, 6) = Cells(LastVente, 3) - Cells(LastAchat, 3)
Case "VENTE"
LastVente = Cell.Row
If LastAchat <> 0 Then Cells(LastVente, 6) = Cells(LastAchat, 3) - Cells(LastVente, 3)
End Select
End If
Next
End Sub

Et donc sur le tableau que tu viens de poster j'obtiens ceci :

1,2338 #N/A #N/A
1,2344 #N/A #N/A
1,2358 ACHAT #N/A
1,235 #N/A VENTE 0,0008
1,2339 #N/A #N/A
1,2349 #N/A #N/A
1,2355 ACHAT #N/A -0,0005
1,2348 #N/A #N/A
1,2333 #N/A VENTE 0,0022
1,2337 #N/A #N/A
1,2309 #N/A #N/A
1,2268 achat #N/A 0,0065
1,2286 #N/A #N/A
1,2273 #N/A #N/A
1,2264 #N/A #N/A

Par contre pour la ligne 1,2358 ACHAT, j'aimerai savoir comment tu trouves "-0.0042 " ?

Bonne soirée
@+Thierry
 
P

philou23

Guest
re bonsoir a tous

et merci pour tous les efforts que vous deployez pour m aider et me convaincre au vba


bon je suis largué aussi lol

je vais essayer de me faire mieux comprendre



jai agrandi la taille du tablo pour Thierry les 0.0042

en fait ce que je souhaite : j achete 1.24 et je vends a 1.2386 soit une perte de 0.0014
ensuite la vente ressert de point de depart
je vends a 1.2386 et je rachete a 1.2391 soit une perte de 0.0005

et ainsi de suite

la formule de Renato me plaisais bien ..... mais impossible une fois deplacé la colonne critere de retrouver les resultats

les formules de Monique jai pas tout compris ........mais je suis sur quelles marchent .........

les colonnes 1....2.....3...4 sont des colonnes de matrices ..... donc intouchables
cest pour cela que je veux deplacer la colonne critere

voila

dur dur pour un dimanche soir

merci encore mille fois


philou

PS : question con


comment se fait il que les colonnes soit aussi des numeros sur mon excel et non plus des letttres ..........

jai encore du appuyer sur une bouton quil fallait pas
 

Pièces jointes

  • ed2.zip
    5.5 KB · Affichages: 20
@

@+Thierry

Guest
RE Philou

Pour ta dernière question :

Dans Excel Menu
=> Outils => Options => Onglet "Général"
Zone "Paramètres"
Tu décoches "Style de référence L1C1"

Pour le reste je pense que tu auras des réponses pour le déplacement de la colonne critères vers la droite...

Bonne Soirée
@+Thierry
 
@

@+Thierry

Guest
Tiens Philou regardes ci-joint pour définitivement te convertir en VBA !! lol

Bonne Soirée
@+Thierry


Il n'y a pas de limite de lignes le code s'adapte tout seul à ta plage du moment que les données sont entre "C6 et D32767"... limite d'Integer
Sinon il faut passer en Long..

@+Thierry
Take it Easy Just For The Fun​
 

Pièces jointes

  • Thierry-ED.zip
    16.4 KB · Affichages: 21
R

RENATO

Guest
Tu es presque au bout,

Si tu colle en cellule G7 : =SI(ESTNA(E7);"";SI(F7=F6;"";(C7-INDEX(C:C;EQUIV(F7-1;F:F;0)))*SI(NON(ESTNA(D7));-1;1)))

et en H7 : =SI(ESTNA(D7);"";SI(F7=F6;"";(C7-INDEX(C:C;EQUIV(F7-1;F:F;0)))*SI(NON(ESTNA(D7));-1;1)))

puis tu selectionnes simultatément tes deux cellules G7et H7, enfin tu double clic sur ta poignée de recopie....le tour est joué.

Salut

N.B. "super Monique" a tout maché le boulot un peu plus haut sur les topics
Bonsoir à tous
 
P

philou23

Guest
pour Thierry et Renato

Thierry ..................

Merci beaucoup pour ton fichier cest hyper cool

sauf un petit truc :

si dans le tablo on rajoute un achat et une vente et quon envoie la macro
elle prends bien en compte le calcul mais si ensuite on les enlevent ; le calcul reste dans la colonne ..............

inconvenients du vba dans mon cas particulier : fo appuyer sur le bouton
or le bouton peut etre tres loin de la derniere cellule remplie

mais merci de ton aide

Renato ca marche bien jai pas tout compris dans la formule mais ca fonctionne et cest le principal


merci a tous
en esperant que mon probleme aura aidé qq personnes dans le cas que moi ( je parle de mon nivo)

bonne journee a tous
philou
 
@

@+Thierry

Guest
Bonjour Philou, Renato, Monique, Le Forum

Tiens voilà une version "plus"

Bonne Semaine à tous, vous ne me verrez pas trop (plein de taff)

@+Thierry
 

Pièces jointes

  • Thierry-ED-V01.zip
    16.5 KB · Affichages: 17

Statistiques des forums

Discussions
312 371
Messages
2 087 710
Membres
103 648
dernier inscrit
mehdi kaddaf