Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

David590

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin qu'une macro se répète en permanence, j'y suis arrivé avec Application.OnTime mais je n'arrive pas à stopper le chrono, il y a plein de sujet sur le net mais rien y fait, je n'arrive pas à faire ce que je souhaite, cette fonction à l'air assez particulière
J'aimerai aussi qu'il ne soit pas possible de relancer le chrono plusieurs fois lorsqu'il l'est déjà

Merci d'avance pour votre aide

Code:
Sub MaMacro()
(ici ma macro à relancer)
End Sub

Sub Chrono()
Application.OnTime Now + TimeValue("00:00:01"), "MaMacro"
End Sub

Sub StopChrono()
Application.OnTime Now + TimeValue("00:00:01"), "Chrono", , False
End Sub
 
Re : Application.OnTime

Bonsoir BOISGONTIER,

Donc dans mon cas ça serait bien le chronomètre, mais je n'arrive pas a comprendre où est mon erreur,
je n'ai plus de bug quand je lance mon StopChrono mais ça n’arrête toujours pas le chrono

Peut tu jeter un œil dans mon fichier exemple?
 

Pièces jointes

Re : Application.OnTime

voir PJ

Code:
Dim temps
Sub MaMacro()
  MsgBox "1"
  Chrono
End Sub

Sub Chrono()
  temps = Now + TimeValue("00:00:10")
  Application.OnTime temps, "MaMacro"
End Sub

Sub StopChrono()
 On Error Resume Next
 Application.OnTime temps, Procedure:="MaMacro", Schedule:=False
End Sub

JB
 

Pièces jointes

Dernière édition:
Re : Application.OnTime

Super, j'avais presque tout bon lol sauf que javais tous mis a l'envers 😉

Et pour interdire la relance du chrono comme j'avais demandé, ca n'est peut etre pas possible
Existe-t-il quelque chose du genre "si chrono actif alors ..." ?

Car là sur un chrono de 10sec, si je clique 3 fois sur le bouton, j'aurais 3 fois la macro toutes les 10sec !

Mais bon le plus important c’était de faire fonctionner le StopChrono

Merci encore
 
Re : Application.OnTime

Bonsoir
Au StopChrono, après Application.OnTime Temps … Schedule:=False, mettez :
VB:
Temps = Empty
Mettez le aussi dans MaMacro devant l'appel à Chrono qui devra opérer pour qu'elle soit relancée.
Comme ça vous saurez s'il est actif: Le Chrono ne relancera rien si vous y faites d'abord :
VB:
If Not IsEmpty(Temps) Then Exit Sub
 
Dernière édition:
Re : Application.OnTime

Bonjour Dranreb,

Code:
Dim temps

Sub MaMacro()
  MsgBox "1"
  If Not IsEmpty(temps) Then Exit Sub
  Chrono
End Sub

Sub Chrono()
  temps = Now + TimeValue("00:00:05")
  Application.OnTime temps, "MaMacro"
End Sub

Sub StopChrono()
 On Error Resume Next
 Application.OnTime temps, Procedure:="MaMacro", Schedule:=False
 temps = Empty
End Sub

Donc comme ceci?

J'ai l'impression que ca la lance une fois, puis que ça arrête tous
 

Pièces jointes

Re : Application.OnTime

Je verrais ça comme ça en fait :
VB:
Dim Temps

Sub LancerMaMacro()
If Not IsEmpty(Temps) Then Exit Sub
MaMacro
End Sub

Sub StopperMaMacro()
If IsEmpty(Temps) Then Exit Sub
Application.OnTime Temps, Procedure:="MaMacro", Schedule:=False
Temps = Empty
End Sub

Sub MaMacro()
MsgBox "1"
Temps = Now + TimeValue("00:00:05")
Application.OnTime Temps, "MaMacro"
End Sub
Mais évidemment ça ne pourrait pas empêcher un petit malin d'instaurer plusieurs cycles simultanés en lançant directement MaMacro au lieu de la lancer via LancerMaMacro.
 
Re : Application.OnTime

Bonjour à toutes et à tous,

J'ai lu votre fil.
Les classeurs que je vous joins ne sont pas de moi. Ils sont du forum et encore un grand merci.
Ils peuvent peut-être vous être utiles.

Amicalement,
Lionel,
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
508
Réponses
0
Affichages
138
P
Réponses
6
Affichages
1 K
pesca37
P
Retour