Executer un code avec userform ouvert

Résolu/Fermé
siamens_duj Messages postés 191 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 - 11 avril 2016 à 13:39
 siamens_duj - 12 avril 2016 à 08:59
Bonjour,

je viens vers vous car malgré toute les recherches que j'ai faites, je n'arrive pas à répondre
à ma question.

J'ai une macro qui appel plusieurs macros ( call toto, call tata ... ).
Pendant que ces macro s'exécute j'aimerais savoir où j'en suis, c'est pour cela que j'ai créé un userform
"pop" où est écrit "Veuillez patienter" et où se trouve également un label que je "colorie" au fur et à mesure que mes macros
se soit exécuté.

Pour être plus claire :

sub toto

'Ici la barre, semblable à une ProgressBar n'est pas colorié car l'exécution de la première macro commence
pop.show
With pop
.LabelPROGBAR.Width = .LabelPROGBAR.Width / 20 'Dimenssion de la barre
.LabelPROGBAR.BackColor = RGB(16, 78, 139) 'Couleur de la barre
End With

'mon code

'Ici la barre est un peu colorié en bleu car c'est la fin de l'éxécution de la première macro.
pop.show
With pop
.LabelPROGBAR.Width = .LabelPROGBAR.Width / 10 'Dimension de la barre
.LabelPROGBAR.BackColor = RGB(16, 78, 139) 'Couleur de la barre
End With

end sub


sub titi

'Je reprend la dimension de le dernier "résultat" de la barre
pop.show
With pop
.LabelPROGBAR.Width = .LabelPROGBAR.Width / 10 'Dimension de la barre
.LabelPROGBAR.BackColor = RGB(16, 78, 139) 'Couleur de la barre
End With

'mon code

'la barre est un peu colorié en bleu car c'est la fin de l'exécution de la deuxième macro.
pop.show
With pop
.LabelPROGBAR.Width = .LabelPROGBAR.Width / 8 'Dimension de la barre
.LabelPROGBAR.BackColor = RGB(16, 78, 139) 'Couleur de la barre
End With

end sub

etc ...


Mon problème est que je dois fermer le userform pour que la partie où il y a mon code s'exécute.
J'aimerais que le userform reste ouvert sans jamais se fermer et que le label se colorie au fur et à mesure
de l'exécution des macros.

Quelqu'un pourrait m'aider svp ??
A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
11 avril 2016 à 14:31
Bonjour,

J'ai une macro qui appel plusieurs macros ( call toto, call tata ...).

Cette macro doit etre appelee dans l'userform ex ici:
https://docs.microsoft.com/en-us/previous-versions/office/troubleshoot/office-developer/display-progress-bar-with-user-form-in-excel
0
Merci pour votre réponse. J' avais déjà essayé cette solution mais elle ne fonctionne pas dans mon cas.
l'userform ne s'ouvre pas alors que j'ai fais comme indiqué et lorsque j'appel ShowUserForm avec le reste de mes macros il me dit que la fenêtre est déjà ouverte !
Ma macro qui appelle les autre macros en appel 5, 6 avec le ShowUserForm mais je ne pense pas que le problème pourrait venir de là .. ?

Merci quand même.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > siamens_duj
Modifié par f894009 le 11/04/2016 à 15:11
Re,

Dans vos macros, enlevez les pop.show !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Sauf celle qui lance au debut........
0
Merci encore pour votre réponse, le problème venait du fait que j'ai modifié le Main(), je l'ai donc remis comme il était mais quand j'exécute la macro le userform s'ouvre bien mais affiche direct 100% et reste comme ça jusqu'à la fin de l'exécution de la macro ..

J'ai donc modifié la macro, j'ai retiré le Main() et j'ai repris quelques éléments pour mettre à jour ma ProgressBar à chaque fin de macro mais maintenant il m'affiche mon userform vide, pas même le label n'est visible.
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > siamens_duj
11 avril 2016 à 16:18
Re,

Pour avoir un affichage du label, c'est une multiplication pas une division !!!!!!
0
siamens_duj > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
11 avril 2016 à 16:30
Private Sub UserForm_Activate()
' Set the width of the progress bar to 0.
pop.LabelPROGRESS.Width = 0

' Call the main subroutine.
'Call Main
Call allMacros
End Sub


A la fin de ma première macro
PctDone = (5 * 3)
UpdateProgressBar PctDone


A la fin de ma deuxième macro

PctDone = (5 * 5)
UpdateProgressBar PctDone


et ainsi de suite

et dans allMacros

Sub allMacros()

Call supprime
Call Bz
Call Copie
Call coop
Call Rech

PctDone = (10 * 10)
UpdateProgressBar PctDone

Unload pop 'pop est mon userform

End Sub
0