Utilisation de macro présentes dans un autre classeur Excel

Résolu
cs_Sia72 Messages postés 16 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 24 mai 2013 - 23 mai 2013 à 15:24
cs_Sia72 Messages postés 16 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 24 mai 2013 - 24 mai 2013 à 15:31
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 mai 2013 à 14:17
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
3
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
23 mai 2013 à 17:51
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
0
cs_Sia72 Messages postés 16 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 24 mai 2013
24 mai 2013 à 10:50
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
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
24 mai 2013 à 11:33
0

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

Posez votre question
cs_Sia72 Messages postés 16 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 24 mai 2013
24 mai 2013 à 12:29
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 :'(
0
cs_Sia72 Messages postés 16 Date d'inscription jeudi 12 mai 2011 Statut Membre Dernière intervention 24 mai 2013
24 mai 2013 à 15:31
Merci beaucoup tu m'as été d'une grande aide =)
0
Rejoignez-nous