TL;DR —
Application.DisplayAlerts = Falsedit à Excel de cesser d'afficher ses boîtes de dialogue de confirmation et d'avertissement pendant l'exécution de votre macro, si bien qu'une macro peut supprimer une feuille ou enregistrer par-dessus un fichier sans s'arrêter pour demander à un humain de cliquer sur OK. Le piège, c'est qu'il n'annule pas la question — il y répond avec la réponse par défaut d'Excel, et pour les invites destructrices, cette réponse est « vas-y ». Réactivez-le à l'instant même où la ligne risquée est terminée, et rétablissez-le dans un gestionnaire d'erreurs pour qu'un plantage ne puisse pas laisser les alertes désactivées pendant qu'une invite ultérieure reçoit une réponse automatique :
Sub DeleteSheetQuietly()
Application.DisplayAlerts = False ' Excel ne demandera pas "etes-vous sur ?"
On Error GoTo CleanExit ' pour qu'une erreur ne laisse pas les alertes desactivees
ThisWorkbook.Worksheets("Temp").Delete ' aucune invite - Excel la supprime directement
CleanExit:
Application.DisplayAlerts = True ' reactiver les avertissements aussitot
End Sub
Avant une poignée d'opérations risquées — supprimer une feuille, enregistrer par-dessus un fichier
existant, fermer avec des modifications non enregistrées — Excel s'arrête et affiche une boîte de
dialogue pour s'assurer qu'un humain l'a bien voulu. C'est exactement le bon comportement pour une
personne qui clique çà et là, et exactement le mauvais comportement pour une macro censée s'exécuter du
début à la fin toute seule. DisplayAlerts = False supprime l'interruption. Ce guide repose sur une
seule idée — DisplayAlerts ne fait pas taire l'avertissement, il y répond à votre place avec la
réponse par défaut d'Excel, et pour les invites destructrices, cette réponse est oui. Une fois que
vous le voyez ainsi, vous savez où il a sa place (une invite précise que vous maîtrisez et comprenez)
et où il devient une arme chargée (couvrir toute une macro que vous n'avez pas auditée).
Ce que vous allez apprendre
- Le modèle mental — Excel demande avant les opérations risquées ; cet interrupteur répond avec la valeur par défaut
- Où la réponse par défaut est « oui, détruis-le » — les invites qui deviennent silencieuses et dangereuses
- La règle qui compte le plus — réduisez la fenêtre à la seule ligne qui en a besoin, puis rétablissez
- Pourquoi
DisplayAlerts = Falsen'est pas de la gestion d'erreurs — une erreur d'exécution arrête quand même votre macro - En quoi il diffère de ScreenUpdating, Calculation et EnableEvents
- Quand vous voulez vraiment la boîte de dialogue — et vous tournez plutôt vers MsgBox
Le modèle mental : Excel demande, cet interrupteur répond avec la valeur par défaut
Un petit ensemble d'opérations Excel sont traitées comme des moments « êtes-vous sûr ? ». Supprimez une
feuille de calcul, et Excel vous prévient que c'est définitif. Faites un SaveAs vers un nom de fichier
qui existe déjà, et il demande avant d'écraser. Fermez un classeur avec des modifications non
enregistrées, et il propose d'enregistrer. Chacune de ces opérations affiche une boîte de dialogue
modale et attend un clic.
Application.DisplayAlerts = False dit à Excel de sauter la boîte de dialogue et de continuer avec son
bouton par défaut — celui qui est présélectionné à l'apparition de la boîte. Il ne cache pas la
boîte en mettant en pause ; il choisit une réponse et poursuit. Cette distinction, c'est tout l'article.
Vous ne coupez pas le son d'un rappel agaçant, vous approuvez à l'avance une décision — et la valeur
par défaut d'Excel pour une suppression ou un écrasement, c'est de le faire.
Application.DisplayAlerts = False ' Excel cesse de demander et utilise la reponse par defaut
' ... l'operation risquee s'execute sans boite de dialogue ...
Application.DisplayAlerts = True ' les demandes reprennent
Où la réponse par défaut est « oui, détruis-le »
C'est la partie que les tutoriels « désactiver les messages d'avertissement » sautent. Voici ce que fait réellement la valeur par défaut supprimée :
| Opération | La boîte de dialogue que vous supprimez | Ce que fait DisplayAlerts = False |
|---|---|---|
Worksheets("X").Delete |
« Cette feuille sera définitivement supprimée » | La supprime, sans confirmation |
SaveAs sur un fichier existant |
« Un fichier existe déjà — le remplacer ? » | Écrase l'ancien fichier |
Close avec des modifications non enregistrées |
« Voulez-vous enregistrer ? » | Utilise la valeur par défaut (peut abandonner les modifications) |
| Coller sur des cellules non vides | « Écraser le contenu ? » | Les écrase |
Chacun de ces cas est une situation où l'avertissement existait pour vous protéger, et le désactiver ne rend pas l'opération plus sûre — il la rend silencieuse. Une personne aurait lu la boîte et aurait eu la possibilité de dire non. Votre macro dit oui à toutes, instantanément, sans aucune trace.
La règle qui compte le plus : réduire la fenêtre, puis rétablir
Puisque vous approuvez à l'avance les valeurs par défaut d'Excel, le danger croît avec la durée
pendant laquelle les alertes restent désactivées et la quantité de code qui s'exécute pendant cette
fenêtre. La discipline est l'inverse de celle des interrupteurs de performance, où l'on enveloppe
toute la macro. Avec DisplayAlerts, n'enveloppez que la seule opération qui en a besoin :
' BON - la fenetre ne fait qu'une ligne de large
Application.DisplayAlerts = False
ThisWorkbook.Worksheets("Temp").Delete
Application.DisplayAlerts = True
' ... le reste de la macro s'execute, avertissements reactives ...
' RISQUE - les alertes sont desactivees pour toute la macro
Application.DisplayAlerts = False
' ... 200 lignes, dont chacune peut declencher une invite d'ecrasement ou de suppression ...
Application.DisplayAlerts = True
Dans la version risquée, si une ligne de ce bloc déclenche une invite « enregistrer par-dessus ce
fichier ? » ou « effacer cette plage ? » que vous n'aviez pas anticipée, elle reçoit la réponse « oui »
avant même que vous sachiez que c'est arrivé. Gardez la fenêtre étroite, et protégez-la tout de même
avec On Error GoTo CleanExit, pour que si la ligne risquée elle-même échoue, vous ne laissiez pas les
alertes désactivées pendant que l'invite suivante de la macro est validée automatiquement. Le
rétablissement relève de la même discipline d'étiquette CleanExit que partage tout le cluster — voir
VBA On Error.
Il se réinitialise tout seul — mais ne comptez pas là-dessus
Contrairement à Calculation et EnableEvents,
qui restent désactivés jusqu'à ce que vous — ou un redémarrage — les réactiviez, DisplayAlerts se
remet à True automatiquement quand votre macro se termine et que le contrôle revient à Excel. On
dirait que cela rend la ligne de rétablissement facultative. Ce n'est pas le cas, pour deux raisons :
- Le mal est déjà fait. La réinitialisation automatique survient après la fin de la macro. Si une feuille a été supprimée en silence à la ligne 40, réinitialiser les alertes à la ligne 200 ne la ramène pas.
- C'est la fenêtre qui compte, pas la fin. Entre le « désactiver » et le « retour du contrôle à Excel », chaque invite reçoit une réponse automatique. Une erreur en plein milieu de la macro qui saute votre rétablissement laisse les alertes désactivées pour tout ce qui s'exécute ensuite dans cet appel. Un rétablissement explicite maintient la fenêtre exactement aussi large que vous le vouliez.
Considérez donc la réinitialisation automatique comme un filet de sécurité pour la session, pas comme une raison de sauter la ligne. Rétablissez-le vous-même, juste après l'opération qui exigeait de le désactiver.
Pourquoi ce n'est pas de la gestion d'erreurs
Une confusion fréquente : les gens mettent DisplayAlerts = False en s'attendant à ce que la macro
passe en force malgré une erreur d'exécution — comme s'il supprimait toutes les interruptions. Ce
n'est pas le cas. Il supprime les boîtes de dialogue de confirmation et d'avertissement d'Excel. Une
vraie erreur d'exécution (une 1004 due à une plage incorrecte, une incompatibilité de type, un fichier
introuvable) se déclenche quand même et arrête net votre macro.
Application.DisplayAlerts = False
Workbooks.Open "C:\does-not-exist.xlsx" ' leve quand meme l'erreur d'execution 1004 - desactiver les alertes n'aide pas
Si vous voulez que votre macro survive aux erreurs, c'est le rôle de On Error,
pas celui-ci. DisplayAlerts décide si Excel demande ; On Error décide ce qui se passe quand
quelque chose casse. Deux problèmes différents, deux outils différents.
DisplayAlerts face aux interrupteurs qu'on lui associe souvent
Vous verrez DisplayAlerts = False en tête d'une macro à côté de ScreenUpdating et de Calculation,
et il est tentant de les ranger tous sous « le passe-partout qu'on met pour accélérer les choses ». Ce
ne sont pas des choses de même nature :
- ScreenUpdating est cosmétique — au pire, une fenêtre d'apparence figée qu'un redémarrage corrige.
- Calculation concerne la justesse des nombres — laissé désactivé, il affiche des valeurs périmées.
- EnableEvents concerne la justesse des événements — laissé désactivé, les gestionnaires du classeur cessent de se déclencher.
DisplayAlertsconcerne les décisions — il fait qu'Excel s'engage dans des actions destructrices sans demander.
Et c'est le seul qui, tout en se corrigeant généralement de lui-même, peut causer des dégâts irréversibles à l'intérieur de la fenêtre. Les autres échouent bruyamment (écran figé) ou en silence mais de façon récupérable (un recalcul corrige les nombres périmés). Une feuille supprimée alors que les alertes étaient désactivées est tout simplement perdue.
Comment ExcelMaster aide
DisplayAlerts tient en une ligne, mais bien l'utiliser suppose de réduire la fenêtre à la seule
opération qui en a besoin, de le rétablir dans un gestionnaire d'erreurs, et de ne jamais le confondre
avec de la gestion d'erreurs ni avec un interrupteur fourre-tout « rends ma macro silencieuse ». Cela
fait beaucoup de jugement pour une propriété que les gens collent en tête de chaque macro.
ExcelMaster écrit la version
prudente par défaut. Demandez-lui de « supprimer les feuilles temporaires sans les fenêtres de
confirmation », et il désactive les alertes autour de ces seules suppressions, les rétablit dans un
gestionnaire CleanExit, et laisse le reste de la macro avec ses avertissements intacts — vous obtenez
ainsi l'exécution sans surveillance sans approuver en silence à l'avance chaque invite qu'Excel aurait
levée.
Questions fréquentes
Que fait Application.DisplayAlerts = False en VBA ?
Cela dit à Excel de cesser d'afficher ses boîtes de dialogue de confirmation et d'avertissement pendant
l'exécution de votre macro et de continuer plutôt avec la réponse par défaut de chaque boîte. Les
opérations qui demanderaient normalement — supprimer une feuille, écraser un fichier sur SaveAs,
fermer avec des modifications non enregistrées — se font sans invite. Il ne masque pas les erreurs
d'exécution, seulement les alertes intégrées d'Excel.
Dois-je remettre DisplayAlerts à True ?
Excel le remet à True automatiquement à la fin de la macro, vous ne le laisserez donc pas désactivé
d'une session à l'autre. Mais vous devriez tout de même le rétablir explicitement, juste après
l'opération qui exigeait de le désactiver, car chaque invite levée pendant qu'il est désactivé reçoit
une réponse automatique. Placez le rétablissement dans un gestionnaire d'erreurs
(On Error GoTo CleanExit) pour qu'un plantage en plein milieu de la macro ne puisse pas laisser les
alertes désactivées pour tout ce qui s'exécute ensuite.
DisplayAlerts = False empêche-t-il ma macro de planter sur les erreurs ?
Non. Il supprime les boîtes de dialogue de confirmation et d'avertissement d'Excel, pas les erreurs
d'exécution de VBA. Un chemin de fichier incorrect, une plage invalide ou une incompatibilité de type
déclenche quand même une erreur et arrête la macro. Pour gérer les erreurs, utilisez
On Error — c'est un mécanisme distinct de DisplayAlerts.
Pourquoi ma feuille a-t-elle été supprimée ou mon fichier écrasé sans avertissement ?
Parce que DisplayAlerts = False était actif, donc Excel a utilisé la réponse par défaut pour l'invite
« êtes-vous sûr ? » — et pour supprimer une feuille ou écraser un fichier, la valeur par défaut est de
le faire. Réduisez la fenêtre pour que les alertes ne soient désactivées qu'autour de la seule opération
que vous visez, et réactivez-les immédiatement après.
Quelle est la différence entre DisplayAlerts, ScreenUpdating et Calculation ?
Ils contrôlent des choses différentes. DisplayAlerts décide si Excel demande avant les opérations
risquées. ScreenUpdating arrête les redessins de l'écran (cosmétique).
Calculation arrête le recalcul des formules (le laisser désactivé affiche
des nombres périmés). On les règle souvent ensemble, mais oublier chacun coûte quelque chose de très
différent.
Testé dans
Testé dans : Excel 365 (Windows 11), VBA 7.1 — dernière vérification le 18/08/2026.
Guides associés : VBA StatusBar · VBA DoEvents · VBA ScreenUpdating · VBA On Error · VBA MsgBox
