Technique

Macro VBA qui ne fonctionne plus : les 7 causes réelles

Une macro qui fonctionnait depuis des mois et qui s’arrête « sans raison » : c’est l’un des appels que je reçois le plus. La bonne nouvelle, c’est qu’une macro ne tombe jamais en panne toute seule — quelque chose a changé autour d’elle. Voici les sept causes réelles, dans l’ordre où il faut les vérifier.

Cause n°1 : les macros sont bloquées, pas cassées

Depuis 2022, Microsoft bloque par défaut les macros des fichiers venus d’Internet — pièce jointe d’e-mail, téléchargement, dossier partagé. Le fichier s’ouvre normalement, mais un bandeau rouge indique « Risque de sécurité : Microsoft a bloqué l’exécution des macros ».

C’est la cause la plus fréquente aujourd’hui, et ce n’est pas une panne : le code est intact.

La solution : fermez Excel, faites un clic droit sur le fichier → Propriétés → cochez Débloquer en bas de l’onglet Général → OK. Rouvrez le fichier. Si la case n’apparaît pas, le blocage vient d’une stratégie de votre service informatique — c’est avec lui qu’il faut voir, pas avec le fichier.

Cause n°2 : le fichier a été enregistré en .xlsx

Le format .xlsx ne peut pas contenir de macro. Si quelqu’un a fait « Enregistrer sous » en choisissant ce format, Excel a prévenu — mais tout le monde clique trop vite — et le code VBA a été définitivement supprimé du fichier enregistré.

Le diagnostic : regardez l’extension. Une macro vit dans un .xlsm ou un .xlsb. Si votre fichier est un .xlsx, le code n’y est plus. La solution : retrouver une version antérieure au bon format (historique OneDrive/SharePoint, sauvegarde, pièce jointe d’un ancien e-mail), puis réenregistrer en .xlsm.

Cause n°3 : quelqu’un a renommé ou déplacé quelque chose

Une macro écrite vite fait référence en dur à ce qui l’entoure : Sheets("Ventes 2025"), Range("B12"), C:\Compta\export.csv. Renommez l’onglet, insérez une ligne, déplacez le dossier — et la macro s’arrête sur une erreur Subscript out of range ou 1004.

C’est la fragilité la plus courante des macros amateurs. La solution ponctuelle : remettre le nom ou le chemin d’origine. La solution durable : faire réécrire les références en s’appuyant sur les noms de code des feuilles et des tableaux structurés — la macro survit alors aux renommages. C’est typiquement ce que je corrige en diagnostic.

Cause n°4 : une référence manquante

Ouvrez l’éditeur VBA (Alt+F11) → Outils → Références. Si une ligne affiche « MANQUANT : … », la macro dépend d’une bibliothèque qui n’existe pas sur ce poste — souvent après un changement d’ordinateur ou une mise à jour d’Office. Les symptômes sont déroutants : des fonctions basiques comme Date ou Format se mettent à planter.

La solution : décochez la référence marquée MANQUANT, puis testez. Si la macro utilisait réellement cette bibliothèque, il faut soit l’installer, soit adapter le code en liaison tardive.

Cause n°5 : la mise à jour d’Office ou le passage au Mac

Une macro écrite sous Windows peut planter sur Mac : les chemins de fichiers ne s’écrivent pas pareil, certaines bibliothèques n’existent pas, les contrôles ActiveX ne fonctionnent pas du tout. De même, un fichier construit sur une vieille version d’Excel peut buter sur une instruction dépréciée après mise à jour.

Le diagnostic : la macro fonctionne-t-elle encore sur un autre poste ? Si oui, le code n’est pas en cause — c’est l’environnement.

Cause n°6 : les données ont changé, pas le code

La macro attendait des dates en colonne C ; l’export du logiciel métier les met désormais en colonne D, ou en texte au lieu de dates. Le code se déroule sans erreur… et produit des résultats faux, ou s’arrête au milieu.

C’est la cause la plus sournoise, parce que tout le monde cherche dans le code alors que le problème est en amont. Le réflexe : comparez un export récent avec un ancien, colonne par colonne. Un bon programme vérifie ses données d’entrée avant de travailler — c’est l’une des différences entre une macro enregistrée et un code VBA construit proprement.

Cause n°7 : la personne qui savait est partie

Ce n’est pas une cause technique, mais c’est souvent le vrai problème : la macro a été écrite par un stagiaire, un collègue parti depuis, un prestataire injoignable. Personne n’ose y toucher, il n’y a ni commentaire ni documentation, et chaque incident dure des jours.

À ce stade, deux options honnêtes : faire auditer et documenter l’existant, ou faire reconstruire proprement — ce qui coûte souvent moins cher que de s’acharner sur un code illisible.

Dans quel ordre chercher

  1. Le bandeau de blocage (cause 1) — dix secondes
  2. L’extension du fichier (cause 2) — cinq secondes
  3. Le message d’erreur exact et la ligne surlignée en jaune dans l’éditeur (causes 3 et 4)
  4. Le test sur un autre poste (cause 5)
  5. La comparaison des données d’entrée (cause 6)

Notez le message d’erreur exact et le numéro (1004, 424, 91…) : c’est la première chose qu’un professionnel vous demandera, et ça divise le temps de diagnostic par dix.

Votre macro bloque toute l’équipe et vous n’avez pas la main sur le code ? Envoyez-moi le fichier : je vous dis ce qui est cassé, si ça se répare, et à quel prix — fixe, annoncé avant toute intervention.

Discutons de votre fichier Excel

Décrivez-moi votre situation en 2 minutes au téléphone, ou envoyez votre demande : vous recevez une première analyse claire et une estimation sous 24 h.

Réponse sous 24 h · Sans engagement · Devis à prix fixe

Appeler Devis gratuit