Macro externe

Annette

XLDnaute Occasionnel
Bonjour le forum,

Dans le cadre de la finalisation d'un classeur, je souhaiterai savoir si cette chose-là est possible à effectuer, à savoir:

- J'ai un fichier A ouvert qui devrait avoir ses macros activées.
- J'ai un fichier B fermé qui renferme macros et données.

Je souhaite appeler une macro à partir du fichier A vers le fichier B pour que cette dernière (celle du fichier B) influe par le biais de 3 ou 4 processus dans le fichier B sur le fichier A :).
Est-ce possible ?

Merci pour vos réponses.

Cordialement
 

Annette

XLDnaute Occasionnel
Re : Macro externe

Bonjour MJ13,

GRRRRRRrrrrrr ... je m'en doutais un peu, alors dans ce cas est-il possible d'appeler à partir de mon fichier A ouvert une macro située dans mon fichier B fermé pour qu'elle s’exécute dans mon fichier A toujours ouvert ?

Alambiqué, n'est-ce pas ?

Merci pour votre réponse.

Cordialement
 

DoubleZero

XLDnaute Barbatruc
Re : Macro externe

Bonjour, Annette, Michel :D, le Forum,

... est-il possible d'appeler à partir de mon fichier A ouvert une macro située dans mon fichier B fermé pour qu'elle s’exécute dans mon fichier A toujours ouvert...

Pourquoi ne pas placer la macro du fichier B dans les macros personnelles ?

Mais, peut-être n'ai pas bien saisi la difficulté.

A bientôt :)
 

Annette

XLDnaute Occasionnel
Re : Macro externe

MJ13,

C'est une autre piste mais dans ce cas précis elle ne me conviens pas. Merci pour votre suggestion :).
Sinon, avez-vous une idée concernant ma deuxième question en post3 ?

Merci pour vos réponses.

Cordialement
 

david84

XLDnaute Barbatruc
Re : Macro externe

Bonjour Annette

On ne peut pas lancer une macro sur un fichier fermé :confused:.

Il vaudrait donc mieux ouvrir au départ tes 2 fichiers.

Si apparemment c'est possible en utlisant Application.Run (cf.explications ici).
Lorsque l'on appelle la macro placée dans le fichier fermé celui-ci s'ouvre et la macro est exécutée.
Charger les 2 fichiers exemple dans Documents, ouvrir Run_Classeur1 et lancer la macro.
A+
 

Pièces jointes

  • Run_Classeur1.xls
    35.5 KB · Affichages: 26
  • Run_Classeur2.xls
    31.5 KB · Affichages: 29
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Macro externe

Re, Bonjour David

Lorsque l'on appelle la macro placée dans le fichier fermé celui-ci s'ouvre et la macro est exécutée.

Ok, mais si on ouvre le fichier, celui-ci n'est pas fermé. C'est comme quand tu mets un raccourcis macro sur ta barre d'outils rapide. Mais sinon, cela conviendra peut-être à Annette en masquant le dit Ficihier B, ce qui est assez simple à faire :).
 

Annette

XLDnaute Occasionnel
Re : Macro externe

Bonjour David84,

Votre proposition répond presque à ma demande :), donc si je comprends bien, la réponse à ma seconde question est négative ?
En tous cas, merci pour votre suggestion qui je pense mérite d'être creusée :).
Par contre, pourriez-vous m'expliquer pourquoi les macros du classeur2 sont systématiquement activées lors de l'ouverture par le biais du classeur1 ?

Merci pour votre réponse.

Cordialement
 

david84

XLDnaute Barbatruc
Re : Macro externe

Votre proposition répond presque à ma demande , donc si je comprends bien, la réponse à ma seconde question est négative ?
Non puisque Application.Run ouvre le classeur. Tu n'as qu'à faire le test en plaçant dans le module de "classeur1"
Code:
Sub test()
Application.Run "Run_Classeur2.xls!Mon_test"
End Sub

Sub Ma_macro()
MsgBox "au revoir"
End Sub
et dans celui du classeur de "Run_Classeur2"
Code:
Sub Mon_test()
'MsgBox "bonjour"
Application.Run "Classeur1.xls!Ma_macro"
End Sub
et tu le constateras.

Par contre, pourriez-vous m'expliquer pourquoi les macros du classeur2 sont systématiquement activées lors de l'ouverture par le biais du classeur1 ?
Pas compris la question. Par contre j'ai l'impression que tu es en train de monter une usine à gaz alors qu'il y a peut-être plus simple à faire mais pour cela il nous faudrait savoir ce que tu cherches vraiment à faire et pourquoi.
A+
 

Annette

XLDnaute Occasionnel
Re : Macro externe

Bonsoir David84, le forum,

Votre proposition ne correspond pas précisément à ma demande, à savoir:

Le fichier B est systématiquement ouvert lorsque l'appel est effectué à partir du fichier A. Le but de ma deuxième question était de savoir si il était possible d'appeler une macro située dans le fichier B fermé (qui le resterait) et d'agir sur le fichier A. Comme à priori ce n'est pas possible, je pense que je vais creuser votre suggestion .
Pour ma dernière question, mes macros sont par défaut désactivées, donc lorsque j'ouvre un fichier excel, j'ai un avertissement de sécurité. Il en est de même pour vos deux fichiers joints.
Donc:
- Lorsque j'ouvre Run_classeur1 seul, j'ai l'avertissement de sécurité
- Lorsque j'ouvre Run_classeur2 seul, j'ai l'avertissement de sécurité
- Lorsque j'ouvre Run_classeur1 et ensuite Run_classeur2, j'ai l'avertissement de sécurité
- Lorsque j'ouvre Run_classeur2 par le biais de la macro Run_classeur1, je n'ai pas d'avertissement sur le fichier Run_classeur2.

J'aurais souhaité comprendre pourquoi.

Cordialement
 

Annette

XLDnaute Occasionnel
Re : Macro externe

david84,

Merci pour votre réponse.
Cela ne me paraissait pas aussi normal qu'à vous que les macros du fichier B soient automatiquement activées lorsqu'un appel d'une macro du fichier B était effectué à partir du fichier A. Mais soit, j'aurais appris une nouvelle chose ce soir :)

Merci à vous.

Cordialement
 

Discussions similaires

Réponses
2
Affichages
294

Statistiques des forums

Discussions
312 316
Messages
2 087 173
Membres
103 490
dernier inscrit
zatougraf