je suis en trainde faire une petite macro qui m'aiderait à mieux gerer mon voc d'anglais (c'est dure la vie d'étudiant )
Mais j'ai un petit soucis :
J'ai un classeur excel avec une colonne pour les mots en fr et une colonne pour les mots en anglais. L'idée c'est d'avoir une macro qui me demande aléatoirement un mot en anglais avec une inputbox. Si je me mets le bon mot, on passe à un autre mot. Si j'appuis sur OK, ou Annuler, ou tout autre bouton, je sors du programme.
Par contre, si je me trompe, là j'ai une msgbox qui me demande si je veux recommencer. Si je click sur non, j'ai une autre msgbox qui m'affiche la solution. Par contre, si je click sur oui, (et c'est là où je bloque) je voudrais revenir au moment de la macro où il me demande un mot en anglais.
Pour le moment, je n'ai pas réussi à introduire la notion d'aléatoire. Je passe par une inputbox qui me demande la ligne... Vous savez comment faire pour passer à l'aléatoire ?
Je vous montre le début de code que j'ai pour le moment :
Code:
Sub interro()
Dim cell, reponse, correction
cell = InputBox("quelle ligne?")
reponse = InputBox(Cells(cell, 1).Value)
If reponse = Cells(cell, 2).Value Then
MsgBox ("Bonne réponse")
Else
MsgBox ("Mauvaise réponse")
If MsgBox("Voulez vous retenter ?", vbYesNo) = vbNo Then
MsgBox ("Le bonne réponse est " & Cells(cell, 2).Value)
Else
End If
End If
End Sub
Bref, vous l'avez vue, je bloque juste avant les 2 end if... Je ne sais pas remonter plus haut, et je n'ai pas hyper envie de faire mille If en cascade.
Vous pensez pouvoir m'aider?
Merci beaucoup les amis
@++
Re : Revenir au début de macro sous condition + aléatoire
Ha oui, j'ai oublié une question :
Savez vous comment integrer un bouton, lorsque j'ai une bonne réponse, me permettant soit de passer à un nouveau mot (donc toujours le meme probleme de revenir plus haut dans la macro), soit de sortir de la macro...
Re : Revenir au début de macro sous condition + aléatoire
Bonsoir
pour l'aléatoire
ici chiffre de 1 à 10
Code:
Sub interro()
Dim cell, reponse, correction
cell = InputBox("quelle ligne?", "Interro", Int(Rnd * 10) + 1)
reponse = InputBox(Cells(cell, 1).Value)
If reponse = Cells(cell, 2).Value Then
MsgBox ("Bonne réponse")
Else
MsgBox ("Mauvaise réponse")
If MsgBox("Voulez vous retenter ?", vbYesNo) = vbNo Then
MsgBox ("Le bonne réponse est " & Cells(cell, 2).Value)
Else
End If
End If
End Sub
Re : Revenir au début de macro sous condition + aléatoire
Merci pour ta réponse.
En fait, si l'aléatoire rentre en compte, nous n'avons plus besoin d'utiliser d'inputbox.
Je prends alors ca :
"Cell = Int(Rnd * 2000 + 1) "
Re : Revenir au début de macro sous condition + aléatoire
Bonsoir,
voici une proposition (en utilisant une boucle Do.....Loop):
Code:
Sub interro()
Dim LigX, reponse, correction
Do
LigX = Int(Rnd * 5) + 1 'ligne aléatoire entre 1 à 5
reponse = InputBox(Cells(LigX, 1).Value)
If reponse = Cells(LigX, 2).Value Then
MsgBox ("Bonne réponse")
'sort de la boucle si bouton annuler choisie
ElseIf reponse = "" Then
Exit Do
Else
MsgBox ("Mauvaise réponse")
If MsgBox("Voulez vous retenter ?", vbYesNo) <> vbYes Then
MsgBox ("Le bonne réponse est " & Cells(LigX, 2).Value)
Exit Do 'sort de la boucle
End If
End If
Loop
End Sub
Edit: ouppsss, je suis à la bourre moi, pas rafraichi! Salut JM
Sub interro()
Dim LigX, reponse, correction[COLOR=Blue][B], Retenter As Boolean[/B][/COLOR]
Do
[COLOR=Blue][B]LigX = IIf(Not Retenter, Int(Rnd * 5) + 1, LigX)[/B][/COLOR] 'ligne aléatoire entre 1 à 5 ou même ligne si "retenter"
[B][COLOR=Blue]Retenter = False[/COLOR][/B]
reponse = InputBox(Cells(LigX, 1).Value)
If reponse = Cells(LigX, 2).Value Then
MsgBox ("Bonne réponse")
'sort de la boucle si bouton annuler choisie
ElseIf reponse = "" Then
Exit Do
Else
MsgBox ("Mauvaise réponse")
If MsgBox("Voulez vous retenter ?", vbYesNo) <> vbYes Then
MsgBox ("Le bonne réponse est " & Cells(LigX, 2).Value)
Exit Do 'sort de la boucle
[COLOR=Blue][B] Else: Retenter = True[/B][/COLOR]
End If
End If
Loop
End Sub