Programmer un timer complexe

Résolu/Fermé
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 - 16 mars 2018 à 08:54
 chrisnapoli - 24 avril 2018 à 10:40
Bonjour,
j ai un problème à solutionner sur un programme qui ne me satisfait pas entièrement(attention la programmation n('est pas du tout mon métier,mais j ai souvent de bonnes idées qu'il est facile ou pas pour quelqu 'un de la profession à mettre en place)

Surtout ne pas se prendre la tete le problème est très complexe donc il faut y aller cool et avec bonne humeur....
C'est parti si vous ne comprenez pas n hésitez pas à me demander plus de détail

j ai un classeur que l on nommera A, ce classeur, dès son ouverture appelle 2 autres classeurs B et C, dans lesquels sont enregistres des programmes différents ,qui s appliquent au classeur A
Ce sont deux timers qui me collent des cotations a intervalles réguliers
pour un il colle toutes les minutes a partir de 09:00:00 et jusqu a 09:30:00
pour l autre toutes les 15 mn a partir de 09:15 jusqu a 17:45:00 ces cotations sont inscrites dans le Classeur A en colonne A de A12 :A131
les cotations dans cette plage sont tires directement des plages AU12:AU51 (qui sont le dernier cours enregistré)
puis de AV12:AV51 (qui sont les plus Haut de séance)
puis de AW12:AW51( qui sont les plus Bas de séance) les cotations dans ces 3 plages sont inscrites en temps réel par un logiciel d'importation de liens DDE(Data Dynamic Exchange) , ces cotations boursieres s'inscrivent dans Excel en Streaming en vrai temps réel
mon problème est le suivant , lorsque le marche financier ouvre a 09:00:00 les cotations s'inscrivent dans mon classeur A des 09:01:00 dans un emplacement bien défini de telle façon que je puisse analyser a quelle heure sont les PH et PB de séance
Mon soucis est que certains jours il y a des mouvements de panique à l ouverture et de nombreux traders vendent ou achètent en quantité en même temps empêchant le cours d'ouverture d’être fixé dans la premier minute les mouvements et transactions étant trop important certains jours il arrive que sur certaines valeurs le cours d'ouverture ne soit fixé que 2 a 4 voir 5 mn après l’ouverture de la séance qui est à (09:00:00), entraînant ainsi une erreur sur mon classeur A ,puisque mon Timer commence a coller les cotations a partir de 09:01:00 ce qui est généralement suffisant pour que le cours d'ouverture soit fixé dans cette première minute ;par contre si certaines valeurs sont a la traîne les cotations qui seront colles ne refléteront pas la réalité puisque ce sont des cotations pas encore totalement fixé elles vont s’inscrirent tout de même et faussent ainsi les résultats
Pour bien aller il faudrait que le Timer commence a coller chaque valeur séparément, seulement lorsque le prix d'ouverture est fixée ;le seul moyen pour cela est que le timer prenne en compte le fait que des que les PB et PH changent(par rapport a la veille) dans les plages AV12:AV51 et AW12:AW51 c'est a dire à des 09:00:00 jusqu au moment exact ou il y a constat que les chiffres ont changé ,seulement a ce moment la les cotations pourront commencés à être collé
le soucis est que si on fait un programme qui enclenche le collage des cotations des que les PB et PH ont changé , comment faire pour que les cotations s'inscrivent en face des heures sur mon classeur Pour comprendre il faut savoir que les cotations de la colonne A se collent ainsi dans la feuille
en colonne NR12:NR131 pour celles de 09:00:00 en NS12:NS131 pour celles 09:01:00;en NT12:NT131 pour 09:02:00 :etc jusque a la colonne QF12:QF131 pour les cotations de 17:45:00
Je vous précise que sur la ligne 11 et a partir de NR11 sont inscrits les repaires des heures
Cellule NR11 (09:00:00) Cellule NS11(09:01:00) cellule NT11(09:02:00) jusqua QF11(17:45:00)

Ce système me permet avec les formules MAX et Mini et EQUIVALENCE de savoir sur chaque valeur les heures et minutes des plus haut et plus bas en séance.
pour le moment je n ai pas d autres solutions que de sélectionner mes lignes Max et Mini a partir de la troisième minute (pour me laisser une marge) il arrive parfois que quelques valeurs ne sont pas encore fixé même après ces 3 minutes
je vous met les différents code d appel des classeurs ainsi que les timers pour que vous ayez déjà une idée de la complexité du problème après je pourrais éventuellement vous fournir les classeurs en partie

Sub Auto_open()
Windows("Trade .xlsm").Activate
Application.ScreenUpdating = False
For i = 12 To 134
Rows(i).Select
'Range("NR" & i & ":QF" & i).ClearContents
Next

Application.ScreenUpdating = True
Application.ScreenUpdating = False
Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
Workbooks.Open Filename:=Chemin & "\CotationParMinuteTrade.xlsm"
Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheureTrade.xlsm"
Windows("Trade .xlsm").Activate
End Sub



VBA project(cotationsParMinutetrade.xlsm)

Option Explicit

Private Sub Workbook_Open()
Dim i As Long
For i = 12 To 134
Rows(i).Select
Range("NR" & i & ":PC" & i).ClearContents
Next
c = 382
T1 = 1
Tempo1 = 1 / 24 / 60
TempsInitial1 = "09:00:00" '= heure de démarrage
TempsInitial1Num = Format(TempsInitial1, "0.00000")
Application.OnTime TimeValue(TempsInitial1), Procedure:="RecupCotation1" '"09:00:00"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation1
End Sub

Public Durée1 As Date
Public c As Long
Public TempsInitial1 As Date
Public TempsInitial1Num As Double
Public T1
Public Tempo1

Sub RecupCotation1()
If T1 >= 60 Then T1 = 0 '60
Durée1 = Format(TempsInitial1Num + (T1 * Tempo1), "hh:mm:ss")
Application.OnTime Durée1, "RecupCotation1"
Range(Cells(12, c), Cells(134, c)) = Range("A12:A134").Value
Application.Wait Now + TimeValue("00:00:01")
TempsInitial1Num = TempsInitial1Num + Tempo1
If c >= 413 Then ArretCotation1 'N° de la dernière colonne des cotations à la minute
c = c + 1
End Sub
Sub ArretCotation1()
On Error Resume Next
Application.OnTime Durée1, "RecupCotation1", , False
End Sub


VBAPoject(CotationAu Quart-dheureTrade.xlsm)

Option Explicit

Private Sub Workbook_Open()
Dim i As Long
For i = 12 To 134
Range(Cells(i, 413), Cells(i, 448)).ClearContents
Next i
d = 413
T2 = 1
Tempo2 = 15 / 24 / 60
TempsInitial2 = "09:00:00" '= heure de démarrage - 1 intervalle de temps entre 2 relevés"
TempsInitial2Num = Format(TempsInitial2, "0.00000")
PremierPassage2 = True
Application.OnTime TimeValue(TempsInitial2), Procedure:="RecupCotation2" '"09:15:00"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation2
End Sub

Public Durée2 As Date
Public d As Long
Public TempsInitial2 As Date
Public TempsInitial2Num As Double
Public T2
Public Tempo2
Public Bascule2 As Date
Public PremierPassage2 As Boolean



Sub RecupCotation2()
If T2 >= 4 Then
T2 = 0
TempsInitial2 = TempsInitial2 + "01:00:00"
TempsInitial2Num = Format(TempsInitial2, "0.00000")
End If
Durée2 = Format(TempsInitial2Num + (T2 * Tempo2), "hh:mm:ss")
T2 = T2 + 1
Application.OnTime Durée2, "RecupCotation2"
Range(Cells(12, d), Cells(134, d)) = Range("A12:A134").Value
Application.Wait Now + TimeValue("00:00:01")
If d >= 449 Then ArretCotation2 'N° de la première colonne vide (ou dernière colonne de la cotation au quart d'heure)
d = d + 1
End Sub
Sub ArretCotation2()
On Error Resume Next
Application.OnTime Durée2, "RecupCotation2", , False
End Sub


Merci d'essayer, même si le résultat n 'est pas au bout, les idées vont venir petit à petit comme dab,et au final on trouve toujours une solution

Bonne journée à tous
A voir également:

57 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
17 mars 2018 à 09:50
bonjour,
il me semble que tu expliques beaucoup ce que tu as réalisé dans Excel, un peu ce que tu veux obtenir, et, malheureusement, les deux explications sont mélangées.
oublions un instant ce que tu as réalisé, et explique, fonctionnellement, sans mentionner Excel, ce que tu essaies d'obtenir. merci de donner aussi un ou deux exemples simples, toujours en dehors de Excel, comme si tu faisais cela sur une feuille de papier.
autrement dit, plutôt que de considérer que ton programme a un problème, posons-nous la question de comment obtenir ce que tu veux. ensuite, tu adapteras ton programme.
1
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
17 mars 2018 à 18:18
Bonjour
j ai bien compris votre message laissez moi un peu de temps pour essayer de vous faire comprendre ce que je veux mais je pense que le plus simple serait de vous envoyer un tableau sommaire de l 'organisation que j ai mis en place
Attention je ne suis pas du tout programmeur ,j ai des idées et je faits appel a des gens qui connaisse la programmation pour les réaliser

qu 'en pensez vous? (je vous prépare cela si vous êtes daccord)
Bonne soirée et Merci
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
17 mars 2018 à 19:03
ton programme est très simple, ce sont tes explications qui compliquent tout.

merci d'expliquer brièvement et factuellement ce que contient "A12:A134" avant que le cours d'ouverture soit fixé.

merci d'expliquer aussi ce que contiennent les plages AV12:AV51 et AW12:AW51. je crois deviner que, pour chaque valeur, le contenu change une fois par jour, au plus tôt à 9h01, et que cela indique le cours d'ouverture est fixé pour cette valeur.

pourquoi faire compliqué et ne pas faire ce que tu expliques:
commencer a coller chaque valeur séparément, dès que les PB et PH changent (par rapport a la veille) dans les plages AV12:AV51 et AW12:AW51

que souhaites-tu enregistrer comme cours pour une valeur, dans les colonnes avant que le cours d'ouverture soit connu?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
17 mars 2018 à 20:37
Bonsoir
j essaye d 'etre le plus clair possible la plage A12:A51 contient ce qui se trouve en BC12:BC51 (ce qui correspond au pourcentage qu'il ya entre le cours d'ouverture et la derniere cotation enregistré)

la plage A52:A91 contient ce qui se trouve en BG12:BG51(ce qui correspond au pourcentage qu'il y a entre le cours douverture et le plus haut de la seance

la plage A92:A131 contient ce qui se trouve en BH12:BH51(ce qui correspond au pourcentage qu'il y a entre le cours douverture et le plus Bas de la séance

En AV12:AV51 est inscrit le cours en chiffre du plus haut de séance Exemple 46,32 pour ACCOR
EN AW12:AW51 est inscrit le cours en chiffre du plus bas de seance Exemple 45,38 pour ACCOR

les cotations qui se trouvent en plage A12:A51 vont se retrouvé colle a partir de 09:00:00 en NR12:NR51
les cotations qui se trouvent en plage A52:A91vont se retrouvé colle a partir de 09:00:00 en
NR52:NR91
les cotations qui se trouvent en plage A92:A131vont se retrouvé colle a partir de 09:00:00 en
NR92:NR191

Le problème est que le cours d'ouverture n 'est pas fixé dans le temps pour chaque valeur au même moment
en l 'état il n y a que une solution
c'est que le collage sur chaque valeur ne démarre que lorsque le PH et PB sur chaque valeur de la veille (en chiffre) change etant donné que le matin sont inscrits les cotations de la veille , ce n 'est que lorsque effectivement ces cotations commencent a changer que le cours d'ouverture est fixée

mon premier timer me colle les cotations toutes les minutes a partir de 09:00:00 jusque a 09:30:00;

le deuxieme timer me colle les cotations toutes les 15 minutes a partir de 09:15:00 jusqu 'a 17 h 45

a l avenir je pense faire un seul timer qui me colle toutes les minutes de 09:00:00 le matin jusqu a 17:45 :00 le soir
je vous mets le document que j ai épuré sinon c'est très lourd

je ne sais pas si j ai été assez clair pardonnez moi mais je ne sais pas comment vous avez l habitude de raisonner ,ce n 'est pas mon métier

https://mon-partage.fr/f/BgToHAT6/
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 17 mars 2018 à 21:01
et bien, pourquoi n'appliques-tu donc pas la solution que tu décris?
c'est que le collage sur chaque valeur ne démarre que lorsque le PH et PB sur chaque valeur de la veille (en chiffre) change etant donné que le matin sont inscrits les cotations de la veille , ce n 'est que lorsque effectivement ces cotations commencent a changer que le cours d'ouverture est fixée
où sont enregistrés les cours d'ouverture?
si j'ai compris (ce serait bien que tu résumes cela clairement, quel que soit ton metier):
AU12:AU51: dernier cours enregistré, je suppose donc le cours le plus récent
A12 :A131: cotation (idem que AU?)
AV12:AV51 (qui sont les plus Haut de séance)
AW12:AW51( qui sont les plus Bas de séance)
NR12:NR131 à QF12:QF131 : cours de chaque moment
en contradiction avec ce que tu avais écrit avant:
A12:A51 contient ce qui se trouve en BC12:BC51 (ce qui correspond au pourcentage qu'il ya entre le cours d'ouverture et la derniere cotation enregistré)
la plage A52:A91 contient ce qui se trouve en BG12:BG51(ce qui correspond au pourcentage qu'il y a entre le cours douverture et le plus haut de la seance
la plage A92:A131 contient ce qui se trouve en BH12:BH51(ce qui correspond au pourcentage qu'il y a entre le cours douverture et le plus Bas de la séance

j'ai l'habitude de raisonner à partir de faits précis et fiables, merci de faire un effort pour donner des informations correctes et répondre à mes questions..
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
17 mars 2018 à 21:11
si je savais le faire je l aurais déjà appliqué mais hélas je ne suis pas programmeur du tout(je n 'y connais que dalle) , je suis sculpteur sur pierres et puis c'est plus compliqué qu il n y parait parce que le timer il colle toutes les minutes en face des repères de la ligne 11,alors??????? en fait il faut que le timer colle toujours pour respecter les repères mais qu'il colle sans cotation si le PH et PB n ont pas changé
Drôle de programme je suppose
la balle est dans ton camp ,moi j 'en suis incapable si tu y arrives tu es fort...et si tu y arrives pas ce n 'est pas très grave c'est déjà bien d'essayer Bonne soirée

VBAProject(CotationParMinuteTrade.xlsm

Option Explicit

Private Sub Workbook_Open()
Dim i As Long
For i = 12 To 134
Rows(i).Select
Range("NR" & i & ":PC" & i).ClearContents
Next
c = 382
T1 = 1
Tempo1 = 1 / 24 / 60
TempsInitial1 = "09:00:00" '= heure de démarrage
TempsInitial1Num = Format(TempsInitial1, "0.00000")
Application.OnTime TimeValue(TempsInitial1), Procedure:="RecupCotation1" '"09:00:00"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation1
End Sub

Public Durée1 As Date
Public c As Long
Public TempsInitial1 As Date
Public TempsInitial1Num As Double
Public T1
Public Tempo1

Sub RecupCotation1()
If T1 >= 60 Then T1 = 0 '60
Durée1 = Format(TempsInitial1Num + (T1 * Tempo1), "hh:mm:ss")
Application.OnTime Durée1, "RecupCotation1"
Range(Cells(12, c), Cells(134, c)) = Range("A12:A134").Value
Application.Wait Now + TimeValue("00:00:01")
TempsInitial1Num = TempsInitial1Num + Tempo1
If c >= 413 Then ArretCotation1 'N° de la dernière colonne des cotations à la minute
c = c + 1
End Sub
Sub ArretCotation1()
On Error Resume Next
Application.OnTime Durée1, "RecupCotation1", , False
End Sub


VBAproject(CotationAu Quart-dheureTrade.xlsm)

Public Durée2 As Date
Public d As Long
Public TempsInitial2 As Date
Public TempsInitial2Num As Double
Public T2
Public Tempo2
Public Bascule2 As Date
Public PremierPassage2 As Boolean



Sub RecupCotation2()
If T2 >= 4 Then
T2 = 0
TempsInitial2 = TempsInitial2 + "01:00:00"
TempsInitial2Num = Format(TempsInitial2, "0.00000")
End If
Durée2 = Format(TempsInitial2Num + (T2 * Tempo2), "hh:mm:ss")
T2 = T2 + 1
Application.OnTime Durée2, "RecupCotation2"
Range(Cells(12, d), Cells(134, d)) = Range("A12:A134").Value
Application.Wait Now + TimeValue("00:00:01")
If d >= 449 Then ArretCotation2 'N° de la première colonne vide (ou dernière colonne de la cotation au quart d'heure)
d = d + 1
End Sub
Sub ArretCotation2()
On Error Resume Next
Application.OnTime Durée2, "RecupCotation2", , False
End Sub
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 17 mars 2018 à 21:27
c'est compliqué de t'aider parce que tu fais comme si ce n'était pas toi qui avait fait ce programme et que tu ne savais pas ce qu'il faisait.
cela ne me semble pas compliqué de faire "il colle sans cotation si le PH et PB n ont pas changé", à condition de comprendre ce que tu veux dire par "coller sans cotation". il suffit d'adapter la ligne de code:
Range(Cells(12, d), Cells(134, d)) = Range("A12:A134").Value

tu ignores mes questions, telles que "où sont enregistrés les cours d'ouverture?". ne serais-ce pas plus courtois d'y répondre?
0

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

Posez votre question
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
17 mars 2018 à 22:09
non ce n 'est pas moi qui ai fait ce programme je te le jure je n ai jamais fait de programmation de ma vie je crois t avoir repondu, tu m 'as demandé..

"""merci d'expliquer brièvement et factuellement ce que contient "A12:A134" avant que le cours d'ouverture soit fixé.

merci d'expliquer aussi ce que contiennent les plages AV12:AV51 et AW12:AW51. je crois deviner que, pour chaque valeur, le contenu change une fois par jour, au plus tôt à 9h01, et que cela indique le cours d'ouverture est fixé pour cette valeur. """

et je t'ai répondu sur ces deux points excuse moi j ai zappé l 'ouverture pour la bonne raison que je t'ai envoyé le document tout est inscrit tel que je te l 'ai décrit
l Ouverture est en colonne BB pour faire mes calculs sur les pourcentages et elle est aussi en colonne AT pour les liens DDE
je te le répète je n ai jamais fait de ma vie de la programmation;moi mon métier c'est ca regarde les documents que je t'annexe

https://mon-partage.fr/f/GMNwZHY7/

https://mon-partage.fr/f/nYxaj1Ey/

https://mon-partage.fr/f/Qym13e1P/

https://mon-partage.fr/f/E9cPikl7/

https://mon-partage.fr/f/IGOV3XhO/

je n 'ai aucune raison de te mentir; pourquoi faire??? ni aucune raison d’être discourtois , c'est involontaire je pensais que tu regarderais le document excel que je t ai envoyé
Voila je ne peux te dire qu une chose ,c'est que tu parles a une personne qui n a jamais mis son nez dans VBA les seules macros que je fait c'est par l 'enregistreur, apres tout ce que j ai fait c'est par des formules mais jamais par de la programmation je suis obligé d'aller sur les forums pour trouver les solutions,donc quand tu me parles technique j ai du mal a suivre je me contente de suivre les directives quand je sais ou il faut que je les mettes sinon c'est du chinois pour moi
tu dois me croire parce que c'est la vérité j aimerais bien connaitre mais à mon age il est un peu tard pour apprendre votre métier, Hélas
Bonne soirée à toi
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 00:36
ok, je propose de faire ainsi:
avant que le cours d'ouverture soit connu pour une valeur, on ne va rien enregistrer pour cette valeur (pour le moment, je ne fais cela que quand on travaille toutes les minutes).
pour réaliser cela, je vais utiliser les colonnes C à H, qui me semblent libre.
je vais supposer que le cours d'ouverture est connu pour une valeur si quelque chose change dans les colonnes AS à AW.
donc (je n'ai pas testé):
dans VBAProject(CotationParMinuteTrade.xlsm,
après
c = 382

ajouter
Range("D12:H51").Value = Range("AS12:AW51").Value
Range("C12:C51").ClearContents


après
Range(Cells(12, c), Cells(134, c)) = Range("A12:A134").Value

ajouter
dim l as long
for l=12 to 51
    if Cells(l, "C").Value<>"ok" then
        if Cells(l, "D").Value <> Cells(l, "AS").Value _
            or Cells(l, "E").Value <> Cells(l, "AT").Value _
            or Cells(l, "F").Value <> Cells(l, "AU").Value _
            or Cells(l, "G").Value <> Cells(l, "AV").Value _
            or Cells(l, "H").Value <> Cells(l, "AW").Value then
            Cells(l, "C").Value="ok"
        else
            Cells(l,c).ClearContents
        end if
    end if
next l
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 01:07
ton idée me parait bonne je regarderais demain parce que j ai du monde qui est arrive à la maison effectivement les colonnes C jusqu à H sont libres ; juste après ça recommence à partir de la colonne K et c'est plein jusqu’à la colonne BVF et dans les lignes cela descend jusque a la ligne 3666
Je vois que tu es passionné par ton métier on a quelque chose en commun on ne lâche jamais le morceau
je suis déjà tout stressé de voir que tu as une idée bien précise

je dois te dire que pour les minutes c'est bon c'est pas la peine de prendre en compte le deuxième Timer puisque il commence a coller a 09:15::00 ; pour être clair le prix est toujours fixé au maximum dans les quatre cinq minutes grand maximum et pour la plupart des valeurs c'est entre 09:00;00 et 09:01:00 c'est juste quand il y a de mauvaises dépêches pendant la nuit qui tombent sur certaines entreprises que cela traîne le matin à l 'ouverture parce que tout le monde vend ; c'est la panique et les ordis n 'arrivent pas à comptabiliser ils appellent ca "la surchauffe"

Merci d'avoir analyser qui j 'étais ; je n 'aime pas mentir je préfère passer pour ce que je suis que pour ce que je pourrais être; il faut être honnête et respectueux de l 'autre.
ah oui j oubliais de te dire , si tu trouves la solution ,mais j'en ai aucun doute ,il va falloir que je décale mes formules MAX et MINI, parce que pour pallier au problème j'avais déplace mes MINI et Max a partir de la troisième minutes ça n 'a jamais été complètement satisfaisant parce que souvent il est arrivé que 2 trois valeurs étaient fixé vers la quatrième minutes ;mais bon....
cela ne me demandera pas énormément de travail faudra que je retouche 1800 lignes puisque mon analyse porte sur quinze séances et sur 40 valeurs (le Cac 40) et MINI et Max sont pris sur plus haut et Plus bas mais aussi sur les derniers
Bon je te laisse et je te souhaite une excellente soirée à demain
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 11:07
Bonjour
j ai pas trop dormi cette nuit
je crois comprendre ce que tu faits; je pense que ça va marcher, tu veux me semble t'il ,coller en double le cotations de AT en E celle de AU en F celle de AV en G et celle de AW en H et tu dits mettez les cotations en colonne A des que et si les cotations sont <> je pense que c'est ça, mais je n' en suis pas sur

en fait avec ma petite tete et mes petits moyens comme je ne connais pas votre langage VBA, j avais envisagé simplement de faire une macro qui me colle le soir apres 17:45::00 le PB/ouverture le PH/ouverture le DERNIER /Ouverture(quand je dit PB:Ouverture j 'entends le pourcentage effectif entre le PB et le cours d'ouverture ,pareil pour le Plus haut et le dernier) de chaque valeur en colonne B, et de mettre une formule dans chaque cellule des plages A12:A51; A52:A91; A92:A131 qui dirait =Si(B12<>A12;BC12;"") et pareil pour A52 =si(B52<>A52;BG12;"") et pourA92 si (B92<>A92;BH12;"")etc en faisant de même pour toutes les cellules de la colonne A
mais en fait mon problème est que je ne savais pas comment inscrire que les cotations devaient se coller continuellement des le premier changement et pour toute la durée de la séance ,je pense que j aurais eu encore la une difficulté parce que il pouvait arriver a un moment que le plus bas le plus haut ou la dernière cotation soit la même que la veille et alors la rien ne se serait inscrit dans la cellule.
Je sais pas trop si je raconte des conneries
je vais commencer a déplacer mes repères je vais les mettre a partir de la première minutes puisque de toute façon rien ne s'inscrira en 09:00:00 puisque il faudrait que instantanément le cours soit fixé ce qui est impossible( en théorie donc rien ne devrait se coller en colonne NR qui est celle de 09:00:00)
Donc je vais décaler les Max et MINI de la troisième minutes vers la première(j'ai du boulot)

Après j envisage de tout passer dans un futur proche le timer complet en une minute sur toute la séance, il faudra que je vois si il n y a pas un moyen plus efficace que ce que j ai fait avec les formules parce que la saisie est très très longue pour l instant avec les deux timers le collage se fait sur 68 colonnes mais si je fait toutes les minutes jusque a 17:45:00 cela va donner 585 colonnes et la ou c'est le plus impressionnant c'est que je suis obligé de me constituer tous les jours une bibliothèque de données sur 15 séances, pour que mes statistiques soient valable ,donc pour le moment avec mes 2 timers j ai une bibliothèque qui fait pour les quinze séances 1065 colonnes ,je n ose pas faire le calcul si je le fait pour une journée programmée a la minute et pourtant il faudra bien que je le fasse un jour ou l 'autre pour être plus précis et crédible
voila je pense avoir dit l 'essentiel excuse moi de ne pas pouvoir t'aider je ne peux que te donner mon sentiment, c'est un peu frustrant ,mais c'est comme ça
je te mets le document de la modification que tu m as dit de faire, dit moi si je l inscrit tel quel ou si j ai fait une erreur
Prends ton temps il faut jamais se bousculer quand on fait ce genre de boulot bonne journée
Moi je m 'en vais faire mon Boeuf Bourguignon Tres bon Dimanche

https://mon-partage.fr/f/GNLwyKoY/
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 12:27
en effet, comme tu as compris, je souhaite faire ainsi:
au début de la journée, vider la colonne C, et copier les cotations de AT en E celle de AU en F celle de AV en G et celle de AW en H.
ensuite, toutes les minutes, pour chaque valeur, si la colonne C est vide, vérifier si les colonnes D à H sont toujours égales aux colonnes AS à AW. si toujours égales, vider la cellule correspondant à la valeur et au moment. si plus égales, mettre "ok" en colonne C.

je pense comprendre ce que tu voulais faire avec la macro du soir et des formules, cela aurait sans doute bien fonctionné. je fais presque la même chose le matin, avec plus de code et sans formule.

je ne comprends pas ton soucis de comment inscrire que les cotations devaient se coller continuellement des le premier changement et pour toute la durée de la séance. je pense que cela aurait simplement continué de fonctionner comme avant ces changements.

tu trouves que c'est trop lent. il me semble que, si tu veux juste obtenir les cotes en colonne A, tu as beaucoup de formules inutiles. Excel est parfois lent parce que, pendant l'exécution des macros, il modifie l'affichage en permanence: c'est parfois mieux de lui donner instruction de ne pas faire cela, en ajoutant des instructions aux bons endroits dans le code.
pour figer l'affichage:
Application.ScreenUpdating = False
pour redémarrer l'affichage:
Application.ScreenUpdating = True

ce que tu as mis dans ton document est exactement ce que je suggère (et n'ai pas testé). je suppose que tu gardes des copies de ton travail avant de faire des modifications. cela permet de faire marche arrière en cas d'erreur, sans doute plus facile que dans ton boulot.

bon app et bon dimanche
:-)
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 14:02
Bonjour

""je ne comprends pas ton soucis de comment inscrire que les cotations devaient se coller continuellement des le premier changement et pour toute la durée d
e la séance. je pense que cela aurait simplement continué de fonctionner comme avant ces changements. ""

imaginons avec mon systeme ,le Timer colle a partir de 09:00:00 ;qu 'il y ai ou pas de cotations inscrite dans la colonne A; lorsque par exemple les cotations vont changer dans les plages concernés, immédiatement elle s vont s afficher dans la colonne A et cela tant que les valeurs seront différentes , mais si par hasard on revient a nouveau sur une valeur égale a ce qui est inscrit en colonne B alors il n y aura plus rien inscrit dans la colonne A (puisque ma formule dit donnez moi la valeur si elle est différente de ,sinon rien)donc a chaque fois que pourrait s'inscrire une égalité dans la journée par rapport a la veille et bien il y aura aucune inscription dans ma cellule en colonne A ;le temps de l 'égalité possible faussera les résultats; tandis que je pense que avec la programmation que tu as faites ce n 'est pas la même chose parce que dans ton cas des que les valeurs vont être différente en AT par rapport à E ,et bien le timer va coller(point barre et sans discontinuerJe sais pas si je suis clair ,mon systeme de formule ne peut pas marcher correctement; si ce n 'est que il serait possible de mettre en Formule
=DES QUE(B12<>A12;BC12;"")
Cela n 'existe pas a ma connaissance et puis de toute façon je crois et j 'en suis sur des que B12 reviendrait a égalité de A12 dans la journée (c'est possible)alors aucune cotation serait inscrite en cellule A12

Bon si je capte bien si j inscrit le programme aujourdhui dans mon classeur tel que je te l 'ai montré en VERT demain matin normalement je vais me retrouve en E12:E51 avec l 'equivalent de AT12:AT51 et la suite pareil pour AU AV AWW et des 09:01 toutes les valeurs qui ont change dans l intermede vont commencer a s'afficher en face 09:01:00 en colonne NS
Quoi que je pense qu il m est possible de faire un essai avant
Si je copie par exemple manuellement en mode valeur d 'autre cotations en AT12:AT51 et les autres plage avant de programmer manuellement l heure de depart du timer(c'est possible il me suffit d 'aller dans VBA et de changer 09:00:00 pr l heure que je veux et mon Timer se mettra en route a l heure que je lui demanderai
il va falloir que je fasse 2 manip dans un premier temps inscrire ton programme puis ouvrir le classeur et les emplacements E F G H devrait etre inscrit
dans un deuxieme temps remplacer en mode valeur les cotations en AT AU AV AW puis fermer le classeur aller dans VBA inscrire une autre heure de départ et la je pense que des l heure sera effective alors ce que j aurais change va sinscrire immédiatement en colonne NR 09:00:00
je vais me contenter de changer 2 à 3 lignes pour savoir si cela fonctionne à tout a l heure je te dirais si cela a fonctionné Bon Aprem
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 14:18
moi je teste qu'un des nombres "cloture, ouverture, dernier, PH, PB" change par rapport aux nombres sauvés en début de journée. tu pourrais faire de même par formule.
en écrivant cela, je me rends compte que ce n'est sans doute pas correct, parce que (dernier) change tout le temps, tandis que les 4 autres ne changent (je l'espère) qu'au moment de la fixation du cours d'ouverture. il faudrait donc supprimer la ligne:
or Cells(l, "F").Value <> Cells(l, "AU").Value _
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
Modifié le 18 mars 2018 à 15:22
il y a une autre chose que je n'ai pas complètement compris: comment ton programme, qui est dans un classeur, modifie les données d'un autre classeur.
j'ai supposé que le code dans Workbook_Open() modifie les données de l'autre classeur, parce que sinon cela n'aurait pas d’intérêt de faire
Range("NR" & i & ":PC" & i).ClearContents
.
si cette supposition est fausse, mes changements sont faux aussi.
à la réflexion, ce serait plus simple de déplacer une partie de ce que tu fais dans Workbook_Open() du classeur CotationParMinuteTrade vers le Auto_open() du classeur principal.
ceci, je pense:
    Dim i As Long
    For i = 12 To 134
        Rows(i).Select
        Range("NR" & i & ":PC" & i).ClearContents
    Next
Range("D12:H51").Value = Range("AS12:AW51").Value
Range("C12:C51").ClearContents
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 14:48
c'est encore moi
et ce que tu peux me dire si ton programme colle en E12:E51 les cotations en AT12:AT51 ou
En fait il faut que ton programme dise dès qu'un changement est détecté dans une cellule par exemple seulement sur la plage du plus bas AW12:AW51a partir de 09:00:00 inscrivez les cotations des cellules correspondante de BH12:BH51 en A92:A131; inscrivez la cotations de
BG12:BG51 en A52:A92;inscrivez les cotations de BC12:BC51 en A12:A51 je pense qu'il faut détecté juste un changement sur une seule colonne et cela suffit j attends que tu me dises ce que tu en penses parce que j ai inscrit ton programme et rien ne c'est affiché a moins qu'il soit nécessaire que je change l heure et que je vérifie a l ouverture du classeur si tes lignes en E F G H sont présentes j avoue que ça nécessite une réflexion ce serait trop facile si on y arrivait du premier coup
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 15:10
le programme devrait faire à peu près ce que tu décris. en fait, le programme copie toujours toutes les données, je n'ai pas touché à cela. ce que j'ai changé, c'est qu'il devrait effacer les données (en NR 09:00:00 et suivantes) pour une valeur si aucun changement n'a été détecté pour cette valeur.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 14:50
j ai oublié, faut il que je mette = moi même dans E F G H ou est ce ton programme qui les colle
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 15:06
le programme devrait le faire au moment dans Workbook_Open().
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 15:07
je ne comprends pas je viens d'essayer le timer les cotations se collent mis dans les cellules de la plage C12:C51 ca affiche ok a chaque cellule???????
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 15:29
""le programme devrait le faire au moment dans Workbook_Open().""
je ne comprends pas ou saffiche les cotations en E F G H??
la pour le moment les cotations se collent comment faire pour tester si il ya un changement et verifier si ca fonctionne?? c'est quoi les ok qui sinscrivent en C12:C51??
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 15:43
les ok s'inscrivent quand le programme détecte qu'il y a eu un changement.
si il n'y a rien en EFGH, fais comme expliqué en #20.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 16:35
je ne comprend pas j ai changé la premiere ligne sur AT AV AU et AW et rien a a changé il continue a m afficher OK de A12:A51alors qu'il n y a a eu aucun changement par rapport a quand j ai arrêté mon classeur et réouvert normalement

?????? theoriquement vu que j ai change les cotations de la premiere ligne d apres ce que tu me dits cela aurait du s'inscrire E G H F ya rien d'inscrit
je ne pige pas quand tu me dits
les ok s'inscrivent quand le programme détecte qu'il y a eu un changement.( il n ya pas eu de changement sauf la premiere ligne et les ok sont inscrits tout de même)
si il n'y a rien en EFGH, fais comme expliqué en #20.
c'est quoi #20 ??? il faut que tu me dises ou sinscrit en E F G H les cotations pour faire le comparatif du changement j avoue que la je ne suis plus...
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 16:40
vois ici: #20 et #14
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 18:32
Bon ,je ne comprend rien a ce que tu essaies de me faire comprendre alors je vais laisser ton programme inscrit comme tu me l 'as écrit
et moi en colonne D sur la cellule D12 je vais coller en mode valeur le résultat qui est inscrit dans la plage Plus bas c'est a dire AW
donc sur une seule valeur pour essayer demain matin je rentre en cellule A12 la formule suivante

=SI($D12<>$AW12;$BC12;"")

donc si des fois on arrive pas par la programmation à obtenir le résultat qui nous interesse
- on aura toujours comme voie de recours la Formule avec 2 macros j ai vérifié si j ai le même résultat dans les deux cellules il ne s 'affiche rien en A12, si le résultat est différent alors le pourcentage inscrit en BC 12 s 'affiche bien en A12
a ce moment la il faudra une macro qui colle en mode valeur tous les soirs après 17:45 :00 la plage AW12:AW51 en D12:D51 et une autre qui effacera les cellules de la colonne D juste apres que le cours d 'ouverture ai été donné(il suffira pour cela de faire la même opération sur le cours d'ouverture sur une autre colonne de cette maniere le timer inscrira après toutes les cotations, puisque n ayant plus d’inscription dans la colonne D ,AW sera forcement <> à D d'ou les cotations se feront normalement jusqu 'au final même dans l hypothèse ou le plus bas reviendrait dans la journée au même niveau que celui de la veille je sais pas i j ai été assez clair
pardonne moi mais je n ai pas ton savoir faire donc j emploie la méthode démerde
tu en penses quoi ??
de toute façon demain je vais voir comment ça réagit ton programme avec les liens DDE ,autant ca va marcher comme sur des roulettes
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 18:44
je suggère:
1) de supprimer la ligne
or Cells(l, "F").Value <> Cells(l, "AU").Value _

2) de modifier le Auto_open() dans le module1 du classeur principal, afin d'avoir ceci:
Sub Auto_open()
    Windows("Trade .xlsm").Activate
    Application.ScreenUpdating = False
        Range("NR12:PC51").ClearContents
Range("D12:H51").Value = Range("AS12:AW51").Value
Range("C12:C51").ClearContents
    Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
    Workbooks.Open Filename:=Chemin & "\CotationParMinuteTrade.xlsm"
    Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheureTrade.xlsm"
    Windows("Trade .xlsm").Activate
End Sub

3) de retirer ce que j'ai suggéré d'ajouter dans Private Sub Workbook_Open()
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 18:51
ce que je pense: c'est toi qui décides, à toi de choisir de suivre mon idée, ou bien de me demander de plutôt t'aider dans ton idée.
si tu veux "bien" faire, suis mon idée.
si tu veux comprendre ce qui se passe, garde ton idée.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 19:11
je viens de faire ce que tu m as dirt pour l autre suggestion s dont tu parles dans private Sub Workbook_Open()
c'est bien cela

Dim i As Long
For i = 12 To 134
Rows(i).Select
Range("NR" & i & ":PC" & i).ClearContents
Next
Range("D12:H51").Value = Range("AS12:AW51").Value
Range("C12:C51").ClearContents

je n y avais pas touché si c'est de cela dont tu parles tu parles bon je vais essayer douvrir le classeur pour faire un essai
mais normalement si je suis ta logique aucune cotation ne vont s'inscrire puisque rien aura change dans le classeur???? NON ???
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 19:32
bon ya un net progrès mais c'est pas ca encore je viens d'essayer, tu dois pas être loin de la vérité

Alors des que le classeur c'est ouvert les cotations de A12: A51 se sont effaces immédiatement j ai alors vite changer la premiere ligne en haut sur le plus bas et plus haut en AV12 et AW12 et des la première minute miracle le ok est apparue en C12 et a nouveau la cotation s est inscrite en face la colonne 09:01;00 donc le principe semble marcher sauf que pour les plus haut et plus bas ca ne marche pas les colonnes se sont remplis comme si il y avait eu un changement de cotation
allez savoir pourquoi
, ;mais j ai bon espoir tu vas trouver
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
18 mars 2018 à 19:55
je vais évidement suivre ton idée puisque je viens de faire un dernier essai et on est presque a la solution
je n ai pas la prétention de connaitre la bonne solution je te disais simplement que si on y arrive pas avec la programmation on trouvera toujours une solution avec les formules
mais mon dernier essai me dit que tu es très proche d avoir trouver tout a parfaitement fonctionné de la ligne A12 : A51 reste a savoir pourquoi le reste n 'a pas fonctionné mais ça je te fait confiance tu vas trouver ce n 'est qu une question de temps et de réflexion
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
18 mars 2018 à 20:16
je ne suis pas certain que tu as suivi toutes mes suggestions. je voudrais vérifier cela avant de chercher à améliorer mes suggestions.
peux-tu, soit partager tes deux fichiers (le principal et celui 1 minute), soit partager les codes comme tu as fait avec le document word .doc, en y ajoutant aussi le module1 du fichier principal
(j'aurai moins de temps ces prochains jours, mais je ne vais pas laisser tomber)
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
19 mars 2018 à 10:22
Bonjour

j 'espère que tu as passé un bon week end

Pas de chance ce matin le logiciel d'importation des liens DDE ne marche pas
j ai quand même essayer
a 09:00:00 les cotations de A12 à A51 s'affichent et disparaissent (ce qui est normal,puisque elles n 'ont pas changé ,sauf une, la première qui continue a s'afficher et ou il y a ok en cellule C12 (je n ai pas trouvé encore pourquoi cela merde sur cette première cellule)

Pour les autres A52:A91 elles s 'affichent toutes les mn des 09:00:00 en plage NR52:NR91 puis NS52:NS91(09:01:00)......etc pareil pour A92:A131 elles s 'affichent toutes les minutes alors qu elles n 'ont pas changé, 'évidement compte tenu que le logiciel ne fonctionne pas aujourd’hui, c'est un problème technique du fournisseur) je ne peux pas te dire pourquoi ,normalement aucune ne devrait s afficher

ah oui ,j ai oublie de te dire que des l 'ouverture du classeur de D12 à H51 se sont inscrites les cotations qui correspondent aux plages AS12:AS51( cloture) AT12:AT51(ouverture) AU12:AU51(dernier) AV12:AV51(PH) AW12:AW51(PB)
je viens de voir maintenant que a partir de ma colonne OX (09:15:00) les cotations s'inscrivent normalement sur toutes les plages, ce qui me parait normal puisque cotation quart dheure n 'a pas été modifié(et n 'a pas a l être) je te renvoie exactement ce qui est affiché dans mon classeur , j ai peut être fait une erreur sans m' en apercevoir je pense que c'est juste une mise au point pour que cela aboutisse, la preuve c'est que le principe semblerait fonctionner pour la plage A12:A51 donc il n y a aucune raison pour que cela ne fonctionne pas sur les plages A52:A91 et A92:A131

"Derniere minute" en relisant ton programme dans sub auto open il y a quelque chose qui me chagrine et que je ne saisis pas; pourquoi tu as marqué Range("NR12:PC51") alors que c'est ("NR12;NR131") ou("NR12;NR51") ou (NR12:OV131") ou(NR12:OV51") en fait je ne sais pas a quoi tu faits référence si c'est a la premier plage dans la quelle vont s'inscrire les cotations ou si c'est la totalité de la plage puisque OV correspond a la dernière colonne 09:30:00 mais la ou je pige pas c'est que PC51 correspond à 10:30:00

https://mon-partage.fr/f/HQUw0YCq/

Bonne journée a toi
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 mars 2018 à 14:34
je commence par le plus facile, le "dernière minute". j'ai regardé ce que faisait le Workbook_Open du fichier 1minute, sans faire attention au reste. donc cela devrait sans doute être (NR12:OV51"), ou même (NR12:OV131"), au lieu de ("NR12:PC51")

pour les lignes après 51, je n'ai rien fait, car je n'ai pas compris qu'il fallait faire quelque chose, et encore moins quoi faire. je regarde dans l'Excel que tu avais envoyé, et je reviens vers toi, soit avec des questions, soit avec des suggestions.

pour le problème de la ligne 12, compare D12:H12 à AS12:AW12: qu'est ce qui n'est pas identique?

je pense qu'il faut supprimer la ligne de code:
or Cells(l, "F").Value <> Cells(l, "AU").Value _
dans Sub RecupCotation1()

en fait, c'est une chance que l'importation ne fonctionne pas, cela permet de tout tester tranquillement, :-)
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
19 mars 2018 à 14:47
je pense avoir compris ce qu'il faut faire pour les lignes après 51: tu as simplement deux groupes supplémentaires de 40 lignes qui concernent les mêmes valeurs. en relisant tes textes, tu avais mentionné cela, mais je l'avais ignoré pour me concentrer sur le principal afin d'avancer.
alors il suffit d'ajouter dans Sub RecupCotation1(), après la ligne
Cells(l,c).ClearContents 

les deux lignes suivantes:
Cells(l+40,c).ClearContents 
Cells(l+80,c).ClearContents 
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
19 mars 2018 à 17:18
re
on est sur le bon chemin je pense, mais on va se heurter a un autre problème dont je te parlerais une foi que l 'on aura trouvé la première solution
on va revenir a du basique rappelle toi au début tu me disais de faire des explications simples
alors je t'explique clairement du moins j 'essaie

Dans la colonne A se trouve 3 plages ,la première est de (A12:A51)

Dans cette première plage viennent s'inscrire les cotations qui sont de (BC12:BC51)(ce sont les pourcentages calculés entre le premier de séance et le dernier cours enregistré) sur chaque valeur

Dans la deuxième plage(A52:A91), viennent s'inscrire les cotations qui sont de (BG12:BG51) ce sont les pourcentages calculés entre le premier de séance et le plus haut de séance sur chaque valeur

Dans la troisième plage (A92:A131) viennent s'inscrire les cotations qui sont de (BH12:BH51) ce sont les pourcentages calculés entre le premier de séance et le plus Bas de séance sur chaque valeur
les deux autres lignes qui sont en bas je vais les supprimer je ne les récupère pas( ligne 132 et ligne133)
pour résumé je pense qu'il faudrait peut etre conserver en mémoire juste la colonne dernier pour faire le comparatif avec la plage AU12:AU51 c'est a dire que lorsque le classeur va s'ouvrir il faut que ce soit cette plage qui soit copié par exemple en D12:D51, et supprimé la copie des 4 autres plages
Je m 'explique
il peut arriver par exemple que la valeur démarre au meme cours d'ouverture que celui de la veille (donc les colonnes se retrouveraient identiques tout le temps
il peut arriver que la valeur demarre au matin à l'ouverture à une cotation équivalente au Plus Bas puis ne cesse de monter toute la journée; dans quel cas le plus bas ne changerait pas de la journée et le timer effacerait les cotations
il peut arriver que la valeur démarre au matin à l'ouverture à une cotation équivalente au Plus haut de la veille puis ne cesse de Baisser toute la journée; dans quel cas le plus Haut ne changerait pas de la journée et le timer effacerait les cotations
Tandis que sur le dernier obligatoirement la valeur va changer ,et le Timer des lors que la valeur va changer collera tous les résultats de la colonne (A12:A131 ) Deja dit moi ce que tu en penses et après je te parlerais du s deuxième problème a surmonter
On va y arriver on est pas très loin de la vérité
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 mars 2018 à 18:04
je ne m’inquiète pas, on progresse rapidement (je ne suis pas pressé).
le timer efface les cotations tant que les 5 valeurs ne changent pas. dès qu'une des 5 change, le timer met "ok" en colonne C, et n'efface plus les cotations.
cela me semblait la meilleure chose à faire, et il est possible de faire autrement.
je n'ai aucune idée de ce qui se passe avant que le cours d'ouverture soit fixé. je pense te l'avoir demandé, et tu n'as pas répondu. qu'est ce qu'on retrouve en AS:AW avant que le cours d'ouverture soit fixé? comme je ne sais pas, je ne peux pas te conseiller à ce sujet.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
19 mars 2018 à 19:01
avant que le cours ne soit fixe il y a les cours de la veille , avant l ouverture ça ne bouge pas
cela peut bouger des qu' une valeur change mais c'est apres 09:00:00 ; certaines valeurs vont avoir leurs cours fixé quinze a trente secondes apres 09:00:00 d'autres comme je te l ai dit une deux voir trois quatre mn apres.

le cours qui s'appelle préouverture n 'est pas dans ces colonnes la , lui ,il change sans arrêt avant l ouverture
09:00:00

Bon maintenant je te parle du deuxième problème les cotations sur les différentes valeurs vont s 'afficher des que une cellule dans la plage AS12 :AW51 va changer par rapport au collage qui a été enregistrée en D12:H51 Le soucis que je vois pointer est le suivant ; si dans la journée il peut arriver que exceptionnellement les cotations se trouvent les memes que la veille ,exemple si le cours d'ouverture fixé le matin pour une valeur est le même que la veille (cela arrive pas souvent mais cela arrive )a un moment de la journée il est également possible que le plus haut et le plus bas soit aussi identique pour un labs de temps ,alors les cotations ne s'afficheraient pas et seraient effacés par le timer Pour cela je me demande si il faut pas un mini programme qui dise "des que le timer a collé une cotation <>("") ,il faut que la cotation concerné collé en D12:H51 s'efface, de telle manière que le timer continue a coller toute la journée pour éviter cette possibilité

Maintenant j ai une question a te poser dans le sub workbook tu faits référence a
Range("D12:H51").Value = Range("AS12:AW51").Value
Range("C12:C51").ClearContents
mais de quelle manière lie tu cela avec la plage A12:A51 puis A52 :A91 puis A92:A131 ?????

il faut que le programme comprenne que ce n'est pas ces plages qui sont lies avec la colonne A mais bien
BC12;BC51 pour A12:A51 puis BG52:BG91 pour A52:A91 puis BH92:BH131 pour A92:A131

j'espère que j 'ai été assez clair....sinon dits moi le j'ai déjà ajouté les deux lignes comme tu me l 'as demandé
Cells(l+40,c).ClearContents
Cells(l+80,c).ClearContents

la ou je ne sais pas c'est dans Sub open si il faut mettre
( NR12 NR131) ou(NR12:OV51"), ou même (NR12:OV131"), au lieu de ("NR12:PC51")

àmon avis c'est NR12:NR131 , mais je n 'en suis pas sur...

à tout a l heure Bon Appet
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 mars 2018 à 22:51
c'est dans sub auto_open qu'il faut remplacer ("NR12:PC51") par (NR12:OV131"). le but c'est d'effacer toutes les données des colonnes avec des heures, pour n'y rien laisser de la veille.

je comprends ton inquiétude au sujet du "second problème". il est en effet utile de mémoriser que le timer a décidé de commencer à coller les cotations, pour éviter de changer d'avis (à tort) ensuite. j'ai choisi de faire cela en mettant "ok" en colonne C. c'est plus clair et plus rapide que d'effacer les données en D:H.

tu te demandes comment je lie la deuxième et la troisième plage alors que je n’utilise que les 40 premières lignes de D:H. je fais cela en effaçant les données en même temps dans les trois plages. je choisi d'effacer ou pas en travaillant sur les lignes de la première plage. quand je décide d'effacer, j'efface sur une ligne de la première plage, puis sur la ligne correspondante de la seconde plage (40 lignes plus bas que la première), puis sur la ligne correspondante de la troisième place (80 lignes plus bas que la première.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
20 mars 2018 à 19:22
Axial est un logiciel de finance si tu veux savoir comment cela marche tu vas sur ce lien et tu demandes une démonstration tu recevras un email et il faudra leur renvoyer et ils te donneront une période d'essai gratuite 15 jours

quand tu seras sur le logiciel il faut l ouvrir en administrateur ainsi que ton classeur excel tu feras un clic droit sur les valeurs tu sélectionnes celles que tu veux sur le marché francais et tu les colles directement dans ta feuille et tu verras immédiatement excel avec les cotations tournés en streaming ce qui te permettra d "essayer la feuille avec le programme
je te file le lien (attention pour le téléchargement des que tu as rempli la demande de 'essai tu reçois immédiatement la réponse d'un ordinateur tu peux commencer a télécharger l application ( c'est rapide une minute)mais elle ne sera pas en temps réel c'est seulement quand ils auront reçu la réponse que tu vas envoyer pour qu ils te connectent au flux, que tu verras un deuxième bouton en haut a droite qui va passer au vert et a ce moment la tu verras les cotations tournées a partir de 09;00;00 si tu fait la demande ce soir il te faut une adresse mail en.fr ,et sans doute que dans la matinée de demain ils te connecteront


http://www.axialfinance.fr/download.jsp
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
22 mars 2018 à 21:27
salut j ai remis ton programme mais je sais pas ou j ai fait une erreur ya plus rien qui marche et ya une fenêtre de débogage qui s'ouvre je ne peux pas ouvrir les deux classeurs il ya juste deux sur trois qui s ouvrent
0