[Résolu][VBA][EXCEL] Appel par Call plutôt que Run

Appel par Call plutôt que Run [Résolu][VBA][EXCEL] - VB/VBA/VBS - Programmation

Marsh Posté le 17-04-2006 à 15:16:56    

Bonjour à tous,
 
une question sans doute "basique"  ;) mais que je ne parviens pas à résoudre tout seul :
 
je souhaite appeler, à partir d'une procédure VBA dans un classeur Excel, une procédure qui se trouve dans un autre classeur Excel.
J'y parviens bien par Application.Run mais pas par Call, ce que je préfèrerais pour pouvoir utiliser un passage de paramètre par référence.
 
Quelqu'un aurait-il une solution ou indication sur ce qui ne va pas dans ma façon de faire ?
 
Mon code d'appel dans Appelant.xls - Module1

Code :
  1. Sub test()
  2.     MsgBox "avant"
  3.     Application.Run ("Appele.xls!Complement" )
  4.     MsgBox "après"
  5.     Call [Appele.xls].[Module1].Complement
  6.     MsgBox "Ca marche !!"
  7. End Sub


 
Ma procédure appelée dans Appele.xls - Module1

Code :
  1. Sub Complement()
  2.     MsgBox "pendant"
  3. End Sub


 
A l'éxécution, j'obtiens bien l'affichage de "Avant", "Pendant", "Après", puis une boite d'erreur run-time code 424 - Object requiered.
 
Merci d'avance pour toute idée  :)

Message cité 1 fois
Message édité par Bidgii le 18-04-2006 à 09:32:40
Reply

Marsh Posté le 17-04-2006 à 15:16:56   

Reply

Marsh Posté le 18-04-2006 à 07:45:07    

Bidgii a écrit :

Bonjour à tous,
 
une question sans doute "basique"  ;) mais que je ne parviens pas à résoudre tout seul :
 
je souhaite appeler, à partir d'une procédure VBA dans un classeur Excel, une procédure qui se trouve dans un autre classeur Excel.
J'y parviens bien par Application.Run mais pas par Call, ce que je préfèrerais pour pouvoir utiliser un passage de paramètre par référence.
 
Quelqu'un aurait-il une solution ou indication sur ce qui ne va pas dans ma façon de faire ?
 
Mon code d'appel dans Appelant.xls - Module1

Code :
  1. Sub test()
  2.     MsgBox "avant"
  3.     Application.Run ("Appele.xls!Complement" )
  4.     MsgBox "après"
  5.     Call [Appele.xls].[Module1].Complement
  6.     MsgBox "Ca marche !!"
  7. End Sub


 
Ma procédure appelée dans Appele.xls - Module1

Code :
  1. Sub Complement()
  2.     MsgBox "pendant"
  3. End Sub


 
A l'éxécution, j'obtiens bien l'affichage de "Avant", "Pendant", "Après", puis une boite d'erreur run-time code 424 - Object requiered.
 
Merci d'avance pour toute idée  :)


 
 
Bonjour,
 
Pour appeler une procédure dans un autre classeur, il faut passer par < application.run >, le < call > ne donnant accès qu'aux procédures du classeur appelant, voir l'aide VBA.
 
Cordialement
 
Pifa

Reply

Marsh Posté le 18-04-2006 à 09:26:42    

Merci pour cette indication qui m'évitera tout acharnement  ;)
 
En investiguant plus sur les notions de visibilité, j'ai trouvé que l'on pouvait faire fonctionner le <call> sous condition d'ajouter le projet du classeur <appele.xls> dans la liste des projets référencés par le projet du classeur <appelant.xls> (éditeur VBA - Menu "Tools" - References).
 
La syntaxe est bien dans ce cas  

Code :
  1. Call [projetAppele].[Module1].Complement


 
Merci beaucoup pour le soutien  :)  
 
Cordialement,
 
Bidgii

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed