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

Rechercher des sujets similaires à "arret timer"