Problème avec une boucle (If)

Résolu
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010 - 16 févr. 2010 à 14:57
 Profil bloqué - 17 févr. 2010 à 10:47
Bonjour,

J'ai un problème avec ma boucle si dans un programme qui parrait pourtant tout bête.

Le but de mon programme est de faire marcher le bouton "OK" qui vous est présenté ci-dessous.
http://img705.imageshack.us/i/78724770.jpg/


L'utilisateur doit choisir le nombre d'annonceurs qu'il souhaite à l'UP voie et selon son choix le programme lui affiche différents écran (form).
J'ai pris soin de saisir dans les propriétés de la liste déroulante les 3 valeurs possibles à savoir 1;2 ou 3 dans la rubrique items des proporiétés.
Ensuite j'ai double cliquez sur le bouton ok afin de saisir le code suivant :
http://img402.imageshack.us/i/36140189.jpg/

Malheuresement lorsque je lance le programme rien ne se passe lorsque je clique sur le bouton "OK". J'obtient le message d'erreur suivant :
http://img99.imageshack.us/i/erreure.jpg/



Annexes :
Voici la form 9

http://img130.imageshack.us/i/90098812.jpg/
Voici la form 8

http://img138.imageshack.us/i/44493618.jpg/

Voici la form 3

http://img27.imageshack.us/i/60682596.jpg/

17 réponses

Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
16 févr. 2010 à 20:44
bonsoir et merci,

mais je ne m'en sors toujours pas.

Un indice toutefois : quand je mets un textbox dans le pavé auquel je me réfère plutôt qu'une listbox, cela fonctionne. C'est la variable dans la listebox (liste déroulante) que je n'arrive pas à récupérer.

Ainsi,avec une instruction très simple telle que :
MessageBox.Show(List1.Text) qui renvoie à une variable dans une liste déroulante, il s'affiche un pavé sans rien
mais avec
MessageBox.Show(Textbox1.Text) qui renvoie à une variable dans un textbox, là, la valeur textbox1 s'affiche bien

Je voudrais bien arriver à faire fonctionner la liste déroulante. Merci d'avance de l'expertise
3
Profil bloqué
16 févr. 2010 à 21:59
Salut
Ôte moi d'un doute : List1 est bien une Listbox qui contient 3 valeurs (1, 2 et 3)
Avant d'appuyer sur le bouton OK sélectionnes-tu dans ta Listbox la valeur voulue (1 ou 2 ou 3)
La procédure déclenchée par le click sur Ok sait-elle quel élément de la Listbox a-été sélectionné ?
Le bouton OK est-il nécessaire ?

Teste ce code sans le bouton Ok et en clicquant la ligne de la listbox que tu veux sélectionner
Fais de façon à voir les 3 lignes de ta listbox à l'écran

Private Sub List1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles List1.Click

dim numero as string = List1.Items(List1.SelectedIndices(0).ToString
Case Select numero
Case "1"
Form9.Show()
Me.Hide()
Case "2"
Form8.Show()
Me.Hide()
Case "3"
Form3.Show()
Me.Hide()
End Select
End Sub


La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2010 à 15:03
J'ai vu une erreur dans le code que tu nous a si gentiment montré (celui qui ne "marche" pas) !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
16 févr. 2010 à 15:09
Peux tu me dire ou se situe l'erreur et comment la résoudre^^ stp ?
0

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

Posez votre question
Profil bloqué
16 févr. 2010 à 15:17
Salut
Le message d'erreur est pourtant clair
List.Text est une chaine de caractères alors que 3 ou 1 ou 2 sont des variables numériques

Exemple
List.text = 4 est faux
List.text = "4" est correct

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
16 févr. 2010 à 15:26
J'ai essayé, je n'est plus de message d'erreur mais sa rien ne se passe lorsque l'on clique sur "OK"
0
Profil bloqué
16 févr. 2010 à 17:07
Si tu nous mettais le code du bouton OK cela serait mieux pour nous qui voulons t'aider et non des images .jpg

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2010 à 17:10
+1 avec ce que dit Galain !
Le code, la ligne où ça bogue et le message d'erreur (on ne connaît que ce dernier). Les images ne servent à rien !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
16 févr. 2010 à 17:56
Voici le code :

Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click

If (List1.Text) = 1 Then
Form9.Show()
Me.Hide()
Else


If (List1.Text) = 2 Then
Form8.Show()
Me.Hide()
Else

If (List1.Text) = 3 Then
Form3.Show()
Me.Hide()

End If
End If
End If


End Sub

PS : Si je met les chiffres entre "" rien ne se passe quand je clique sur le bouton OK et si je ne met pas de guillemets, il me met le message d'erreur suivant : La conversion de la chaîne "" en type 'Double' n'est pas valide.
J'ai également testé en forçant la valeur de list1.text avec l'instruction List1.Text = 1 et là sa m'ouvre bien la form 9.
0
Profil bloqué
16 févr. 2010 à 18:13
Salut
Que contient List1.text lors du click sur le bouton OK ?
Si son contenu est différent de "1" et de "2" et aussi de "3" il ne se passera rien
Quand tu forces son contenu à "1" cela fonctionne comme tu nous le dit
Laisse tes chiffres entre parenthèses : 1 est une variable numérique alors que "1" est une variable chaine de caractères (String en anglais)
L'utilisation de Select Case aurait été plus judicieux à la place des if ... then ... else imbriqués





La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Profil bloqué
16 févr. 2010 à 18:15
Autre chose : inutile de mettre List1.Text entre parenthèses

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2010 à 18:24
Un bon select case sur la valeur numérique du string de la textbox serait sans doute le bienvenu... et son case else encore mieux venu !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
16 févr. 2010 à 18:25
Merci pour ces réponses malheuresement le problème reste toujours le même. J'ai modifié le code de la façon suivante :
If List1.Text = "1" Then
Form9.Show()
Me.Hide()
Else


If List1.Text = "2" Then
Form8.Show()
Me.Hide()
Else

If List1.Text = "3" Then
Form3.Show()
Me.Hide()

End If
End If
End If


End Sub

Lorsque je clique sur le bouton OK rien ne se passe. J'ai bien vérifié d'avoir séléctionné la valeur 1 dans la liste déroulante lorsque j'exécute le programme.J'ai également placer dans les propriétés de ma liste déroulante les valeurs 1 2 et 3 dans la rubrique items.

Concernant l'option avec Choix de : j'ai également essayé mais le résultat est le même.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2010 à 18:33
Je ne vois pas pourquoi ça ne marcherait pas !
A moins que les choses ne soient pas exactement nommées comme du le dis ou que d'autres instructions, sur les autres Forms, viennent contrecarrer ou qu'enfin d'autres caractères (espaces ou autres) aient été entrés dans les items en cause) !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Utilisateur anonyme
16 févr. 2010 à 18:53
A mon avis le probleme reside dans le fait que List1.Text n'est jamais égal à "1", "2" ou "3" (ça parait bête dit comme ça, mais fanchement je ne vois que ça)
Perso, je placerait un petit Debug.Print "Valeur de List1.text : " & List1.Text en tête de ma fonction pour être sûr de partir sur la bonne voie.

J'ajouterais comme l'a si bien dit ucfoutu qu'un bon case select serait bien plus adapté

Ca donnerait :

Debug.Print "Valeur de List1.text : " & List1.Text
Case Select Val(List1.Text)
    Case 1
        Form9.Show()
        Me.Hide()
    Case 2
        Form8.Show()
        Me.Hide()
    Case 3
        Form3.Show()
        Me.Hide()
    Case Else
        Debug.Print "List1.Text ne vaut ni 1, ni 2, ni 3"
End Select


C'est rudimentaire mais à mon avis c'est la voie que j'adopterais

Cordialement
0
Ackby Messages postés 44 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 28 juillet 2010
17 févr. 2010 à 09:48
Bonjour Galain,

en effet, cela fonctionne ainsi (super ! merci beaucoup) mais alors comment rendre le bouton OK actif avec une listbox ?
0
Profil bloqué
17 févr. 2010 à 10:47
Salut
Ton bouton OK est dans ce cas inutile.
Néanmoins si tu le veux vraiment il faut quant même passer par un clic sur la Listbox et déterminer quelle ligne a été sélectionnée. Le bouton OK sachant la ligne sélectionnée en déduit la suite de la procédure
L'idéal est de mettre un label au dessus de la Listbox indiquant à l'utilisateur de faire son choix

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Rejoignez-nous