Erreur 1004 : méthode select

Bonsoir,

Mon code bloque sur "erreur d'éxecution 1004 la méthode select de la classe range a échoué":

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Worksheets("Résultats et Impression").Range("E5:G6,E8:G9,E11:G11,B13:D14,A17:C29,D17:G29,A31:C43,D31:G43,A45:G48").Select
    Worksheets("Résultats et Impression").Range("A45").Activate
    Selection.ClearContents
End Sub

J'aimerai comprendre pourquoi?

Merci d'avance

Bonne soirée

Salut,

Comme tu ne fournis pas de fichier exemple, j’ai été obligé d’en créer un moi-même pour faire mes tests Dans le fichier ci-joint, ton code fonctionne parfaitement. Ton problème doit donc venir par exemple d’une feuille mal orthographiée ou je ne sais quoi. Sans voir ton fichier, c’est pratiquement impossible de t’aider plus.

Tu pourrais simplifier ton code de la manière suivante

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("Résultats et Impression").Range("E5:G6,E8:G9,E11:G11,B13:D14,A17:C29,D17:G29,A31:C43,D31:G43,A45:G48").ClearContents
End Sub

Si en plus tu es sur la feuille "Résultats et Impression" lorsque tu refermes ton fichier, tu pourrais même laisser tomber cette référence.

Et enfin, si tu le désires, tu pourrais encore forcer l’enregistrement automatique de ton fichier lorsque tu le refermes – mais avec les risques que ça comporte – afin qu’Excel ne te demande pas à chaque fois si tu veux enregistrer les dernières modifications apportées par le code.

Cordialement.

142classeur2.zip (8.47 Ko)

Bonjour,

je reviens sur l'idée soumise par yvouille

Et enfin, si tu le désires, tu pourrais encore forcer l’enregistrement automatique de ton fichier lorsque tu le refermes – mais avec les risques que ça comporte – afin qu’Excel ne te demande pas à chaque fois si tu veux enregistrer les dernières modifications apportées par le code.

Le mieux est que tu le fasses à l'ouverture : plus de demande d'enregistrement.

eric

Bonjour,

On ne dira jamais assez que la méthode select sauf très rares execptions est à proscrire avec VBA

Pour revenir à l'erreur 1004, On ne peut pas sélecter directement une cellule dans une feuille qui n'est pas visible (active) à l'écran.

Supposons que tu as un classeur avec 2 feuilles (Feuil1 et Feuil2)

Si "Feuil1" est visible (active) tu ne peux pas exécuter cette macro :

Sub test()
Worksheets("Feuil2").Range("A1").Select
End Sub

Il faut écrire :

Sub test()
Worksheets("Feuil2").Activate
Worksheets("Feuil2").Range("A1").Select
End Sub

Par contre on peut parfaitement lire ou écrire sur une autre feuille sans qu'elle soit visible ni active en utilisant la méthode indiquée plus haut.

C'est une des raisons pour laquelle la méthode Select est à éviter.

A+

Bonjour galopin01, Yvouille et eriiic,

Je vous remercie tous, merci pour les explications, j'ai compris et c'est l'essentiel..

maintenant çà fonctionne à merveille..

Bonne journée à vous

Rechercher des sujets similaires à "erreur 1004 methode select"