Utilisation de macro présentes dans un autre classeur Excel [Résolu]

Signaler
Messages postés
17
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
24 mai 2013
-
Messages postés
17
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
24 mai 2013
-
Bonjour,

Je développe actuellement une application et je rencontre un probleme.
En effet, je souhaite séparer mon application afin d'en faire une générique (avec toute l'intelligence de l'application, avec les principales macros, les relations avec la bdd etc..) et une cliente avec le minimum.
Dans le code, l'application cliente doit donc appeler les macros présentes dans l'application générique.
C'est la que se trouve mon problème, je n'arrive pas a appeler une macro d'un autre classeur xl. J'ai pourtant essayer des solutions trouvées sur le net comme :
'Application.Run "App_generique.xls!Module1.build_req", cont, part_where
Mais a chacun de mes tentatives ( dérivées de celle ci-dessus), un message d'erreur apparait "impossible d'éxécuter la macro. Il est possible qu'elle ne soit pas disponible dans ce claseur ou que toute les macros ont été désactivées".
Or quand je vais dans fichier/option/centre de gestion../Paramètre du centre de gestion.../Paramètre des macros, la case cochée est celle qui les active toutes.

Quelqu'un aurait une idée pour régler mon problème svp?

Cordialement

6 réponses

Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
Je te propose une alternative pour récupérer ta variable:

Dans le classeur où se trouve ta variable:

Sub test()
Dim var As String
var = "hello"
 Range("A1").Value = var
End Sub


Dans le classeur qui récupère la variable:

Sub Bouton1_Clic()
Dim var As String
'Si ton classeur est fermé et que la macro appelée se retrouve dans un module standard :
Application.Run "'C:chemin\Classeur1.xlsm'!test"
var = Range("A1").Value
MsgBox (var)
End Sub


Tu supprimes ensuite la saisie dans A1 sur les 2 classeurs
A toi de l'adapter suivant tes feuilles

@+ Le Pivert
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
Bonjour,

Voici 2 méthodes. L'une avec classeur fermé et l'autre avec classeur ouvert.
Le classeur est nommé Classeur1 et sa macro test:

Sub Bouton1_Clic()
'Si ton classeur est fermé et que la macro appelée se retrouve dans un module standard :
Application.Run "'C:\chemin\Classeur1.xlsm'!test"
End Sub
mettre le chemin entre ' et ' c'est important!!!!!!!!!!!

Sub Bouton2_Clic()
'Même chose, mais si le classeur est déjà ouvert :
Application.Run "Classeur1.xlsm!test"
End Sub


C'est en Excel 2007 pour 2003 mettre l'extension xls

@+ Le Pivert
Messages postés
17
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
24 mai 2013

Bonjour et merci de ta réponse !

Ta solution fonctionne très bien merci !

J'ai néanmoins maintenant un autre soucis, j'apelle la procédure de l'autre classeur parfaitement en lui passant 2 paramètres. Jusqu'ici tout va bien.

Sauf que l'idée et qu'a la fin de la procédure, je récupère la valeur d'un paramètre (placé en ByRef donc) dans le premier classeur et je n'y arrive pas :(. Comment faire pour récupérer la valeur de ce paramètre?

Merci

Cordialement
Messages postés
6985
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
22 octobre 2020
114
Messages postés
17
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
24 mai 2013

Merci encore une fois de ta réponse !

En faite le post que tu as link correspondrait à l'utilisation d'une procédure présente dans un autre classeur, ceci fonctionne pour moi l'éxécution se fait parfaitement.

Je souhaiterai néanmoins récupérer la valeur d'une variable qui est présente dans cette procédure afin de l'utiliser a nouveau dans mon premier classeur.

Mais lorsque je check la valeur au retour dans le premier classeur ( après éxécution de la procédure dans le second) elle est vide :'(
Messages postés
17
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
24 mai 2013

Merci beaucoup tu m'as été d'une grande aide =)