Salut Usana,
2e exercice :
For i = 1 To 15
Do
iNb1 = Int(13 * Rnd) + 1
iNb2 = Int(4 * Rnd) + 1
Loop Until carte(iNb1, iNb2) = 0 'boucle jusqu'à (UNTIL) trouver une carte non tirée
carte(iNb1, iNb2) = 1 'annulation de la carte
If MsgBox("Voulez-vous " & _
IIf(iNb1 = 1, "cet ", _
IIf(iNb1 < 11 Or iNb1 = 12, "cette ", "ce ")) & _
IIf(iNb1 = 1, "As", _
IIf(iNb1 < 11, "carte de " & iNb1, Choose(iNb1 - 10, "Valet", "Dame", "Roi"))) & _
" de " & Choose(iNb2, "Coeur ", "Pique ", "Carreau ", "Trèfle ") & " ?", vbYesNo) = vbYes Then
k = k + 1
iTot = iTot + iNb1 'calcul du total
MsgBox "(" & k & "/" & i & ") - Vous avez marqué " & iNb1 & " points." & Chr(10) & "Votre total : " & iTot 'chr(10) = ligne suivante
End If
If k = 5 Then Exit For
Next i
MsgBox "Bravo, vous avez obtenu " & iTot & " points !"
- déclarer le tableau carte(1 To 13, 1 To 4) As Integer : 4 jeux de 13 cartes de couleurs différentes ;
- boucle de 15 cartes ;
- DO...LOOP tirage de deux nombres aléatoires = iNb1 - iNb2...
- jusqu'à (Until) trouver une carte non encore tirée = carte(iNb1, iNb2) = 0 ;
- si carte trouvée, on sort donc automatiquement de la boucle DO...LOOP et on annule cette carte en prévision du tirage suivant carte(iNb1, iNb2) = 1 ;
- là, je fais joujou avec MsgBox mais tu as déjà toutes les infos nécessaires pour adapter le texte selon la carte :
* iNb1 = valeur de la carte : de l'As au Roi ;
* iNb2 = la couleur
Demain, si tu es toujours là, je te passe le fichier complet mais j'espère que tu auras fait l'effort pour le 3e exercice.
Petit truc quand même pour calculer facilement les couleurs tirées.
Tu crées un tableau tColor(2) As Integer et tu utilises iNb2 (1 to 4) en combinaison avec MOD(ulo) 2.
Réfléchis et tu comprendras pourquoi, dans cet exercice, l'ordre des couleurs est Coeur, Pique, Carreau, Trèfle (rouge-noir-rouge-noir).
A+