Les msgbox bloquent le programme

Messages postés
24
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
1 novembre 2005
- - Dernière réponse : djtrefle
Messages postés
36
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juin 2008
- 15 mai 2008 à 17:53
quand on fait intervenir un messagebox, il bloque le programme jusqu'a que l'on appuis sur OK de celle-ci
c'est genant quand il y a un Timer, qui mesure le temps... sa fausse tout !!!

Comment eviter les les messages box bloquent le programme ??? et surtout les timers !!

merci pour vos réponses ;)
a+
Afficher la suite 

5 réponses

Messages postés
53
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
19 avril 2012
1
0
Merci
si tu es en deboguage, tu met des debug.print , ca saffichera ainsi dans la barre d execution, sinon, tu creer des fichiers Logs avec les messages, et tu vires toutes tes messagebox.
Messages postés
24
Date d'inscription
samedi 29 décembre 2001
Statut
Membre
Dernière intervention
1 novembre 2005
0
Merci
comment sa ? debug.print
???
Messages postés
115
Date d'inscription
vendredi 3 mai 2002
Statut
Membre
Dernière intervention
17 novembre 2014
0
Merci
Ben pour moi c'est plutôt normal qu'un MsgBox bloque le code, je veux dire du point de vue ergonomie d'une application.

On n'interpelle l'utilisateur que pour demander une confirmation, ou afficher un résultat final. C'est à dire avant ou après un process.
Si tu veux interrompre un process, il faut mettre un bouton Annuler. Si tu veux afficher des info sur le déroulement d'un process en cours , il faut utiliser un zone d'affichage (contrôle TextBox par exemple).

Ma première réponse serait d'abord de dire qu'il n'est pas opportun d'afficher un MsgBox pendant un traitement.

Si vraiment vraiment tu veux, alors tu peux créer ton propre form qui fera le MsgBox.

--------------------
Skrol 29
www.skrol29.com
--------------------
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
19
0
Merci
Il faut utiliser l'API MessageBox :





Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As _

Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As _

Long) As Long



Private Sub Command1_Click()

' L'appel à la MsgBox traditionnelle arrête tous les processus qui

' étaient en cours. Regardez donc le Timer dans Label1.

MsgBox "Le Timer s'arrête"

End Sub



Private Sub Command2_Click()

' L'appel à l'API MessageBox n'arrête pas les processus qui étaient

' en cours. Regardez Label1 qui continue de défiler ...

MessageBox Me.hwnd, "Le Timer ne s'arrête pas.", "API MsgBox", vbOKOnly + vbExclamation

End Sub



Private Sub Form_Load()

' Initialisation du Timer

Timer1.Interval = 100

Timer1.Enabled = True

End Sub



Private Sub Timer1_Timer()

' Le label contient l'heure courante et est raffraichi tous les

' Timer1.Interval [ms].

Label1.Caption = Time

End Sub




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
36
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
28 juin 2008
0
Merci
c'est parfais c'est tout a fais ce dont j'avais besoin !!

Excellent !!

Et surtout merci