Erreur d'exécution '1004':Classe range échoue
Résolu
Brainster
-
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
pilas31 Messages postés 1825 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis débutant dans la programmation d'Excel et je ne parviens pas à passer par dessus mon problème.
Voici la situation :
J'ai 2 fichiers différents -File1 et File2.
Dans File1 j'ai un bouton qui va exécuter une série de commande dans File2.
Pour bâtir le code du bouton, je me suis servi d'un enregistrement d'une macro.
Cette macro fonctionne très bien lorsqu'elle est lancé à partir de File2. Mais lorsque je l'exécute à parti de mon bouton dans File1 cela ne marche plus et j'obtient cette erreur :
Erreur d'exécution '1004' :
La méthode Select de la classe Range a échoué.
Voici mon code :
Private Sub maj_Click()
Workbooks.Open Filename:= _
"P:\File1.xls"
If Range("M1") = "1" Then
Else
Rows("1:10000").Select
Selection.UnMerge
Range("M1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C2:C10000").Select
Selection.Copy
Range("M2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("C2").Select
ActiveCell.FormulaR1C1 = "=IF(R1C13=1,CONCATENATE(""L"",RC[10]),RC[10])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C10000"), Type:=xlFillDefault
Range("A1").Select
End If
Windows("File2.xls").Activate
...
etc.. le reste est correct.
Le programme arrête au premier "Rows("1:10000").Select"
J'ai ensuite essayé de mettre cette partie en commentaire mais l'erreur survient ensuite pour le prochain "Range" et ainsi de suite.
Avez vous une idée ?
Merci énormément !
p.s. le fichier "File2" sera fréquemment effacer et updaté par une nouvelle version. C'est une sorte de petite base de donnée mis à jour manuellement.
je suis débutant dans la programmation d'Excel et je ne parviens pas à passer par dessus mon problème.
Voici la situation :
J'ai 2 fichiers différents -File1 et File2.
Dans File1 j'ai un bouton qui va exécuter une série de commande dans File2.
Pour bâtir le code du bouton, je me suis servi d'un enregistrement d'une macro.
Cette macro fonctionne très bien lorsqu'elle est lancé à partir de File2. Mais lorsque je l'exécute à parti de mon bouton dans File1 cela ne marche plus et j'obtient cette erreur :
Erreur d'exécution '1004' :
La méthode Select de la classe Range a échoué.
Voici mon code :
Private Sub maj_Click()
Workbooks.Open Filename:= _
"P:\File1.xls"
If Range("M1") = "1" Then
Else
Rows("1:10000").Select
Selection.UnMerge
Range("M1").Select
ActiveCell.FormulaR1C1 = "1"
Range("C2:C10000").Select
Selection.Copy
Range("M2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("C2").Select
ActiveCell.FormulaR1C1 = "=IF(R1C13=1,CONCATENATE(""L"",RC[10]),RC[10])"
Range("C2").Select
Selection.AutoFill Destination:=Range("C2:C10000"), Type:=xlFillDefault
Range("A1").Select
End If
Windows("File2.xls").Activate
...
etc.. le reste est correct.
Le programme arrête au premier "Rows("1:10000").Select"
J'ai ensuite essayé de mettre cette partie en commentaire mais l'erreur survient ensuite pour le prochain "Range" et ainsi de suite.
Avez vous une idée ?
Merci énormément !
p.s. le fichier "File2" sera fréquemment effacer et updaté par une nouvelle version. C'est une sorte de petite base de donnée mis à jour manuellement.
A voir également:
- La méthode select de la classe range a échoué
- Erreur 3005 france tv - Forum TV & Vidéo
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
3 réponses
Bonjour,
Ton code est associé au bouton qui se trouve dans la feuille donc le problème vient certainement de là (c'est le même problème que si la macro était associée à une feuille).
Donc je te propose la solution suivante :
Tu déporte tout ton traitement dans un module de macro (dans VBA en faisant menu Insertion/module).
Tu appelle ta macro par exemple "Traitement".
Dans ton nouveau module tu as donc une macro qui ressemble à ça :
Dans le code de ton bouton tu fais juste appel à cette macro. Ton code bouton ressemble donc à ça :
Voila ça doit marcher ...
A+
Ton code est associé au bouton qui se trouve dans la feuille donc le problème vient certainement de là (c'est le même problème que si la macro était associée à une feuille).
Donc je te propose la solution suivante :
Tu déporte tout ton traitement dans un module de macro (dans VBA en faisant menu Insertion/module).
Tu appelle ta macro par exemple "Traitement".
Dans ton nouveau module tu as donc une macro qui ressemble à ça :
Sub Traitement() Workbooks.Open Filename:= _ "P:\File1.xls" If Range("M1") = "1" Then ... Else ... Rows("1:10000").Select Selection.UnMerge ... End Sub
Dans le code de ton bouton tu fais juste appel à cette macro. Ton code bouton ressemble donc à ça :
Private Sub maj_Click() Call Traitement End Sub
Voila ça doit marcher ...
A+
Tu viens de faire ma journée, ma semaine et tu viens également de me réconcilier avec la programmation dans Excel ! T'as solution fonctionne à merveille et cela vient de régler mon problème !
Ce n'est pas évident d'apprendre cela tout seul et je te remercie de ton aide. C'est grandement apprécié.
Je vais essayer d'aider à mon tour quelqu'un de la communauté !
Merci encore et bonne semaine !
Je passe le sujet à résolu.
Bonne continuation.