Comment sortir d'une macro qui boucle indéfiniment

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour à tous,

Je me tourne vers vous pour dans l'espoir de trouver une réponse

dans le fichier joint, j'ai réalisé une horloge qui démarre correctement en cliquant sur le bouton adéquat

............................mais qui ne s'arrête pas en cliquant sur l'autre bouton

c'est sans doute un problème de transfert de valeur (sortie) entre les deux procédures mais je ne vois pas comment solutionner le problème

bonne soirée à tous
Merci d'avance pour vos réponses
Philippe
 

Pièces jointes

  • 0horloge.xls
    32.5 KB · Affichages: 95

tototiti2008

XLDnaute Barbatruc
Re : Comment sortir d'une macro qui boucle indéfiniment

Bonjour phlaurent,

peut-être comme ça :

Code:
Dim sortie
Sub Bouton6_QuandClic()
Dim i
sortie = 1
For i = 1 To 86400
If sortie = 0 Then Exit Sub
Range("A1").Value = Now
Application.Wait Now + TimeValue("00:00:01")
DoEvents
Next i
End Sub
 
Sub Bouton7_QuandClic()
sortie = 0
End Sub

pour que tu puisses modifier la valeur de sortie, la variable doit exister dans les 2 Sub et donc être déclarée un niveau au-dessus. Le DoEvents permet de donner la main à l'utilisateur de temps en temps
 

JNP

XLDnaute Barbatruc
Re : Comment sortir d'une macro qui boucle indéfiniment

:eek:Bonjour PhLaurent55, TotoTiti2008 :),
Il me semble, mais je peux me tromper, que DoEvents marche qu'avec While. De plus, Sortie doit être déclarée publique. De toute façon
Code:
Public Sortie As Boolean
Sub Bouton6_QuandClic()
Sortie = False
While Sortie = False
Range("A1").Value = Now
Application.Wait Now + TimeValue("00:00:01")
DoEvents
Wend
End Sub
Sub Bouton7_QuandClic()
Sortie = True
End Sub
fonctionne (testé avec le fichier).
Bonne fin de journée :cool:
Ajout : si ça marche impect, c'est que j'ai dit une bétise
 

tototiti2008

XLDnaute Barbatruc
Re : Comment sortir d'une macro qui boucle indéfiniment

Bonjour à tous,

Il me semble, mais je peux me tromper, que DoEvents marche qu'avec While.

Personnellement, j'ai souvent utilisé DoEvents dans des boucles Do Loop et je n'ai jamais eu de soucis...

De plus, Sortie doit être déclarée publique.

La variable Sortie ne doit être déclarée en publique (en haut d'un module, sinon ça ne marche pas) que si l'on souhaite accéder à sa valeur de tout le projet (tous les modules, toutes les "feuilles de code").
Ici on travaille dans une feuille du classeur et par conséquent, le mot Public et le mot Dim doivent avoir le même sens : variable accessible à toute la feuille de code, mais pas plus loin... enfin c'est ce que je crois.
 

JNP

XLDnaute Barbatruc
Re : Comment sortir d'une macro qui boucle indéfiniment

Bonsoir à tous :),
Tototiti2008 : C'est bien ce que j'avais ajouté : j'ai dit une bétise :D. Bon j'aurais du dire : 2 bétises... C'est vrai que j'ai pris l'habitude d'utiliser Public, je ne savais pas que Dim pouvait être utilisé dans un module pour plusieurs macros, mais comme j'utilise souvent plusieurs modules... Pour le DoEvents, c'était par rapport à un message d'erreur que j'avais eu avec une boucle en For I = 1 To ... Next, mais j'avais du faire une fausse manip...
Bref, merci de tes remarques qui m'ont enrichi ;).
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 230
Messages
2 086 427
Membres
103 207
dernier inscrit
Michel67