Salut Student,
c'est à peu près cela, oui.
Ton tableau TM(Li,Co) représente ton champ de mines. Le marqueur "8" est là pour signaler que ce carré est miné donc 1 ou 8, c'est pareil...
Deux choses :
- si tu as déclaré, par exemple, ton tableau :
* TM(8,8) : cela représente en fait (de 0 à 7, de 0 à 7) et que (RND * Nbl) +1 ne contiendra JAMAIS 0 ;
* TM(1 TO 8, 1 to 8) : ta formule RND() va sortir des... 9 et planter le code !! (voir le fichier) : j'inscris les valeur RND en [I:J]
- tu utilises FOR...NEXT pour ton nombre de mines.
Attention : même si il y a peu de chances statistiques que tu tombes 2 fois sur les mêmes coordonnées iLig et iCol, cela peut arriver !
Ton code démarre sur un double-clic, à volonté.
Mon code démarre sur un clic droit, à volonté.
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
Dim TM(1 To 8, 1 To 8), iCol%, iRow%
'
Cancel = True
Cells.Delete
'
For x = 1 To 5
Do
iRow = Int(Rnd * 8) + 1
iCol = Int(Rnd * 8) + 1
Range("I" & x).Value = iRow: Range("J" & x).Value = iCol
Loop Until TM(iRow, iCol) = 0
TM(iRow, iCol) = 1
Cells(iRow, iCol).Interior.Color = RGB(255, 0, 0)
Next
'
End Sub
...
Et m..., encore une fois impossible de joindre le fichier!
Je le joindrai plus tard.
...
Bon travail !
A+