Erreur d'exécution '1004':Classe range échoue

Résolu/Fermé
Brainster - 30 nov. 2009 à 21:15
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 2 déc. 2009 à 14:08
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.

3 réponses

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
2 déc. 2009 à 11:38
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 :

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+
5
Salut Pilas31,

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 !
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643 > Brainster
2 déc. 2009 à 14:08
Merci et bienvenu parmi les helpeurs si tu fais ce choix (tu peux t'inscrire)

Je passe le sujet à résolu.

Bonne continuation.
0