Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Aide pour finaliser macro qui arrête une macro en boucle

  • Initiateur de la discussion Initiateur de la discussion phil77515
  • Date de début Date de début

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 !

P

phil77515

Guest
bonjour a tous

j'aurais besoin d'un petit coup de code pour écrire une macro qui en arrête une autre

j'ai créer une macro qui émet un beep toutes les 3 secondes .

j'ai trouvé une code pour y mettre fin mais ca n'est pas propre

quelqu'un aurait t'il la gentillesse de m'aider

merci par avance

phil
 

Pièces jointes

Bonjour,
Ça peut-être ?
VB:
Option Explicit

Declare Function Beep Lib "kernel32" (ByVal Frequence As Long, ByVal Duree As Long) As Long

Private BeepBeepLeCoyote As Boolean

Sub Beep_open()
    BeepBeepLeCoyote = True
    Call BeepBeep
End Sub

Sub BeepBeep()
    If BeepBeepLeCoyote Then
        Call Beep(1500, 880)
        Application.OnTime Now + TimeValue("00:00:03"), "BeepBeep"
    End If
End Sub


Sub Beep_close()
    If MsgBox("On arrête ?", vbYesNo) = vbYes Then BeepBeepLeCoyote = False
End Sub
 
il n'y avait pas moyen d'y arriver avec ce que j'avais fait ?
Oui, il y a un autre moyen qui est d'annuler le Application.OnTime.
Pour ça il faut mémoriser le "time" du OnTime et sur le Application.OnTime citer le time et la fonction avec l'option Schedule:=False
VB:
Option Explicit

Declare Function Beep Lib "kernel32" (ByVal Frequence As Long, ByVal Duree As Long) As Long

Private RunTime As Variant

Sub Beep_open()
    Call Beep(1500, 880)
    RunTime = Now + TimeValue("00:00:03")
    Application.OnTime EarliestTime:=RunTime, Procedure:="Beep_open", Schedule:=True
End Sub

Sub Beep_close()
    If MsgBox("On arrête ?", vbYesNo) = vbYes Then
        If RunTime <> 0 Then Application.OnTime EarliestTime:=RunTime, Procedure:="Beep_open", Schedule:=False
        RunTime = 0
    End If
End Sub
 
merci dudu2 , j'ai encore besoin d'un peit coup de main
je veux intégrer plusieurs infos dans la boite de message , tout va bien , tant que je n'affiche pas l'heure

' celui ci fonctionne

' If MsgBox("message 1" & vbCrLf & vbCrLf & _
'"On arrête le Beep ?", vbQuestion + vbYesNo, "Titre de la boite de message") = vbYes Then BeepBeepLeCoyote = False


'et la c'est le souk

If MsgBox("message 1" & vbCrLf & vbCrLf & _
Chr(10) & "Il est " & Format(Now(), "hh") & " H et " & Format(Now(), "mm") & " mn.") & _
"On arrête le Beep ?", vbQuestion + vbYesNo, "Titre de la boite de message") = vbYes Then BeepBeepLeCoyote = False

merci
 
VB:
If MsgBox("message 1" & vbCrLf & vbCrLf & _
          "Il est " & Format(Now, "hh\h et mm\m\n") & vbCrLf & vbCrLf & _
          "On arrête le Beep ?", vbQuestion + vbYesNo, "Titre de la boite de message") = vbYes Then BeepBeepLeCoyote = False
 
pourtant la formule fonctionnait tant qu on ne mettait pas un If

MsgBox ("message 1" & vbCrLf & vbCrLf & Chr(10) & "Il est " & Format(Now(), "hh") & " H et " & Format(Now(), "mm") & " mn.") & Chr(10) + "On arrête le Beep ?", vbQuestion + vbYesNo, "Titre de la boite de message"
 
Oui mais quand tu as mis un <If> la syntaxe n'était pas correcte:
VB:
If MsgBox("message 1" & vbCrLf & vbCrLf & _
Chr(10) & "Il est " & Format(Now(), "hh") & " H et " & Format(Now(), "mm") & " mn.") & _
"On arrête le Beep ?", vbQuestion + vbYesNo, "Titre de la boite de message") = vbYes Then BeepBeepLeCoyote = False
Il n'y a pas de ')' après le "mn.".
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
10
Affichages
617
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…