Arret compteur de façon aléatoire

Résolu
Messages postés
5
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2007
-
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
-
bonjour,
Je suis novice en vba.
j'ai créé une macro en vba sous excel qui affiche a l'infini dans une case la valeur d'une variable qui évolue entre un minimun et un maximum. C'est joli, on a une impression de roulement de nombre.
Je cherche une procedure ou fonction qui, par un click de souris premetrai d'arreter ce compteur.
merci pour votre aide.
mikey17

12 réponses

Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Salut,

Voici :

Sub essai()

       If StopMacro Then Exit sub
  
      Worksheets("feuil1").Select
      For i = 1 To 3000
            Sheets("feuil1").Range("b5").Value = i
      Next i

End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Mikey, je dirais qu'il manque un DoEvents dans ta Sub Essai pour que le système puisse prendre le temps de comprendre ce qui se passe.

Lorsque le programme démarre une boucle, rien ne l'arrête sauf peut-être un DoEvents.

MPi²
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,
exact, à savoir que de toute façon sur 3000 çà ne va pas durer des siècles non plus.....

nb : pas exit sub avant la boucle mais exit for dans la boucle
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Salut,

Ben, voui le code que j'ai donnée est fait pour être mit dans un commandButton...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
5
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2007

bonsoir,


pour ceux que cela peut interressé, j'ai une solution:
il faut créer un userform que j'appellerai userform1,
et un bouton dans ce userform que j'appellerai commandbutton1.

cette partie est a mettre dans un module:



Public stopmacro As Boolean
Dim i As Integer



Sub essai()
      Worksheets("feuil1").Select
      stopmacro = False
      UserForm1.Show

      For i = 1 To 3000
            Sheets("feuil1").Range("b5").Value = i
            If stopmacro = True Then Exit For
           DoEvents
      Next i



End Sub


cette partie est a mettre dans la partie code du commandbutton1:

Private Sub CommandButton1_Click()



stopmacro = True
    
End Sub


Quand on click avec la souris sur le bouton, la procedure commandbutton1_click s'execute et permet l'arret de la macro.

encore merci a vous qui m'avez permis d'arriver à la solution .
mikey17
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Salut,

Ben si tu veux de l'aide, faudrait peut-être nous montrer ta macro, pour voir son code, et ainsi savoir comment on pourrait l'arrêter....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Re,

Quoi que :

Option Explicit

Dim StopMacro As Boolean

Private sub Command1_ClickIf StopMacro Then StopMacro False Else StopMacro True
End sub

Maitenant dans ta macro, ou tu affiches ta variable, tu intercales dans ta boucle la variable StopMacro...
Quand tu cliques dans ton bouton elle passe à True >> Donc "Exit Boucle", et quand tu re-cliques elle passe à False >> Donc tu relances le calcul....Ansi dessuite...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
5
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2007

bonsoir exploreur,
merci beaucoup pour ton aide.
Voici ma macro simplifiée avec ta procedure:

Option Explicit


Dim StopMacro As Boolean
Dim i As Integer


Sub essai()
      Worksheets("feuil1").Select
      For i = 1 To 3000
            Sheets("feuil1").Range("b5").Value = i
            StopMacro
      Next i


End Sub


Private Sub Command1_Click()      If StopMacro Then StopMacro False Else StopMacro True
End Sub

Je ne sais pas comment affecter la varable stopmacro a l'appuie du click de la souris.
merci pour ton aide.
mikey17
 
Messages postés
5
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2007

bonsoir,
un grand merci a vous tous de m'avoir donné un peu de votre temps et résolu mon probleme.
cordialement
mikey17
Messages postés
5
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
18 novembre 2007

bonjour,
dsl je me suis réjoui trop vite,
le compteur s'arrete grace au doevents lorsque j'appuie sur la souris mais la procedure d'exploreur ne s'execute pas,  je n'arrive pas a lier la variable stopmacro avec l'appuie de la souris.
faut-il créer un bouton?
merci pour vos reponses
mikey17
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
Ou alors, et là je n'en sais rien, car je ne fait pas de VBA, voir comment on peut intércepter le click sur ta cellule...Là je pense que MPI pourra t'en dire beaucoup plus que moi...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
Messages postés
4822
Date d'inscription
lundi 11 novembre 2002
Statut
Membre
Dernière intervention
15 novembre 2016
15
De rien...Au plaisir...

A+
Exploreur

 Linux a un noyau, Windows un pépin