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

Sortir des boucles for, stopper une macro

2 réponses
Avatar
Podgers_95
Voilà mon problème :

J'ai plusieurs boucles "for" imbriqué les unes 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
For d = 1 To 1 + Nb_iteration_D * 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 + Cells(4, d + 2).Value * Nb_iteration_D etc....

Cela peut donc faire des calculs long, trés long.... J'aimerais mettre fin à
ces calculs à n'importe quel moment (quand j'en ai marre d'attendre) en
appuyant sur "ESCAPE" ou "F1" ou sur n'imprte quoi, une touche, un bouton, le
bouton RESET de ma tour....

J'ai essayer ça :
1) -> Application.OnKey "{F1}", "Arret"
mais le saut à la procédure "Arret" ne se fait qu'aprés tous les calculs
effectués.

Et ça :
2) -> On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler

handleCancel:
If Err = 18 Then
a = b = c = d = e = f = g = 6
MsgBox "erreur 18"
Exit Sub
End If

Mais le problème reste le même, l'erreur n'est prise en compte qu'a la
sortie des boucles for, une fois tous les calculs faits !!!


Alors, je sèche, je n'ai plus d'idée ?!
Quelqun à déjà eu ce genre de problème ?
J'attends votre aide !!!

MERCI ;-)

2 réponses

Avatar
Patrick Fredin
Bonjour,

Normalement quand tu appuies sur "Echap" ou "Ctrl+Break", la macro s'arrête.

--
Patrick

"Podgers_95" wrote in message
news:
Voilà mon problème :

J'ai plusieurs boucles "for" imbriqué les unes 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
For d = 1 To 1 + Nb_iteration_D * 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 + Cells(4, d + 2).Value * Nb_iteration_D etc....

Cela peut donc faire des calculs long, trés long.... J'aimerais mettre fin
à
ces calculs à n'importe quel moment (quand j'en ai marre d'attendre) en
appuyant sur "ESCAPE" ou "F1" ou sur n'imprte quoi, une touche, un bouton,
le
bouton RESET de ma tour....

J'ai essayer ça :
1) -> Application.OnKey "{F1}", "Arret"
mais le saut à la procédure "Arret" ne se fait qu'aprés tous les calculs
effectués.

Et ça :
2) -> On Error GoTo handleCancel
Application.EnableCancelKey = xlErrorHandler

handleCancel:
If Err = 18 Then
a = b = c = d = e = f = g = 6
MsgBox "erreur 18"
Exit Sub
End If

Mais le problème reste le même, l'erreur n'est prise en compte qu'a la
sortie des boucles for, une fois tous les calculs faits !!!


Alors, je sèche, je n'ai plus d'idée ?!
Quelqun à déjà eu ce genre de problème ?
J'attends votre aide !!!

MERCI ;-)


Avatar
Clément Marcotte
Bonjour,

a = b = c = d = e = f = g = 6


Si, avec cela, tu veux avoir 7 variables égales à 6, cela ne
fonctionnera pas. Quand VBA (et même VB) rencontre ce genre
d'instruction, il fait un test logique, et il retourne True ou False,
et non une affectation multiple.

Dans ce cas précis, VBA teste si toutes les variables sont toutes
égales à 6.