Menu

Prblm petit programme vbs, peine a trouver l'erreur [Résolu]

docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 14:16 - Dernière réponse :  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
Afficher la suite 

16 réponses

Répondre au sujet
Unombre 41 Messages postés lundi 11 juillet 2016Date d'inscription 8 septembre 2017 Dernière intervention - 7 juil. 2017 à 14:31
0
Utile
5
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
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 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
yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention > docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 21:20
que se passe-t'il quand tu acceptes le message unique?
que fait le programme?
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention > yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 7 juil. 2017 à 22:56
Il me redemande un nombre et ca répond a nouveau par plus petit
yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention > docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 23:15
quel nombre encodes-tu?
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention > yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 8 juil. 2017 à 10:04
un nombre aléatoire entre 1 et 100
Commenter la réponse de Unombre
yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 7 juil. 2017 à 20:28
0
Utile
1
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
 
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:08
merci, je l'ai optimisé
Commenter la réponse de yg_be
0
Utile
5
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.
 
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 7 juil. 2017 à 22:59
Fantastique, merci ^^
yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention > docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 10:19
peux-tu marquer ceci comme résolu?
merci!
docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:09
en fait ca n'as finalement pas fonctionné
félix > docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 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 ».
 
félix > docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 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.
 
Commenter la réponse de félix
yg_be 4674 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 21 février 2018 Dernière intervention - 7 juil. 2017 à 23:20
0
Utile
1
et ainsi?
y = int(InputBox("ton nombre","plus_ou_moins","nbr")) 'input nbr joueur

docteur_nemo 16 Messages postés vendredi 7 juillet 2017Date d'inscription 10 juillet 2017 Dernière intervention - 8 juil. 2017 à 19:10
merci, prblm résolu
Commenter la réponse de yg_be