Appel d'une procédure dont le nom est contenu dans une variable - VB/VBA/VBS - Programmation
Marsh Posté le 12-06-2007 à 20:41:26
Appel de procédures Sub et Function 
    
 
Pour appeler une procédure Sub depuis une autre procédure, tapez le nom de la procédure sans oublier les valeurs des arguments obligatoires. L'instruction Call n'est pas obligatoire, mais si vous l'utilisez, vous devez mettre les éventuels arguments entre parenthèses. 
 
Vous pouvez utiliser une procédure Sub pour organiser d'autres procédures de manière à simplifier leur interprétation et leur débogage. Dans l'exemple suivant, la procédure Sub Main appelle la procédure Sub MultiBeep, passant la valeur 56 comme argument. Après l'exécution de MultiBeep, le système redonne la main à Main qui appelle la procédure Sub Message. Message affiche un message ; lorsque l'utilisateur clique sur OK, la main revient à Main qui se termine. 
 
Sub Main() 
    MultiBeep 56 
    Message 
End Sub 
 
Sub MultiBeep(numbeeps) 
    For counter = 1 To numbeeps 
        Beep 
    Next counter 
End Sub 
 
Sub Message() 
    MsgBox "Il est temps de faire une pause!" 
End Sub 
 
Appel de procédures Sub avec plusieurs arguments 
L'exemple suivant illustre deux manières d'appeler une procédure Sub avec plusieurs arguments. Lors du second appel de HouseCalc, les arguments doivent être mis entre parenthèses parce que l'instruction Call est employée. 
 
Sub Main() 
    HouseCalc 99800, 43100 
    Call HouseCalc(380950, 49500) 
End Sub 
 
Sub HouseCalc(price As Single, wage As Single) 
    If 2.5 * wage <= 0.8 * price Then 
        MsgBox "Cette maison est trop chère." 
    Else 
        MsgBox "Cette maison est abordable." 
    End If 
End Sub 
 
Utilisation de parenthèses lors d'appel de procédures Function 
Pour utiliser la valeur renvoyée d'une fonction, affectez la fonction à une variable et mettez les arguments entre parenthèses, comme le montre l'exemple suivant. 
 
Answer3 = MsgBox("Votre salaire vous convient-il?", 4, "Question 3" ) 
 
Si la valeur renvoyée d'une fonction ne vous intéresse pas, vous pouvez appeler une fonction de la même manière qu'une procédure Sub. Omettez les parenthèses, indiquez les arguments et n'affectez pas la fonction à une variable, comme le montre l'exemple suivant. 
 
MsgBox "Tâche terminée!", 0, "Boîte de tâche" 
 
Attention   Si vous incluez des parenthèses dans l'exemple précédent, l'instruction cause une erreur de syntaxe. 
 
Passage d'arguments nommés 
Une instruction dans une procédure Sub ou Function peut passer des valeurs à des procédures appelées en utilisant des arguments nommés. Vous pouvez indiquer les arguments nommés dans n'importe quel ordre. Un argument nommé est composé du nom de l'argument suivi des signes deux-points et égal (:=), puis de la valeur affectée à l'argument. 
 
L'exemple suivant appelle la fonction MsgBox en utilisant les arguments nommés sans valeur renvoyée. 
 
MsgBox Title:="Boîte de tâche", Prompt:="Tâche terminée!" 
 
L'exemple suivant appelle la fonction MsgBox en utilisant des arguments nommés. La valeur renvoyée est affectée à la variable answer3. 
 
answer3 = MsgBox(Title:="Question 3", _ 
    Prompt:="Votre salaire vous convient-il?", Buttons:=4) 
 
Marsh Posté le 13-06-2007 à 17:03:05
En fait ce que je voudrais faire c'est ça : 
 
Private Sub bt_ok_Click() 
   MaProcedure = "Nom_de_ma_procedure" 
   Call MaProcedure 
EndSub 
 
Le problème c'est que vb ne va pas chercher une procédure qui porte le nom "Nom_de_ma_procedure" mais une procédure qui porte le nom MaProcedure... :s 
 
Sous Vba je crois qu'il faut utiliser la fonction RUN mais sous vb j'ai rien trouvé... A croire que personne n'a jamais voulu faire ça   
 
Marsh Posté le 13-06-2007 à 17:47:21
J'ai bien essayé mais ça me dit que le type est incompatible, erff... 
 
Tu pourrais pas me dire comment je dois l'utiliser dans ma procédure s'il te plaît ?
Marsh Posté le 14-06-2007 à 00:01:14
Voir http://www.vb-helper.com/howto_cal [...] _name.html 
http://www.google.com/custom?q=cal [...] helper.com
Marsh Posté le 14-06-2007 à 10:21:56
Comme ça ça a l'air de marcher ! Merci ingenieurcesi et kiki29 !!!!! 
 
@++ tout le monde !
Marsh Posté le 12-06-2007 à 16:20:45
Bonjour, je suis en BTS informatique et je suis actuellement en stage. Je dois réaliser un programme et je bloque sur un truc, j'ai cherché pendant un moment et je suis assez désespéré.
En fait je souhaiterais simplement appeler une procédure dont le nom est contenu dans une variable de type chaîne... Vous allez peut-être me prendre pour un idiot mais mon programme sera grandement allourdi si je ne peux pas faire ça.
Merci d'avance pour votre aide.