Afficher un message d'attente en excel lors d'un long traitement (waitbox)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 28 365 fois - Téléchargée 36 fois

Contenu du snippet

Lors de long traitements sous Excel ou Word il est interressant de pouvoir afficher un message à l'écran pendant cette execution. La première chose à faire est de créer un Userform que j'ai appelé WaitBox contenant uniquement un contrôle Label avec le texte d'attente, le reste du code est ci dessous :

Source / Exemple :


Private Sub Workbook_open()   'dans le module thisWorkbook , événement à l'ouverture du classeur
  Load WaitBox        'on charge le formulaire en mémoire

end sub

Sub VotreTraitement()  'la sub qui contient le gros traitement qui peut être dans un module 

Application.Cursor = XlWait   'affiche le sablier
WaitBox.Show vbModeless   'affiche la waitbox mais continu le traitement
WaitBox.Repaint                   'raffraichit le contenu affiché sinon on a une boite blanche vide

'placer ici votre traitement...

WaitBox.hide  'masque la waitbox
Application.Cursor=XlDefault   'remet le curseur par défaut

End sub

Private Sub WorkBook_BeforeClose(Cancel as Boolean)  'dans module thisWorkbook

Unload WaitBox  'decharge la waitbox de la mémoire

End sub

Conclusion :


Ce petit code fonctionne bien sous office 2000 mais il devrait bien fonctionner sous 97 ou XP (à tester).
Il pourrait être interressant d'y ajouter une "progress bar" mais je n'ai pas encore trouvé le moyen de le faire.
Merci de vos commentaires

A voir également

Ajouter un commentaire

Commentaires

sebhd
Messages postés
3
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 avril 2005
-
Bonjour ol69 et merci pour ce code, ca correspond en partie à ce que je recherche ! En effet, il manque la progressbar...

Bon, je bosse en Excel97 et ton petit programme ne semble pas compatible à 100%..
En effet, lorsque je lance la macro complète (avec mon traitement) la fenêtre de débogage s'affiche sur "vbModeless".

J'ai donc fait un test en le supprimant et bien evidemment, la waitbox s'affiche, le sablier aussi mais c'est tout ! Pas de traitement derrière...

Aurais-tu une idée de la source du problème ?

Merci à toi.
castor_furieux
Messages postés
13
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
24 février 2005
-
salut!

Ca marche pas avec Excel 97...

en revanche pour la progressbar je connais une astuce :

si ton traitement s'effectue sur x fichiers/cellules alors
a chaque ième fichiers/cellules traité(e)s, donnes la valeur "x/i" à la progressbar et le tour est joué.

Mais attention en faisant ca tu rajoute des calculs. si t'as 5 000 cellules à traiter tu vas générer 5 000 calculs et 5 000 modifications graphiques supplémentaires (ce qui va augmenter le temps de traitement...)

A ce moment là, vaut mieux rafraichir la progressbar tous les 100 traitements (par exemple)

@ la prochaine
sebhd
Messages postés
3
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 avril 2005
-
Merci Castor_furieux, faudra que je me repenche dessus et que je test ! ;-)
castor_furieux
Messages postés
13
Date d'inscription
lundi 12 avril 2004
Statut
Membre
Dernière intervention
24 février 2005
-
Bin ecoute, y'a pas de quoi! ca m'a fait grand plaisir!

mais si t'arrive à trouver pourquoi ca merde sous XL 97 et surtout comment y remedier, je suis preneur ;)

@+
JM247L
Messages postés
444
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
1 -
Salut,
C'est exactement ce que je cherchais et de plus c'est très agréable de trouver des codes qui sont commentés

En fait le problème vient de l'aide Microsoft qui ne détaille pas suffisament l'utilisation de .Repaint qui ne fonbctionne que si un Load a été exécuté avant le show
Merci à toi
JML

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.