180 votes

L'application Excel VBA s'arrête spontanément avec le message "L'exécution du code a été interrompue".

D'après ce que je peux voir sur le web, il s'agit d'une plainte assez fréquente, mais les réponses semblent plus rares. Le problème est le suivant :

Nous avons un certain nombre d'applications Excel VBA qui fonctionnent parfaitement sur les machines de plusieurs utilisateurs. Cependant, sur une machine, elles s'arrêtent sur certaines lignes de code. Il s'agit toujours des mêmes lignes, mais ces lignes semblent n'avoir rien en commun les unes avec les autres.

Si vous appuyez sur F5 (exécuter) après l'arrêt, l'application continue, c'est presque comme si un point d'arrêt avait été ajouté. Nous avons essayé de sélectionner "supprimer toutes les pauses" dans le menu et même d'ajouter une pause et de la supprimer à nouveau.

Nous avons déjà rencontré ce problème avec des applications uniques et nous l'avons résolu en coupant le code des modules, en le compilant puis en le recollant, etc.

Le problème semble désormais lié à Excel lui-même plutôt qu'à un simple fichier .xls, de sorte que nous ne savons pas très bien comment gérer ce problème.

Toute aide serait la bienvenue :)

Merci,

Philip Whittington

2 votes

L'utilisateur appuie-t-il sur "escape" au milieu d'un traitement ? Ou une autre application qui envoie la touche Echap ?

1 votes

Après avoir sélectionné Supprimer tous les points d'arrêt Avez-vous également recompilé et sauvegardé le projet VBA ? J'ai constaté un problème similaire dans Word VBA où des points d'arrêt précédemment supprimés provoquent toujours une rupture.

0 votes

Rien n'est traité pendant l'exécution, shahkalpesh. Divo - merci, je ne les ai peut-être pas essayés précisément dans cet ordre. Je vais le faire maintenant...

479voto

Stan Points 916

J'ai trouvé une deuxième solution.

  1. Appuyez sur le bouton "Debug" dans la fenêtre contextuelle.
  2. Presse Ctrl + Pause|Break deux fois.
  3. Cliquez sur le bouton "play" pour continuer.
  4. Sauvegarder le fichier après l'avoir complété.

18 votes

+1 : Wow, cet article m'a épargné un monde de souffrance. Une solution très inattendue pour un problème bizarre. Après avoir appuyé deux fois sur [Ctrl+Break] et continué, j'ai sauvegardé le fichier. Après cela, le problème n'est plus apparu lorsque j'ai fermé et rouvert le fichier.

0 votes

Merci beaucoup, je devenais fou en essayant d'exécuter des macros et en obtenant cette erreur sur des lignes aléatoires.

1 votes

Cela m'a causé de nombreux problèmes par le passé, j'ai utilisé des codes radicalement différents en pensant que c'était la façon dont j'avais écrit le code. Je viens de le voir réapparaître, j'ai essayé le Ctrl-Break (ou PAUSE sur certains claviers) x2 et hey-presto, c'est redevenu normal. MERCI !!!

17voto

Stan Points 916

Une solution consiste à ici :

La solution à ce problème consiste à ajouter le l "Application.EnableCancelKey = xlDisabled" dans la première ligne de votre macro. Cela résoudra le problème et vous serez en mesure d'exécuter la macro sans obtenir le message d'erreur "L'exécution du code a été interrompue".

Mais après avoir inséré cette ligne de code, je n'ai plus pu utiliser Ctrl+Break. Cela fonctionne donc, mais pas énormément.

0 votes

Merci, Stan - c'est certainement une solution si vous êtes pressé par le temps et que vous voulez juste que ça marche ! Très utile.

1 votes

Vous pouvez le réactiver dans la même exécution en le réglant sur xlInterrupt . (Votre autre réponse a fonctionné pour moi, mais dans le pire des cas, cette solution pourrait être utilisée comme un remède temporaire. Plus d'informations sur Application.EnableCancelKey

3 votes

La bonne réponse - et la seule bonne réponse - est ci-dessus. Insérer tous ligne de code, y compris "Application.EnableCancelKey = xlDisabled" ne fait que déplacer le problème sur une autre ligne. Souvent, le nouveau "point d'arrêt" est exactement la ligne que vous avez insérée. La seule raison pour laquelle je ne descends pas votre réponse est que je l'ai moi-même utilisée à plusieurs reprises au cours de la dernière décennie.

17voto

user2052260 Points 21

Ce problème est dû à une étrange bizarrerie d'Office/Windows.

Après avoir développé le même code VBA et l'avoir exécuté des centaines de fois (littéralement) au cours des deux derniers jours, je viens de rencontrer ce problème. La seule chose qui a changé, c'est que juste avant de rencontrer ce problème déroutant, j'ai accidentellement terminé l'exécution du code VBA avec une méthode peu orthodoxe.

J'ai nettoyé tous les fichiers temporaires, redémarré, etc... Lorsque j'ai relancé le code après tout cela, j'ai toujours eu le problème - avant d'entrer dans la première boucle. Il est logique que "Appuyez sur le bouton "Debug" dans la fenêtre popup, puis appuyez deux fois sur [Ctrl+Break] et après cela, vous pouvez continuer sans vous arrêter. parce que quelque chose dans la combinaison Office/Windows n'a pas libéré l'exécution. Elle est bloquée.

L'action redondante Ctrl+Break résout probablement l'exécution persistante.

13voto

James Points 11

J'ai découvert que le fait d'appuyer sur ctrl+break alors que la macro n'était pas en cours d'exécution réglait le problème.

2voto

Carlito Points 21

J'ai également eu ce problème en utilisant Excel 2007 avec un classeur foobar.xlsm (macro activée) qui obtenait le message "L'exécution du code a été interrompue" en essayant simplement de fermer le classeur sur le X rouge dans le coin droit sans aucune macro en cours d'exécution, ni aucune macro de formulaire, de classeur ou de feuille de travail "initialiser" non plus. Les options que j'ai obtenues étaient "End" ou "Continue", Debug était toujours grisé. J'ai fait ce que m'a suggéré un post précédent : Panneau de configuration->Programmes et fonctionnalités->clic droit sur "Microsoft Office Proffesional 2007" (dans mon cas) ->changer->réparer.

Cela a résolu le problème pour moi. Je dois ajouter que cela s'est produit peu après une mise à jour de MS et que j'ai également trouvé un addin dans Excel appelé "Team Foundation" de Microsoft que je n'ai certainement pas installé volontairement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X