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
Re : Comment sortir d'une macro qui boucle indéfiniment
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
Ajout : si ça marche impect, c'est que j'ai dit une bétise
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.
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 . 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