VB: Prog qui plante...mais pourquoi?

VB: Prog qui plante...mais pourquoi? - VB/VBA/VBS - Programmation

Marsh Posté le 09-04-2005 à 16:29:26    

Salut,
Je dois réaliser un genre de petit jeu en VB
Le programme génére un nombre entier aléatoire
L'utilisateur entre des nombres et a chaque fois le programme lui dit si il est plus grand ou plus petit que le nombre généré.
Une fois que l'utilisateur a trouver le nombre, on affiche le nombre d'essais
La dessus j'ai aucun problème. Si il tape une chaine de caractère on devra le sortir du programme...et la ca plante
(je début en VB)
 
 

Code :
  1. Sub jeux()
  2. Dim valeur As String
  3. Dim essais As String
  4. Dim vraisfaux As String
  5. Dim compteur As Integer
  6. Dim tmp As String
  7. Dim tmp2 As Integer
  8. compteur = 0
  9. tmp = Rnd() * 100
  10. valeur = Int(tmp)
  11. essais = InputBox("Entrez un nombre entre 0 et 100", "Nombre" )
  12. Do
  13.      MsgBox (essais)
  14.      If IsNumeric(essais) = False Then
  15.          essais = -1
  16.        
  17.      Else
  18.          If (essais < valeur) Then
  19.               vraisfaux = "Le nombre est plus grand!"
  20.          Else
  21.               vraisfaux = "Le nombre est plus petit!"
  22.          End If
  23.          essais = InputBox(vraisfaux, "Nombre" )
  24.        
  25.        
  26.      End If
  27.    
  28.      compteur = compteur + 1
  29. Loop While ((essais <> valeur) Or (essais = -1))
  30. MsgBox (compteur)
  31. End Sub


 
 

Reply

Marsh Posté le 09-04-2005 à 16:29:26   

Reply

Marsh Posté le 09-04-2005 à 16:40:34    

Essaye comme ça:

Sub jeux()
Dim valeur As String
Dim essais As String
Dim vraisfaux As String
Dim compteur As Integer
Dim tmp As String
Dim tmp2 As Integer
 
compteur = 0
tmp = Rnd() * 100
valeur = Int(tmp)
 
essais = InputBox("Entrez un nombre entre 0 et 100", "Nombre" )
 
Do
  MsgBox (essais)
  If IsNumeric(essais) Then
    If (essais < valeur) Then
      vraisfaux = "Le nombre est plus grand!"
    Else
      vraisfaux = "Le nombre est plus petit!"
    End If
    essais = InputBox(vraisfaux, "Nombre" )
  Else
    Exit Sub
  End If
  compteur = compteur + 1
Loop While ((essais <> valeur) Or (essais = -1))
 
MsgBox (compteur)
 
End Sub


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 09-04-2005 à 16:46:19    

Ca marche mais j'avais un peu simplifier.
Il faudrait juste que je sortes de la boucle et pas de la "Sub".

Reply

Marsh Posté le 09-04-2005 à 18:28:38    

"Exit do" sort d'une boucle do (me semble, VB vieux). Exit for d'un for next.
 
essais = InputBox("entrez " ) ne devrait pas être dans la boucle DO ??

Reply

Marsh Posté le 09-04-2005 à 20:29:58    

Tu déclares essais comme string donc tu ne peux y mettre un nombre.
Il y a donc une façon simple de sortir de ta boucle en vérifiant si essais est numérique:

Sub jeux()
Dim valeur As String
Dim essais As String
Dim vraisfaux As String
Dim compteur As Integer
Dim tmp As String
Dim tmp2 As Integer
 
compteur = 0
tmp = Rnd() * 100
valeur = Int(tmp)
 
essais = InputBox("Entrez un nombre entre 0 et 100", "Nombre" )
 
Do
  MsgBox (essais)
  If (essais < valeur) Then
    vraisfaux = "Le nombre est plus grand!"
  Else
    vraisfaux = "Le nombre est plus petit!"
  End If
  essais = InputBox(vraisfaux, "Nombre" )
  compteur = compteur + 1
Loop While (IsNumeric(essais) And (essais <> valeur))
 
MsgBox (compteur)
 
End Sub



---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed