OVH Cloud OVH Cloud

Creer un userform "passif" ?

3 réponses
Avatar
Michael BAS
Bonjour tout le monde

Je cherche a savoir s'il est possible de montrer un userform lors du
deroulement d'une macro sans que celle-ci s'arrete pour autant ...
Est-ce possible ?
Merci d'avance !

3 réponses

Avatar
MPi
Salut,

Si tu appelles ta macro à partir du Userform, ça devrait fonctionner.
La macro doit être dans un module et, plutôt que d'appeler la macro
directement, tu appelles UserForm1.Show

Et pour que l'Userform apparaîsse bien, il faut mettre DoEvents

Ex:
Dans la feuille ou dans le module:
Sub AppelDeMacro()
UserForm1.Show
End Sub

Dans l'UserForm:
Private Sub UserForm_Activate()
DoEvents
MaMacro
Unload Me
End Sub

Michel


Bonjour tout le monde

Je cherche a savoir s'il est possible de montrer un userform lors du
deroulement d'une macro sans que celle-ci s'arrete pour autant ...
Est-ce possible ?
Merci d'avance !





Avatar
Michael BAS
Merci cela m'aide déja beaucoup mais je cherche aussi un moyen pour que mon
form
ne soit pas figé pendant l'execution de ma macro.

Je voudrais en fait lui faire dire via un label

10%

20%...

Y'a-t-il un moyen tout en conservant cette méthode ?
Sinon d'autres idées ?
Merci beaucoup.
Salutations
Avatar
MPi
Salut,

Je ne connais pas ta macro et ça peut être difficile d'imaginer un
pourcentage si on sait quand ça commence mais qu'on ne sait pas quand ça
finit...
Voici un bout de code qui utilise un Label et aussi un ProgressBar que tu
peux trouver dans les contrôles supplémentaires

Donc, place ces 2 contrôles sur un userForm et fais ce test. Ensuite, si ça
te plaît, tu pourras toujours l'adapter à ton code. Le code est au plus
simple pour être capable de gérer les pourcentages facilement. Tout le code
va dans l'UserForm et tu l'appelles avec UserForm.Show.

Note: Si tu ne peux pas déterminer quand ça finit, tu peux toujours utiliser
le ProgressBar en le faisant recommencer plusieurs fois.

Option Explicit

Private Sub UserForm_Activate()
DoEvents
MaMacro
Unload Me
End Sub

Sub MaMacro()
Dim I As Integer, J As Integer

For I = 1 To 100
For J = 1 To 100
Range("A1") = I * J
ProgressBar1.Value = I
Label1.Caption = I & " %"
DoEvents
Next
DoEvents
Next
End Sub

Michel


Merci cela m'aide déja beaucoup mais je cherche aussi un moyen pour que mon
form
ne soit pas figé pendant l'execution de ma macro.

Je voudrais en fait lui faire dire via un label

10%

20%...

Y'a-t-il un moyen tout en conservant cette méthode ?
Sinon d'autres idées ?
Merci beaucoup.
Salutations