Erreur 1004
C'est l'erreur VBA la plus fréquente, et la plus frustrante, car son message ne dit presque rien. « Erreur définie par l'application ou par l'objet » signifie simplement qu'Excel a refusé une action. Voici les causes les plus courantes, et comment les corriger.
Télécharger la fiche PDF gratuiteSans inscription, mise en page prête à imprimer01Le message
Erreur d'exécution 1004 : Excel ne peut pas réaliser l'action demandée sur un objet (une plage, une feuille, un classeur). Le libellé exact varie selon la cause.
Cliquez sur Débogage : la ligne fautive est surlignée en jaune. Comparez-la aux causes ci-dessous.
02Les causes les plus fréquentes
| Ligne en cause | Pourquoi | Correction |
|---|---|---|
Worksheets("Ventes").Range(Cells(1, 1), Cells(5, 2)) | les Cells désignent la feuille active, pas Ventes | qualifier : ws.Cells(1, 1) |
Worksheets("Ventes").Range("A1").Select | on ne sélectionne pas sur une feuille inactive | ne pas sélectionner, agir directement |
.Formula = "=SOMME(A1:A5)" | Formula attend l'anglais | "=SUM(A1:A5)" ou .FormulaLocal |
ws.Name = "Janvier" | ce nom de feuille existe déjà | vérifier ou choisir un autre nom |
Cells(0, 1) | la ligne 0 n'existe pas | vérifier le calcul du numéro de ligne |
Workbooks.Open "C:\...\fichier.xlsx" | chemin ou nom de fichier introuvable | vérifier avec Dir(chemin) <> "" |
| écriture dans une cellule | la feuille est protégée | ws.Unprotect avant, ws.Protect après |
03Exemple corrigé
' Plante si la feuille Ventes n'est pas active Worksheets("Ventes").Range(Cells(2, 1), Cells(10, 4)).ClearContents ' Fonctionne quelle que soit la feuille active Dim ws As Worksheet Set ws = Worksheets("Ventes") ws.Range(ws.Cells(2, 1), ws.Cells(10, 4)).ClearContents
Déclarez une variable feuille (Set ws = ...) en début de macro et préfixez toutes vos références avec ws. ou un bloc With. La macro ne dépend plus de ce qui est affiché à l'écran.
04Pièges à éviter
Ne relancez pas la macro en modifiant des lignes au hasard : lisez la ligne jaune, identifiez l'objet concerné (plage, feuille, classeur), puis vérifiez qu'il existe et qu'il est accessible.
Un On Error Resume Next fait disparaître le message mais pas le problème. Corrigez la cause.
05Questions fréquentes
Que signifie l'erreur 1004 en VBA ?
Erreur d'exécution 1004 : Excel ne peut pas réaliser l'action demandée sur un objet (une plage, une feuille, un classeur). Le libellé exact varie selon la cause.
Quel est le piège le plus fréquent avec l'erreur 1004 ?
Corriger au hasard. Ne relancez pas la macro en modifiant des lignes au hasard : lisez la ligne jaune, identifiez l'objet concerné (plage, feuille, classeur), puis vérifiez qu'il existe et qu'il est accessible.
La fiche « Erreur 1004 » est-elle gratuite ?
Oui. La fiche est en accès libre et gratuit, sans inscription : vous pouvez la lire en ligne et télécharger sa version PDF. Elle fait partie du cours VBA gratuit de mesetudesdecas.fr, qui compte 21 fiches.
Passez de la fiche à la mise en situation
Les études de cas mesetudesdecas.fr placent vos apprenants face à un vrai besoin d'entreprise. L'étude de cas XL-05 fait automatiser un devis commercial de bout en bout, macros comprises, avec énoncé, corrigé et pas-à-pas du formateur.
Découvrir l'étude de cas XL-05Toutes les fiches du cours VBA gratuit
Voir aussi le cours gratuit sur les formules Excel
Fiche V1.2 | Dernière mise à jour : 29/10/2026 | Clément Delobel, formateur Excel et VBA