Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2202 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1589016
aigles
Posté le 19-07-2007 à 19:14:30  profilanswer
 

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
mood
Publicité
Posté le 19-07-2007 à 19:14:30  profilanswer
 

n°1589056
seniorpapo​u
Posté le 19-07-2007 à 21:56:04  profilanswer
 

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

n°1589068
aigles
Posté le 19-07-2007 à 22:15:48  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
(Résolu) Masquer une partie d'un calque[Résolu par voie détournée] Piloter des contraintes d'intégrité
Mails retour automatiques rejetés (résolu)VBA [Résolu] Placer du texte obtenu par VBA dans un formulaire Outlook
[Résolu] Lancement script avec MySQL Query Browser[ASP.NET][Résolu] Problème envoi de mails
[résolu] script java qui ne fonctionne pas sous Internet explorer[VBA] Probleme de requete
[résolu] récupérer 2 variables dans <option> du <select> 
Plus de sujets relatifs à : VBA [Résolu] Passer une fonction en paramètre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR