Boucle n'interagit pas avec l'utilisateur.

Résolu
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 7 mars 2006 à 10:19
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 - 7 mars 2006 à 10:39
Bon il est vrai que le sujet n'est peut etre pas parlant, mais je vais vous expliquer.
Je suis actuellement sous vba access.
J'ai mon formulaire, contenant une pseudo progressbar (en fait 2 zones de textes superposé car mscomctl.ocx gerant la progressbar 6 desinscrivait le serveur ole)
Je fait evoluer ma progressbar comme ceci :

Public Sub progress()
DoCmd.OpenForm "attente"
For i = 0 To 2835
Sleep 10
Forms![attente]!progress1.Width = i
Forms![attente].RepaintIf i 1000 Or i 2000 Then
MsgBox "i=" & i
End If
Next i
End Sub

J'ai autoriser l'uilisateur a deplacé mon formulaire. Or lorsque il y a clic dans mon form, la boucle continu mais il ne repaint plus mon form (il apparait qu'access ne repond plus) jusqu'au msgbox qui attend une interaction de l'utilisateur et fait repartir mon repaint. Je ne comprend pas la cause ni comment contrer cet effet.
Or dans l'appli finalisé il n'y aura pas de msgbox car c'est pour un telechargement ftp.
Voila, je pense que c plus clair comme cela.
Humblement Phalalis

2 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
7 mars 2006 à 10:31
Salut,

Insére une instruction DoEvents après ton "Sleep 10".

Tu repasses alors la main à Windows qui va redessiner ton contrôle.





For i = 0 To 2835

Sleep 10

DoEvents

Forms![attente]!progress1.Width = i

Forms![attente].Repaint

[...]

Manu
3
Phalalis Messages postés 83 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 19 février 2012 1
7 mars 2006 à 10:39
Impecable, c pile poil ce qu'il fallait. Jte remercie manu, je n'ai pas l'habitude de me servir du doevents (en fait il ya de cela 2 mois jsavais meme pas que ca existé).
Franchement rien ne vaut l'entraide
0
Rejoignez-nous