Erreur 1004 : la méthode Select de la classe Range a échoué
4 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 ?
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
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 ?
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 ?
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" <arnaud@discussions.microsoft.com> a écrit dans le message de news:
8C969789-1D02-4BCB-B4A0-D429C0AA0B86@microsoft.com...
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
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 ?
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 ?
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
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 ?
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
Pour le smilblick :
L'utilisation de la méthode Goto permet aussi de contourner les vicissitudes du
"Select"