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

excuse je n ai pas encore mes lunettes.....effectivement c'est ce que je veux faire c'est a dire ce que tu as marque dans ce message.. et de plus une fois que mes 2 plages vont marcher je veux que toutes les formules plus bas changent également en

EX AN3 et AO3 vont changé mais aussi en suivant AN20et AO20 jusqu "en bas avec un pas de 17 jusque à AN666 et AO666

mais la ou ça se complique c'est que la même opération doit être appliqué au cellule suivante AT et AU , AZ et BA , BG et BH , BM et BN , BS et BT et dans le même pas (17) voila je t 'ai tout dit
la je peux pas du tout t'aider


est-ce que le code fait bien tout ce qu'il faut avec I11 et AN3? est-ce que cela remplace correctement l'ancienne formule en AN3: =NB.SI(AL4:AL18;">="&$i$11)?
si oui, donne-moi une autre formule (et dis-moi d'où elle vient, peut-être de AO3), je vais adapter le code pour te permettre de comprendre.
peut-être veux-tu faire la même chose en AO3 qu'en AN3, mais en utilisant J11 au lieu de I11?
j'essaie de deviner, comme tu es assez flou.
0
j ai oublié de te dire actuellemnt dans AN et AO3 il ya en AN3
et en AO3 =NB.SI(AL4:AL18;">=0,006")

en AN20 =NB.SI(AL21:AL35;">=0,006") en AO20 =NB.SI(AL21:AL35;">=0,012") etc

EN AT3 =NB.SI(AR4:AR18;">=0,006") en AU3 =NB.SI(AR4:AR18;">=0,012")

en AZ3 =NB.SI(AX4:AX18;">=0,006") en BA3 =NB.SI(AX4:AX18;">=0,012")

en BG3 =NB.SI(BE4:BE18;">=0,006") en BH3 =NB.SI(BE4:BE18;">=0,012")

en BM3 =NB.SI(BK4:BK18;">=0,006") en BN3 =NB.SI(BK4:BK18;">=0,012")

en BS3 =NB.SI(BQ4:BQ18;">=0,006") en BT3
=NB.SI(BQ4:BQ18;">=0,012")

et tout est pareil les formules descendent en cascade jusqu'a la ligne 666
EX en BS666 =NB.SI(BQ667:BQ681;">=0,006") en BT666
=NB.SI(BQ667:BQ681;">=0,012")


Voila ce coup ci tu as tous les éléments
excuse moi de te faire perdre du temps
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
6 avril 2018 à 12:36
et tout cela doit dépendre des valeurs en I11 et J11, est-ce exact?

posons-nous maintenant la question suivante: est-ce préférable que le code calcule les valeurs, ou est-ce préférable que le code crée des formules? si le code calcule les valeurs, ces valeurs changeront uniquement quand les valeurs en I11 et J11 changent. si le code crée des formules, le résultat changera aussi quand les cellules (exemple AL4:AL18) sont modifiées.
0
bonjour
j ai repris du service et du cassement de tète alors comme le code ne marche pas je suis revenu a une solution formule en attendant que tu me trouves d 'ou vient le problème alors j ai remis ce code pour que mes 2 plages fonctionnent
Sub Worksheet_selectionChange(ByVal Target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
If Not Application.Intersect(Target, Range("I12:I51 ")) Is Nothing Then
Range("I11") = Target
Lig = Target.Row
End If
If Not Application.Intersect(Target, Range("J12:J51 ")) Is Nothing Then
Range("J11") = Target
Lig = Target.Row
End If
End Sub
ca marche parfaitement j ai les deux cellules I11 et J11 qui affichent correctement quand je clique dans les plages
j ai fait un essai avec 2 formules en attendant que tu me trouves la solution j ai inscrit en AN4 et AO4
=NB.SI(AL4:AL18;">="&statist!$I$11) et =NB.SI(AL4:AL18;">="&statist!$J$11)

aujourd’hui j ai également regarder le graphe que je t'ai envoyé
les DDE marchent dessus mais depuis le temps je ne me souviens plus trop bien de son fonctionnement
je me souviens que les barres se collaient selon que l on programmait le timer sur la page téléchargement
alors j ai essaye et seulement les cours s affichent en temps réel mais pas les barres
je pense que le modèle en arrière a été effacé je ne sais plus comment y accéder en lisant le programme tu vas toi sans doute comprendre
a la fin de la journée chaque graphe était copié a un emplacement et je pouvais consulté les 15 séances
les onglets en bas ouvre un graphe différent il y en a 40
ce graphe était dune efficacité redoutable et je compte bien m 'en resservir parce que cela n 'a rien a voir avec les graphes actuels la tu vois en direct en pourcentage sur l 'échelle a gauche ta véritable progression depuis le début de la séance
je compte le remettre en route et l 'améliorer parce que j ai plein d'idees
la premiere des choses est de lui appliquer ce que tu as faits pour l 'autre graphe c 'est a dire que les barres ne s'affichent que seulement quand le cours d'ouverture a ete fixe
c'est la que je me souviens qu il y avait un problème

Bonne soirée et bon week end
0
Bonjour
est ce que tu as eu le temps de regarder mon Graphe je pense que c'est une mauvaise manipulation de ma part je pense que c'est le modèle qui a été effacé

Pour le Timer il faut que tu m'expliques certaines choses j ai programmé le départ a 09:01:00

alors le matin aucune cotation dans la première colonne cela commence dans la deuxième pour le moment je pense que toute les cotations ont changé avant 09:01:;00 parce que je n ai pas vu de procédure d'effacement par les OK je voudrais savoir si le timer efface toutes les valeurs en même temps des que une seule change dans la plage AS12:AW51 ou efface t'il uniquement celles qui n'ont pas encore changé
autrement dit une valeur qui serait a la traîne et dont le cour n 'aurait pas été fixé ne sera pas colle tant qu il n y aura pas un changement pour elle

Apres j ai un autre soucis les premières cotations se collent à la seconde prés ;mais plus on avance dans la journée et plus le collage prend du retard
au bout de 4 h on a par exemple plus de 1 minute de retard sur le vraie horaire peut on palier a ce problème??
cela vient il du timer ou du processeur qui a trop de choses a gérer je ne pige pas parce que le temps réel sur mes liens DDE est constant toute la journée Bonne journée
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
11 avril 2018 à 18:13
bonjour,
je n'ai pas eu le temps de regarder les graphes.
le timer devrait effacer uniquement les valeurs pour lesquelles le OK n'est pas encore arrivé.
à propos du retard: comment vois-tu qu'il y a du retard?
0
le probleme est que ces macros font monter ou descendre d'un pas de 43 lignes donc il faut que je trouve une macro qui fasse descendre de 43 mais une seule fois; et après je me servirai de la macro de la macro Sub ligne 12 pour le retour
comment faire une autre macro qui n ai qu 'une seule action de descente et qui change CJ11 et DK11.
je conserverais les autres quand je veux descendre plus bas dans le classeur


Sub plus43()
r = Selection.Row + 43
Cells(r, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
End Sub

Sub ligne12()
Cells(12, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
End Sub

Sub moins43()
r = Selection.Row - 43
If r < 12 Then r = 12
Cells(r, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
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
17 avril 2018 à 08:19
suggestion:
Option Explicit

Sub plus43()
Dim r As Long
r = Selection.Row + 43
Cells(r, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
cjdk11 (r)
End Sub

Sub ligne12()
Cells(12, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
cjdk11 (12)
End Sub

Sub moins43()
Dim r As Long
r = Selection.Row - 43
If r < 12 Then r = 12
Cells(r, 1).Activate
ActiveWindow.ScrollRow = ActiveCell.Row
cjdk11 (r)
End Sub
Private Sub cjdk11(ligne As Long)
'si la ligne 56 se trouve en dessous de la ligne11 alors inscrivez moi en cellule CJ11 PB/CLV et en Cellule DK11 PH/CLV
'si la ligne 12 est en dessous de la ligne11 alors inscrivez moi en cellule CJ11 PB/PR et en Cellule DK11 PH/PR
Select Case ligne
    Case 12
        Range("cj11") = "PB/PR"
        Range("dk11") = "PH/PR"
    Case 55
        Range("cj11") = "PB/CLV"
        Range("dk11") = "PH/CLV"
    Case Else
        Range("cj11") = ""
        Range("dk11") = ""
End Select
End Sub

je ne comprends pas le problème dont tu parles ni pourquoi tu veux faire une autre macro.
0
Bonjour
donc je remplace ma macro par celle ci au meme endroit..... je pensais pas que tu puisses arriver a faire ca..
.
pour mes graphes avec les echelles qui changent a mesure que les cotations évoluent j ai trouve la solution
maintenant pour appliquer un code a ce que j ai trouvé ,il faut que tu me dises .
si tu inscrits par exemple dans ton code "si la cellule A1 =("") (rien) est ce que le code VBA considère cellule sans formule ,ou bien cellule sans chiffre à l intérieur????
je veux pas t"envoyer des fleurs mais je pense sincèrement que tu es un ton en dessus de tous les autres ,sans toi je n 'en serais pas ou nous en sommes actuellement ;Grand merci je vais avoir un outil très efficace

ya juste un petit soucis sur le timer avec les 4 marches (4 f'euilles)ce matin j ai ouvert et je n ai que sur ma feuille 4 que les cotations s(inscrivent j ai sans doute fait encore une erreur dans la trancription du nom des feuilles je suppose
est ce que l enregistrement automatique de windows ne perturbe pas le Timer si il tombe en même temps que les cotations se collent???? ya t il alors une possibilte d annuler cet enregistrement automatique???
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 avril 2018 à 14:36
merci pour les fleurs, :-)
on peut tester par VBA soit la formule, soit le contenu d'une cellule. si on teste simplement sans rien préciser, on teste le contenu.
je ne me souviens pas d'avoir vu le code de la fonction RecupCotation adaptée pour plusieurs feuilles. cela avait fonctionné les jours précédents?
tu peux désactiver l'enregistrement automatique, la procédure exacte dépend de la version de Excel que tu utilises. je ne pense pas que cela puisse perturber le Timer ainsi de la même façon toutes les minutes.
0
Ok alors c'est parfait je vais pouvoir arriver a mes fins
ton code est parfait je l ai mis en place ca fonctionne parfaitement la je me pose juste quelques heures parce que j ai la tete qui bouillonne ;et je fait des erreurs en essayant de mettre en pratique ce fameux graphe avec les echelles de % qui bougent en temps réel

il faut que tu comprennes que ce n 'est pas du tout mon job, ca me passionne de faire ça; mais entre sculpter la pierre et essayer de créer une solution en VBA c'est comme un chinois et un africain ;y a une sacré différence ,donc patiente parce que j arrive toujours a immaginer des solutions ,mais le langage pour le mettre sur VBA c'est tout autre chose Heureusement que tu es la Juste une dernière question est ce que tu connais le langage C++ parce que j ai appris que c’était le plus rapide pour le traitement des données financières et comme une fois que j aurais fini mon truc je vais me faire un site web et bien si je peux je transformerais le VBA en c++ des que j ai fini la construction de mon graphe je te dirais avec exactitude le code que je veux inscrire
grosso modo ca va ressembler a ceci
j 'ai 5 barres
ex une qui va de la cellule AO98:BW98 ; SI(OU(une des cellules BV98 ,BW98 est différente de(""");remplacer la plage DB11:DJ51 a la place de BO98:BW138
je refait la meme operation en dessous pour ma deuxieme barre en BO141;BW141; si(OU(une des cellules BV141,BW141 est différente de(""");remplacer la plage DB11:DJ51 a la place de BO141:BW181 je refait la meme operation sur 5 barres au total...
toutes les cellules dans les plages r tournent en streaming sauf les barres ou sont inscrit les echelles de reperes en ligne 98 puis 141 puis 184 puis 227 puis 270
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
17 avril 2018 à 16:15
je ne pourrais pas t'aider en c++ ni pour mettre ton site web en route.
0
c 'est pas grave, je vais y arriver la dernière ligne droite c'est de m'occuper de ce code pour mes barres a échelles différentes je suis presque arriver a le faire des que j ai solutionné le problème je te dits quel code il me faut
après je m 'attaquerais a quelque chose d’extrêmement complexe "comment modifier mon fichier si je veux allonger le nombre de séances et le nombre de minutes j ai déjà trouver pour le nombre de minutes mais quand j allonge ou raccourcis le timer il faut que je trouve un code qui dise insérer moi une colonne a partir de ou supprimer moi une colonne a partir de apres il faut que je trouve une combine pour ajouter les formules dans les lignes que j aurais rajoute et pareil pour les colonnes
Penses tu que c'est réalisable..
moi je pense que oui, mais ça va être un vraie casse tete chinois il va falloir que je trouve le ratio exact entre l allongement des journées ou des minutes et le nombre de ligne vers le bas ou de colonnes a insérer ou supprimer (selon) a rajouter , cette partie me parait techniquement faisable
je pense que pour toi un code qui dirait si dans la cellule un tel il y a le numero 1 ou 2 ou 3 ...etc insérer moi une ligne ou une colonne a partir de , est dans ta competence
est il possible aussi de modifier le code dans VBA par un autre code qui remplace par exemple un chiffre ou des lettres toujours pareil ces lettres ou ses chiffres seraient pris dans une liste déroulante et permettraient au moment ou on le souhaite de changer la structure du fichier très rapidement
ce n 'est qu une idée peut être complètement loufoque et irréalisable???
Mais si ca venait a se faire j aurais toutes les possibilités de comparaisons pour mes analyses, et cela serait extraordinairement efficace

après si j 'arrive a faire cela ce sera le final parce-que le graphe que je t'ai envoyé ca y est j ai trouvé la solution il fonctionne a nouveau je vais en faire un de plus opérationnel
demain j 'essaye a nouveau le Timer , je me suis aperçu qu en nommant les feuilles j "'ai laissé des espaces sans m en apercevoir et c'est pour cela que çà ne marchait exclusivement que sur la feuille qui avait été bien nommé(ah ces lunettes ......) donne moi ton impression sur ce que j envisage de faire concernant la transformation d'un nouveau fichier en temps et en heures avant que je lance tout mes neurones dans la bataille(peut être inutilement si ce n 'est pas faisable)
après je te montrerais tout autre chose comme ça, ça changera un peu de l informatique on parlera tomates et légumes et je te montrerais ce que j avais inventé quand j étais en Afrique ;j ai vécu 10 ans la bas je suis revenu en France depuis seulement 1 an
tu verras que la passion peut faire des fois des choses surprenantes
Bonne soirée on a très bien progressé depuis le début , c'est même impressionnant
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
17 avril 2018 à 21:50
je n'ai pas vraiment compris ce que tu demandes.
0
https://mon-partage.fr/f/B7Wlm77Y/

tiens déjà regarde comment je m y prend pour le problème des barres des que j ai fini je te demande pour le code après le reste est beaucoup plus compliqué
en gros c'est pouvoir changer la durée des temps enregistrement du timer et aussi la durée des journées prise en compte pour mes analyses statistiques
modifier le fichier avec quelques codes
mais c 'est pour plus tard
0
Bonjour
le timer n affiche que seulement sur la premiere feuille sinon y a pas de retard je sais pas d'ou ça vient
j ai controlé le nom des feuilles tout semble en ordre?????
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
18 avril 2018 à 17:08
je ne me souviens pas d'avoir vu le code de la fonction RecupCotation adaptée pour plusieurs feuilles. cela avait fonctionné les jours précédents?
0

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

Posez votre question
de plus il y a un autre problème c'est que si le timer s(arrete pour panne Electricité ou autre quand tu ouvres a nouveau le fichier il se remet en route instantanément et continue nouveau a coller
c'est incompréhensible et il a effacé les cotations alors il faut faire une macro avec un bouton de façon que les cotations ne soient effaces que si on le demande
de toute façon même si elles sont pas effaces le timer colle la prochaine seance dessus
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 avril 2018 à 17:12
donc peut-être pas utile d'effacer les données au démarrage du timer?
et peut-être que le timer devrait choisir la colonne à remplir en fonction de l'heure, au lieu de faire chaque fois la colonne suivante en commençant par le début.
0
oui je pense que c'est comme ca qu il faudra faire si le timer demarre a 09:01;00 c'est normal puique aucun cours d'ouverture n est fixé des la premiere seconde
apres si le timer s'arrete pour une raison de panne electrique ou autre il faudrait qu il reprenne dans la bonne minute mais ca je sais pas si c'est réalisable
il faut faire une macro avec un bouton qui m 'efface quand je veux les cotations
et il faut adapter l ensemble des feuilles parcequ il y en a seulement une qui colle la feuille 7 comme dans l 'ancien fichier les autres ne sont pas pris en compte c'est pour cela que hier je pensais que ca venait d'une mauvaise inscription de ma part mais si j avais effectivement fait des erreurs ce n 'est pas pour cela que ca ne colle pas sur les 3 autres feuilles
il faut semble til adapter ton code et aussi voir pourquoi en fin de dernière colonne quand il arrete de coller a 17:45:00 il ya la fenêtre de debogage qui s'ouvre
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
18 avril 2018 à 19:40
une chose à la fois: par quoi veux-tu commencer?
0
Bonjour
deja il faut que les quatres marches fonctionnent des 09:01:00
après on supprime le clear content sur les 4 marchés et on le remplacera par une simple macro a chaque feuille qui effacera toutes les cotations avec un bouton (comme ca si y a une panne je conserverais mes cotations jusqu 'au moment de la panne )
apres si tu as une combine de refaire partir le timer apres l 'éventuelle panne dans exactement la colonne minute de redémarrage.........?

"" ce serait la cerise sur le GATEAU"" on peut faire les essais au fur et a mesure
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
19 avril 2018 à 19:50
commençons par essayer que les quatre marchés fonctionnent dès 09:01:00
peux-tu partager le code de RecupCotation?
0
Bon
ce matin ça vient tout juste de démarrer
même problème qu hier aucun retard sur cotations s mais seulement collage sur une seule des 4 feuilles
est ce que tu peux me dire comment faire cette formule dans Excel jy arrive pas

=SI(une des cellules de la plage ;BC12:BC51 est >0.0175;(">1,75%"),"")
je viens de constater à l instant également que si je passe d'une feuille a l autre pour contrôler le collage par exemple et bien le timer ne colle plus les cotations le temps que je suis sur l 'autre feuille
par contre si je reviens sur la feuille il se remet a coller a la bonne colonne et sans aucun retard ça , çà devrait te donner des indications
0
En fait il faudrait que le timer démarre a 09::00 au lieu de 09:01:00 et quil mette les cotations des que le cours ouverture est fixé dans la colonne minute correspondante a chaque valeur
exemple si une cotation a son cours fixe avant 09:01:00 elle s'affichera dans la colonne 09:00:00 si son cours est fixée a 09:02:00 et bien cela s'affichera pour elle dans la colonne 09:02:00 puis de la ça devient plus compliqué parceqe il faut que les chiffres suivant s'affiche dans la minute d'apres donc celle qui aura eu son cours de fixe avant 09:01:00 aura ses cellules pleines jusque au bout de la journée de minutes en minutes et celle qui aura son cours d'ouverture fixé 09;02:00 aura 2 cellules vides de moins en fait il faudrait arriver exactement a ça
0
Bonsoir
celui la tu veux dire ou celui que tu as faits pour les 4 feuilles

Option Explicit

Private Sub Workbook_Open()
Sheets("statist").Select
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
Range("NR12:AHW131").ClearContents
End Sub



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

ou celui ci

Option Explicit

Private Sub Workbook_Open()
Call clearc("CAC40")
Call clearc("AEX")
Call clearc("BEL20")
Call clearc("PSI20")
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
End Sub

Private Sub clearc(fl As String)
Dim sh As Worksheet
Set sh = Sheets(fl)
sh.Range("NR12:AHW131").ClearContents
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call copy_dh("CAC40")
Call copy_dh("AEX")
Call copy_dh("BEL20")
Call copy_dh("PSI20")
End Sub

Private Sub copy_dh(fl As String)
Dim sh As Worksheet
Set sh = Sheets(fl)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
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
19 avril 2018 à 21:24
celui que tu utilises et dont tu décris le comportement incorrect.
0
c est le deuxieme que j utilise c'est le dernier que tu as faits et que j ai insccrit dans Timer seul

Private Sub Workbook_Open()
Call clearc("CAC40")
Call clearc("AEX")
Call clearc("BEL20")
Call clearc("PSI20")
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
End Sub

Private Sub clearc(fl As String)
Dim sh As Worksheet
Set sh = Sheets(fl)
sh.Range("NR12:AHW131").ClearContents
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call copy_dh("CAC40")
Call copy_dh("AEX")
Call copy_dh("BEL20")
Call copy_dh("PSI20")
End Sub

Private Sub copy_dh(fl As String)
Dim sh As Worksheet
Set sh = Sheets(fl)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
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 > chrisnapoli
19 avril 2018 à 21:42
veux-tu dire que tu utilises encore deux fichiers?
tu ne me montres pas le code de RecupCotation.
0
oui j utilise 2 fichiers maintenant le timer tourne seula part comme ca je peux travailler sur l autre fichier l mais je pige pas le code recuo c'est pas cette partie
Private Sub Workbook_Open()
Call clearc("CAC40")
Call clearc("AEX")
Call clearc("BEL20")
Call clearc("PSI20")
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
End Sub
0
alors c'est peut etre ca

Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(91, c)) = Range("A12:A91").Value
c = c + 1
If c >= 906 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
End Sub
0
tu veux dire celui la que j ai inscrit en module 1

Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
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(131, 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 >= 908 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
voila moi j ai ces 2 codes dans mon timer seul dans le workbook j ai

Option Explicit

Private Sub Workbook_Open()
Call clearc("CAC40")
Call clearc("AEX")
Call clearc("BEL20")
Call clearc("PSI20")
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
End Sub

Private Sub clearc(fl As String)
Dim sh As Worksheet
Set sh = Sheets(fl)
sh.Range("NR12:AHW131").ClearContents
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call copy_dh("CAC40")
Call copy_dh("AEX")
Call copy_dh("BEL20")
Call copy_dh("PSI20")
End Sub

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

dans le module 1 j 'ai

Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
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(131, 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 >= 908 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

donc tu veux que j ai ceci a la place dans le workbook

Sub RecupCotation()
Dim cl As Workbook
Set cl = Workbooks("TIMER SEUL")
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
'CAC40, AEX, BEL20, PSI20
Call copycr(cl, "CAC40")
Call copycr(cl, "AEX")
Call copycr(cl, "BEL20")
Call copycr(cl, "PSI20")
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub

Private Sub copycr(cl As Workbook, fl As String)
Dim sh As Worksheet
Set sh = cl.Sheets(fl)
sh.Range(sh.Cells(12, c), sh.Cells(91, c)) = sh.Range("A12:A131").Value
End Sub
0
je ne mets plus alors option explicit et je met tout ca dans le workbook directement????
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 avril 2018 à 23:54
il faut toujours mettre
option explicit
en début de chaque module.
tu as deux classeurs, nous communiquerions plus efficacement si tu en donnais les noms à chaque fois que tu partages du contenu.
le code que je t'ai envoyé en #190 doit remplacer tout le code qui commence par
Sub RecupCotation()
jusqu'au
End Sub
qui suit
0
comme ca dans module 1 et comme ca dans workbook..??????


Option Explicit
Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
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(131, 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 >= 908 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


comme ca dans workbook?????

Option Explicit
Sub RecupCotation()
Dim cl As Workbook
Set cl = Workbooks("TIMER SEUL")
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
'CAC40, AEX, BEL20, PSI20
Call copycr(cl, "CAC40")
Call copycr(cl, "AEX")
Call copycr(cl, "BEL20")
Call copycr(cl, "PSI20")
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub

Private Sub copycr(cl As Workbook, fl As String)
Dim sh As Worksheet
Set sh = cl.Sheets(fl)
sh.Range(sh.Cells(12, c), sh.Cells(131, c)) = sh.Range("A12:A131").Value
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
20 avril 2018 à 11:46
si je vois bien, il y a a deux fonctions RecupCotation(), plus une RecupCotation1() .
cela en fait deux de trop.
comme tu as deux classeurs, précise le nom du classeur à chaque fois que tu partages du contenu.
0
Bonjour
ce matin j ai fait l 'essai et il n ya aucune cotation qui se colle sur aucune des 4 feuilles???? je sais pas ou j ai fait une erreur
0
bonjour
Je comprend pas ce que tu veux me dire
alors je te mets les codes que j ai dans timer seul et dans l autre fichier
dans TIMER SEUL j ai:

workbook

Option Explicit
Sub RecupCotation()
Dim cl As Workbook
Set cl = Workbooks("TIMER SEUL")
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
'CAC40, AEX, BEL20, PSI20
Call copycr(cl, "CAC40")
Call copycr(cl, "AEX")
Call copycr(cl, "BEL20")
Call copycr(cl, "PSI20")
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub

Private Sub copycr(cl As Workbook, fl As String)
Dim sh As Worksheet
Set sh = cl.Sheets(fl)
sh.Range(sh.Cells(12, c), sh.Cells(131, c)) = sh.Range("A12:A131").Value
End Sub
puis dans module 1

Option Explicit
Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
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(131, 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 >= 908 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

dans CAC 40 19 Avril et AEX 19 Avril et BEL20 19 Avril et PSI20 19 Avril
20 j'ai:
Workbook

Option Explicit

Private Sub Workbook_Open()
Sheets("statist").Select
c = 383
Application.OnTime TimeValue("09:01:00"), Procedure:="RecupCotation" '"09:01:00"
Range("NR12:AHW131").ClearContents
End Sub



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

puis module 1

Option Explicit
Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
c = c + 1
If c >= 908 Then ArretCotation 'N° de la dernière colonne
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
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(131, 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 >= 908 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



je sais plus ou j en suis ca veut dire quoi option explicit faut il le mettre a toutes les macros du fichier????
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 avril 2018 à 17:18
il faut toujours mettre
option explicit
en début de chaque module.
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 avril 2018 à 18:01
eh bien, cela fait une belle soupe, heureusement que tu n'es pas cuisinier!
tu as un timer dans chacun de tes fichiers. je préfère ne pas essayer d'imaginer ce que cela donne si les deux travaillent ensemble.
comment utilises-tu ces deux fichiers? les deux sont-ils ouverts en permanence?
vois-tu encore parfois des "OK"? il me semble que toute cette logique n'est plus utilisée.
0
le Timer seul me sert lorsque je veux enregistre les cotations et que je travaille sur l autre fichier l les quatres autres fichiers peuvent travailler si h je veux avec le timer comme cetait prevu au depart tout ca parceque si je monte mon site web je vais faire tourner sur un ordi le timer seul
le soir je collerais le résultat en mode valeur sur chacun des autres fichiers et je pourrais également me servir des autres fichiers si je veux sans timer la journée ou avec Timer selon mes désirs(je vais voir par la suite si avec un ordi puissant et beaucoup de ram je peux faire fonctionner sans avoir de retard le timer et mes graphes temps réel pour le moment j ai trouve cette solution et c'est impeccable ,il suffit que tu me remettes tout en ordre
en fait il faut que tu comprennes que j ai dissocié les fichiers parce que il y a des journées ou je ne peux pas travailler sur les fichiers si le timer tourne sinon en fin d journée j ai un décalage énorme
depuis que tu m 'as fait le code pour les quatres feuilles dans le meme fichier Timer SEUL je n 'ai aucun soucis de retard parcequ il n y a pas dans Timer seul les graphes qui tournent en même temps en temps réel
maintenant comme tu dits je pense qu il ya du menage a faire
mon problème est que je sais structurer les choses l mais je ne connais pas le langage alors des fois ça me pose de gros problèmes parceque je comprends pas ce que tu écrits en code je ne fait qu e deviner par déduction tu me dits âr exemp^le de mettre option explicit avant toutes mes macros mais je ne sais même pas pourquoi je le mets..... en fait pour le moment je tourne avec plusieurs fichiers mais c'est évident que si je pouvais avoir tout sur le même ce serait bien mais je n y crois pas trop pour l instant je n ai pas de machines assez puissantes j ai un core I5 avec 8 gigas
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
20 avril 2018 à 19:46
je pense que ce n'est pas un problème de puissance de l'ordi.
0
je sais pas
mais ce qui est sur c'est que a mesure qu on a charge excel les temps de réponse n ont plus ete les mêmes
moi j aimerais bien pouvoir tout mettre sur le même fichier mais j ai lu quelque part que excel avait des limites de mémoire surtout en version 32 bits et je suis sur une version 32
tu crois que ca vient d'ou alors???;;; si tu veux je remets tout comme au depart je conserve tout de meme mon Timer seul en cas de probleme et je remets tout dun bloc avec mes graphes qui tournent en temps reel
je vais avoir au total 4 graphes qui vont tourner sur ce même fichier si je mets tout comme au départ
je ferais comme tu me dits
0
je sais que je suis casse pied mais si tu me trouvais un code qui me change la formule dans mes graphes je gagnerais un temps de fou ;et je pourrais me passer de la macro que tu m 'as faites l autre jour (qui a servi à passer de PH:PR à PH:CLV mon graphe ne bougerait pas de place et j e n 'aurais pas a construire un deuxieme Ex je passerais de BC BC13 B14...etc a
BC55 BC56 BC
de BG12 BG13..;..à BG55 BG56...etc
de BH12BH13BH14... à BH55 BH56 BH57..etc
je sais que tu sais faire
ca avec un simple bouton sur le bas du graphe et un retour
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 avril 2018 à 22:34
ouvre une nouvelle question dans le forum pour chaque point précis que tu demandes.
0
tu as sans doute raison mais je n ai pas assez d’expérience pour me rendre compte de mes erreurs je crois que le Timer seul que tu as faits doit marcher cela ne vient peut être pas du code
je t'explique
ce matin je me suis apercu que le logiciekl DDE de cette boite ne prenait pas plus de 50 dde en compte dans un fichier donc tu es oblige de faire une liste supplémentaire pour avoir plusieurs marchés et encore tu ne peux pas les faire fonctionner ensemble il te faut passer dune fenetre a l 'autre
cela je ne le savais pas
je m en suis aperçu parceque la procédure de collage que tu faits de D12:H51 ne se faisait plus
t j ai compris apres que elle ne pouvait pas se faire parce que les liens dde n etaient pas activées sur la feuille quij s’était ouverte au démarrage
si le soir j ai fermé sur la quatrième feuille et que le matin j ouvre mon DDE en allant sur la feuille cac 40 le dde lui va aller sur la feuille qui a été enregistre la dernière le soir
tu te retrouves donc avec la procedure de collage sur la 4 eme feuille et quand le marche demarre la procedure des ok ne peut pas se faire puisqu il n y a pas eu de collage
non seulement ca mais tu crois etre sur la bonne fenetre alors que tes dde sont activées b sur la 4 e me feuille donc quand tu comprends c'est trop tard le marche a démarré tu es oblige de réactiver la bonne liste que tu veux voir marcher mais ton système lui n 'a pas pu démarrer
si j avais une api a la place de ce logiciel je suis sur que l on aurait pas tous ces problemes la preuve c'est que ca fonctionnait avant quand on avait qu un seul marché donc il faut peut être se concentrer sur le cac 40 pour le moment en attendant que je trouve un logiciel qui n'est pas limité de toute facon si tu es sur de tes codes ,il y a bien une explication parce que moi j ai tout remis dans l ordre que tu m 'as decrits
0
Voila j ai trouvé l explication il suffit que tu me dises comment inscrire les trois autres feuilles a la suite
a cela s ajoutait le problème des dde(il faut que je prenne un autre logiciel
c'est pour cela que un seul marché collait la procédure était impossible a faire marcher

Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub
Private Sub copy_dh()
Dim sh As Worksheet
Set sh = Sheets("CAC40") "comment mettre les 3 feuilles manquantes"
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
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 > chrisnapoli
21 avril 2018 à 10:03
ouvre une nouvelle question dans le forum pour chaque point précis que tu demandes.
je ne peux pas t'aider si on discute de tout en même temps.
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 avril 2018 à 10:16
A la réflexion, je pense qu'il serait bien d'avoir un fichier qui fait tout ce qui est automatique, et un autre dans lequel tu travailles.
Le fichier "automatique" inclurait:
- le timer
- un onglet DDE par marché
- un onglet sans DDE par marché
Le fichier de travail aurait tout le reste, y inclus:
- un onglet par marché, qui irait récupérer des données (via liens ou via code VBA) dans les onglets non DDE de l'autre fichier

Je pense que cela évitera que le timer et tes activités rentrent en conflit.
(A Suivre, peut-être, dans d'autres messages)
0
Bonjour
En fait ce que tu me dits est exactement ce que je suis entrain de faire depuis un moment (mais je ne t en ai pas parlé parce que j avais peur que tu me dises que c’était stupide)
je te rappelle que ce n 'est pas mon metier , je ne fait que découvrir les choses a mesure que tu me les montre

le timer ne fonctionnera qu'avec les dde ,et toute ma logique de statistique et tout le reste est a part sans dde
lorsque je ferais le site web ,le timer tournera seul avec les quatres feuilles hors Web et ne sera consacré que uniquement aux collages des cotations
En fin de journée le relevé des cotations du timer sera reporte en mode valeur sur le même fichier que le timer mais avec toute mes feuilles de statistiques en plus;'ces feuilles la n 'ont, n'ont pas besoin de dde
lorsque j aurais tout rapporte sur ce fichier sans DDE alors j enverrai la partie statistique en mode valeur sur le Web
je suis entrain de faire actuellement un fichier pour le WEb avec quatre graphes sur le Model du Timer mais sans Timer de cette manière personne ne pourra me cracker ma solution finale
c'est assez difficile a comprendre mais je suis certain que tu as déjà compris
0
en fait toute la logique la plus intéressante sera hors web
sur un disque dur externe
a moins de me mettre un pistolet sous la tempe pour me piquer ma solution je ne vois pas comment le commun des mortels pourra avoir accès a ma logique
NON...?????
0