« L’exécution du code a été interrompue » dans Excel VBA : solutions

En bref :
- Ce message signifie qu’Excel croit que vous avez appuyé sur Ctrl + Pause : la macro est interrompue sur une ligne sans erreur.
- Solution rapide : quand la fenêtre s’affiche, cliquez sur Déboguer puis appuyez deux fois sur Ctrl + Pause, puis F5.
- Solution durable : effacer tous les points d’arrêt (Ctrl + Maj + F9), recompiler, ou exporter/réimporter les modules.
Votre macro fonctionnait, et soudain elle s’arrête à chaque exécution avec « L’exécution du code a été interrompue », toujours sur la même ligne, alors que vous n’avez rien touché. C’est un comportement connu de l’éditeur VBA : d’anciens points d’arrêt « fantômes » ou un état d’interruption resté en mémoire. Voici comment s’en débarrasser.
Comprendre le message
Une macro VBA peut être interrompue volontairement avec Ctrl + Pause (ou Échap). Excel affiche alors ce message et propose Continuer, Fin ou Déboguer. Quand il apparaît sans action de votre part, l’éditeur conserve un ancien point d’arrêt invisible ou un signal d’interruption « collé ».
Solution 1 : la double interruption
- Quand le message apparaît, cliquez sur Déboguer.
- Appuyez deux fois sur Ctrl + Pause (sur les portables sans touche Pause : Ctrl + Fn + B ou Ctrl + Fn + Pause selon le modèle).
- Appuyez sur F5 pour continuer.
Cette manipulation réinitialise souvent l’état d’interruption pour la session.
Solution 2 : effacer les points d’arrêt et recompiler
- Dans l’éditeur VBA (Alt + F11) : Débogage > Effacer tous les points d’arrêt (Ctrl + Maj + F9).
- Débogage > Compiler VBAProject.
- Enregistrez, fermez Excel complètement et rouvrez le fichier.
Solution 3 : exporter et réimporter les modules
Si le problème persiste, le module garde des informations corrompues. Clic droit sur le module > Exporter un fichier (.bas), puis Supprimer le module, et Importer un fichier. Le code est identique, mais nettoyé. Faites de même pour les modules de feuilles en copiant leur code.
Solution 4 : EnableCancelKey (en dernier recours)
Au début de la macro : Application.EnableCancelKey = xlDisabled. Excel ignore alors toute demande d’interruption. Attention : vous ne pourrez plus arrêter une boucle infinie avec Échap ; réservez-le à un code éprouvé, et préférez xlErrorHandler pour gérer l’interruption proprement.
| Solution | Durée de l’effet | Risque |
|---|---|---|
| Double Ctrl + Pause | Session en cours | Aucun |
| Effacer points d’arrêt + compiler | Durable | Aucun |
| Exporter / réimporter | Durable | Faible (sauvegardez avant) |
| EnableCancelKey = xlDisabled | Durable | Impossible d’arrêter une boucle infinie |
Prévenir le problème
- Ajoutez
Option Expliciten tête de chaque module et compilez régulièrement (Débogage > Compiler). - Retirez les points d’arrêt et les
Stopavant de distribuer un classeur. - Sauvegardez vos modules exportés (.bas) : ils servent aussi de copie de secours de votre code.
Cas pratique : une macro de facturation
La macro mensuelle de Romain s’arrête sur une ligne Next i sans erreur. Il efface tous les points d’arrêt, compile le projet et redémarre Excel : le problème disparaît. Par sécurité, il exporte ses modules dans un dossier de sauvegarde.
À lire aussi : quand Excel plante, créer un formulaire Excel, surligner la ligne active avec VBA et numéroter automatiquement des factures.
Questions fréquentes
Que signifie « L’exécution du code a été interrompue » ?
Excel a reçu (ou croit avoir reçu) une demande d’interruption Ctrl + Pause.
Pourquoi ma macro s’arrête sans erreur ?
Des points d’arrêt fantômes ou un état d’interruption bloqué dans l’éditeur.
Comment effacer tous les points d’arrêt VBA ?
Ctrl + Maj + F9 dans l’éditeur VBA.
Comment faire Ctrl + Pause sur un portable ?
Souvent Ctrl + Fn + B ou Ctrl + Fn + Pause selon le modèle.



