Votre question

probleme fonction case en visual basic

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
2 Février 2012 00:33:18

je fais un programme en visual basic sur le calcul de l'IMC.
mais j'ai un problème avec la fonction case qui fonctionne qu'a moitié quand le résultat est inférieur a 10 il ne me donne pas le texte qui va. et quand la valeur est trop grande c'est pareil et je ne trouve pas la solution alors si vous la connaissez ça m'aiderait bien.

le programme du bouton :

  1. Private Sub calculimc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calculimc.Click
  2.  
  3. Dim sPoids As Single
  4. Dim sTaille As Single
  5. If Not (IsNumeric(taille.Text)) Then
  6. MsgBox("Entrez une valeur numérique pour la taille")
  7. Exit Sub
  8. End If
  9. If Not (IsNumeric(poids.Text)) Then
  10. MsgBox("Entrez une valeur numérique pour le poids")
  11. Exit Sub
  12. End If
  13. sTaille = CType(taille.Text, Single) / 100
  14. sPoids = CType(poids.Text, Single)
  15.  
  16. If sTaille < 0.5 Or sTaille > 2.5 Then
  17. MsgBox("Entrez une taille valide")
  18. Exit Sub
  19. End If
  20. If sPoids < 20 Or sPoids > 500 Then
  21. MsgBox("Entrez un poids valide")
  22. Exit Sub
  23. End If
  24.  
  25. imc.Text = (Math.Round(sPoids / (sTaille * sTaille), 2)).ToString
  26.  
  27. Select imc.Text
  28.  
  29. Case 0 To 16.5
  30. labelimc.Text = "Dénutrition ou famine"
  31. labelimc.BackColor = Color.Red
  32. Case 16.5 To 18.5
  33. labelimc.Text = "Maigreur"
  34. labelimc.BackColor = Color.Yellow
  35. Case 18.5 To 25
  36. labelimc.Text = "Corpulence normale"
  37. labelimc.BackColor = Color.White
  38. Case 25 To 30
  39. labelimc.Text = "Surpoids"
  40. labelimc.BackColor = Color.Yellow
  41. Case 30 To 35
  42. labelimc.Text = "Obésité modérée"
  43. labelimc.BackColor = Color.Chocolate
  44. Case 35 To 40
  45. labelimc.Text = "Obésité sévère"
  46. labelimc.BackColor = Color.OrangeRed
  47. Case 40 To 500
  48. labelimc.Text = "Obésité morbide ou massive"
  49. labelimc.BackColor = Color.Red
  50. End Select
  51.  
  52. End Sub

Autres pages sur : probleme fonction case visual basic

a c 232 L Programmation
2 Février 2012 09:01:12

Salut,

Tu compares une string (imc.Text) à des nombres, ça explique certainement pourquoi ça ne fonctionne pas.
Note aussi que tes Case ne doivent pas être bon, vu que chaque fin d'intervalle (16.5, 18.5, 25, 30, 35 et 40) sont valides pour 2 cas différents, vu que tu les réutilises dans le Case suivant. Possible que ça pose un soucis ça.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS