Appel de procédures VBA dans un autre classeur

Le
lylo
Bonjour,

J'ai deux classeurs Excel, chacun contient une srie de procdures
VBA.

Je voudrais, partir du classeur 2 pouvoir lancer la macro contenue
dans le classeur 1, et lancer l'instruction suivante de la macro du
classeur 2.

J'ai tap le code suivant dans la macro du classeur 2 :

Workbooks.Open FileName:="Classeur1.xls"
Application.Run " Classeur1.xls!Traiter.Principale"

La macro Principale du classeur 1 s'execute bien, mais le
problme, c'est que l'instruction suivante de la macro du classeur
2 ne s'execute pas.

Comment redonner la main la macro du classeur 2 ?

Merci
Vos réponses
Trier par : date / pertinence
anonymousA
Le #2971951
bonjour,

normalement, la macro contenue dans le fichier 2 devrait retrouver la main.
Ceci dit, dans ce qui suit je te fais part de mes constations dans certains
cas de figure. A voir si celles-ci s'appliquent à ton cas.

'***********************************************************************************************************************************
'PROBLEMES D'INTERRUPTION DE MACRO
'**********************************************************************************************************************************
'je ne sais pas sous quelle version d'Excel tu es et je ne suis pas sur que
'l 'exemple ci-dessous s'applique exactement à ta question mais on verra bien.
'
'Sous Excel 2000, ce que j'ai pu constater c'est que si on ouvre un fichier ,
'appelons le fichier 2( par une macro d'un autre fichier , appelons le fichier
'1) , et que si ce fichier 2 possède des macros automatiques d'ouverture et
'de fermeture , et que dans ces macros du fichier 2, on écrive une instruction
'de fermeture du fichier 2, alors l'exécution de la macro du fichier 1
's 'interrompt.
'
'Exemple. Soit un fichier appelé tata.xls qui possède la macro suivante

'Sub LAUNCH()
'Workbooks.Open "D:toto.xls"
'MsgBox "c'est fini"
'End Sub
'
''et que dans le fichier toto.xls on ait 2 macros dans le module thisworkbook
'
'Private Sub Workbook_BeforeClose(Cancel As Boolean)
'MsgBox "je me ferme"
'End Sub
'
'Private Sub Workbook_Open()
'MsgBox "c'est moi"
'ThisWorkbook.Close
'End Sub

'ce qui va se passer si on lance la Sub LAUNCH, c'est qu'on aura bien les
'deux messages MsgBox "c'est moi" et MsgBox "je me ferme" mais jamais le
'Message
'msgbox "c'est fini", ce qui montre bien que c'est la fermeture de toto qui
'fait interrompre la macro LAUNCH, alors pourtant que toto ne possède aucune
'instruction à priori permettant celà.
'
'Je ne suis donc pas sur que ce que je dis plus haut est une réplique même
'approximative de ce que tu décris.
'Ceci dit, il m'encline à penser que si tu as une macro principale qui ouvre
'des fichiers, il faut que ce soit cette macro qui les ferme aussi ( donc
'supprimer l 'ordre de fermeture du fichier X par lui même si c'est le cas ) ,
'car dans ce cas, l'exécution de la macro prinicpale sera complète.

A+


Bonjour,

J'ai deux classeurs Excel, chacun contient une série de procédures
VBA.

Je voudrais, à partir du classeur 2 pouvoir lancer la macro contenue
dans le classeur 1, et lancer l'instruction suivante de la macro du
classeur 2.

J'ai tapé le code suivant dans la macro du classeur 2 :

Workbooks.Open FileName:="Classeur1.xls"
Application.Run " Classeur1.xls!Traiter.Principale"

La macro « Principale » du classeur 1 s'execute bien, mais le
problème, c'est que l'instruction suivante de la macro du classeur
2 ne s'execute pas.

Comment « redonner la main » à la macro du classeur 2 ?

Merci




lylo
Le #2969251
Bonjour,
C'est tout à fait ça.
Et la solution préconisée a marché (suppression de la fermeture du
classeur par lui-même, fermeture du classeur 2 par une ligne de code
dans le classeur 1)

Merci encore !

lylo




bonjour,

normalement, la macro contenue dans le fichier 2 devrait retrouver la mai n.
Ceci dit, dans ce qui suit je te fais part de mes constations dans certai ns
cas de figure. A voir si celles-ci s'appliquent à ton cas.

'************************************************************************ ***********************************************************
'PROBLEMES D'INTERRUPTION DE MACROS
'************************************************************************ **********************************************************
'je ne sais pas sous quelle version d'Excel tu es et je ne suis pas sur q ue
'l 'exemple ci-dessous s'applique exactement à ta question mais on verr a bien.
'
'Sous Excel 2000, ce que j'ai pu constater c'est que si on ouvre un fichi er ,
'appelons le fichier 2( par une macro d'un autre fichier , appelons le fi chier
'1) , et que si ce fichier 2 possède des macros automatiques d'ouvert ure et
'de fermeture , et que dans ces macros du fichier 2, on écrive une inst ruction
'de fermeture du fichier 2, alors l'exécution de la macro du fichier 1
's 'interrompt.
'
'Exemple. Soit un fichier appelé tata.xls qui possède la macro suivan te

'Sub LAUNCH()
'Workbooks.Open "D:toto.xls"
'MsgBox "c'est fini"
'End Sub
'
''et que dans le fichier toto.xls on ait 2 macros dans le module thiswork book
'
'Private Sub Workbook_BeforeClose(Cancel As Boolean)
'MsgBox "je me ferme"
'End Sub
'
'Private Sub Workbook_Open()
'MsgBox "c'est moi"
'ThisWorkbook.Close
'End Sub

'ce qui va se passer si on lance la Sub LAUNCH, c'est qu'on aura bien les
'deux messages MsgBox "c'est moi" et MsgBox "je me ferme" mais jamais le
'Message
'msgbox "c'est fini", ce qui montre bien que c'est la fermeture de toto q ui
'fait interrompre la macro LAUNCH, alors pourtant que toto ne possède a ucune
'instruction à priori permettant celà.
'
'Je ne suis donc pas sur que ce que je dis plus haut est une réplique m ême
'approximative de ce que tu décris.
'Ceci dit, il m'encline à penser que si tu as une macro principale qui ouvre
'des fichiers, il faut que ce soit cette macro qui les ferme aussi ( donc
'supprimer l 'ordre de fermeture du fichier X par lui même si c'est le cas ) ,
'car dans ce cas, l'exécution de la macro prinicpale sera complète.

A+


Bonjour,

J'ai deux classeurs Excel, chacun contient une série de procédures
VBA.

Je voudrais, à partir du classeur 2 pouvoir lancer la macro contenue
dans le classeur 1, et lancer l'instruction suivante de la macro du
classeur 2.

J'ai tapé le code suivant dans la macro du classeur 2 :

Workbooks.Open FileName:="Classeur1.xls"
Application.Run " Classeur1.xls!Traiter.Principale"

La macro « Principale » du classeur 1 s'execute bien, mais le
problème, c'est que l'instruction suivante de la macro du classeur
2 ne s'execute pas.

Comment « redonner la main » à la macro du classeur 2 ?

Merci






Publicité
Poster une réponse
Anonyme