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

Signaler
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007
-
didrocks
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007
-
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!

6 réponses

Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
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)
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 154 internautes nous ont dit merci ce mois-ci

Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
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+
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007

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!

@+
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007

Je précise juste que tous mes fichiers sont dans le même répertoire
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
Ben... y faut que B.xls soit ouvert
... ou bien le passer en xla ?
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007

ok, donc, c'est impossible avec ce code, tant pis, je trouverai comment masquer tout ça, merci!