VBA [Résolu] Passer une fonction en paramètre

VBA [Résolu] Passer une fonction en paramètre - VB/VBA/VBS - Programmation

Marsh Posté le 19-07-2007 à 19:14:30    

Bonjour,
 
Je cherche la technique me permettant de passer une Fonction (ou Sub) en paramètre à une autre Fonction (ou Sub) sous Excel.
 
Aprés de nombreuses (mais pas trés fructueuses) recherches sur le Net, j'ai trouvé une methode utilisant CallByName.
Le code suivant, placé au niveau du classeur (VBAProject/Microsoft Excel Objets/ThisWorkbook) fonctionne bien :

Option Explicit
 
Sub fonction_en_parametre()
    execute_fonction "ma_fonction", "Texte pour ma_fonction"
End Sub
 
Sub execute_fonction(fct As String, param As String)
    CallByName Me, fct, VbMethod, param
End Sub
 
Sub ma_fonction(msg As String)
    MsgBox "From ma_fonction, msg=" & msg
End Sub

L'exécution de fonction_en_parametre aboutit bien à l'affichage de la boite de dialogue.
 
Le problème est que je veux placer mon code dans un Module, et là ça ne fonctionne plus.
Le même code placé dans VBAProject/Modules/Module1 me donne une erreur de compilation au niveau de l'appel de CallByName :

Utilisation incorrecte du mot clé Me

Je n'ai pas trouvé quel objet passer en paramètre à la place de Me
 
Quelqu'un a-t-il une suggestion ?
 
Jean-Pierre.


Message édité par aigles le 19-07-2007 à 23:04:52
Reply

Marsh Posté le 19-07-2007 à 19:14:30   

Reply

Marsh Posté le 19-07-2007 à 21:56:04    

Bonsoir,
peut-être:
Sub execute_fonction(fct As String, param As String)
 
     a = Run(fct, param)
End Sub
Cordialement

Reply

Marsh Posté le 19-07-2007 à 22:15:48    

Merci, cela fonctionne bien.
 
J'ai effectué le test avec des procédures Sub et des fonctions sans problème.
La seule restriction à l'utilisation de Run est le fait que l'on ne peut pas passer d'objet en paramètre à la macro exécutée, mais comme ce n'est pas mon cas ce n'est pas bien grave.
 
 
Jean-Pierre.

Reply

Sujets relatifs:

Leave a Replay

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