Ce didacticiel expliquera l'erreur VBA 1004 - Erreur définie par l'application ou définie par l'objet.
L'erreur d'exécution VBA 1004 est connue sous le nom d'erreur définie par l'application ou définie par l'objet qui se produit pendant l'exécution du code. Faire des erreurs de codage (voir notre Guide de gestion des erreurs) fait partie intégrante de l'apprentissage de VBA, mais savoir pourquoi une erreur se produit vous aide à éviter de commettre des erreurs dans le codage futur.
Erreur VBA 1004 - L'objet n'existe pas
Si nous faisons référence à un objet dans notre code tel qu'un nom de plage qui n'a pas été défini, cette erreur peut se produire car le code VBA ne pourra pas trouver le nom.
12345678 | Sous CopyRange()Dim CopyFrom en tant que plageDim CopyTo As RangeDéfinir CopyFrom = Sheets(1).Range("CopyFrom")Définir CopyTo = Sheets(1).Range("CopyTo")CopierDe.CopierCopyTo.PasteSpecial xlPasteValuesFin du sous-marin |
L'exemple ci-dessus copiera les valeurs de la plage nommée « CopyFrom » vers la plage nommée « CopyTo » - à condition bien sûr qu'il s'agisse de plages nommées existantes ! S'ils n'existent pas, l'erreur 1004 s'affichera.
Le moyen le plus simple d'éviter cette erreur dans l'exemple ci-dessus consiste à créer les noms de plage dans le classeur Excel ou à faire référence à la plage au format traditionnel de ligne et de colonne, par exemple : Portée ("A1:A10").
Erreur VBA 1004 - Nom déjà pris
L'erreur peut également se produire si vous essayez de renommer un objet en un objet qui existe déjà - par exemple si nous essayons de renommer Sheet1 mais que le nom que vous donnez à la feuille est déjà le nom d'une autre feuille.
123 | Sous-nom Worksheet()ActiveSheet.Name = "Feuille2"Fin du sous-marin |
Si nous avons déjà un Sheet2, alors l'erreur se produira.
Erreur VBA 1004 - Référencement incorrect d'un objet
L'erreur peut également se produire lorsque vous avez mal référencé un objet dans votre code. Par exemple:
12345678 | Sous CopyRange()Dim CopyFrom en tant que plageDim CopyTo As RangeDéfinir CopyFrom = Range("A1:A10")Définir CopyTo = Range("C1:C10")Plage (Copier à partir de).CopierRange(CopyTo).PasteSpecial xlPasteValuesFin du sous-marin |
Cela nous donnera à nouveau l'erreur 10004
Corrigez le code et l'erreur ne s'affichera plus.
12345678 | Sous CopyRange()Dim CopyFrom en tant que plageDim CopyTo As RangeDéfinir CopyFrom = Range("A1:A10")Définir CopyTo = Range("C1:C10")CopierDe.CopierCopyTo.PasteSpecial xlPasteValuesFin du sous-marin |
Erreur VBA 1004 - Objet introuvable
Cette erreur peut également se produire lorsque nous essayons d'ouvrir un classeur et que le classeur est introuvable - le classeur dans ce cas étant l'objet introuvable.
1234 | Sous OpenFile()Dim wb comme classeurDéfinir wb = Workbooks.Open("C:\Data\TestFile.xlsx")Fin du sous-marin |
Bien que le message soit différent dans la zone d'erreur, l'erreur est toujours 1004.