Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur 1004 : la méthode Select de la classe Range a échoué

4 réponses
Avatar
arnaud
Bonjour à tous,
Le code suivant ne génère pas cette erreur :
Sub Macro2()
Sheets("Feuil2").Select
Domaine = Range("B1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select

Alors que celui-ci la génère :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheets("Feuil2").Select
Domaine = Range("b1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select / ligne génèrant l'erreur

Pourquoi ?

4 réponses

Avatar
anonymousA
bonjour,

comme ceci ca ira mieux pour le private sub. Ben oui, si la méthode select
focntionne sans le activate pour un module standard, ce n'est plus le cas
pour une private sub de feuille et c'est aussi vrai pour l'affectation d'une
variable.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Domaine = Sheets("Feuil2").Range("b1")
With Worksheets("Feuil3")
.Activate
.Range("A2:A3500").Select
End With

End Sub

A+


Bonjour à tous,
Le code suivant ne génère pas cette erreur :
Sub Macro2()
Sheets("Feuil2").Select
Domaine = Range("B1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select

Alors que celui-ci la génère :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheets("Feuil2").Select
Domaine = Range("b1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select / ligne génèrant l'erreur

Pourquoi ?


Avatar
papou
Bonjour
Pas de réponse mais ta question m'inspire quelques reflexions :
- Il me paraît "dangereux" de faire appel à des feuilles tierces lorsque
l'on se trouve dans un évènement de feuille (en tout cas de la façon dont tu
procèdes)
- Et dans ces conditions quel est donc l'intérêt d'utiliser l'évènement
Change ?
- Il est très rarement indispensable de devoir sélectionner les cellules
Si malgré cela tu as effectivement besoin de cet évènement, alors peut-être
peux-tu utilser une méthode plus "saine" ?
Par exemple :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Domaine As Range
Set Domaine = Sheets("Feuil2").Range("b1")
Domaine.Value = Target.Value
Dim LaPlage As Range
Set LaPlage = Sheets("Feuil3").Range("A2:A3500")
LaPlage.Interior.ColorIndex = 3
End Sub

Cordialement
Pascal

"arnaud" a écrit dans le message de news:

Bonjour à tous,
Le code suivant ne génère pas cette erreur :
Sub Macro2()
Sheets("Feuil2").Select
Domaine = Range("B1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select

Alors que celui-ci la génère :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheets("Feuil2").Select
Domaine = Range("b1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select / ligne génèrant l'erreur

Pourquoi ?


Avatar
arnaud
C'est vrai que c'est beaucoup mieux. Merci.


bonjour,

comme ceci ca ira mieux pour le private sub. Ben oui, si la méthode select
focntionne sans le activate pour un module standard, ce n'est plus le cas
pour une private sub de feuille et c'est aussi vrai pour l'affectation d'une
variable.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Domaine = Sheets("Feuil2").Range("b1")
With Worksheets("Feuil3")
.Activate
.Range("A2:A3500").Select
End With

End Sub

A+


Bonjour à tous,
Le code suivant ne génère pas cette erreur :
Sub Macro2()
Sheets("Feuil2").Select
Domaine = Range("B1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select

Alors que celui-ci la génère :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sheets("Feuil2").Select
Domaine = Range("b1")
Worksheets("Feuil3").Select
Range("A2:A3500").Select / ligne génèrant l'erreur

Pourquoi ?




Avatar
AV
Pour le smilblick :
L'utilisation de la méthode Goto permet aussi de contourner les vicissitudes du
"Select"

Application.Goto Reference:="Feuil3!R1C1:R3500C1"

AV