Définir une variable globale + améliorations du code
Bonjour tout le monde,
J'ai créé un petit bout de code qui permet de jouer au nombre mystère (l'ordi choisit un nombre et on essaie de le deviner en un minimum d'essais) :
Public nbre_tours As Integer
Sub Nombre_mystere()
'1) affecter à une variable le nombre mystère
'2) Lancer une inputBox pour demander d'encoder un nombre
'3) Vérifier si c'est le bon
'4) Si c'est le bon, on affiche une msgbox avec le nombre de tentative
'5) Si ce n'est pas le bon, on incrémente le nombre de fois de 1 et on ré-affiche l'input box
'obligatoire pour créer un nombre aléatoire
Randomize
'déclation des variables
Dim Nombre_mystere As Integer, ma_proposition As Integer
Dim titre As String, commentaire As String
'Affectation des valeurs aux variables
Nombre_mystere = (Rnd * 10)
MsgBox (Nombre_mystere)
nbre_tours = 0
Do
'je change le titre par rapport au nombre de fois que je suis passé dans la boucle
If nbre_tours > 0 Then
titre = "Essayez à nouveau"
Else
titre = "Encodez un nombre"
End If
ma_proposition = InputBox("Veuillez entre un nombre entier", titre)
nbre_tours = nbre_tours + 1
Loop While ma_proposition <> Nombre_mystere
Select Case nbre_fois
Case Is = 1
commentaire = "Félicitation, vous êtes très fort !"
Case Is = 2
commentaire = "Pas mal, vous pourez bientôt passer pro !"
Case 3 To 5
commentaire = "Encore un peu d'entrainemt..."
Case 6 To 9
commentaire = "Encore beaucoup d'entrainement"
Case Else
commentaire = "Laissez tomber, ce jeu n'est pas fait pour vous"
End Select
MsgBox "vous avez trouvé le nombre mystère en " & nbre_tours & " fois " & Chr(10) & commentaire
End Sub
1) Quand je sorts du Loop While, ma variable nbre_tours est toujours vide, savez-vous me dire comment je peux créer une variable globale svp ?
2) pensez-vous que je puisse améliorer ce code ?
Merci d'avance pour votre aide et bon 14 juillet.
bee
Bonjour Beegeezzz,
Quand je sors du Loop While, ma variable nbre_tours est toujours vide
Quand tu sors de la boucle, la variable nbre_tours a bien la valeur correspondant au nombre de réponses effectuées.
Le problème, c’est qu’ensuite tu effectues le test sur la variable nbre_fois qui elle n’a pas été renseignée.
Sub Nombre_mystere()
Dim nbre_tours As Integer
'1) affecter à une variable le nombre mystère
'2) Lancer une inputBox pour demander d'encoder un nombre
'3) Vérifier si c'est le bon
'4) Si c'est le bon, on affiche une msgbox avec le nombre de tentative
'5) Si ce n'est pas le bon, on incrémente le nombre de fois de 1 et on ré-affiche l'input box
'obligatoire pour créer un nombre aléatoire
Randomize
'déclation des variables
Dim Nombre_mystere As Integer, ma_proposition As Integer
Dim titre As String, commentaire As String
'Affectation des valeurs aux variables
Nombre_mystere = (Rnd * 10)
MsgBox (Nombre_mystere)
nbre_tours = 0
Do
'je change le titre par rapport au nombre de fois que je suis passé dans la boucle
If nbre_tours > 0 Then
titre = "Essayez à nouveau"
Else
titre = "Encodez un nombre"
End If
ma_proposition = InputBox("Veuillez entre un nombre entier", titre)
nbre_tours = nbre_tours + 1
Loop While ma_proposition <> Nombre_mystere
Select Case nbre_tours
Case Is = 1
commentaire = "Félicitation, vous êtes très fort !"
Case Is = 2
commentaire = "Pas mal, vous pourez bientôt passer pro !"
Case 3 To 5
commentaire = "Encore un peu d'entrainemt..."
Case 6 To 9
commentaire = "Encore beaucoup d'entrainement"
Case Else
commentaire = "Laissez tomber, ce jeu n'est pas fait pour vous"
End Select
MsgBox "vous avez trouvé le nombre mystère en " & nbre_tours & " fois " & Chr(10) & commentaire
End Sub
A+
Bonjour,
Tu as bien crée une variable globale nbre_tours comme il fallait mais ce n'est pas cette variable que tu appelle dans select case, tu appelle nbre_fois d'où l'erreur.
Salut Raja,
Merci pour ta réponse.
Le problème était en effet là.
Excellente fin de W.E.
bee