Msgbox VBA + timer

Fermé
Dergoshine - 22 août 2011 à 12:00
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 24 août 2011 à 23:40
Bonjour,


Voilà j'aimerais que lorsque l'on clique sur mon bouton sur ma feuille excel, une msg box se lance, demande de faire patienter l'utilisateur et se referme au bout d'un laps de temps prédéfini avant d'afficher un résultat.

Si c'est possible, j'aimerais que l'utilisateur puisse voir la minuterie sur la msgbox (par exemple les secondes s'écouler) et qu'au bout du temps écoulé la msgbox se ferme toute seule pour afficher le résultat.

Merci d'avance pour votre aide.
A voir également:

3 réponses

Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 209
22 août 2011 à 13:47
il faut pas rever tu auras pas d interaction dans une msgbox ...
il faut ouvrir une nouvelle fenetre avec un timer d un seconde pour afficher l heure et un test sur le cumul ...
c est simple mais bon vb connait plus trop bien. c est des evenements onclick onload qu il faut gerer ...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
22 août 2011 à 14:07
Bonjour,
C'est juste pour obliger l'utilisateur à attendre, ou tu veux qu'une procédure se déroule pendant le décompte?
0
C'est juste pour le faire attendre, aucune procédure pendant l'attente
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
22 août 2011 à 14:42
MsgBox temporaire :
Sources Code :
CreateObject("Wscript.shell").Popup "Mon Texte", 3, "Le Titre"
3 = 3 secondes.....

Pour afficher un compte à rebours, il ne faut plus utiliser une MsgBox, mais la fabriquer soi-même grâce aux UserForm. Les sources et le code à utiliser :
Dim i As Integer
 
With UserForm1
    .Show 0
    For i = 10 To 0 Step -1
        Application.Wait Now + TimeValue("00:00:01")
        .Label1 = i
        .Repaint
    Next
End With

exemple
0
Ok j'ai testé le premier code, la fenetre ne disparait pas au bout de 3 secondes, elle ne disparait pas du tout d'ailleurs, il faut appuyer sur OK pour la faire disparaitre...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
Modifié par pijaku le 22/08/2011 à 15:14
essaye à nouveau... Ca m'a fait ça aussi la première fois. Ce code nécessite peut être l'enregistrement du classeur...
0
J'ai crée une fonction dans le module et c'est là que j'ai mis le code que tu as indiqué, ensuite j'ai pris mon bouton et j'ai fait Call + nom de ma fonction crée, mais ça ne marche pas
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
Modifié par eriiic le 24/08/2011 à 23:42
Bonsoir,

pijaku ayant dû s'absenter il m'a demandé de prendre le relais sur ta question.
Chez moi non plus (2003) son fichier ne fonctionne pas comme prévu.

Voici une autre proposition largement inspiré du site de Jacques Boisgontier :
http://boisgontierjacques.free.fr/pages_site/formulairebases.htm#barreAttente

Le temps défile mais pour cela la boite de dialogue doit être non modale.
Ce qui implique que l'utilisateur peut utiliser/modifier le classeur pendant son affichage.
A part ajouter une protection maximales des feuilles avant l'affichage de la boite de dialogue et enlever ces protections après sa suppression je ne vois pas d'autres solutions.
Sinon renoncer à afficher le temps. A moins que qcq'un sache rendre active une boite de dialogue... Je n'ai pas trouvé et il est tard ;-)

http://www.cijoint.fr/cjlink.php?file=cj201108/cijqMbBdKe.xls

eric
0