Exécuter plusieurs action suivi en VBA

Bonjour,

Quand j'active mon plotter, il doit s'initialisez (env 30sec). Pendant ce temps j'aimerais juste afficher un UserForm qui indique que nous devons patienter et qui se retire une fois l'initialisation du plotter terminé.

Mon problème est que:

Si je dis à VBA d'initialiser le plotter et ensuite d'ouvrir le userform, le userform s'ouvre au bout des 30 sec.
A l'inverse si je dis d'ouvrir le userform d'abord alors la suite du code s'exécute une fois le userform fermé.

 

Avez-vous une idée de comment je puisse résoudre ou contourner ce problème ? Merci.

Pourquoi ne pas créer 2 macrox pour les 2 opérations, puis ensuite faire une macro qui appelle ces 2 macros?

 

Après, je suis une quiche en vba ^^

2 « J'aime »

Bonjour,

Tu veux insérer une barre de chargement pendant le temps d'initialisation ?

[Edit] Je suis également une quiche en VBA

1 « J'aime »

Bonjour,

Pourquoi pas insérer la suite du code dans l'userform (avec un clic droit sur celui-ci) ?

Edit : voir ici, c'est bien ce que je proposais :

http://www.excelabo.net/excel/userform_message

Afficher et masquer l'userform avec .show et .hide

1 « J'aime »

Salut,

En fait, tu lances ton userform.

Ensuite tu lance le plotter (Au fait c'est quoi ?). Lorsque la tache est terminé tu fermes l'userform.

 

 

1 « J'aime »

Ici un tuto pour une barre de progression : http://www.blog-excel.com/barre-de-progression-excel/

+1 Lucas !

1 « J'aime »

@Aurelien : En macro il est déconseillé d'utiliser des ProgressBar. En effet pour qu'elle fonctionne correctement il faudrait une gestion multithread (gestion de plusieurs taches en même temps). Car si non la barre "freeze" pendant l'éxécution de la macro et ne sert donc à rien.

2 « J'aime »

Voici une macro vite fait qui illustre le problème.

 

Quand on lance la macro, UserForm1 s'affiche. Une fois que nous fermons celle-ci, UserForm2 s'ouvre et une fois celui-ci fermer un à un MessageBox.

http://cloud.winlap.ch/download/455

C'est exactement le problème que j'ai avec mon plotter, il me faudrait par exemple que mes deux userforms s'ouvrent en même temps.

 

Merci

 

Edit:

Ah je viens de voir le message de .PL, je ne savais pas qu'il existait la méthode "_activate", je connaissais "_initialize" pour excel mais ça ne fonctionnais pas sur SW ou alors j'avais fait une erreur. Je vous retient au courant merci !

Edit2:

Ca ne fonctionne pas. Pourrais-je vous demandez de tester votre solution sur la macro que j'ai mis en téléchargement ? Afin de savoir si c'est moi qui ai fait une erreur. MErci

1 « J'aime »

Apparemment il faut chercher avec Doevents voir : https://support.office.com/fr-fr/article/DoEvents-fonction-7af41eca-88e0-470d-adaf-0b3d4c2575b0

Ce qui élilimine ce que j'affirmais précédemment au sujet de la progressbar. ;-)

Ah je crois que je viens de trouver une solution !!

 

En rajouter "vbModeless" après le "UserForm.Show" ça à l'air de fonctionner. A vérifier

PS: Merci rem, mais en faites je n'ai pas trop compris l'utilité des DoEvents ?

Pour résumer, DoEvents permet d'attendre qu'une action soit totalement terminée avant de poursuivre la procedure.

Donc ça permet de mettre en pause le programme d'une façon propre et ne pas tourner dans le vide en surchargeant le processeur avec des calculs inutiles pour attendre.

Merci de votre réponse,

car justement la fenêtre souvre bien mais le contenu ne charge pas (Donc fenêtre blanche) et la fenêtre ce charge une fois l'action terminé.

 

Je m'excuse dore et déjà si je ne serai pas actif d'ici les deux prochaines semaines (vacances).