Bonjour,
Désolé de cette réponse si c'est la même question que le précédent topic.
La question est formulée différemment.
jean-marc
'Premièrement, le Randomize doit être écrit une seule fois, donc à l'extérieur de la boucle ou encore au Form_Load. C'est un 'appel pour démarrer le "générateur" de nombres aléatoires.
'Pour l'erreur, j'imagine que le numéro généré par Rnd() détermine un Index qui est inexistant dans ta table. Si tu as 10 'enregistrements et que Rnd() te retourne 11, ça va te donner un enregistrement inexistant.
'Il faut donc vérifier que l'enregistrement existe avant de l'inscrire dans ta MsFlexGrid.
'Et je pense que tu devrais enlever le + 1
'a = Int(n * Rnd)
'MPi
Ci-dessous, un exemple trouvé sur ce forum (randomize du loto).
Dim aTabSeries(49)
Dim aSuites()
Randomize
Dim i , iRnd
For i = 1 To 49
aTabSeries(i) = i
Next
'redim résultats
ReDim aSuites(6)
Dim Message : Message = "" '<- pour l'exemple
'on créé le tableau de résultat en "désactivant" ceux trouvés
For i = 1 To 6
aSuites(i) = 0
While aSuites(i) = 0
iRnd = Int(49 * Rnd) + 1
If aTabSeries(iRnd) <> 0 Then
aSuites(i) = aTabSeries(iRnd)
aTabSeries(iRnd) = 0
Message = Message & CStr(aSuites(i)) & " . " '& vbCrLf
End If
Wend
Next
MsgBox Message