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

chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
20 mars 2018 à 00:05
j ai bien lu j 'avais fait une macro qui m’effaçait le soir les données je l ai toujours avec un bouton; je l avais faite avec l 'enregistreur,même si tu n 'effaces pas les cotations le lendemain les autres se collent desssus et les remplace quand même
pour le deuxième problème je crois que tu n 'as pas bien lu ou alors c'et moi qui ne sait pas t'expliquer comme il faudrait
ok en colonne C, ne fait que t'avertir qu'il y a un changement et a ce moment la des que le timer va arriver dans la minute d après les cotations vont se coller , moi ce que j ai voulu te faire comprendre c'est que malgré que le démarrage des cotations se soient mis en route pour la valeur,il est certain comme j'ai essayé de te l 'expliquer ,que si la valeur démarre a l ouverture comme la veille il peut arriver a un moment exceptionnellement que les pH et pb et dernier soit égaux a ceux de la veille dans un labs de temps et a ce moment la le ok disparaîtrait et tu aurais un v cours instant aucune de cotation de coller
c'est rarissime mais cela pourrait arriver ya quelque chose qui ne doit pas aller parceque si tu me dits que dans le sub 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.
alors je pense que ca ne va rien changer au reste j ai refait des essais et rien ne s'affiche j ai ouvert le classeur puis jai changé les cotations de la premiere valeur pour créer une différence, après j ai été dans visual changer l heure de démarrage , puis j ai attendu trois minutes environ que le timer demarre et pour le moment rien ne s'est inscrit nulle part ; je ne sais pas ce qui se passe je verrais demain mais le fait de changer dans sub open ne va apparemment rien m apporter si ce n 'est de m effacer mes cotations
a demain on verra si on trouve ou est le problème Bonne soiree c 'est tard
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
20 mars 2018 à 08:12
le "ok" signifie "cours d'ouverture connu". le "ok" ne m'avertit pas d'un changement. le "ok" sert à mémoriser qu'il y a eu un changement depuis le début de la journée, que le cours d'ouverture est connu pour la journée. les "ok" ne sont effacés qu'à l'ouverture du fichier. pendant la journée, dès qu'un "ok" est présent, on ne compare plus D:H à AS:AW, c'est une perte de temps inutile.

tu écris "j ai refait des essais et rien ne s'affiche". que vois-tu dans la colonne C?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
20 mars 2018 à 16:04
Bonjour
le logiciel DDE ne fonctionne toujours pas j'en ai profité pour faire évoluer certaines choses sur mon tableau
pour répondre a ta question il n y a rien d inscrit en colonne C j ai refait des essais et les colonnes restent toutes vides je t 'explique a nouveau comment je procède pour que tu me dises si je ne commet pas d'erreurs
j ouvre mon classeur je verifie que la plage D12:H51 est conforme a la plage AS12:AW51; apres je change les cotations manuellement de AS12 jusqu a AW12 sur seulement la première Ligne ,puis je vais dans VBA et je change l heure de départ pour que le classeur démarre une ou deux mn après, et j observe ;normalement il devait y avoir marqué ok dans la première ligne des que l horaire du timer est enclenché et aucune cotation dans les autres cellules mais rien ne se passe dans aucune cellule
je ne comprend pas parce que une seule fois cela a marché dans la premiere plage de NR12 a NR 51 et puis plus rien n 'a fonctionné depuis
alors je vais essayer une chose je vais remettre en condition d'avant et regarder si cela fonctionne seulement avec les formules et apres je te dit
Est ce que les liens DDE qui ne fonctionnent pas n 'aurait pas une incidence sur la chose????? parce que je crois bien me rappeler que lorsque je t ai dit une fois ,que j avais fait un essai et que cela avait marché en partie ,il me semble bien que les liens DDE fonctionnait , mais je n 'en suis pas formel atout a l heure quand j aurais fait mon essai Ca y est je viens de faire l 'essai alors voila j aimis en colonne J le dernier:J le dernier qui correspond a AUles formules suivantes12: AU 51 ( c'est juste pour l 'essai) apres j ai modifié les trois premieres liges et jai mis en A12 A13 et A14 =SI(J12<>AU12;BC12;"") =SI(J13<>AU13;BC13;"") =SI(J14<>AU14;BC14;"") j ai fait pareil pour les plus haut 3 premires lignes de A52 A55 j aimis les formules =SI(J12<>AU12;BG12;"" ) =SI(J13<>AU13;BG13;"") =SI(J14<>AU14;BG14;"") et dememe pour les plus bas en A92:A95 =SI(J12<>AU12;BH12;"") =SI(J13<>AU13;BH13;"") =SI(J14<>AU14;BH14;"")

donc dans ces 9 cellules les cours sont apparues et les autres dont je n ai pas change les cotations etaient evidement vides le timer n 'a pas collé alors maintenant je suis persuadé que il g faut les liens DDE pour que c a s active puisque avant je m 'en servais et comme je suis revenue a la config d'origine je suis persuade que ca devarit marche avec ton programme une fois que j aurais les liens DDE de fonctionnel
la seule chose que je ne comprend pas c'est que quand je change les cotations avec ton programme le ok devrait s'afficher je te fait passer une capture d'écran pour que tu vois bien que j ai change les cotations sur les trois premieres lignes et immediatement les cotations se sont affiches dans la colonne A bon mis le but c'est bien que ton programme marche parceque c'est comme tu l 'as dits plus efficace que les formules don c des que ce logiciel remarche je remettrai ton programme je suis sur que ce sont les liens DDE qui activent le classeur
en attendant il faut que je m 'occupe je te pose une petite colle ??sais tu si il est possible d'importer dans Excel le vrai temps réel parait il que ya des programmeurs qui y sont arrives j 'ai ma banque qui me fournit sur son site web un tableau qui tourne en Streaming j ai pu l' importer dans excel mais on obtient seulement une actualisation de la page toutes les minutes(ce n 'est que du copier coller )Existe t il un autre moyen a ta connaissance ??c'est une page HTML en langage java script c'est juste une question je voudrais savoir si c'est réalisable de façon a avoir la totale autonomie et ne ps passer par des logiciels qui sont toujours en panne allez a tout j ai bon espoir je suis sur que ca vient des liens DDE je crois me souvenir avoir eu ce même problème avec le gars qui m 'a fait le timer a l époque
a tout de suite

https://mon-partage.fr/f/85U8KMHw/
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 20 mars 2018 à 18:33
la capture d'écran montre qu'il y a la même chose en D:H qu'en AS:AW.
je vois donc bien que tu n'as pas changé les cotations sur les trois premieres lignes.
pour le programme, cela signifie que rien n'a changé depuis la veille, donc pas de "ok".
tu peux aussi provoquer des "ok" en changeant des nombres en D:H.

(pas d'idée pour importer dans excel en temps réél. peut-être du coté des sites payants, ils doivent bien avoir une valeur ajoutée?)
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
20 mars 2018 à 18:45
salut
tu n 'as pas bien regardé la capture d'écran j ai ouvert le classeur j ai laissé tes cotations qui se sont colles en DH puis j ai reinitialisé vba comme avant puis j ai mis des cotations en j de la plage dernier correspondant a la plage AU
j ai modifie manuellement les trois premières lignes puis j ai rentré les formules sur toute la colonne A comme je te l 'ai indiqué et immédiatement les trois premieres lignes de chaque plage sont apparues prêtes a être collé les autres étant identique a la plage AU elles n ont pas été inscrites puisque c'est le sens des formules
donc maintenant j attends que ce logiciel DDE veuille bien marcher et je pense que des qu il sera actif les cotations se colleront , a ce moment la je reviendrais inscrire ton programme dans VBA et je pense que ça va marcher
est ce que tu sais comment on peut faire un liens DDE??? exemple ,comme je te le disais d'un tableau web qui tourne en Streaming vers ma feuille Excel ;pour moi c'est le plus important de tout parce que ce que tu as faits je suis certain que ça va fonctionner j ai bien regardé ce que tu as écrit aujourd’hui, j 'ai eu le temps; même sans connaitre le langage de programmation il y a une logique implacable dans ce que tu as programmée
la seule erreur ne peut venir que de moi dans la manière de le rapporter sur mon classeur ,j'en suis convaincu ce soir je vais essayer d'obtenir une période d'essai pour un autre logiciel de liens DDE c'est un outil redoutable mais personne sur les forums ne sait comment se fait un lien DDE ou lien Olé il faut impérativement que je trouve la solution pour connecter mon tableau de banque a ma feuille excel parce que ce tableau est complet il ya tout ce qu il faut pour récupérer les cotations qui m 'intéressent
je te montre une capture de ce fameux tableau web

https://mon-partage.fr/f/vLf64t5s/
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
20 mars 2018 à 18:59
je n'ai aucune idée de comment faire des liens DDE comme tu as,
=Axial|'1_LU1598757687'!Close
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
22 mars 2018 à 15:34
bonjour
toujours pas de liens dde alors je faits une version a la minute de mon timer en attendant que ça veuille bien revenir
je te demanderais pour pour des macros plus tard ,pour copier coller des grandes quantités de cellules il y a 8000 colonnes a copier et a déplacer tous les soirs je ferais ça avec un bouton je peux le faire a l enregistreur mais vaut mieux le faire en programmation je ne sais pas "si mon ordinateur va avoir assez de mémoire pour coller tout ca avec le classeur 15 mn j attends 30 a 50 segondes avant que ça se colle mais la avec toutes ces nouvelles colonnes je suppose que je vais attendre 2 mn de plus la saisie est très très longue je suis oblige de mettre des formules parceque je ne crois pas que ca puisse se faire en programmation??? Pour le moment j en suis a la colonne MGL
Bon je te laisse j ai du boulot A+
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
22 mars 2018 à 16:46
tu utilises des formules pour copier de grandes quantités de données? ce sera probablement plus rapide par VBA, en effet.
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
22 mars 2018 à 18:12
salut
je viens de prendre un autre logiciel de dde
le temps que je vois comme il fonctionne et après je suis a toi pour essayer ton programme a nouveau pour le reste on en parlera après parceque le gros problème est que quand on copie un trop grand nombre de colonnes ya des soucis je sais pas si il existe un moyen autre avec la programmation pour envoyer des cellules d(un v cote a l autre du tableau en insérant certaines conditions
a plust ard
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
22 mars 2018 à 22:00
j ai trouve d 'ou ça venait maintenant lorsque j ouvre le classeur en D12:H51 je me retouve avec #N/A
dans toute les cellules a la place des cotations je ne sais b vraiment pas pourquoi??? je vais attendre demain pour voir ce qui va se passer a l ouverture
bonne soirée
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
23 mars 2018 à 09:43
Bravo
tu es le meilleur; hier soir j ai réinstallé ton programme j ai essayé et ca ne marchait pas(mais j etais convaincu que ca allait marché)
ce matin des que les liens dde ont ete réactivés miracle ca a marche il y eu quelques bugs mais ca vient de moi et des mauvaises manip dans le classeur
après je te parlerais de quelques modifications a faire pour être parfait j ai compris notamment pourquoi avec ces nouveaux liens DDE tes cotations en D12: H51 affichaient N/A( ce n 'est qu un petit problème je les ai collé manuellement après l ouverture du classeur en mode valeur
je suis entrain de faire le nouveau classeur en une minute toute la journée j espère que tu me donneras un coup de main pour modifier mon programme je devrais y arriver mais c 'est mieux d 'avoir un type compétent pour ne pas faire d'erreurs
je t interroge pour savoir si je mets par exemple 5 timer dans le même classeur sur 5 feuilles différentes et pour 5 marchés différents ,en considérant qu 'ils vont tous démarrer en même temps; si je les copie sur le même principe (c'est seulement le nombre de valeurs et les liens dde différents d'un a l 'autre par exemple la bourse d amsterdam n a pas le meme nombre de valeurs ni les mêmes entreprises que sur le Cac 40 français)est ce que ca peut marcher et comment faut il que je m y prenne?? est ce qu il faut que je mette le programme dans chaque feuille concernée??? on reparlera de cela ce soir tu peux pas savoir comme je suis content, maintenant ce n 'est que de la mise au point un peu pointu
Excellente journée a toi et grand merci pour ta patiente
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 23 mars 2018 à 14:25
je ne suis pas convaincu que tu aies besoin de 5 timers: pourquoi un seul ne pourrait-il pas tout faire?
si je vois bien, la seule chose qui se passe toutes les minutes, c'est recopier les valeurs de la colonne A vers la colonne sous l'heure.
cela peut facilement se faire par un seul timer pour plusieurs feuilles.

Avant d'ajouter d'autres feuilles pour d'autres bourses, je suggère de faire un peu de nettoyage et de partir de fondations plus solides. Cela prendra un peu de temps, mais je pense qu'on le rattrapera largement ensuite.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
23 mars 2018 à 22:49
Bonsoir
alors voila je vais essayer de t 'expliquer dans le détail ce qui se passe pour ton programme il faut que tu me dises comment je supprime l’opération de clear content et comment je fait pour la remplacer par une macro avec un bouton , je pourrais effacer au moment ou je le désire ;pour la raison suivante que si j'oublie un soir de copier a la fermeture des marches les cotations et que je réouvre le classeur une heure plus tard je n aurais plus rien sur mon classeur la macro devra effacer jusqu a la derniere colonne des quarts heure également parce que actuellement il n y a que dans les minutes que les cotations sont gommés ( ou si il ya une panne electrecite dans la journee je n aurais pas perdu toutes les cotations)
pour ce qui concerne ce matin et le problème que j ai rencontré. lorsque le classeur s'ouvrait avec les autres liens dde ,ton programme etait plus réactif que les anciens liens dde c'est a dire qu'il avait deja collé dans la plage D12:H51 les cotations avant que les liens dde ne tentent de se mettrent a jour , lorsque tu ouvres le classeur cela se passe en 2 temps dabord tu as le premier classeur qui s'ouvre et qui tente de se mettre a jour et comme il n y arrive pas puisque il faut dabord cliquer dans une fenetre qui s'ouvre les cellules affichent "N/A"; sur ces liens DDE ton programme n 'a pas le temps d'afficher les cotations puisque ce nouveau logiciel est beaucoup plus rapide que l autre donc il ne laisse pas le temps du collage de la plage D12: H51 et par conséquent ton programme va afficher N/A c'est ce qui se trouve a l instant a l emplacement des liens dde ;après lorsque j ai clique sur mettre a jour les 2 autres classeurs s'ouvrent et demandent aussi en cliquant sur une autre fenêtre d'etre mis a jour , puis les liens s'ouvrent et c'est seulement alors que les N/A disparaissent et sont remplaces par les cotations en streaming donc je pense qu il serait plus judicieux pour éviter ce probleme de modifier levprogramme pour qu il copie dans les plages D12:H51 que le soir à la fermeture du classeur après 17:46:00 et le problème serait réglé après je pense que tout va marcher normalement pour ce qui concerne ls 5 timers oui tu as raison c'est encore moi qui n 'ai pas su expliquer c'est le même timer qui servira pour les cinq marchés mais je sais pas comment faire parce que les cinq marchés ne seront pas sur la même feuille ils seront dans le même classeur et le soucis c'est que si le timer va fonctionner aux mêmes heures il va falloir que le programme fasse appel a des feuilles différentes (donc peut être même timer ,mais avec obligation de dupliquer la même chose puisqu'il va falloir faire référence à une feuille différente
l organisation sera strictement identique sauf pour le nombre de valeurs(mais cela n 'est pas important parce ce ce n 'est pas très important si le timer colle des cases vides ( marchés avec moins de 40 valeurs) a toi de me dire si c'est réaliseable
apres il faut que je réalise pas mal de macros avec boutons
une qui m 'amène de la colonne DA(mon volet est toujours figé en CZ et ligne11)a la colonne DN elle s'appellera "Prèouverture"
une deuxieme qui me ramene quelque soit l 'emplacement ou je suis a la colonne DA celle la je l 'appelle "Retour Graphe"
une autre qui m 'amene en colonne NM depuis la position DA que j 'appellerais " Controle collage"
puis une autre qui va m 'amener en colonne QH toujours a partir de DA que j appellerai "Stock Heures"

une de plus compliqué qui doit dans cet ordre, me copier(en mode valeur) la plage QH12:AZT131;puis me la coller(en mode valeur); en TA12:BFF131;puis copier la plage NN12: QF131(71 colonnes)et la coller en QH12:SZ131 j appellerais cette macro (avec un bouton)"Collage Heures"
J 'aimerais bien que tu me dises si la même opération que je vais appliquer a mon tableau en une minute sera réalisable ; vu le nombre de colonne a coller je vais par exemple copier de la plage AHY12:LLT131 et la coller BCU12:MGL131 donc je ne peux plus faire toutes ces macros avec l 'enregistreur c 'est la programmation qui est nettement meilleure
je veux que tu me dises avant que je fasse toute mes saisies sur mon nouveau tableau si il est faisable de passer par la programmation plutôt que par les formules pour rapatrier mes informations
j ai un emplacement ou je stocke mes 15 seances de timer(tous les soirs je décale pour avoir constamment 15 séances en stock ce stock se situe de la plage BCU12:MGL131 il faut que je rapatrie ces informations suivant ce shema le contenue des cellules
tu vas trouver 2 classeurs identiques ils sont la pour faciliter mon travail j ai 2 écrans je t ai mis sur le premier les cellules de destination(trading AGfrancetimer),et sur le deuxieme(tradingAGfrancecomparatif) la ou sont prises les données c'est tout numéroté j ai fait des repères sur les colonnes oranges et quand je fait une ligne j efface a mesure pour ne pas me tromper mais c 'est un boulot de titan alors si il existe un moyen en programmation je ne vais pas le rater ;si tu veux aller a la feuilles heures tu trouveras 2 colonnes quand tu cliques sur celle de gauche tu as le scénario ouverture cac négatif et sur la droite ouverture cac positif il ya un bouton pour remonter chaque fois que tu veux changer de valeur sur le haut de la liste
attention quand tu vas ouvrir les documents pense a ne pas mettre a jour quand la fenetre souvre a cause des liens DDE si des fois tu te trompes ferme le document sans l enregistrer je ne sais pas si tu vas piger je te donnerais davantage d explication alors
bonne soirée

https://mon-partage.fr/f/5np8EVol/

https://mon-partage.fr/f/lEUDvMT5/
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 mars 2018 à 09:36
bonjour,
pour le "clear content", ne serait-il pas plus simple de continuer à le faire automatiquement, mais, au lieu de le faire à l'ouverture du fichier, le faire plutôt à 9h?

je ne vois pas de soucis à modifier le programme pour qu'il copie dans les plages D12:H51 à la fermeture du classeur.

c'est réalisable de faire travailler le timer sur plusieurs feuilles: il faudra avoir le nom de chaque feuille et le nombre de valeurs pas feuille.

les macros de copie seront-elles dans le classeur principal? le travail entre deux classeurs est légèrement plus compliqué, comme le fait que le classeur timer modifie les données de l'autre classeur. l'enregistreur de macros produit du code, et ce code peut être adapté à la main.

je n'ai pas trop compris la fin de ton message. je pense que tu rentres trop vite dans les détails, je dois d'abord comprendre le pourquoi avant le comment.
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
24 mars 2018 à 09:50
suggestion pour "Collage Heures":
Range("TA12:BFF131").value=Range("QH12:AZT131").value
Range("NN12:QF131").Copy destination:=Range("QH12:SZ131")
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
24 mars 2018 à 11:03
Bonjour
Pour la copie DE D12:H51 il faut le faire a la fermeture du classeur c'est imperatif

Oui pour le clear content à 09::00; :00 puisque de toute façon il ne se collera jamais de cotations avant 09:01;00

Pour ce qui concerne le timer,je compte faire un classeur uniquement pour le timer à plusieurs feuilles selon le nombre de marchés le nombre de valeurs va varier selon les marchés mais comme la base est donnée sur 40 valeurs je compte rester sur le même shéma et la même disposition( je ne m intéresserai qu 'au marché égal a 40 valeurs ou en dessous seulement, pour ne pas à avoir à modifier tout le système) , ce qui veut dire que le timer lorsque il y aura par exemple seulement 20 valeurs il continuera a me coller les cellules vides et il ne s'affichera rien dans le cellules de destination le but est d'avoir un classeur timer qui fonctionne indépendamment des autres et surtout que l organisation permette d utiliser le meme programme pour chaque feuille (mis a part de spécifier les feuille concernées)
ce qui me permet d’alléger le classeur ou je passe des ordres et de pouvoir intervenir dans mon classeur sans etre gêné par le timer ; il faut penser que la version une minute va coller sans arret sur ma feuille et je préfère que ce timer soit ailleurs pour ne pas me gêner
le soir après la fermeture des marches je collerais les résultats de mon classeur timer en mode valeur vers le classeur Trade .xlsm que j utilise actuellement ce classeur trade xlsm n'aura plus besoin d’appeler cotation minute et cotation quart d heure compte tenu que le timer sera dans l autre classeur seul le résultat en mode valeur sera inscrit dans trade .xlsm il sera possible de supprimer pas mal de macro dans le classeur timer ,pour ne garder que celle qui me sont nécessaire je copierais manuellement d'un classeur a l autre comme je le fait actuellement et (cela me prend très peu de temps)
du moment que ces résultats en provenance du nouveau classeur Timer seront inscrit dans trade . xlsm je vais pouvoir tout de même avoir mes statistiques journalières qui vont être opérationnelles
pour le reste concernant le rapatriement des cotations je vais te préparer une explication dans le wek end j' essaierai d’être le plus clair possible
est ce que tu crois que excel va arriver a me coller ce très grand nombre de cellules??
petite question par simple curiosité , tu es de quelle région?? ,depuis combien de temps faits tu de la programmation?? tu n 'es pas obligé d'y répondre

je te laisse et passe un Bon week end et merci pour tout(ton boulot est passionnant )
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 mars 2018 à 12:43
comment et quand sauves-tu ton classeur? je demande parce que, si on copie D12:H51 avant chaque fermeture, cela va te demander si tu veux sauver le classeur, et tu dois le faire, sinon la copie est perdue. on pourrait faire aussi la copie avant chaque sauvetage, mais cela n'a de sens que si tu ne fais jamais de sauvetage pendant la journée.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
24 mars 2018 à 16:59
Bonjour
j 'enregistre mon classeur avant de le fermer mais seulement après 17 h 45 seulement une fois que mes cotations de la journée ont été enregistré ;après je sauve mon classeur tout le temps ou bien, je fait de suite après le collage dont je t'ai parle hier avec une macro actionné par un bouton pour me constituer une reserve de quinze séances ou je peux faire mes analyses statistiques il arrive parfois que je ferme mon classeur après 16 h 45 je l enregistre puis je ne fait que le collage que dans la soirée
Si par hasard il y a un panne Electrique dans la journée je récupérerais un minimum de cotations (avec enregistrement automatique) puisque la procédure de clear contents aura été supprimé
Maintenant je ne connais pas exactement la cadence de cette procédure en cas de pannes électriques ou panne web j ai constaté que lorsque cela arrive, ils te demandent si tu veux récupérer les copies au moment de la coupure , mais le document n 'est pas au même format c'est du xlsb(même si je le transforme en xlsm, aprés) et ça me crée des problèmes , il faudrait que la récupération se fasse au format xlsm comme le document d'origine je voulais te demander si tu connais un lien pour télécharger excel 2016 PRO 64 bits parce que j ai le 32 bits et j ai perdu le lien du 64 bits lorsque j ai réinitialisé mon ordinateur
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 mars 2018 à 20:38
(pas d'idée pour télécharger le 64 bits)
pour changer le moment de la copie de D:H:
ajouter dans le code du classeur principal (dans ThisWorkBook)
const feuille as string = "statist"

Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub

Private Sub copy_dh()
Dim sh As Worksheet
Set sh = Sheets(feuille)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub


supprimer dans auto_open
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
24 mars 2018 à 21:44
salut

j'ai cela dans thisworkbook


Private Sub Workbook_Open()

End Sub




faut il que je supprime tout le code existant et le remplacer par ton code complet ou dois je le mettre a la suite de private SUB Workbook_Open() comme ceci

Private Sub Workbook_Open()
const feuille as string = "statist"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub
Private Sub copy_dh()
Dim sh As Worksheet
Set sh = Sheets(feuille)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub

peux tu me dire si pour les macros prèouverture Graphe ....etc cela te posera un problème ou non???

ah oui j ai supprimé aussi dans cotation minutes la procédure de ClearContents

plus tard je te montrerais un graphe que j avais fait avec un ami programmeur qui est décédé et je ne sais pas pourquoi il ne marche plus depuis que je suis passé a excel 2016 il avait fait un truc génial
je lui avait conçu l 'organisation du système et il m avait programmé un timer réglable de la seconde a la minute a ma convenance et de plus il me copiait en fin de journée les graphes et me les gardait en mémoire sur les 40 valeurs
c'est vraiment passionnant de faire des trucs pareils il y a maintenant 5 ans
je pense que tu dois aimer ton metier
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
24 mars 2018 à 22:28
je viens d 'essayer et ça me marque erreur de compilation attendu sub
dans Set sh = Sheets(feuille) faut il mettre dans (feuille) ("statist" ) ???? ou non

jai private sub workbook_Open qui se met en jaune faut il le supprimer et n 'inscrire que

const feuille as string = "statist"
Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub
Private Sub copy_dh()
Dim sh As Worksheet
Set sh = Sheets(feuille)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
24 mars 2018 à 22:35
maintenant ca marche
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 09:12
Bonjour
est ce que tu sais comment on peut mettre une cellule au format date sans que l heure s'affiche derrière???
je suis entrain de réfléchir a une solution avec un compteur journalier et quelques formules associé a un peu de codes pour m 'éviter la procédure de collage, et surtout ne pas avoir à avoir à déplacer mes données tous les soirs parce que je suis convaincu que copier 8000 colonnes et les déplacer 500 colonnes a cote,cela va poser problème au niveau des ressources et de la mémoire (je vois déjà ce qui se passe avec les cotations au quart d'heure , le soir quand je colle et décale mes cotations de la journée, alors j imagine ce que ça pourrait être avec ces 8000 colonnes a coller( je suis a peu prés sur que ça va afficher mémoire insuffisante)
Je crois que j 'ai trouvé un début de solution , ce n 'est que de la mise au point , il faudra quand tu auras du temps devant toi me dire si cela est réalisable
si on y arrive ca m 'évite pas mal de contrainte le soir tout se fera automatiquement sans que j intervienne dans le classeur(j aurais ma banque de données sur 15 séances qui se décalera toute seule (je n aurais que une cellule a coller tous les soirs par un programme tout le reste sera des formules=
je suis entrain de le réaliser il me faut un peu de temps pour le mettre au point
je reviens vers toi des que j ai trouvé la solution
Bon dimanche
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
25 mars 2018 à 09:28
mettre une cellule au format date sans que l'heure s'affiche derrière: tu cliques avec le bouton de droite sur la cellule, tu choisis "format de la cellule", puis tu sélectionne "date", et ensuite l'affichage que tu souhaites.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 09:56
oui cela je le savais mais je me suis mal expliquer
lorsque je mets =Maintenant() dans une cellule ca m 'affiche la date dans le format que je veux , mais lorsque je colle cette même cellule au format valeur vers une autre cellule je vais me retrouver avec la date, mais aussi avec l heure affichée en plus devant, donc faut que je trouve une solution parceque sinon cela me fait que excel comptabilise la valeur de la cellule en nombre exemple si j ai deux dates identiques qui ont ete colles a deux instant différent excel va dire que ce ne sont pas des valeurs égales puisque l heure sera pris en compte et la deuxième valeur collée sera forcément supérieure a la première
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 10:00
alors peut-être AUJOURDHUI au lieu de Maintenant.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 10:19
YES ça marche ....
mon idée est un peu brouillonne mais je pense y arriver
cet aprem j 'essaie de te donner une explication a quoi je veux arriver je te renverrai le classeur tradingAGfrancetimer parce que j avais fait une erreur de saisie et la je pense que avec les explications que je te fournirais tu vas me comprendre
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
25 mars 2018 à 10:53
pour faire le clearcontent à 9h, je propose ceci, à faire dans le classeur timer:

dans Workbook_Open(), remplacer
c = 382

par
c = prem_col


dans le module où il y a RecupCotation1():

ajouter
option explicit
au début, si pas déjà présent
ajouter ceci en dessous de open explicit, en mettant le nom correct du fichier principal.
public Const cl_principal As String = "ESSAItradingAGfranceTimer.xlsm"
const n_feuille as string = "statist"
public const prem_col as long = 382


en dessous de la ligne Sub RecupCotation1(), ajouter:
Dim principal As Workbook
Dim feuille As Worksheet


remplacer la ligne
Range(Cells(12, c), Cells(134, c)) = Range("A12:A134").Value

par
Set principal = Workbooks(cl_principal)
Set feuille = principal.Sheets(n_feuille)
if c = prem_col then
    principal.feuille.Range("NR12:PC139").ClearContents
end if
principal.feuille.Range(Cells(12, c), Cells(134, c)) = principal.feuille.Range("A12:A134").Value

je fais un peu plus que le minimum, en preparation à l'ajout des autres marchés.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 14:28
ok j e vais le faire plus tard parce que je viens de comprendre pourquoi quand je collais ma macro faite a la main CA n allait pas , pour la bonne raison que quand tu sélectionnes beaucoup de colonnes a l enregistreur je suppose que la macro ne fait qu enregistre et met autant de temps que j'en ai mis pour sélectionner
je viens de faire la manœuvre pour les 7000 et quelques colonnes évidement que je mets beaucoup de temps pour sélectionner manuellement toutes ces colonnes mais lorsque je clique pour les coller elles se collent instantanément alors je suppose que lorsque tu vas faire le code pour cette macro je n aurais plus ce temps d attente donc j abandonne la solution que je cherchais pour me concentrer sur la première cela m 'a permis tout de même d'apprendre certaines choses

une question qui me préoccupe si je mets dans tradingAGfrancetimer le timer il va forcement m'appeller les deux classeurs cotation minutes et cotations quart d heure en attendant que l on modifie AGfranceTimer ,
je vais garder trade .xlsm comme il est avec mes deux classeurs minute et quart dheure
et quand tu as du temps tu me modifies le programme de cotation minute (tu le mets sous un autre nom par exemple( tradingAGfranceMinutes) compte tenu que si tout est pareil il va falloir quand même modifier parce que la longueur des colonnes de réception est considérablement allongée
je continue a faire mon nouveau classeur je crois que finalement pour rapatrier mes cotations la ou je veux qu 'elle soit les formules sont semblent il la seule solution
quand j aurais avancé un peu plus je te montrerais et tu m diras ce que tu estimes le mieux
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
25 mars 2018 à 16:22
je n'au aucune idée des nom de tes fichiers, donc je ne comprends pas grand chose à la seconde partie de ton dernier message.
qu'appelles-tu le programme de cotation minute?
pourquoi les colonnes seront-elles allongées? je pensais que tu allait utiliser d'autres feuilles pour les nouveaux marchés.
si ta macro est lente, partage le code VBA, je verrai si cela peut-être optimisé.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 21:09
bonsoir ce que l=)j appelle le programme de cotation minutes estcelui ci

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:A131").Value
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
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

et celui ci

Option Explicit

Private Sub Workbook_Open()
Dim i As Long
For i = 12 To 134
Rows(i).Select
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

mais comme je suis entrain de passer a la version integrale en 60 mn des que j aurais fini la saisie il faudra modifier le programme pour l 'adapter au nombre de colonnes et il n 'y aura pas a faire appel non plus a cotation quart d'heure je continuerai a garder la version qui utilise les quart dheures et j utiliserai aussi celle qui est intégralement en une minute dans tradingAGfranceTimer j utiliserai donc un seul classeur que je nommerais autrement par exemple tradingAGfranceTimerMinute il sera appellé a l ouverture du nouveau classeur que je suis entrain de réaliser(tradingAGfranceTimer)

pour le moment je te fait passer les macros a optimiser dans Trade .xlsm je les modifierai pour les mettre dans le nouveau classeur quand il sera opérationnel
je te rappelle que je fige les volets en ligne 11 et en colonne CZ
les macros a optimiser sont celles ci elles ont été faite a l enregistreur
Sub Collageheures()
'
' Collageheures Macro
'
Range("QH12:BCM134").Select
Selection.Copy
Range("TA12").Select
ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
IconFileName:=False
Range("TB30").Select
ActiveWindow.SmallScroll ToRight:=-142
Range("NN12:QF134").Select
Selection.Copy
Range("QH12").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWindow.SmallScroll ToRight:=4
Range("QM23").Select
End Sub

Pour cette macro(collageheures) je clique avant de l 'exécuer sur la macro » aller aux heures » puis je me retrouve en colonne QH (mon volet étant déjà figé en CZ) puis je sélectionne de QH12 :BCM131 et je colle en mode valeur en TA12 :BFF131 puis je vais sélectionnerQH12SZ131et je colle en TA12 :VS131 puis retour en position colonne QH et volet toujours figé sur CZ

Sub Allerauxheures()
'
' Allerauxheures Macro
'

'
Range("DD46").Select
ActiveWindow.LargeScroll ToRight:=45
ActiveWindow.SmallScroll ToRight:=-1
End Sub

pour cette Macro (Allerauxheures)je suis en colonne DA mon volet figé en CZ je veux me retrouver en colonne DA


Sub Retouraugraphe()
'
' Retouraugraphe Macro
'

'
ActiveWindow.LargeScroll ToRight:=-45
ActiveWindow.SmallScroll ToRight:=0

Pour cette macro je change complètement sa fonction je veux que si mon volet est figé en CZ quelque soit la colonne ou je me trouve en cliquant une fois sur le bouton je revienne en colonne DA


End Sub

Sub Préouverture()
'
' Préouverture Macro
'

'

ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll T
Sub Graphe()

Pour cette macro' Préouverture je suis en position de départ en DA volet figé en CZ je veux me rendre en colonne DN


' Graphe Macro
'

'

ActiveWindow.LargeScroll ToRight:=-1
ActiveWindow.SmallScroll ToRight:=-2
End Sub

pour cette macro Graphe je vais l annuler puisque avec la macro retour graphe je pourrais maintenant revenir en DA quelque soit ma position

je continue et je t'interroge après pour savoir si il y a moyen de faire par la programmation la saisie parce que c'est très fastidieux
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 12:05
si je vois bien, dans Collageheures Macro, tu crées des liens de la zone à partir de TA12 vers QH12:BCM134.
ces liens sont vraiment utiles? si oui, je pense qu'il suffit de les créer une seule fois, pas dans une macro exécutée plusieurs fois.
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 13:37
je ne vois plus ce que j'avais suggéré de changer en #34
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
25 mars 2018 à 21:13
j ai oublié

peut être est il possible dans le nouveau classeur qui fonctionnera intégralement en une minute de mettre directement le programme dans le classeur sans appeler a l ouverture un autre classeur pour y mettre le programme vu qu il n y aura qu'un seul timer pour l intégralité du classeur

je sais pas ,c'est a toi de me le dire
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 11:59
je me suis demandé pourquoi les timers étaient dans un autre classeur. je ne sais pas l'inconvénient de les mettre dans le classeur principal. ce serait en tous cas plus facile à programmer.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 10:01
Bonjour
j 'ai fait un essai ce matin il ya un probleme je pense que c'est de la mise au point
alors a 09:00:00 il s'affiche seulement les plus haut par rapport au premier et les plus bas par rapport au premier on voit clairement a mesure que le timer colle, que c'est le contraire qui se passe pour le dernier par rapport a l ouverture qui est en A12:A51 les ok se mettent en place des que les cotations changent mais la premier plage s'efface a mesure qu elle est collé a son emplacement
dit moi ce qui se passe???
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 11:58
qu'est-ce qui s'affiche où à 9h? c'est quoi le premier et le dernier?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 13:21
le premier c'est l 'ouverture c'est a dire le cours d'ouverture
le dernier est le cours affiché a l instant ,il est déterminé par la societe de bourse en donnant le cours moyen qui est calculé entre ce qui achète a un prix et ceux qui vendent a un autre (cotation de l instant ,dans notre cas ce sera le cours a l instant du collage premiere minute deuxième minute etc jusque a la fin de la journée)
cette cotation est prise au moment même ou elle sinscrit par le timer dans les colonnes (chaque minute ) ce qui s'inscrit dans la a plage A12:A51 c'est la différence en pourcentage entre le dernier et le premier (cours d'ouverture)
ce qui s'inscrit en A52:A91 c'est la différence en pourcentage entre le plus haut de seance et le premier(cours d'ouverture)
ce qui s'inscrit en A92:A131 c'est la différence en pourcentage entre le plus Bas de seance et le premier(cours d'ouverture)
la premier plage A12;A51 ne s'e colle pas on voit très clairement qu'elle s'efface a mesure que les cotations se collent (elle disparait instantanément)
ne se colle que les dernieres 2 plages A51:A91 et A92;A131
ces 2 plages se collent des 09:00:00 ce qui me parait pas normal puisque aucun cours d'ouverture n 'a encore été fixé a 09:00:00
je vais essayer a nouveau demain
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 13:35
normalement, ce sont les "ok" qui contrôlent si les données sont gardées ou effacées.
observes-tu que les "ok" ne sont pas corrects (ils doivent indiquer si le cours d’ouverture est fixé ou pas)?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 13:52
on voit clairement quand on regarde les colonnes de réception que les cotations disparaissent en NR12:QF51
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 14:14
et les "ok" viennent-ils bien au bon moment?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 16:35
Sub RecupCotation1(), après la ligne
Cells(l,c).ClearContents

les deux lignes suivantes:
Cells(l+40,c).ClearContents
Cells(l+80,c).ClearContents ca se trouve ou je ne le vois nulle part sur la feuille stats????
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 16:42
tu avais écrit (#37) que tu avais ajouté ces lignes: as-tu changé d'avis entre-temps?
je t'avais expliqué la logique de cela en #38
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 16:42
ca y est je l ai trouvé je suis un idiot comme je ne le trouvais pas l autre jour j ai laisse tomber et je me se suis dit on verra demain et puis j ai oublié bon je vais essayer maintenant de faire un bout d'essai
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 16:58
je pige plus rie je viens de faire un essai et ya absolument rien qui se colle on c verra demain c'estune pris de tete
voila le code

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:A131").Value
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
Cells(l + 40, c).ClearContents
Cells(l + 80, c).ClearContents
End If
End If
Next l
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mars 2018 à 17:08
c'est dur parceque c'est pas du tout mon boulot et comme je me prend la tete en p^lus avec ce nouveau classeur une minute, par moment je sais plus ou j 'en suis
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
26 mars 2018 à 17:22
tout me semble normal.
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
27 mars 2018 à 09:35
Bonjour
peux tu me dire comment on fait pour écrire en code aller de la colonne DA( jai le volet figé en CZ) vers la colonne NN je veux optimiser mes macros faites a l enregistreur
Hier soir j ai fait trois 2 fichiers supplémentaires pour le marche d 'Amsterdam et de Bruxelles j ai pris le meme fichier que celui du cac 40 et j ai enregistre sous un autre nom je vais avoir juste les noms a mettre en anglais a changer
je doid transformet le dernier par last ouverture par opening Plus haut par hight et plus bas par low apres j ai quelques références de pourcentage dans les statistiques a modifier puisque les nombres d'entreprises cotés sont différents Amsterdam a 25 valeurs Bruxelles 20 quand j aurais fini cela j 'espère que tu vas me trouver une combine pour rapatrier mes cotations parce que sinon j 'en ai pour un mois de boulot
je vais m attaquer aujourd’hui à faire un fichier afin d' avoir pour commencer 3 timers sur 3 feuilles différentes je vais l organiser de façon à adapter les plages qui vont être collé en fonction du nombre de valeur donc il n'y aura plus de classeur a appeler a l ouverture puisque je vais passer des que j aurais la combine pour rapatrier mes saisies au modèle avec un seul timer une minute toute la journée
je voulais te demander si à la place de la macro collage heures qui sélectionne copie et colle
;n'est il pas possible d'utiliser la fonction décaler je n ai jamais fait cela mais je regarderais plus tard
"FANTASTIQUE" le marché vient de démarrer ,tes ok se sont affichés a la première minute rien ne s'est affiché dans la colonne 09:00:00 ce qui est normal
et toutes les plages se collent parfaitement Bravo a toi je suis très content, je te félicite de ton ingéniosité ;il suffira d'adapter ce programme a un seul code pour toute la journée en minute et alors il n y aura même plus a appeler d'autres classeurs pour faire démarrer le système
A+
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
27 mars 2018 à 11:52
je n'ai pas experience avec du code qui fait "aller de la colonne DA( jai le volet figé en CZ) vers la colonne NN". si tu partages ton code enregistré, je peux regarder si je vois une optimisation évidente. explique aussi à quoi sert le code.

que veux-tu dire par "une combine pour rapatrier mes cotations"?

pour la macro collage heures, c'est peut-être à "insertion" que tu penses?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
27 mars 2018 à 13:03
j ai un soucis avec le timer je viens juste de m 'en apercevoir
Chaque minute il m 'inscrit par moment sur les colonnes 09:15:00 09:30:00 ....etc les cotations comme si la cotation se faisait toute la journée en minute ,en fait comme si c’était le code qui me fallait pour le nouveau fichier que je suis entrain de réaliser; puis cela s’arrête et il reprend a coller tous les 15 mn actuellement il est 12:10 et il y a le collage dans la colonne 12:45 la il ya un quart dheure qui vient de passer et rien ne s'est inscrit dans la colonne
je sais pas ce qu il y a
pour l'optimisation des macros regarde plus haut en message 71 je t ai mis les macros telle que je les ai inscrite avec l’enregistreur de macro ,et chaque fois en dessous de chaque code je t'ai mis l 'explication de ce que je voulais obtenir ces codes me servent pour aller vérifier aux endroits ou je colle mes cotations mais aussi pour aller a l 'emplacement ou j 'ai ma réserve de 15 séances et pour aller aussi a un système que j ai crée en DN (je suis toujours figé en CZ et toutes les macros que je t'ai marqué sont par exemple
pour la Macro préouverture d'aller me retrouver en colonne DN juste après CZ(Figé)
pour la macro Collageheures d'aller me retrouver en colonne QH juste apres CZ(Figé)
pour la macro Allerauxheures d'aller me retrouver en colonne NN juste apres CZ(Figé)
pour la macro Allerauxheures d'aller me retrouver en colonne NN juste apres CZ(Figé)

enfin pour la macro Retouraugraphe je veux que quelque soit ma position dans n'importe quelle colonne ou je me trouve et avec le volet figé en CZ je revienne a la colonne DA
Peut être y a t 'il une solution en appliquant le code masquer comme la macro qui avait été réalisé sur le classeur je te la mets en dessous ,tu peux peut être t'en inspirer pour l'écrire

pour le problème du timer je sais pas si ca vient pas de mes liens dde il y a eu un moment un bug et certaines cotations étaient inversé j ai été oblige de les recoller tout a l heure

Option Explicit

Private Sub CommandButton1_Click()
Rows("12:3624").Hidden = False 'retour à la ligne 12 visible
End Sub
'-----------------------------------------------------------------------------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Lig As Byte, Col As Byte, Dep As Integer, Pas As Byte 'initialisations
Dim Fin As Integer, Lignes As String 'actions

If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
'-----------------------initialisations
Lig = Target.Row
Col = Target.Column ' 100=CV; 102=CX
Dep = IIf(Col = 100, 227, 270)
Pas = 86
'-----------------------actions
Fin = Dep + Pas * (Lig - 12) - 1 'si lig=12 Fin =226 ou 269
Lignes = 12 & ":" & Fin
Rows(Lignes).Hidden = True '1° ligne visible 227 ou 270
End If

End Sub

Je continue apres jon verra si il est possible de rapatrier les infos par programmation plutôt que de faire des centaines de formules
0