Interompre une macro

Résolu
Bonjour,
J'ai un jeu bingo avec un tirage que je lance avec un code
je voudrais mettre 2 bouton, 1 pour interompre ce code et 1 deuximme pour reprendre ce code la ou il a ete inerompu, j'ai essayer avec ctrl+pause et f9 mais cella eface cetaine celulles ce qui ne peut etre le cas
deja je remerci pour les eventuelle reponce
cordialement Dandy_dan

3 réponses

  1. Contributeur
    Bonjour,

    Ce qui serait le plus logique c'est que ton code prévoit l'interruption et la reprise : tu ne crois pas ?
    0
    1. Bonjour,

      Interrompre ou arrêter ?

      Pour interrompre c'est assez simple mais on ne peut pas reprendre à l'aide d'un bouton :
      Private Sub CommandButton1_Click()
        Stop
      End Sub 

      Pour arrêter / redémarrer, il faut prévoir une procédure pour chacun qui mémorise / restitue le contexte (valeur des variables).
      Cordialement
      Patrice
      0
      1. Contributeur
        Salut Patrice,

        Pour interrompre c'est assez simple
        Tu es sûr que ton code va arrêter la procédure qui calcule aléatoirement un tirage ???
        0
      2. Rebonjour;
        ceci est le code qui genere un novaeu monber toutes les 15 seconde
        mon souci est que l'orsqu'un joueur a les 4 coin je dois faire un pause et reprendre le tirage la ou il c'est arrete.
        encore merci pour le temps que vous me consacre

        Dim Interval, x

        Sub Change_Formule()
        ' Touche de raccourci du clavier: Ctrl+k
        Interval = 15 'modifiable
        x = 1
        Call Comptage
        End Sub

        Sub Comptage()
        'adaptez le nom de feuille
        Worksheets("Treking").Range("h5").FormulaLocal = "='blad1'!c" & x
        'incremente pointeur cellule
        x = x + 1
        'sortie
        If x > 90 Then Exit Sub
        'attente relance macro
        Application.OnTime Now + TimeValue("0:00:" & Interval), "Comptage"
        End Sub
        0
    2. Contributeur
      Bonjour,

      Pour tes boutons je te propose ce code à adapter selon ta feuille
      Private Sub CommandButton1_Click() ' stop
          Sheets("Treking").[H6].Value = "stop"
      End Sub
      
      Private Sub CommandButton2_Click() ' go
          Sheets("Treking").[H6].Value = ""
      End Sub
      

      et pour tes procédures
      Sub Comptage()
      'adaptez le nom de feuille
      If Sheets("Treking").Range("H6").Value = "stop" Then
          Application.OnTime (Now + TimeValue("0:00:" & Interval)), "Arrêt"
      Else
          Worksheets("Treking").Range("h5").FormulaLocal = "='blad1'!c" & x
          'incremente pointeur cellule
          x = x + 1
          'sortie
          If x > 90 Then End
          'attente relance macro
          Application.OnTime Now + TimeValue("0:00:" & Interval), "Go"
      End If
      End Sub
      Sub Go()
          Call Comptage
      End Sub
      
      Public Sub Arrêt()
          Call Comptage
      End Sub
      
      

      0
      1. Contributeur
        Bonsoir,

        Tu peux même simplifier ta macro ainsi
        Sub Change_Formule()
        ' Touche de raccourci du clavier: Ctrl+k
        Interval = 15 'modifiable
        x = 1
        Call Comptage
        End Sub
        
        Sub Comptage()
        'adaptez le nom de feuille
        If Sheets("Treking").Range("H6").Value <> "stop" Then
            Worksheets("Treking").Range("h5").FormulaLocal = "='blad1'!c" & x 
            x = x + 1 'incremente pointeur cellule
            If x > 90 Then End    'sortie
        End If
            'attente relance macro
            Application.OnTime Now + TimeValue("0:00:" & Interval), "Comptage"
        End Sub
        0
      2. @gbinformeBonjour;
        desole de repondre si tardivemnet.
        j'ai essayer de copier les code, mais un problemme avec les bouton?
        ca ne fonctionne pas, apparament je dois faire une erreur qulque part, en generale j'utilise des forme et j'ajoute une macro dans set forme, par conter dans ce code nous parlons de bouton, pour les bouton est ce que je dois est une macro ou un code progamme.
        merci de votre patience
        0
      3. Contributeur
        Bonjour;

        j'utilise des forme et j'ajoute une macro
        Alors en utilisant ta méthode, voilà ce que cela peut donner comme code
        Option Explicit
        Dim Interval As Integer, x As Integer, go As Boolean
        
        Sub Change_Formule()
        ' Touche de raccourci du clavier: Ctrl+k
        Interval = 15 'modifiable
        x = 1: go = True
        Call Comptage
        End Sub
        
        Sub arrêt() ' stop
           go = False
        End Sub
        
        Sub lancer() ' go
            go = True
        End Sub
        Sub Comptage()
        'adaptez le nom de feuille
        If go Then
            Worksheets("Treking").Range("h5").FormulaLocal = "='blad1'!c" & x
            x = x + 1    'incremente pointeur cellule
            If x > 90 Then End    'sortie
        End If
            'attente relance macro
            Application.OnTime Now + TimeValue("0:00:" & Interval), "Comptage"
        End Sub


        Le classeur test : https://www.cjoint.com/c/GKpkThl73Yl
        0
      4. @gbinformeBonjour je voudrais vous dire un grand grand merci va fonctionne a merveille
        0
      5. Contributeur
        Merci du retour.
        Si tu stoppes le comptage sans aller jusqu'à 90 tu auras une erreur. Pour sortir proprement il te faudrait une fonction qui arrête le 'ontime'.
        0