OVH Cloud OVH Cloud

Forcer une macro à s'arrêter

1 réponse
Avatar
Podgers
Voilà le pbs :

J'ai 12 boucles "for" imbriquée les une derrières les autres :

For a = 1 To 1 + Nb_iteration_A * 5
For b = 1 To 1 + Nb_iteration_B * 5
For c = 1 To 1 + Nb_iteration_C * 5 etc...

somme = Cells(4, a + 2).Value * Nb_iteration_A + Cells(4, b + 2).Value *
Nb_iteration_B + Cells(4, c + 2).Value * Nb_iteration_C + etc...

Donc en fait, cela peux me faire des calculs long, trés long... J'aimerais
en appuyant sur "ESCAPE" ou "F1" quitter toutes les boucles for.

Ma question est donc : comment détecter l'appui sur une touche PENDANT
l'exécution des boucles for ?


J'ai essayer ça :

1) -> Application.OnKey "{F1}", "Arret" mais je vais dans la procédure
"Arret" APRES l'exécution des boucles for


2) -> On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler

handleCancel:
If Err = 18 Then
Exit Sub
End If

mais le problème reste le même, excel fait tout les calculs AVANT de prendre
en compte l'appui sur la touche "ESCAPE"

Alors je ne sais pas comment faire ? QQun à une idée ???

1 réponse

Avatar
Joël GARBE
Sauf erreur de ma part, Escape arrête l'exécution de la macro (ou plutôt
demande si on veut y mettre fin ou la débogguer)...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Podgers" a écrit dans le message de
news:
Voilà le pbs :

J'ai 12 boucles "for" imbriquée les une derrières les autres :

For a = 1 To 1 + Nb_iteration_A * 5
For b = 1 To 1 + Nb_iteration_B * 5
For c = 1 To 1 + Nb_iteration_C * 5 etc...

somme = Cells(4, a + 2).Value * Nb_iteration_A + Cells(4, b + 2).Value *
Nb_iteration_B + Cells(4, c + 2).Value * Nb_iteration_C + etc...

Donc en fait, cela peux me faire des calculs long, trés long... J'aimerais
en appuyant sur "ESCAPE" ou "F1" quitter toutes les boucles for.

Ma question est donc : comment détecter l'appui sur une touche PENDANT
l'exécution des boucles for ?


J'ai essayer ça :

1) -> Application.OnKey "{F1}", "Arret" mais je vais dans la procédure
"Arret" APRES l'exécution des boucles for


2) -> On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler

handleCancel:
If Err = 18 Then
Exit Sub
End If

mais le problème reste le même, excel fait tout les calculs AVANT de
prendre
en compte l'appui sur la touche "ESCAPE"

Alors je ne sais pas comment faire ? QQun à une idée ???