Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Arrêter le déroulement d'un programme

5 réponses
Avatar
Noégor
Bonjour,
Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour arrêter
le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
cale...Comment faire pour que le clique sur le STOP agisse dans le programme
en cours de traitement ?

Merci.

Noegor

5 réponses

Avatar
Philippe.R
Bonjour,
Pourrais tu publier le code qui génère les nombres ?
Il sera ainsi plus aisé d'aider.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/web/mpfe
News://news.microsoft.com/microsoft.public.fr.excel
"Noégor" a écrit dans le message de
news:
Bonjour,
Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour
arrêter
le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
cale...Comment faire pour que le clique sur le STOP agisse dans le
programme
en cours de traitement ?

Merci.

Noegor




Avatar
michdenis
Bonjour,

Dans le haut d'un module standard, tu déclares ta variable :

Public Arrêt As Boolean

Dans la procédure de ton bouton Stop, tu insères le code suivant

'----------------------------
Sub Bouton_Stop()
arrêt = true
End Sub
'----------------------------

Dans la procédure qui génère des nombres aléatoires, tu
insères dans ladite boucle les 2 commandes suivantes :
'----------------------------
For a = 1 to XXX
DoEvents
if Arrêt = True then
Arrêt = False
Exit sub
End if

'le reste de ton code
Next
'----------------------------



"Noégor" a écrit dans le message de groupe de
discussion :
Bonjour,
Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour arrêter
le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
cale...Comment faire pour que le clique sur le STOP agisse dans le programme
en cours de traitement ?

Merci.

Noegor
Avatar
Noégor
Merci de votre aide. La réponse de Michdenis fonctionne à merveille, mais
si, en fait je voulais seulement faire une pause, puis pouvoir le relancer
là où il s'est arrêté?
J'ai essayé de remplacer "exit sub" par "Stop" mais ça n'est pas concluant.
Alors comment faire?
Merci

Bien à vous.

Noegor

"michdenis" a écrit dans le message de
news:%
Bonjour,

Dans le haut d'un module standard, tu déclares ta variable :

Public Arrêt As Boolean

Dans la procédure de ton bouton Stop, tu insères le code suivant

'----------------------------
Sub Bouton_Stop()
arrêt = true
End Sub
'----------------------------

Dans la procédure qui génère des nombres aléatoires, tu
insères dans ladite boucle les 2 commandes suivantes :
'----------------------------
For a = 1 to XXX
DoEvents
if Arrêt = True then
Arrêt = False
Exit sub
End if

'le reste de ton code
Next
'----------------------------



"Noégor" a écrit dans le message de


groupe de
discussion :
Bonjour,
Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour


arrêter
le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
cale...Comment faire pour que le clique sur le STOP agisse dans le


programme
en cours de traitement ?

Merci.

Noegor



Avatar
michdenis
Adapte la procédure élaborée en la modifiant comme ceci :

'Déclaration de la variable dans le haut d'un module standard.
Public Arrêt As Boolean

La procédure à faire exécuter par ton bouton émanant de la barre
d'outils Formulaire sur ta feuille de lculca
Le premier clic suspend l'exécution de la macro
le deuxième clic sur le même bouton, relance la macro.

Évidemment, tu dois prévoir une façon pour arrêter définitivement
la macro...cela dépend de l'environnement de ton code...

'------------------------------------
Sub MonBouton()
'MaMacro est le nom du bouton dans ta feuille
Dim Sh As Object
Set Sh = Feuil1.Shapes("MaMacro").OLEFormat.Object
Arrêt = Not Arrêt
If Arrêt = False Then
Sh.Caption = "Suspendre l'exécution de la macro"
Else
Sh.Caption = "Relancer l'xécution de la macro"
End If
End Sub
'------------------------------------

Sub test()
'La grande boucle
For a = 1 To XXX
DoEvents
Do While Arrêt = True
DoEvents
Loop
Next
'Ton code

End Sub
'-------------------------------------------




"Noégor" a écrit dans le message de groupe de
discussion :
Merci de votre aide. La réponse de Michdenis fonctionne à merveille, mais
si, en fait je voulais seulement faire une pause, puis pouvoir le relancer
là où il s'est arrêté?
J'ai essayé de remplacer "exit sub" par "Stop" mais ça n'est pas concluant.
Alors comment faire?
Merci

Bien à vous.

Noegor

"michdenis" a écrit dans le message de
news:%
Bonjour,

Dans le haut d'un module standard, tu déclares ta variable :

Public Arrêt As Boolean

Dans la procédure de ton bouton Stop, tu insères le code suivant

'----------------------------
Sub Bouton_Stop()
arrêt = true
End Sub
'----------------------------

Dans la procédure qui génère des nombres aléatoires, tu
insères dans ladite boucle les 2 commandes suivantes :
'----------------------------
For a = 1 to XXX
DoEvents
if Arrêt = True then
Arrêt = False
Exit sub
End if

'le reste de ton code
Next
'----------------------------



"Noégor" a écrit dans le message de


groupe de
discussion :
Bonjour,
Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour


arrêter
le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
cale...Comment faire pour que le clique sur le STOP agisse dans le


programme
en cours de traitement ?

Merci.

Noegor



Avatar
Noégor
Impeccable et pour arrêter complétement la macro j'ai gardé le bouton Stop
de la 1ère version arrêt.
Merci, je progresse encore un peu.
Noegor
"michdenis" a écrit dans le message de
news:
Adapte la procédure élaborée en la modifiant comme ceci :

'Déclaration de la variable dans le haut d'un module standard.
Public Arrêt As Boolean

La procédure à faire exécuter par ton bouton émanant de la barre
d'outils Formulaire sur ta feuille de lculca
Le premier clic suspend l'exécution de la macro
le deuxième clic sur le même bouton, relance la macro.

Évidemment, tu dois prévoir une façon pour arrêter définitivement
la macro...cela dépend de l'environnement de ton code...

'------------------------------------
Sub MonBouton()
'MaMacro est le nom du bouton dans ta feuille
Dim Sh As Object
Set Sh = Feuil1.Shapes("MaMacro").OLEFormat.Object
Arrêt = Not Arrêt
If Arrêt = False Then
Sh.Caption = "Suspendre l'exécution de la macro"
Else
Sh.Caption = "Relancer l'xécution de la macro"
End If
End Sub
'------------------------------------

Sub test()
'La grande boucle
For a = 1 To XXX
DoEvents
Do While Arrêt = True
DoEvents
Loop
Next
'Ton code

End Sub
'-------------------------------------------




"Noégor" a écrit dans le message de


groupe de
discussion :
Merci de votre aide. La réponse de Michdenis fonctionne à merveille, mais
si, en fait je voulais seulement faire une pause, puis pouvoir le relancer
là où il s'est arrêté?
J'ai essayé de remplacer "exit sub" par "Stop" mais ça n'est pas


concluant.
Alors comment faire?
Merci

Bien à vous.

Noegor

"michdenis" a écrit dans le message de
news:%
> Bonjour,
>
> Dans le haut d'un module standard, tu déclares ta variable :
>
> Public Arrêt As Boolean
>
> Dans la procédure de ton bouton Stop, tu insères le code suivant
>
> '----------------------------
> Sub Bouton_Stop()
> arrêt = true
> End Sub
> '----------------------------
>
> Dans la procédure qui génère des nombres aléatoires, tu
> insères dans ladite boucle les 2 commandes suivantes :
> '----------------------------
> For a = 1 to XXX
> DoEvents
> if Arrêt = True then
> Arrêt = False
> Exit sub
> End if
>
> 'le reste de ton code
> Next
> '----------------------------
>
>
>
> "Noégor" a écrit dans le message de
groupe de
> discussion :
> Bonjour,
> Sous Excel 2003, j'ai un VBA qui génère des nombres aléatoires. Pour
arrêter
> le déroulement de façon intempestive, j'ai cré un bouton STOP et là je
> cale...Comment faire pour que le clique sur le STOP agisse dans le
programme
> en cours de traitement ?
>
> Merci.
>
> Noegor
>