Arrêter le déroulement d'un programme

Le
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
caleComment faire pour que le clique sur le STOP agisse dans le programme
en cours de traitement ?

Merci.

Noegor
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #21195501
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" 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




michdenis
Le #21195491
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" 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
Noégor
Le #21200281
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" 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"

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



michdenis
Le #21200351
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" 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" 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"

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



Noégor
Le #21201291
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" 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"

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" 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" 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
>


Publicité
Poster une réponse
Anonyme