Code VBA pour fenetre pop-up [Résolu/Fermé]

Signaler
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
-
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
-
Bonjour,

J'aimerais inclure l'ouverture d'une fenetre style pop-up avec le message "please wait..." dans le code d'une macro assez lourde en calcul sous Excel.

En gros j'aimerais qu'en lancant la macro, une fenetre me demandant de patienter s'ouvre, que la fonction de base de la macro s'execute normalement et que la fenetre disparaisse automatiquement une fois le calcul fini.

La seule chose que j'ai trouve pour le moment c'est ca:
...
warning = MsgBox("This will take time", vbExclamation + vbOKCancel, "WARNING")
If warning = vbCancel Then End
...


Cette commande ouvre une fenetre avec le message "This will take time" avec le bouton OK et le bouton Cancel.
Si je choisis Cancel, la macro s'arrete.
Si je choisis OK, la fenetre se ferme et la macro s'execute normalement, elle est longue et un utilisateur non experimente pourrait croire que le PC a plante.

Pouvez vous m'aider ?

Merci d'avance

10 réponses

Bonjour

Tu ne peux pas avec Msgbox car Msgbox est une fenêtre modale, c'est à dire que ton application ne fait rien d'autre tant que tu ne l'as pas refermée.

Crée une autre fenêtre avec ton message. Au début de ta macro tu fais Autrefenetre.show et à la fin Autrefenetre.hide
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Attente.Show vbModeless
immédiatement suivi de
Attente.Repaint
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Dans VBA, dans la fenêtre projet (en haut à gauche par défaut) tu fais un clic droit - insertion - userform.
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
4
Bon alors, j'ai reussi a creer la fenetre et j'arrive egelement a la faire apparaitre.
Par contre j'ai toujours le meme probleme: je dois d'abord la fermer (en cliquant sur la croix) avant que le calcul principal de la macro ne se lance.

Je suis donc passe de "cliquer sur Ok" a "cliquer sur la petite croix".
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 166
Bonjour, je ne connaissais pas vbmodeless ... je mets le code qui doit être executé dans le form_initialize() ... je prends note pour vbmodeless ... merci le père.

;o)

Polux
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
4
D'accord j'ai compris le concept.
Mais peux tu m'expliquer comment creer la fenetre que je vais montrer et cacher apres ?

Merci
Tu as le choix UserForm1.show vbModal ou userform1.show vbmodeless. C'est Modeless qui t'intéresse, alors que c'est vbmodal par défaut.

pour changer le nom, regarde la fenêtre propriétés à gauche. Tu peux changer le nom, le titre, etc.
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
4
Salut salut,

Bon alors j'ai utilise vbmodeless. Ca marche: ma fenetre d'attente s'ouvre bien au debut de la macro pour se fermer automatiquement a la fin du calcul.

Par contre j'ai un probleme d'affichage du contenu de la fenetre...
En fait rien ne s'affiche: l'interieur de la fenetre est tout blanc au lieu d'etre gris avec "please wait" d'ecrit.

Vous avez une idee de d'ou vient le probleme ?
Voici le morceau de code qui ouvre la fenetre:

Attente.Show vbModeless

Manque-t-il qque chose pour avoir tout a s'afficher correctement ?

Merci
Bonjour

C'est à toi de mettre ce message dans la fenêtre.
Quand tu es sur ta fenêtre dans l'éditeur VBA, tu dois avoir une petite fenêtre "boîte à outils" qui te permet de rajouter du texte, des images, de boutons etc... Explore un peu, n'attends pas tout de moi.
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
4
Je n'attend pas tout de toi.

Mon probleme ne vient pas de la. Je me doute bien que c'est a moi de mettre le message que je veux dans cette fenetre.
C'est ce que j'ai fait (et avant que tu me le dises): dans l'editeur VBA, j'ai utilise la boite a outils pour ecrire "please wait..." dans ma fenetre.

Donc tout semble OK dans VBA. Pourtant, qd je lance la macro, la fenetre qui apparait est vide et blanche: le texte sur fond gris que j'ai mis dans la fenetre dans VBA n'apparait pas. C'est comme s'il y avait un pb de rafraichissement.
Messages postés
32
Date d'inscription
mardi 16 octobre 2007
Statut
Membre
Dernière intervention
4 décembre 2009
4
C'est bon tout marche impecc maintenant.

Merci beaucoup pour tout.

Ciao ciao