HELP! Valeurs en temps reel dans un textbox avec VBA
Julamo
Messages postés8Date d'inscriptiondimanche 8 novembre 2009StatutMembreDernière intervention 6 mai 2008
-
22 déc. 2005 à 15:53
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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
A voir également:
HELP! Valeurs en temps reel dans un textbox avec VBA
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 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.