Pourquoi 1004 ?

Le
Charabeuh
Bonjour,

Pouvez-vous m'indiquer où je pèche ?
(c'est sans doute de ma très grande faute)

sur Excel 2007

Un classeur vierge - Trois feuilles (Feuil1, Feuil2, Feuil3)
Création d'un module1 avec le code :
''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Macro1() 'OK
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Des procédures évènementielles pour feuil1 (activées tour à tour) :

''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range) 'KO
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 'OK
Macro1
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Macro1 fonctionne.

La 1ère procédure évènementielle aboutit à une erreur de type:
"Erreur d'exécution ' 1004':
"La procédure Select de la classe Range a échoué".

La 2ème procédure évènementielle fonctionne.

Même comportement avec les tous les autres évènements.

Pourquoi cette erreur 1004 ?

D'avance merci
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel.C
Le #21327791
Bonjour.
Dans la macro évènementielle, "Range("A1:B10").Select", non qualifié,
fait référence à la feuille où se trouve la procédure évènementielle,
pas à la feuille active, d'où erreur. Essaie :

Private Sub Worksheet_Change(ByVal Target As Range) 'KO
With Sheets("Feuil2")
.Select
Sheets("Feuil2").Range("A1:B10").Select
End With
End Sub

Cordialement.
Daniel

Bonjour,

Pouvez-vous m'indiquer où je pèche ?
(c'est sans doute de ma très grande faute)

sur Excel 2007

Un classeur vierge - Trois feuilles (Feuil1, Feuil2, Feuil3)
Création d'un module1 avec le code :
''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Macro1() 'OK
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Des procédures évènementielles pour feuil1 (activées tour à tour) :

''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range) 'KO
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 'OK
Macro1
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Macro1 fonctionne.

La 1ère procédure évènementielle aboutit à une erreur de type:
"Erreur d'exécution ' 1004':
"La procédure Select de la classe Range a échoué".

La 2ème procédure évènementielle fonctionne.

Même comportement avec les tous les autres évènements.

Pourquoi cette erreur 1004 ?

D'avance merci...
Hervé
Le #21328391
Bonjour,

Dans un bloc With / End With il n'est pas nécessaire de faire référence à
nouveau à l'objet, il faut simplement ne pas oublier le point :

Private Sub Worksheet_Change(ByVal Target As Range)

With Sheets("Feuil2")
.Select
.Range("A1:B10").Select
End With

End Sub


Hervé.


"Daniel.C" news:
Bonjour.
Dans la macro évènementielle, "Range("A1:B10").Select", non qualifié, fait
référence à la feuille où se trouve la procédure évènementielle, pas à la
feuille active, d'où erreur. Essaie :

Private Sub Worksheet_Change(ByVal Target As Range) 'KO
With Sheets("Feuil2")
.Select
Sheets("Feuil2").Range("A1:B10").Select
End With
End Sub

Cordialement.
Daniel

Bonjour,

Pouvez-vous m'indiquer où je pèche ?
(c'est sans doute de ma très grande faute)

sur Excel 2007

Un classeur vierge - Trois feuilles (Feuil1, Feuil2, Feuil3)
Création d'un module1 avec le code :
''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Macro1() 'OK
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Des procédures évènementielles pour feuil1 (activées tour à tour) :

''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range) 'KO
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 'OK
Macro1
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Macro1 fonctionne.

La 1ère procédure évènementielle aboutit à une erreur de type:
"Erreur d'exécution ' 1004':
"La procédure Select de la classe Range a échoué".

La 2ème procédure évènementielle fonctionne.

Même comportement avec les tous les autres évènements.

Pourquoi cette erreur 1004 ?

D'avance merci...




Daniel.C
Le #21328381
Bonjour.
C'est un oubli, ami, comme le montre la ligne du dessus.
Cordialement.
Daniel

Bonjour,

Dans un bloc With / End With il n'est pas nécessaire de faire référence à
nouveau à l'objet, il faut simplement ne pas oublier le point :

Private Sub Worksheet_Change(ByVal Target As Range)

With Sheets("Feuil2")
.Select
.Range("A1:B10").Select
End With

End Sub


Hervé.


"Daniel.C" news:
Bonjour.
Dans la macro évènementielle, "Range("A1:B10").Select", non qualifié, fait
référence à la feuille où se trouve la procédure évènementielle, pas à la
feuille active, d'où erreur. Essaie :

Private Sub Worksheet_Change(ByVal Target As Range) 'KO
With Sheets("Feuil2")
.Select
Sheets("Feuil2").Range("A1:B10").Select
End With
End Sub

Cordialement.
Daniel

Bonjour,

Pouvez-vous m'indiquer où je pèche ?
(c'est sans doute de ma très grande faute)

sur Excel 2007

Un classeur vierge - Trois feuilles (Feuil1, Feuil2, Feuil3)
Création d'un module1 avec le code :
''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub Macro1() 'OK
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Des procédures évènementielles pour feuil1 (activées tour à tour) :

''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub Worksheet_Change(ByVal Target As Range) 'KO
Sheets("Feuil2").Select
Range("A1:B10").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 'OK
Macro1
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''

Macro1 fonctionne.

La 1ère procédure évènementielle aboutit à une erreur de type:
"Erreur d'exécution ' 1004':
"La procédure Select de la classe Range a échoué".

La 2ème procédure évènementielle fonctionne.

Même comportement avec les tous les autres évènements.

Pourquoi cette erreur 1004 ?

D'avance merci...




Charabeuh
Le #21328911
re Bonjour,

Evidemment comme vous l'avez écrit, ça tourne mieux !

Merci bcp à tous les deux,

Char Abeuh
Blaise Cacramp
Le #21330451
"Hervé"
Bonjour,

Dans un bloc With / End With il n'est pas nécessaire de faire référence à
nouveau à l'objet, il faut simplement ne pas oublier le point :

Private Sub Worksheet_Change(ByVal Target As Range)

With Sheets("Feuil2")
.Select
.Range("A1:B10").Select
End With

End Sub


Hervé.



Et non, c'est justement l'erreur 1004 : un objet n'est pas assez clairement
défini, notamment dans ce cas de figure. Quel est est l'objet courant après
le .select ?: une sélection? D'où un probable écueil pour le .range qui n'a
pas d'écho dans le .select

Du moins, je crois ;)
Publicité
Poster une réponse
Anonyme