OVH Cloud OVH Cloud

Lnacer une Sub d'après une variable

2 réponses
Avatar
Julian Alvarez
Bonsoir,
j'aimerais lancer une sub de facon dynamique.
je m'explique :
j'ai par exemple :

sub test()
msgbox "test"
end sub
sub test2()
msgbox "test2"
end sub

j'aimerai savoir s'il existe un moyen de passer une variable a un call.
par exemple : call NomSubALancer

je veux pas faire des if, parce que mon objectif est de mettre dans une
table les noms des procédures et ensuite la lire et les enchainer.

Merci de votre aide.

2 réponses

Avatar
Raymond [mvp]
Bonsoir.

il faut que tu passes par la fonction Eval;
tu as 50 fonctions test1 , test2....test50
tu veux lancer la fonction sélectionnée dans une liste modifiable, qui te
donne une valeur de 1 à 50.

pour exécuter la bonne fonction:
Eval ("test" & Me.maliste & "()")

les fonctions test1 à test50 doivent être public et situées dans un module
standard.
si des paramètres de fonction sont à passer il faut les placer entre les ()
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Julian Alvarez" a écrit dans le
message de news:
Bonsoir,
j'aimerais lancer une sub de facon dynamique.
je m'explique :
j'ai par exemple :

sub test()
msgbox "test"
end sub
sub test2()
msgbox "test2"
end sub

j'aimerai savoir s'il existe un moyen de passer une variable a un call.
par exemple : call NomSubALancer

je veux pas faire des if, parce que mon objectif est de mettre dans une
table les noms des procédures et ensuite la lire et les enchainer.

Merci de votre aide.



Avatar
Julian Alvarez
Merci,

mais j'ai continué a chercher et ce matin j'ai eu le déclic, j'utilise
simplement

application.run NomDeMaSub

J'ai encore honte d'avoir zappé et seché hier sur ce problème

Merci de votre aide.


Bonsoir.

il faut que tu passes par la fonction Eval;
tu as 50 fonctions test1 , test2....test50
tu veux lancer la fonction sélectionnée dans une liste modifiable, qui te
donne une valeur de 1 à 50.

pour exécuter la bonne fonction:
Eval ("test" & Me.maliste & "()")

les fonctions test1 à test50 doivent être public et situées dans un module
standard.
si des paramètres de fonction sont à passer il faut les placer entre les ()
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Julian Alvarez" a écrit dans le
message de news:
Bonsoir,
j'aimerais lancer une sub de facon dynamique.
je m'explique :
j'ai par exemple :

sub test()
msgbox "test"
end sub
sub test2()
msgbox "test2"
end sub

j'aimerai savoir s'il existe un moyen de passer une variable a un call.
par exemple : call NomSubALancer

je veux pas faire des if, parce que mon objectif est de mettre dans une
table les noms des procédures et ensuite la lire et les enchainer.

Merci de votre aide.