Afficher un message
Vieux 13/10/2004, 23h08   #1 (permalink)
Limbo
Guest
 
Messages: n/a
Par défaut sortir proprement d'une boucle utilisant le Timer (dans un UF)

Bonsoir,


je vous joins un ch'ti exemple, "souriant", pour illustrer mon souci.


petit problème lors de l'utilisation d'une boucle temporelle :

Private Sub UserForm_Activate()

' première partie : attente de 2 secondes avant que des contrôles images soient affichés dans l'UF
timedebut = Timer
DoEvents
While Timer < timedebut + 2
Wend
Image1.Visible = True
Image2.Visible = True
Image3.Visible = True

' seconde partie : l'un des contrôles images "clignote" (s'affiche ou pas) toutes les secondes; la boucle dure 10 secondes
Do
resultat = Timer Mod 2
DoEvents
If resultat = 0 Then Image1.Visible = False Else Image1.Visible = True
Loop Until Timer = timedebut + 10

End Sub

le code ci-dessus fonctionne, mais si je referme mon UF avant que les 10 secondes soient écoulées, Excel tarde un peu à reprendre la main (en fait il attend que les 10 secondes soient passées, alors que mon UF n'est plus chargé en mémoire).
Et si je lance à nouveau la procédure avant 10s, alors là Excel poireaute tranquillou et je suis obligé d'arrêter manuellement la macro...

DoEvents donne la priorité au système d'exploitation si j'ai bien compris, y a-t-il une commande inverse???

peut-être que j'oublie de réinitialiser qqc?

En fait, j'aimerais surtout pouvoir lui dire de boucler jusqu'à ce que je clique sur l'image2 pour sortir... mais je n'arrive pas à trouver la syntaxe....


Merci par avance pour toute suggestion.

Limbo
Fichiers attachés
Type de fichier : zip Ufcows.zip (35,3 Ko, 2 affichages)