' Fonction attribuant un nombre donné de 1 (NbPos) sur un Nb total de cases, leur position étant l'aléatoire. Le reste devient 0
Function AleaPos(NbTot, NbPos)
Application.Volatile
Randomize
Dim Poss(), PosConnue(), Final() As Byte
' Création du tableau de variable poss (position possible dans le tableau) allant jusqu'au NbTot, met des 0 dans le Final
ReDim Poss(1 To NbTot)
ReDim Final(1 To NbTot)
For i = 1 To NbTot
Poss(i) = i
Final(i) = 0
Next i
' Création du tableau de variable aléatoire allant jusqu'au NbPos
ReDim PosConnue(1 To NbPos)
For i = 1 To NbPos
Do
PosConnue(i) = Int(Rnd * NbTot) + 1
' Vérifie que la position n'a pas déjà été attribuée à un autre 1
Loop Until Poss(PosConnue(i)) > 0
' Supprime la possibilité qu'un autre 1 puisse arriver à la même place
Poss(PosConnue(i)) = 0
Next i
'On a plus qu'à mettre les 1 dans le tableau
For i = 1 To NbPos
Final(PosConnue(i)) = 1
Next i
AleaPos = Final()
End Function