DoEvents (en 1 seul mot !!) est une instruction VB qui est utiliser principalement dans les boucles. En effet, si dans ton prog tu as une boucle (For i = 1 to 10000 ... Next), cette boucle va prendre toute les ressources octroyer par Windows à ton appli et si ton utilisateur clique quelque part ou tape une lettre au clavier pendant ta boucle, le ou les evenements correspondant ne seront effectivement "lancés" qu'après la boucle. Si tu met un DoEvents à l'intérieur de ta boucle, A chaque tour de boucle, VB ira voir si windows lui propose un evenement de souris ou de clavier et le traitera avant de continuer la boucle. Un exemple valant mieux qu'un long discours, ...
Sur une feuille Form1, ajoute un Bouton command1 et une case à cocher Check1
Dans l'EVT click du command1, ajoute ceci :
MsgBox "Début de boucle" While Check1.Value <> vbChecked Wend MsgBox "Fin de boucle"
|
Clairement ce code tourne en rond ds une boucle While ... Wend tant que tu ne coche pas la case à cocher Check1
Lance ce programme (par F5), clique sur le Command1 pour lancer la boucle, et essaye de cliquer sur la case à cocher ... Rien ne devrait se passer, car VB passe son temps dans la boucle et ne "voit" pas que tu as cliquer sur la checkbox (la coche n'apparait même pas), donc Check1.Value ne vaut pas vbChecked... Appuis sur CTRL+Pause pour interrompre l'execution et ajoute un DoEvents entre le "While ..." et le "Wend"
Relance l'execution, reclique sur command1 puis coche la case. Tu sort alors de la boucle car a chaque tour dans le While Wend, VB demande à Windows s'il y a eu un clic de souris et effectue ceux-ci. Donc Check1.value<> vbchchecked devient False et tu sort du While ... Wend.
Ce n'était pas un cours de Renfield, mais j'espère que j'aurais été aussi clair !!!
Peut-être parlera-t-on bientôt de cours à la crenaud76
Christophe R.