• Initiateur de la discussion Initiateur de la discussion juju782
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

juju782

XLDnaute Nouveau
Bonjour

je devais réaliser ce programme:

On veut programmer le jeu "Pile ou face". L’utilisateur entre son choix [le programme demande à l’utilisateur de saisir] qui est comparé au choix fait au hasard par l'ordinateur. Si les deux valeurs sont égales l'utilisateur a gagné. Programmer dix [n] réalisations de ce jeu.
Voila ce que j'ai fais (ca marche) :

Sub pile()
Dim x As Integer
Dim i As Integer
Dim score As Integer
Dim p As String, q As String
score = 0
For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
End If
Next
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub




On me demande alors: "Modifier l'exercice précédent pour que maintenant le jeu s'arrête soit lorsque l'utilisateur répond "non" à une question posée soit lorsque le nombre de réalisations de ce jeu dépasse 10 "

Mais la je vois pas quoi rajouter ? ?
 
Re : Boucles, exercice

Salut juju782,

Comme tu fais une boucle For I = 1 to 10
Pour les plus de dix tu n'as rien à modifier puisque ça va s'arrêter tout seul !

Sinon pour arrêter en cour, tu peux mettre tou à la fin

Code:
...
  ' Demander si on veut continuer
  If MsgBox("Voulez-vous conitnuer ?", vbQuestion + vbYesNo, "QUESTION ...") = vbNo Then Exit Sub
End Sub

Voilà 😉
 
Re : Boucles, exercice

Exact ce serait plus la boucle while..

j'ai fais:

...
..
score = 0
recommence="0"
While (recommence="0")

For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
Else
recommence=Inputbox("voulez vous rejouez O/N")
End If
Next
Wend
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub

Mais ça me met Else sans iF
 
Re : Boucles, exercice

Bonjour !

J 'ai refait cette macro de cette manière:

Sub pile()
Dim x As Integer
Dim i As Integer
Dim score As Integer, question As String
Dim p As String, q As String, recommence As String
score = 0
recommence = "0"
While (recommence = "0")
For i = 1 To 10
x = Int((Rnd * 2)) + 1
If x = 1 Then
p = "pile"
Else
p = "face"
End If
q = InputBox("Rentrez pile ou face")
If p = q Then
MsgBox ("bonne réponse")
score = score + 1
Else
MsgBox ("mauvaise réponse")
End If
recommence = InputBox("voulez vous rejouez O/N")

Next
Wend
MsgBox ("vous avez gagner" & " " & score & " " & "fois")

End Sub


ca fonctionne sauf "recommence", savez pourquoi ?
 
Re : Boucles, exercice

Salut Juju782,

Juste un petit conseil, si je peux me permettre, pour ton partiel 😉

Dans du code VBA il est vivement conseillé, d'incrémenter vers la droite à chaque fois que tu as une boucle ou une condition

C'est nettement plus lisible, de plus ça evite les message d'erreur du type "If sans End If" ou "While sans Wend", etc ...

Voir le code ci joint, présenté comme il devrait l'être
Code:
Sub pile()
  Dim x As Integer
  Dim i As Integer
  Dim score As Integer, question As String
  Dim p As String, q As String, recommence As String
  score = 0
  ' Recommence doit être la lettre "O" et non le chiffre 0
  recommence = "O"
  While (recommence = "O")
    For i = 1 To 10
      x = Int((Rnd * 2)) + 1
      If x = 1 Then
        p = "pile"
      Else
        p = "face"
      End If
      q = InputBox("Rentrez pile ou face")
      If p = q Then
        MsgBox ("bonne réponse")
        score = score + 1
      Else
        MsgBox ("mauvaise réponse")
      End If
      recommence = InputBox("voulez vous rejouez O/N")
    Next
  Wend
[B][COLOR=red]  ' Supprimer les parenthèses[/COLOR][/B]
  MsgBox "vous avez gagner" & " " & score & " " & "fois"
End Sub

Sinon, pour répondre à ta question, dans while tu avais un ZERO et non la lettre "O"

A+
 
Dernière modification par un modérateur:
Re : Boucles, exercice

Re,

Je n'avais pas testé, il faut supprimer les parenthèses de MsgBox !
Avec les parenthèses Msgbox() doit être attribuée à une variable.

Par contre ton code n'est pa bon puiqu'il boucle 10 fois en se moquant de la réponse de l'utilisateur !

Si au bout de 3 fois je ne veux plus jouer, la boucle continue, à étudier ...

A+
 
Re : Boucles, exercice

Bonjour juju, Bruno, Marcel

une autre solution, pour le fun :

Code:
Sub test()
Dim recommence As String, i As Byte, x As Byte, p As String, q As String, score As Byte
Randomize
Do
    For i = 1 To 10
        x = Round(Rnd, 0)
        p = IIf(x, "pile", "face")
        q = InputBox("Rentrez pile ou face")
        MsgBox IIf(p = q, "bonne réponse", "mauvaise réponse")
        If p = q Then score = score + 1
    Next
    MsgBox "Vous avez gagné " & score & " fois !!!"
    score = 0
    recommence = InputBox("voulez vous rejouez O/N")
Loop While recommence = "O"
End Sub

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
182
Réponses
4
Affichages
239
Réponses
4
Affichages
263
Réponses
3
Affichages
255
Retour