Procedure en cours: détection click

13 réponses
Avatar
Alf
Bonjour =C3=A0 tous,

Comment d=C3=A9tecter un click de souris quand un calcul dans une proc=C3=
=A9dure est en cours ?
Je voudrais, m'en servir pour arr=C3=AAter le calcul...

Merci pour votre aide =C3=A0 tous
Alf

10 réponses

1 2
Avatar
MichD
Bonjour,
Pourrais-tu donner plus d'explications sur ce que tu tentes de faire? Pour moi, la question
n'est pas claire... Donne-nous un exemple de ce que tu aimerais réaliser.
MichD
"Alf" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf
Avatar
Jacquouille
Bonjour
ben moi, je comprends que le demandeur veut arrêter un calcul en cours au
moyen d'un clic de souris.
Si c'est cela, faudra aller très vite pour clique et doper la souris. -))
Bon WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
oen16m$43h$
Bonjour,
Pourrais-tu donner plus d'explications sur ce que tu tentes de faire? Pour
moi, la question
n'est pas claire... Donne-nous un exemple de ce que tu aimerais réaliser.
MichD
"Alf" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est
en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf
Avatar
MichD
Bonjour,
Si tu fais référence à une formule dans une cellule, on ne peut pas arrêter le calcul de cette
cellule.
Cependant, tu peux passer la feuille en mode de calcul manuel et tu peux à l'aide d'une petite
macro déterminer la plage de cellules que tu veux calculer
Exemple :
Worksheets("Feuil1").Range("A1:A10").Calculate
À chacune des macros, tu peux donner un raccourci clavier (voir dans la fenêtre des macros (
Raccourci clavier ALT + F8 ), tu sélectionnes une macro, clique sur le bouton "Options" et tu
valides la combinaison que tu veux associer à chaque macro.
Si tu as quelques cellules qui ont des formules compliquées et qui sont plus longues à évaluer
pour Excel, tu peux alors les isoler dans une macro.
MichD
"Alf" a écrit dans le message de groupe de discussion :
Le dimanche 7 mai 2017 13:00:30 UTC+2, Alf a écrit :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf

Oui, c'était ça...
mais je disais un click de souris ou autre chose, une combinaison de touches au clavier....
En fait j'aimerais stopper un calcul long, déjà commencé, d'une manière quelconque....
Merci pour vos éclaircissements
Alf
Avatar
MichD
Bonjour,
| Si c'est cela, faudra aller très vite pour clique et doper la souris.
Ou les priver de frites pour quelques semaines!
;-)
MichD
"Jacquouille" a écrit dans le message de groupe de discussion : oen38o$7hg$
Bonjour
ben moi, je comprends que le demandeur veut arrêter un calcul en cours au
moyen d'un clic de souris.
Si c'est cela, faudra aller très vite pour clique et doper la souris. -))
Bon WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
oen16m$43h$
Bonjour,
Pourrais-tu donner plus d'explications sur ce que tu tentes de faire? Pour
moi, la question
n'est pas claire... Donne-nous un exemple de ce que tu aimerais réaliser.
MichD
"Alf" a écrit dans le message de groupe de discussion :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est
en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf
Avatar
isabelle
Le 2017-05-07 à 14:06, MichD a écrit :
Cependant, tu peux passer la feuille en mode de calcul manuel et tu peux à

ou bien ctrl+alt+del
ok...c'est un peu radical
isabelle
Avatar
MichD
Tu sais pourquoi maintenant je disais que ta question n'était pas claire.
Regarde la structure de cette macro, elle fait exactement ce que tu veux.
La macro fait des calculs quelconques pour les besoins de la cause dans une boucle. Tu peux
arrêter la boucle seulement en appuyant sur la touche "Esc".
'-------------------------------------------
Sub test()
Dim A As Double, X As Double
Dim GestionErreur As String
'Au début de la procédure
On Error GoTo GestionErreur
Application.EnableCancelKey = xlErrorHandler
'Le traitement de ta macro
For A = 1 To 1000000000
X = X + ((A * 2) + 4) / 5
Next
Exit Sub
'à la sortie si nécessaire, le message est affiché.
GestionErreur:
MsgBox "Vous avez arrêté l'exécution volontairement!"
End Sub
'-------------------------------------------
MichD
"Alf" a écrit dans le message de groupe de discussion :
Le dimanche 7 mai 2017 13:00:30 UTC+2, Alf a écrit :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf

Merci pour vos réponses,
En fait, je ne fais pas référence à une formule dans une cellule.
Ma macro calcule, une fois lancée, des millions de positions sur une cinématique de véhicule,
mais le fait en mémoire.
Je n'écris quelques positions sur certaines feuilles que lorsqu'elles correspondent à certains
critères...
Le calcul mémoire est long, ça peut aller jusqu'à 1 heure...
Une fois le calcul lancé, je m'aperçois de certaines erreurs dans le paramétrage et c'est
pourquoi je voudrais stopper le processus...
Des Ctrl Alt Del , j'en ai fait des tonnes....
Je cherche un autre moyen moins brutal qui me ramène à ma feuille initiale...
Merci pour votre aide
Avatar
Xonic
peut-etre avec CTRL+PAUSE
Alf a pensé très fort :
Le dimanche 7 mai 2017 13:00:30 UTC+2, Alf a écrit :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est
en cours ? Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf

Merci pour vos réponses,
En fait, je ne fais pas référence à une formule dans une cellule.
Ma macro calcule, une fois lancée, des millions de positions sur une
cinématique de véhicule, mais le fait en mémoire.
Je n'écris quelques positions sur certaines feuilles que lorsqu'elles
correspondent à certains critères...
Le calcul mémoire est long, ça peut aller jusqu'à 1 heure...
Une fois le calcul lancé, je m'aperçois de certaines erreurs dans le
paramétrage et c'est pourquoi je voudrais stopper le processus...
Des Ctrl Alt Del , j'en ai fait des tonnes....
Je cherche un autre moyen moins brutal qui me ramène à ma feuille initiale...
Merci pour votre aide

--
Alain
Avatar
MichD
J'ai omis de mentionner que si tu voulais simplement arrêter l'exécution de la procédure et
avoir l'option de reprendre l'exécution après cet arrêt, tu peux procéder ainsi :
Dans mon exemple, change cette ligne de code
Application.EnableCancelKey = xlErrorHandler
Pour :
Application.EnableCancelKey = xlInterrupt
Lorsque tu appuieras sur la touche Ctrl, la procédure s'arrêtera sur la ligne de code qu'elle
exécute et tu auras une boîte de dialogue d'Excel qui s'ouvrira. Tu auras 3 Options :
A ) Bouton : "Continuer" pour reprendre l'exécution de la macro
B ) Bouton : "Fin" pour mettre fin à l'exécution de la macro
C ) Bouton : "Débogage" en appuyant sur ce bouton, la ligne de code en exécution sera mise en
jaune. Pour relancer l'exécution, emploie le bouton "Exécuter" de la barre standard dans la
fenêtre de l'éditeur de code VBA.
MichD
"MichD" a écrit dans le message de groupe de discussion : oepnsh$co1$
Tu sais pourquoi maintenant je disais que ta question n'était pas claire.
Regarde la structure de cette macro, elle fait exactement ce que tu veux.
La macro fait des calculs quelconques pour les besoins de la cause dans une boucle. Tu peux
arrêter la boucle seulement en appuyant sur la touche "Esc".
'-------------------------------------------
Sub test()
Dim A As Double, X As Double
Dim GestionErreur As String
'Au début de la procédure
On Error GoTo GestionErreur
Application.EnableCancelKey = xlErrorHandler
'Le traitement de ta macro
For A = 1 To 1000000000
X = X + ((A * 2) + 4) / 5
Next
Exit Sub
'à la sortie si nécessaire, le message est affiché.
GestionErreur:
MsgBox "Vous avez arrêté l'exécution volontairement!"
End Sub
'-------------------------------------------
MichD
"Alf" a écrit dans le message de groupe de discussion :
Le dimanche 7 mai 2017 13:00:30 UTC+2, Alf a écrit :
Bonjour à tous,
Comment détecter un click de souris quand un calcul dans une procédure est en cours ?
Je voudrais, m'en servir pour arrêter le calcul...
Merci pour votre aide à tous
Alf

Merci pour vos réponses,
En fait, je ne fais pas référence à une formule dans une cellule.
Ma macro calcule, une fois lancée, des millions de positions sur une cinématique de véhicule,
mais le fait en mémoire.
Je n'écris quelques positions sur certaines feuilles que lorsqu'elles correspondent à certains
critères...
Le calcul mémoire est long, ça peut aller jusqu'à 1 heure...
Une fois le calcul lancé, je m'aperçois de certaines erreurs dans le paramétrage et c'est
pourquoi je voudrais stopper le processus...
Des Ctrl Alt Del , j'en ai fait des tonnes....
Je cherche un autre moyen moins brutal qui me ramène à ma feuille initiale...
Merci pour votre aide
Avatar
MichD
Si tu lances la procédure à partir d'un formulaire dans une fenêtre modale, cela ne
fonctionnera pas, car la fenêtre active n'est pas Excel, mais l'activex "Formulaire". La touche
"Esc" n'est pas enfoncée pendant que l'application Excel est active.
Dans ton exemple, pour que cela fonctionne, ouvre le formulaire dans une fenêtre non modale
comme ceci :
UserForm1.Show 0
MichD
Avatar
MichD
En passant, tu peux rendre invisible ton formulaire pendant l'exécution avec la ligne de code
"userform1.Hide" et à la fin de la procédure "Userform1.show 0 "
MichD
1 2