[vba-excel] Exécuter sur un classeur une macro externe à ce classeur [Résolu]

didrocks 73 Messages postés samedi 11 janvier 2003Date d'inscription 17 décembre 2007 Dernière intervention - 31 mai 2005 à 16:59 - Dernière réponse : didrocks 73 Messages postés samedi 11 janvier 2003Date d'inscription 17 décembre 2007 Dernière intervention
- 1 juin 2005 à 08:51
Bonjour!
Presque tout est dans le titre! J'aimerais exécuter sur une feuille de mon classeur A.xls (donc sur mes champs de A) une macro appartenant à B.xls.
J'essaie ceci :


Code:
,
----

ThisWorkBook.Application.Run "B.xls!test"

mais la macro s'exécute sur ma feuille B et non sur ma feuille A (représentée par ThisWorkBook)

Le code dans B se compose de :


Code:
,
----

Sub test()
ActiveCell.FormulaR1C1 = "coucou"
Range("C9").Select
End Sub

Avez-vous une idée?
merci par avance!
Afficher la suite 

6 réponses

galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 31 mai 2005 à 22:55
+3
Utile
Et puis il faut travailler dans la même instance d'Excel (sauf pour les macros complémentaires qui une fois activées sont disponibles dansx outes les instances)
Cette réponse vous a-t-elle aidé ?  
galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 31 mai 2005 à 18:01
0
Utile
bonjour,
Dans le classeur B créer un nouveau module (ModuleB)
Coller la macro :
Sub test()
ActiveCell.FormulaR1C1 = "coucou"
Range("C9").Select
End Sub

Dans le classeur A créer un nouveaumodule (ModuleA)
Coller la macro :
Sub lancerBtest()
Application.Run "B.xls!test"
End Sub

Vous pouvez maintenant exécuter les macro de ModuleB à partir de ModuleA

A+
didrocks 73 Messages postés samedi 11 janvier 2003Date d'inscription 17 décembre 2007 Dernière intervention - 31 mai 2005 à 19:30
0
Utile
Merci beaocoup, ça fonctionne!

Maintenant, je voulais compliquer un peu et exécuter ce code, qui
permet d'exécuter la macro test de B.xls dans le le fichier C.xls



Sub lancerBtest()

Dim WorkbookC As Workbook

Set WorkbookC = Application.Workbooks.Open("C:\C.xls")

WorkbookC.Application.Run "B.xls!test"

End Sub



Tout fonctionne, mais je voulais faire qqch d'un peu plus "propre" (ne
pas rendre visible les fichiers une fois ouverts) et pour cela je me
suis inspiré des différents postes sur le forum, ce qui donne le code :



Sub lancerBtest()

Dim xlApp As Excel.Application

Set xlApp = New Excel.Application

xlApp.Workbooks.Open "C:\C.xls"

xlApp.Run "B.xls!test"

xlApp.Quit

End Sub



Cependant, celui-ci ne fonctionne pas et me donne l'erreur à la ligne xlApp.Run "B.xls!test" :



Erreur d'exécution '1004':

'B.xls' est introuvable. Vérifier l'orthographe du nom du classeur et la validité de l'emplacement.



De plus, je ne peux plus lancer le premier code qui me retourne alors
la même erreur jusqu'au redémarrage du PC (en m'étant assuré que tous
les "excels" sont bien fermés).

Sauriez-vous pourquoi ce dernier code ne fonctionne pas?

Merci!

@+
didrocks 73 Messages postés samedi 11 janvier 2003Date d'inscription 17 décembre 2007 Dernière intervention - 31 mai 2005 à 19:37
0
Utile
Je précise juste que tous mes fichiers sont dans le même répertoire
galopin01 133 Messages postés lundi 4 octobre 2004Date d'inscription 14 octobre 2011 Dernière intervention - 31 mai 2005 à 22:43
0
Utile
Ben... y faut que B.xls soit ouvert
... ou bien le passer en xla ?
didrocks 73 Messages postés samedi 11 janvier 2003Date d'inscription 17 décembre 2007 Dernière intervention - 1 juin 2005 à 08:51
0
Utile
ok, donc, c'est impossible avec ce code, tant pis, je trouverai comment masquer tout ça, merci!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.