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

Résolu
didrocks
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007
- 31 mai 2005 à 16:59
didrocks
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007
- 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!

6 réponses

galopin01
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
31 mai 2005 à 22:55
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
galopin01
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
31 mai 2005 à 18:01
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+
0
didrocks
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007

31 mai 2005 à 19:30
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!

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

31 mai 2005 à 19:37
Je précise juste que tous mes fichiers sont dans le même répertoire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
galopin01
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
31 mai 2005 à 22:43
Ben... y faut que B.xls soit ouvert
... ou bien le passer en xla ?
0
didrocks
Messages postés
73
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 décembre 2007

1 juin 2005 à 08:51
ok, donc, c'est impossible avec ce code, tant pis, je trouverai comment masquer tout ça, merci!
0