Prblm petit programme vbs, peine a trouver l'erreur

Résolu/Fermé
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018 - 7 juil. 2017 à 14:16
 félix - 10 juil. 2017 à 22:51
bonjour, je debute en programmation et j'ai essayé de faire un truc simple.
C'est un mini-logiciel de jeu plus ou moins en "msgbox".
Malheureusement, a chaque fois que je le lance, il me dit "plus petit, meme lorsqu'il est censé me dire "hors bornes".
Si vous pouviez me dire ou j'ai fait une erreur, merci


Randomize
msgbox "hhh"
x = int(Rnd * 100) + 1 'tirrage nb aleatoire 1<x<100

do

y = InputBox("ton nombre","plus_ou_moins","nbr") 'input nbr joueur

If y < x then 'plus petit
msgbox "plus grand",0,"plus_ou_moins"
End If

If y > x then 'plus grand
msgbox "plus petit",0,"plus_ou_moins"
End If

If y < 1 or y > 100 then 'hors bornes
msgbox "tu n'est pas dans les bornes",0,"plus ou moins"
End If

If y = x then 'egal
Msgbox "felicitation, tu as trouve",0,"plus_ou_moins"

z = msgbox("veux tu recommencer ?",4+32,"plus_ou_moins") 'question

If z = 6 then 'oui
GoToLine 5
End If

If z = 7 then 'non
Msgbox "Merci d'avoir joue",0,"plus_ou_moins" 'message au revoir
WScript.quit
End If
End If

loop

4 réponses

Unombre Messages postés 40 Date d'inscription lundi 11 juillet 2016 Statut Membre Dernière intervention 8 septembre 2017 16
7 juil. 2017 à 14:31
Salut !

Je pense que quand ton y = -1 les 2 conditions sont valide ( plus petit et hors borne)
C'est pour ca que tu as les 2 messages
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
7 juil. 2017 à 20:27
Non, ce n'est pas ca, le programme n'affiche que le message plus petit alors que normalement il devrait afficher plus grand ou hors bornes, j'ai toujours le même message unique
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
7 juil. 2017 à 21:20
que se passe-t'il quand tu acceptes le message unique?
que fait le programme?
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
7 juil. 2017 à 22:56
Il me redemande un nombre et ca répond a nouveau par plus petit
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
7 juil. 2017 à 23:15
quel nombre encodes-tu?
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
8 juil. 2017 à 10:04
un nombre aléatoire entre 1 et 100
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
7 juil. 2017 à 20:28
bonjour,
tenant compte de la remarque de Unombre, tu pourrais faire ainsi:
        If y < 1 or y > 100 then 'hors bornes
		msgbox "tu n'est pas dans les bornes",0,"plus ou moins"
	ElseIf y < x then 'plus petit
		msgbox "plus grand",0,"plus_ou_moins"
	ElseIf y > x then 'plus grand
		msgbox "plus petit",0,"plus_ou_moins"
	ElseIf y = x then 'egal
 
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
8 juil. 2017 à 19:08
merci, je l'ai optimisé
0
Bonjour docteur_nemo,

Je te propose ce code (vérifie le GoToLine) :


Randomize

MsgBox "hhh"

x = Int(Rnd * 100) + 1 'tirage nb aléatoire 1<x<100

Do
    
  Do
    y = InputBox("ton nombre", "plus_ou_moins", "nbr") 'input nbr joueur
    If y >= 1 And y <= 100 Then Exit Do 'dans les bornes
    MsgBox "tu n'es pas dans les bornes", 0, "plus ou moins"
  Loop
    
  If y = x Then 'egal
    MsgBox "félicitations, tu as trouvé", 0, "plus_ou_moins"
    Z = MsgBox("veux-tu recommencer ?", 4 + 32, "plus_ou_moins") 'question
    If Z = 6 Then 'oui
      GoToLine 10 ' à adapter pour qu'il pointe sur la ligne du 2ème Do
    End If
    If Z = 7 Then 'non
      MsgBox "Merci d'avoir joué", 0, "plus_ou_moins" 'message au revoir
      WScript.Quit
    End If
  End If
  
  ' si trouvé : traitement effectué ci-dessus ; sinon,
  ' ce sera forcément plus petit ou plus grand :
  
  If y < x Then 'plus petit
    MsgBox "plus grand", 0, "plus_ou_moins"
  Else 'plus grand
    MsgBox "plus petit", 0, "plus_ou_moins"
  End If

Loop


Merci de me dire si ça te convient.
 
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
7 juil. 2017 à 22:59
Fantastique, merci ^^
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
8 juil. 2017 à 10:19
peux-tu marquer ceci comme résolu?
merci!
0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
8 juil. 2017 à 19:09
en fait ca n'as finalement pas fonctionné
0
f&eacute;lix > docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
8 juil. 2017 à 20:15
Bonjour docteur_nemo,

Dans le programme que j'avais fait, j'avais oublié l'instruction int =>
si tu corriges ainsi la ligne #11, ça devrait aller :
y = Int(InputBox("ton nombre", "plus_ou_moins", "nbr")) 'input nbr joueur
car le retour de InputBox est du texte, et avec Int, c'est converti en entier.

À part ça, la structure était mieux (ordre des tests) ; et tu auras remarqué
qu'on sort de la 2ème boucle Do seulement si le nb y est dans les bornes.

D'autre part, si WScript.Quit arrête le programme et sort de la sub,
c'est ok ; sinon, il suffit de rajouter juste après « : Exit Sub ».
 
0
f&eacute;lix > docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
10 juil. 2017 à 22:51
 
@docteur_nemo

Est-ce que tu utilises seulement VBS ? ou tu utilises aussi le VBA d'Excel ?
Si tu as Excel : en quelle version ? j'ai un fichier Excel qui pourrait bien
t'intéresser. À te lire.
 
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
7 juil. 2017 à 23:20
et ainsi?
y = int(InputBox("ton nombre","plus_ou_moins","nbr")) 'input nbr joueur

0
docteur_nemo Messages postés 21 Date d'inscription vendredi 7 juillet 2017 Statut Membre Dernière intervention 17 juillet 2018
8 juil. 2017 à 19:10
merci, prblm résolu
0