Pb avec optionbutton

cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 4 avril 2006 à 13:02
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011 - 4 avril 2006 à 19:24
Bonjour,

Alors voila dans mon programme je fais un test sur 4 optionbutton et en fonction de celui qui est coché j'éxecute une fonction.

Voila comment je fais mon test :
If Option1(0).Value Then AI1
If Option1(1).Value Then AI2
If Option1(2).Value Then AI3
If Option1(3).Value Then AI4

Le problème c'est que dans tout les cas il m'execute la fonction AI4.

Je me suis donc dis que les valeurs des optionbutton étaient mal affectées.
Et je les ai testé à l'aide d'un label et d'un timer :

Private Sub Timer1_Timer()
Label12.Caption = Option1(0).Value & " " & Option1(1).Value & " " & Option1(2).Value & " " & Option1(3).Value
End Sub

Lorsque je fais cela je constate que la valeur true se trouve bien sur le bouton coché et le false sur les autres.

Je ne comprend donc pas pourquoi lors de mon test c'est toujours la fonction AI4 qui est appelé (même quand le option1(3).value=false). J'ai éssayé en mettant les test complet IF...THEN...ENDIF et aussi avec IF...ELSEIF...ELSEIF...ELSEIF...ENDIF mais sa ne marche toujours pas.

J'ai également éssayé en mettant :
If Option1(0).Value = true Then AI1
If Option1(1).Value = true Then AI2
If Option1(2).Value = true Then AI3
If Option1(3).Value = true Then AI4

Mais encore une fois c'est toujours AI4 qui est executé.

Donc voila si quelqu'un peux m'aider sa serait cool.

11 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 avril 2006 à 13:15
Bonjour

Est-ce que tu peux montrer comment tu fais pour savoir dans quel fonction passe ton test ?
(En clair, comment es tu sur que c'est bien AI4 qui est utilisée?)

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
4 avril 2006 à 13:16
Salut,

Peux-tu replacer ton code dans son contexte (lignes avant, lignes après), ainsi que le code des procédures AI1, AI2, AI3 et AI4.



Soit l'une de ces procédures modifie la valeur de Option1(3).Value, soit ... (??)

Avec le code complet, on y verra plus clair.







Manu
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
4 avril 2006 à 13:18
J'aurais utilisé une boucle, et dans ce cas là celà marche comme il faut :

Sub Option1_Click(Index As Integer)
Dim n As Byte
For n=0 to 3
If n=Index Then
Select Case n
Case 0
AI1
Case 1
AI2
Case 3
AI3
Case 4
AI4
End Select
End If
Next n
End Sub
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
4 avril 2006 à 13:20
Excuse moi pour l'erreur de frappe dans le select case, il faut lire :
Select Case n
Case 0
AI1
Case 1
AI2
Case 2
AI3
Case 3
AI4
End Select
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
4 avril 2006 à 13:37
jperre> Le code de snake57, pris tout seul, fonctionne également très bien.

Ta solution, bien qu'extrêmement compliquée fonctionne, mais une fois
installée dans son code, çà risque fort de ne rien corriger.

Manu
0
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
4 avril 2006 à 14:07
ou Select Case Index directement
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
4 avril 2006 à 14:21
Bonjour,


NHenry pour voir quelle fonction est appellée j'ai mis un point d'arrêt sur le premier des if et en éxecutant pas à pas j'ai constaté que les 3premiers if étaient passés et que le dernier était validé. Je le remarque également en executant mon prog normalement car les 4 fonctions font des choses bien différentes.

Econs pour le code complet je crois que sa ne vas pas être possible. Plus de 2200 lignes mais voila je te fais le code de la procédure ou se trouve les if.

Private Sub Image5_Click(Index As Integer)

Anti_Clik = 1
Plateau_Ordi(Calcul_Ligne(Index), Calcul_Colonne(Index), 2) = 1
'Met un "1" dans le plateau de l'ordi a l'endroit ou l'on clique.

Label4.Caption = Quel_Case(Index)
'on affiche la case que l'on vient de toucher

If Plateau_Ordi(Calcul_Ligne(Index), Calcul_Colonne(Index), 2) = 1 And Plateau_Ordi(Calcul_Ligne(Index), Calcul_Colonne(Index), 1) <> 0 Then
Label1.Caption = "touché"
If Form2.Check2.Value = 1 Then JoueMusique ByVal App.Path & "\sons\explosion.wav", SND_ASYNC

Image7(Index).Visible = True
Tempo (0.15)
Image9(Index).Visible = True
Image7(Index).Visible = False
Tempo (0.15)
Image11(Index).Visible = True
Image9(Index).Visible = False
Tempo (0.15)
Image13(Index).Visible = True
Image11(Index).Visible = False
Tempo (0.15)
Image15(Index).Visible = True
Image13(Index).Visible = False

If Coulé_Ou_Non(Index, 1) <> 0 Then If Coulé_Ou_Non(Index, 1) 1 Or Coulé_Ou_Non(Index, 1) 6 Then
Label1.Caption = "sous-marin ennemi coulé"
End If If Coulé_Ou_Non(Index, 1) 2 Or Coulé_Ou_Non(Index, 1) 7 Or Coulé_Ou_Non(Index, 1) = 3 Or Coulé_Ou_Non(Index, 1) = 8 Then
Label1.Caption = "croiseur ennemi coulé"
End If If Coulé_Ou_Non(Index, 1) 4 Or Coulé_Ou_Non(Index, 1) 9 Then
Label1.Caption = "destroyer ennemi coulé"
End If If Coulé_Ou_Non(Index, 1) 5 Or Coulé_Ou_Non(Index, 1) 10 Then
Label1.Caption = "porte-avion ennemi coulé"
End If
End If

Else
Label1.Caption = "à l'eau"
If Form2.Check1.Value = 1 Then JoueMusique ByVal App.Path & "\sons\plouf.wav", SND_ASYNC
Image17(Index).Visible = True
End If

Label1.Visible = True
Tempo (1)
Label1.Visible = False

If Test_Gagner(1) = 1 Then
Label10.Caption = "Flotte ennemie coulée"
If Form2.Check3.Value = 1 Then JoueMusique ByVal App.Path & "\sons\applaudir.wav", SND_ASYNC
Label10.Visible = True
End If

Anti_Clik = 0

If Option1(0).Value Then AI1 'le point d'arret pour le test a été placé ici
If Option1(1).Value Then AI2
If Option1(2).Value Then AI3
If Option1(3).Value Then AI4


End Sub

Les fonctions AI1, AI2, AI3 et AI4 quand a elle ne posent pas de problème J'en suis sur je les ai testée les unes après les autres en supprimant mon test avec les if.

J'ai également effectué une recherche dans mes lignes de codes pour voir si les "value" des optionbutton étaient changés ailleur mais ce n'est pas le cas.
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
4 avril 2006 à 15:19
Bonjour

Pour voir les valeurs de tes variables, sélectionne le texte à évaluer et fais Shift+F9.
Parce que là, a part roswell, il y a un pb quelque part.

Il est plus facile de batiser kk1 que de la convertir. (surtout en programmation)
Une question se pose sur le forum, pas en privé
NHenry (VB6, VBA excel, VB.NET, C++, C#.Net)
0
jannoman Messages postés 256 Date d'inscription jeudi 17 avril 2003 Statut Membre Dernière intervention 20 février 2008 1
4 avril 2006 à 16:48
et si tu fais
if option1(0).Value then
AI1
end if

if option1(1).Value then
AI2
end if

...

est ce que ca marche ? (je sais, 'est moins propre mais des fois ca vient juste de la)
0
JeanMarcus Messages postés 147 Date d'inscription samedi 28 mai 2005 Statut Membre Dernière intervention 10 mars 2014
4 avril 2006 à 17:46
A priori - t'es ds une galere !!

Je suis nul mais j'essayerais ca

select case indexcase is 0 ou case 0 ou "0" : AI1 ou call ai1
'
end select

Ca t'aidera peu etre

Amicalement

JeanMarcus
0
cs_snake57 Messages postés 204 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 1 novembre 2011
4 avril 2006 à 19:24
Bonjour,

Je viens de trouver le problème. Ceci venait tous simplement du fait qu'au moment de l'utilisation les optionbutton étaient "visible=false".

Par contre je vois pas pourquoi le fait de les mettre invisible fait que les "value" change.

Avez vous déjà rencontré ce cas de figure?
0
Rejoignez-nous