Interruption Macro

Le
Alf
Bonjour à tous,
Excel 2007

Je voudrais interrompre l’exécution d'une macro par "Esc".
J'utilise le code suivant:
'--
On Error GoTo Fin
Application.EnableCancelKey = xlErrorHandler

'code

Fin:
If Err.Number = 18 Then
MsgBox "Fin", vbCritical, "Calcul"
Else
MsgBox "Erreur " & Err.Description, vbCritical, "Calcul"
End If
'-

Ça marche bien quand je suis dans mon classeur initial.
Quand mon code ouvre et exécute des macros dans d'autres classeurs, en=
tapant sur "Esc", le calcul s'arrête mais il s’arrête en=
mode Debug. Je me retrouve dans le code de la macro du classeur qui s=
exécute

Comment s’arrêter proprement ?
Avec un message, par exemple "Fin"

Merci pour votre aide
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michd
Le #26466929
Bonjour,
Cette gestion d'erreur s'applique à une procédure seulement.
Si cette procédure appelle une autre procédure dans un autre classeur, cette
procédure aussi doit avoir une gestion d'erreur dans le même genre que
celle-ci avec la commande "Exit sub" dans la section "Fin" de la gestion
d'erreur de cette autre procédure. Par conséquent, la procédure appelée
s'arrêtera et la procédure du fichier source se poursuivra à la ligne
suivante.
Je te donne un exemple, c'est plus explicite. Tu peux mettre ce code dans le
même module pour observer le déroulement de l'action.
'------------------------------------------------------------
Sub test()
Dim GestionErreur As String
Dim Erreur As Boolean
On Error GoTo GestionErreur
'le code à exécuter
'Appel de la procédure
Call Procédure_Appelée(Erreur)
'que veux-tu qui se passe, si l'autre
'procédure à été arrêté volontairement
If Erreur = True Then Exit Sub
'le reste du code
GestionErreur:
'ta gestion d'erreur
End Sub
'------------------------------------------------------------
Sub Procédure_Appelée(Erreur As Boolean)
Dim GestionErreur As String
On Error GoTo GestionErreur
'Erreur volontaire
Range("A1").Interior.Color = "toto"
GestionErreur:
'ta gestion d'erreur
Erreur = True
Exit Sub
End Sub
'------------------------------------------------------------
MichD
Michd
Le #26466997
Bonjour,
Tu as ces 2 lignes de code :
Celle-ci pour gérer l'erreur lorsque tu appuies sur ESC
Application.EnableCancelKey = xlErrorHandler
Celle-ci pour empêcher l'usager d'intervenir dans le déroulement de la
procédure en cliquant sur ESC.
Avant d'ouvrir un fichier par VBA, utilise cette ligne de code
Application.EnableCancelKey = xlDisabled
et après l'ouverture remet Application.EnableCancelKey = xlErrorHandler
Je n'ai pas testé, mais je ne vois pas beaucoup d'autres alternatives!
MichD
Publicité
Poster une réponse
Anonyme