Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate mxbAvailable() As Boolean Private mnAvailable As Long Private Sub Reset(ByVal vnMin As Long, ByVal vnMax As Long) Dim nIndex As Long Randomize ReDim mxbAvailable(vnMin To vnMax) mnAvailable = 0 For nIndex = LBound(mxbAvailable) To UBound(mxbAvailable) mxbAvailable(nIndex) = True mnAvailable = mnAvailable + 1 Next End Sub Private Function GetNext(ByVal vnMin As Long, ByVal vnMax As Long) As Long Dim nIndex As Long If mnAvailable Then Do nIndex = Rnd * vnMax If nIndex >= vnMin And nIndex <= vnMax Then If mxbAvailable(nIndex) Then Exit Do End If End If Loop mxbAvailable(nIndex) = False mnAvailable = mnAvailable - 1 GetNext = nIndex End If End Function Private Sub Form_Load() Reset 9, 32 Do While mnAvailable Debug.Print GetNext(9, 32) Loop End Sub