Arrêt timer
Bonjour,
Dans l’événement Activate de mon USF j'ai ce code qui permet de faire un timer
Private Sub UserForm_Activate()
Dim timedebut
timedebut = Timer
DoEvents
While Timer < timedebut + 10
DoEvents
Wend
Unload UserForm4
UserForm1.Show
End Sub
J'ai crée un bouton sur cet USF4 qui permet directement de passer à l'USF1 sans attendre les 10sec. Le code ferme l'USF4 et ouvre l'USF1.
Le problème c'est que lorsque je clique sur ce bouton la boucle While ne s'arrête pas et lance l'USF1 une deuxième fois au bout des 10sec.
Comment arrêter la boucle lorsque je clique sur mon bouton ?
Merci de votre aide!
Bonne journée
Re,
Est ce que qqun aurait une solution ?
Salut,
Je ne maitrise pas trop donc il y a surement une solution plus facile, je viens de tester en jouant sur les paramètres Modal mais rien de concluant donc en solution de secours je te propose pour le moment :
1. sur ton userform1 faire un
End
quand tu quittes mais c'est assez dangereux car cela zigouille vraiment tout ce qui est en cours je crois, ça peut mal finir selon ton fichier
2. Faire un paramètre global du genre dans ton userform2:
Public ACTIVE_FORMULAIRE
Private Sub CommandButton1_Click()
Unload UserForm2
UserForm1.Show
End Sub
Private Sub UserForm_Activate()
Dim timedebut
ACTIVE_FORMULAIRE = 2
timedebut = Timer
DoEvents
While Timer < timedebut + 3
DoEvents
Wend
If ACTIVE_FORMULAIRE = 2 Then
Unload UserForm2
UserForm1.Show
End If
End Sub
et ton userform 1:
Private Sub UserForm_Activate()
ACTIVE_FORMULAIRE = 1
End Sub
Cela n’empêche pas ton userform2 de finir sa boucle après que ton DoEvents continue son chemin une fois le userform1 fermé mais vu qu'on a mis le paramètre globale ACTIVE_FORMULAIRE =1, une fois revenu rien ne se passe et si on ne fait rien il vaut toujours 2 donc c'est parti quand même
Après "normalement" les variables globales devraient rester en mémoire tant que tu as les formules d'ouvert mais je ne sais pas trop au bout de 3h ce qui se passe, si quelqu'un s'y connais ça m'intéresse de savoir ça ^^
3. De la même façon que le paramètre globale, tu renseignes une Feuille de DATA dans excel spécifique à ça, en gros (la valeur est arbitraire):
userform2:
Private Sub UserForm_Activate()
Dim timedebut
Sheets("DATA").Cells(1, 1).Value = 0
timedebut = Timer
DoEvents
While Timer < timedebut + 3
DoEvents
Wend
If Sheets("DATA").Cells(1, 1).Value = 0 Then
Unload UserForm2
UserForm1.Show
End If
End Sub
userform 1 :
Private Sub UserForm_Activate()
Sheets("DATA").Cells(1, 1).Value = 1
End Sub
ECG