loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006
-
19 sept. 2006 à 14:30
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
20 sept. 2006 à 15:37
Bonjour, j'ai un problème je voudrais que dans ma form1 un meme boutton appel differentes fonctions situées dans une feuille module. Je m'explique, j'ai des nombreuses fonctions à la fin de chacune d'entre elles un choix est laissé a l'utilisateur et provoque l'appel d'une autre fonction et ainsi de suite... le bouton "choix1" par exemple n'appelera donc la meme fonction à chaque fois.
J'ai essayer de mettre le nom de la fonction suivante a appelée dans un string et faire un call de ce string mais sans pointeur ca signifie pas grand chose.
Si qq a une idée .....
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 20 sept. 2006 à 14:57
Lis bien le Select case, au lieu d'évaluer une variable, ou une constante (l'argument du case), tu utilises le même nom que la fonction que tu appelles.
Donc, quand tu testes A1 (case A1:), tu l'exécutes, elle modifie Num, comme au retour de A1, Num est différent de A1, on traite A65 (en l'exécutant) et ainsi de suite.
je suis prêt à parier que A1 n'est pas une Sub mais une fonction! (c'est un effet de bord qui t'empêche de voir l'erreur)
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006 19 sept. 2006 à 14:46
en faite on pe voir les differentes fonctions comme des pages d'un livres et a la fin on te le laisse le choix de te rendre a differentes pages.
donc lors de la premiere fonction le bouton choix1 appelera a la fonction96 par exemple et la tu aura un autre choix et le bouton choix1 appelera alors une autre fonction.
en esperant avoir été plus clair
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 19 sept. 2006 à 15:23
Salut,
Tu peux te faire un truc du style
Private Sub Choix1_Click()
Static NumPage As Integer
NumPage = NumPage + 1
Select Case NumPage
Case 1: Call Fonction96
Case 2: Call Fonction95
Case 3: Call Fonction98
'[etc...]
End Select
End Sub
Ceci dit, le Select Case reste plus conventionnel, et plus adapté à ton besoin (avec un peu d'effort pour que les utilisateurs aient une liste de choix de la fonction à exécuter. Parfois, on appelle ça un Menu).
à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006 19 sept. 2006 à 19:40
Merci a vous 3, Jrivet ta methode marche effectivement (ca va me faire un case avec une centaines de ligne mais bon). Rvblog pour ta methode elle d'un niveau un peu trop elevé pour moi mais merci quand meme.
loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006 20 sept. 2006 à 12:30
En faite un nouveau probleme ce crée avec la methode des Cases :
je reprend :
Private Sub Cmdsuite_Click()
Select Case Num
Case A1: Call A1
Case A65: Call A65
End Select
End Sub
le probleme c'est que dans la fonction A1 la valeur de num se met à A65 donc le programme enchaîne directement les 2 Cases sans que l'on est à rappuyer sur Cmdsuite.
Quelqu'un aurait il un idee pour sortir du case ? (j'ai essayer de faire un exit sub sans résultat)
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 20 sept. 2006 à 14:01
Bizarre,
que la variable Num soit gloable, c'est une chose, que la procédure CmdSuite_Click (privée de surcroit), se ré-exécute sans qu'on la sollicite, c'en est une autre!
quelqu'instruction de ton code doit sûrement rappeler cette fonction, directement (possible), ou indirectement (là, j'ai plus de mal, à moins que, comme son nom ne l'indique pas, CmdSuite n'est pas de type CommandButton, mais plutôt ComboBox ou ListBox)!
à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006 20 sept. 2006 à 14:22
je ne pense pas que la procédure CmdSuite_Click se ré-exécute sans qu'on la sollicite, je pense qu'apres etre sortie de la fonction A1 le programme retourne dans le select case vu qu'il n'ets pas arrivé au End Select mais entre temps la valeur de num a changer donc a la place de sortir de Cmdsuite et d'attendre que l'on rappui sur le bouton il charge la fonction suivante : A65
en esperant avoir été plus clair
loki61
Messages postés9Date d'inscriptiondimanche 13 novembre 2005StatutMembreDernière intervention21 septembre 2006 20 sept. 2006 à 14:47
En effet apres quelque essai ce n'est pas mon case qui appel ma fonction A65 je vé faire quelque essai en pas a pas pour trouvé ce qui l'appel, et je posterai mon code si je ne trouve pas.
Private Sub Command1_Clcik
Select Case Num
Case A1: Call A1
Case A2: Call A2
End Sub
Function A1
Num = 2
End Function
Function A2
Num = 3
End Function
Private Sub Form_Load()
Num = 1
End Sub
et après t'être marré, change A1 et A2 en Sub, et tu vas pleurer :) rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 20 sept. 2006 à 15:27
rvblog: J'ai teste Mais Voila ce que cela me donne:
Cas Avec les Function => Le case n'est jamais verifié et donc les Fonction Jamais appelé deux fois (Juste Une fois dans le case ce qui est jusqu'ici Normal)
Cas Avec Les SUb => IMPOSSIBLE A teste => Fonction Ou Variable Attendue.
> Je ne vois donc pas comment loki61 a pu avoir des problèmes (Sauf dans le cas ou c'etait des fonctions)
Enfin Bref Son probleme est resolu et c'est le principal.
@+, Ju£i?n
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 20 sept. 2006 à 15:37
parce que les fonctions que tu as testé sont les miennes, et dans mon cas on exécute toutes les fonctions.
lui il n'a pas dit que le A65 s'exécutait 2 fois, mais qu'il avait l'impression que le Command_Click s'exécutait 2 fois, parce qu'il devait l'observer indirectement : et il voyait donc que A1 s'était exécuté et que A65 aussi.
Mais tu a raison, le problème est réglé.
à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>