Appel d'une procédure dont le nom est contenu dans une variable

Appel d'une procédure dont le nom est contenu dans une variable - VB/VBA/VBS - Programmation

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.

Reply

Marsh Posté le 12-06-2007 à 16:20:45   

Reply

Marsh Posté le 12-06-2007 à 17:56:50    

Snif y'a personne qui répond... :'(

Reply

Marsh Posté le 12-06-2007 à 20:41:23    

avec call ca marche ?

Reply

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)
 

Reply

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  :heink:


Message édité par Lapin26 le 13-06-2007 à 17:14:45
Reply

Marsh Posté le 13-06-2007 à 17:30:37    

C'est la fonction CallByName() qui t'intéresse

Reply

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 ?

Reply

Marsh Posté le 14-06-2007 à 00:01:14    

Reply

Marsh Posté le 14-06-2007 à 10:21:56    

Comme ça ça a l'air de marcher ! Merci ingenieurcesi et kiki29 !!!!!
 
@++ tout le monde !

Reply

Marsh Posté le 14-06-2007 à 11:37:09    

Ça fait plaisir d'aider les gens...

Reply

Sujets relatifs:

Leave a Replay

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