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

arrêt d'une macro par appui sur une touche ou un bouton stop

4 réponses
Avatar
Bernard H
Bonjour,
Ma feuille de calcul utilise une macro qui effectue un comptage long. Je =
voudrais que l'utilisateur puisse arr=EAter ce comptage soit par appui =
sur n'importe quelle touche, soit par clic sur un bouton "stop" =
associ=E9 =E0 une macro qui arr=EAte celle du comptage.
Merci pour votre aide
Bernard

d=E9sol=E9 pour les deux fils que j'ai perturb=E9 et merci =E0 Modeste =
pour ses conseils ; premiers pas dans une liste de diffusion !

4 réponses

Avatar
papou
Bonjour
En théorie la touche Echap devrait faire l'affaire.
Ceci étant pour être sûr, ajoute un
Application.EnableCancelKey = xlInterrupt
au début de ta macro
Cordialement
Pascal

"Bernard H" a écrit dans le message de
news:
Bonjour,
Ma feuille de calcul utilise une macro qui effectue un comptage long. Je
voudrais que l'utilisateur puisse arrêter ce comptage soit par appui sur
n'importe quelle touche, soit par clic sur un bouton "stop" associé à une
macro qui arrête celle du comptage.
Merci pour votre aide
Bernard

désolé pour les deux fils que j'ai perturbé et merci à Modeste pour ses
conseils ; premiers pas dans une liste de diffusion !
Avatar
gilbert
Bonjour

essaie ceci

Sub interrompre()
On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler
MsgBox "Cela peut durer pendant une longue période : appuyez ESC pour
annuler"
For x = 1 To 10000000
[a1] = x
Next x

handleCancel:
If Err = 18 Then
MsgBox "Vous avez annulé"
End If
End Sub


salutations

Gilbert
"Bernard H" a écrit dans le message de
news:
Bonjour,
Ma feuille de calcul utilise une macro qui effectue un comptage long. Je
voudrais que l'utilisateur puisse arrêter ce comptage soit par appui sur
n'importe quelle touche, soit par clic sur un bouton "stop" associé à une
macro qui arrête celle du comptage.
Merci pour votre aide
Bernard

désolé pour les deux fils que j'ai perturbé et merci à Modeste pour ses
conseils ; premiers pas dans une liste de diffusion !
Avatar
Bernard H
Merci pour la solution qui fonctionne bien.
Pour poursuivre dans mon application, j'aimerais bien pouvoir faire une pause dans ma macro de comptage, ..et repartir avec même la valeur, sans réinitialiser.
Si tu as une piste, grand merci.
Bernard

"gilbert" a écrit dans le message de news:
| Bonjour
|
| essaie ceci
|
| Sub interrompre()
| On Error GoTo handleCancel
| Application.EnableCancelKey = xlErrorHandler
| MsgBox "Cela peut durer pendant une longue période : appuyez ESC pour
| annuler"
| For x = 1 To 10000000
| [a1] = x
| Next x
|
| handleCancel:
| If Err = 18 Then
| MsgBox "Vous avez annulé"
| End If
| End Sub
|
|
| salutations
|
| Gilbert
| "Bernard H" a écrit dans le message de
| news:
| Bonjour,
| Ma feuille de calcul utilise une macro qui effectue un comptage long. Je
| voudrais que l'utilisateur puisse arrêter ce comptage soit par appui sur
| n'importe quelle touche, soit par clic sur un bouton "stop" associé à une
| macro qui arrête celle du comptage.
| Merci pour votre aide
| Bernard
|
| désolé pour les deux fils que j'ai perturbé et merci à Modeste pour ses
| conseils ; premiers pas dans une liste de diffusion !
|
|
Avatar
gilbert
Bonjour

il suffit de savoir ou en était la variable x au moment de l' arrêt (ici
valeur de la cellule [a1] et de repartir sur une boucle for par exemple :
tu peux au moment de l'arrêt faire apparaître un bouton de reprise du compte

'ici tu mets un bouton dans la feuil et tu lui mets le code suivant

Private Sub CommandButton1_Click()
On Error GoTo handleCancel
Feuil1.CommandButton1.Visible = False
Application.EnableCancelKey = xlErrorHandler
i = [a1].Value
For x = i To 1000000
[a1] = x
Next x
handleCancel:
If Err = 18 Then
MsgBox "Vous avez annulé"
Feuil1.CommandButton1.Visible = True
End If
End Sub

'et la dans un module standard le code suivant et tu lances la macro

Sub interrompre()
On Error GoTo handleCancel
Feuil1.CommandButton1.Visible = False
Application.EnableCancelKey = xlErrorHandler
MsgBox "Cela peut durer pendant une longue période : appuyez ESC pour
annuler"
For x = 1 To 1000000
[a1] = x
Next x

handleCancel:
If Err = 18 Then
MsgBox "Vous avez annulé"
Feuil1.CommandButton1.Visible = True
End If
End Sub

salutations

Gilbert

"Bernard H" a écrit dans le message de
news:
Merci pour la solution qui fonctionne bien.
Pour poursuivre dans mon application, j'aimerais bien pouvoir faire une
pause dans ma macro de comptage, ..et repartir avec même la valeur, sans
réinitialiser.
Si tu as une piste, grand merci.
Bernard

"gilbert" a écrit dans le message de
news:
| Bonjour
|
| essaie ceci
|
| Sub interrompre()
| On Error GoTo handleCancel
| Application.EnableCancelKey = xlErrorHandler
| MsgBox "Cela peut durer pendant une longue période : appuyez ESC pour
| annuler"
| For x = 1 To 10000000
| [a1] = x
| Next x
|
| handleCancel:
| If Err = 18 Then
| MsgBox "Vous avez annulé"
| End If
| End Sub
|
|
| salutations
|
| Gilbert
| "Bernard H" a écrit dans le message de
| news:
| Bonjour,
| Ma feuille de calcul utilise une macro qui effectue un comptage long. Je
| voudrais que l'utilisateur puisse arrêter ce comptage soit par appui sur
| n'importe quelle touche, soit par clic sur un bouton "stop" associé à une
| macro qui arrête celle du comptage.
| Merci pour votre aide
| Bernard
|
| désolé pour les deux fils que j'ai perturbé et merci à Modeste pour ses
| conseils ; premiers pas dans une liste de diffusion !
|
|