Problème avec une boucle (If) [Résolu]

Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
- - Dernière réponse : cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
- 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/
Afficher la suite 

17 réponses

Meilleure réponse
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Ackby
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Galain
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
0
Merci
Peux tu me dire ou se situe l'erreur et comment la résoudre^^ stp ?
Commenter la réponse de Ackby
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
0
Merci
J'ai essayé, je n'est plus de message d'erreur mais sa rien ne se passe lorsque l'on clique sur "OK"
Commenter la réponse de Ackby
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
+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
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
0
Merci
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.
Commenter la réponse de Ackby
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
0
Merci
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.
Commenter la réponse de Ackby
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
30
Date d'inscription
lundi 9 octobre 2000
Statut
Membre
Dernière intervention
16 février 2010
0
Merci
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
Commenter la réponse de AdCr
Messages postés
44
Date d'inscription
mardi 16 février 2010
Statut
Membre
Dernière intervention
28 juillet 2010
0
Merci
Bonjour Galain,

en effet, cela fonctionne ainsi (super ! merci beaucoup) mais alors comment rendre le bouton OK actif avec une listbox ?
Commenter la réponse de Ackby
Messages postés
1270
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
0
Merci
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
Commenter la réponse de cs_Galain