Bonsoir à tous,

Voici un code fonctionnel bien qu'esthétiquement douteux, à mon sens.

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
L'horrible Call g n'est présent que pour une seule raison :

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 :

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
Question 2 : comment faire une boucle de type If tel que je le souhaitais initialement ?