VBA [Résolu] Passer une fonction en paramètre - VB/VBA/VBS - Programmation
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
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.
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