HELP! Valeurs en temps reel dans un textbox avec VBA

Julamo Messages postés 8 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 6 mai 2008 - 22 déc. 2005 à 15:53
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 23 déc. 2005 à 16:37
Hello,

J'ai un probleme assez urgent concernant l'utilisation de bloomberg avec VBA pour Excel. Il n'est pas necessaire de connaitre Bloo;berg pour repondre a cette question. Le principe est simple: je peux exporter vers Excel des valeurs de bloomberg, comme le prix d'une action par exemple. C'est une fonction speciale aui affiche les prix et leur mouvement en temps reel.

Tant que je reste sur une feuille excel il n'y a aucun probleme, mais je cherche a afficher ces valeurs temps reel dans une "form" que je cree a l'ouverture du fichier excel. Il faut donc aue je recupere toutes les secondes les valeurs affichees sur Excel et ke je les copie-colle dans un textbox ou label sur ma "form". Le probleme est que ca cree une boucle sans fin et fait bugger tout le programme. Y aurait-il un moyen d'afficher sur ma "form" des valeurs en temps reel sans creer une boucle sans fin ki fasse planter le programme?

Merci de votre aide,

Julien

2 réponses

kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
23 déc. 2005 à 14:30
Salut,

Je dirais qu'il faut utiliser un doevents dans ta boucle pour te permettre d'exécuter les autres évennements des contrôles de la Form.

Ensuite, tu crée une variable puiblic boléenne qui contrôlera si il faut ou non stopper la mise à jour des données

Dans ta boucle de mise à jour de tes textbox, tu place un test de la valeur créée qui te fait sortir de la boucle si la valeur est vraie.

Ensuite, tu place un Bouton sur la Form qui affecte la valeur vrai à la variable.

En clair, voici la structure de ta boucle

Public Stopper as boolean = false ' Il s'agit de la variable d'arrêt de la boucle

Private sub BtnMiseAJour_Click() ' Ici, l'évenement click du bouton de mise à jour
Do 'le début de la boucle
....
'Place ici ton corde de mise à jour des texts box
...
If Stopper = true then exit do 'le test de la variable qui s'execute à chaque tour, avec sortie possible
doevents ' le do events, qui autorise l'execution des autres évennements
loop ' et la fin de la boucle
end sub

Private sub BtnStopper_Click 'on click sur le bouton stopper pour arrêter l'appli
stopper = true ' la variable prend alors la valeur true, ce qui produira la sortie de la boucle
end sub

Que se passe t il lors de l'exécution ?

Ta feuille se charge, la valeur stopper est à False, tu click sur le bouton BtnMiseAJour et ta boucle se lance.

Sans le doevents, tu ne peut rien faire si ce n'est attendre que ton pc plante. Là, tu n'as qu'à appuyer sur le bouton Stopper pour exécuter l'évenement correspondant (ce qui est possible grace à doevents ). La variable stopper prend alors la valeur true alors que ta boucle de mise à jour n'a pas cessé de tourner.
Quand arrive le test sur la variable, ta variable étant à true, la boucle se termine toute seule

Tu peux aussi mettre le test de la variable dans la contiontion d'execution de la boucle
Par exemple

Do while Stopper = false

'tu mets ici le code de mise à jour
DoEvents
loop

Ce qui me semble plus propre et plus clair.

Voilà pour la première solution que je peux te proposer, sinon tu peux utiliser application.ontime(timevalue) pour lancer une procédure de manière répétée avec toujours une variable qui arrêtera l'exécution.
En VB, on a l'objet Timer mais l'OCX doit être référencée dans l'OS pour pouvoir être utilisée dans Excel Donc si tu as pas VB, oubli le Timer.

Bonne suite et bon boursicotage
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 déc. 2005 à 16:37
les rics Bloomberg que tu as saisi dans ta feuille Excel sont surement des liens DDE

il est possible de les utiliser sous VB
0
Rejoignez-nous