Bonsoir à tous,
Voici un code fonctionnel bien qu'esthétiquement douteux, à mon sens.
L'horrible Call g n'est présent que pour une seule raison :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Sub g() Dim i, x, k, b As Integer Dim o, p As String Do x = Int((10 * Rnd) + 1) If x = b Then Call g Else For i = 1 To 10 o = InputBox("combien font " & x & "x" & i & "?") If Val(o) = x * i Then MsgBox ("bravo nestor") Else MsgBox ("raté nestor, la bonne réponse était : " & x * i) k = k + 1 End If Next i MsgBox ("votre nombre total d'erreurs est de : " & k) p = InputBox("souhaitez-vous jouer à nouveau ? (y/n)") x = b End If Loop While p = "y" End Sub
Je n'ai pas réussi à intégrer une autre boucle Do dans ma boucle Do générale afin de vérifier que l'on n'avait pas la même table à jouer deux fois de suite (x≠b). Mon code commençait tel que : Do [incrément] Do et j'ai fait face à des boucles infinies qui m'ont fait la grâce, tout du moins la première, de retaper l'intégralité de mon code, heureusement saisi in extremis par screenshot.
Notez que si j'utilise une boucle Do c'est parce que je ne vois pas comment faire autrement avec des If.
Question 1 : comment remplacer le très peu orthodoxe Call g sans trop toucher à mon code ?
En fait, je ne sais comment faire quelque chose tel que :
Question 2 : comment faire une boucle de type If tel que je le souhaitais initialement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 ... Next i MsgBox ("votre nombre total d'erreurs est de : " & k) p = InputBox("souhaitez-vous jouer à nouveau ? (y/n)") if y then LOOP RETOURNE AU DEBUT DU PROGRAMME else exit sub
Partager