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

Signaler
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018
-
 félix -
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

Messages postés
40
Date d'inscription
lundi 11 juillet 2016
Statut
Membre
Dernière intervention
8 septembre 2017
14
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
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

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
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021
810 >
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

que se passe-t'il quand tu acceptes le message unique?
que fait le programme?
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018
>
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021

Il me redemande un nombre et ca répond a nouveau par plus petit
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021
810 >
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

quel nombre encodes-tu?
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018
>
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021

un nombre aléatoire entre 1 et 100
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021
810
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
 
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

merci, je l'ai optimisé
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.
 
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

Fantastique, merci ^^
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021
810 >
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

peux-tu marquer ceci comme résolu?
merci!
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

en fait ca n'as finalement pas fonctionné
>
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

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 ».
 
>
Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

 
@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.
 
Messages postés
14505
Date d'inscription
lundi 9 juin 2008
Statut
Non membre
Dernière intervention
7 mars 2021
810
et ainsi?
y = int(InputBox("ton nombre","plus_ou_moins","nbr")) 'input nbr joueur

Messages postés
21
Date d'inscription
vendredi 7 juillet 2017
Statut
Membre
Dernière intervention
17 juillet 2018

merci, prblm résolu