Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

chiffre aleatoire qui ne se repete pas

2 réponses
Avatar
pPTIFRED
bonjours

j'ai une colonne avec des noms de a1 a a150 et en b1 a b150 je voudrais
avoir des chiffres alleatoires de 1001 a 9999 mais qui ne se repete pas c'est
possible

merci

ptifred

2 réponses

Avatar
Rai
Bonjour,

Une solution :

Sub aleas()
Dim inter(150) As Integer
Dim Maximum, Minimum As Integer

Randomize

inter(1) = Int(Rnd * 8998) + 1001
Maximum = inter(1)
Minimum = inter(1)

For i = 2 To 150
flag = True

Do
inter(i) = Int(Rnd * 8998) + 1001

If inter(i) > Maximum Then
Maximum = inter(i)
Exit Do
End If
If inter(i) < Minimum Then
Minimum = inter(i)
Exit Do
End If

For t = 1 To i - 1
If inter(i) = inter(t) Then
flag = False
Exit For
End If
Next t

If flag Then Exit Do
Loop

Cells(i, 2) = inter(i)
Next i
End Sub



Je suis parti du principe que tu voulais des nombres aléatoires entiers.
Si tu as besoin de nombres décimaux, il te faudra procéder à 2-3 petites retouches :
- enlever Int( ) dans les 2 lignes qui génèrent les nombres (rnd)
- changer les délcarations DIM en remplaçant les Integer par Single

Cordialement

Rai


"pPTIFRED" a écrit dans le message de news:
bonjours

j'ai une colonne avec des noms de a1 a a150 et en b1 a b150 je voudrais
avoir des chiffres alleatoires de 1001 a 9999 mais qui ne se repete pas c'est
possible

merci

ptifred


Avatar
Rai
Re-,

La même solution, un peu simplifiée :

Sub aleas()
Dim inter(150) As Integer
Dim Maximum, Minimum As Integer
Randomize

For i = 1 To 150
flag = True
Do
inter(i) = Int(Rnd * 8998) + 1001

If inter(i) > Maximum Or inter(i) < Minimum Then
Maximum = WorksheetFunction.Max(inter(i), Maximum)
Minimim = WorksheetFunction.Min(inter(i), Minimum)
Exit Do
End If

For t = 1 To i - 1
If inter(i) = inter(t) Then
flag = False
Exit For
End If
Next t
If flag Then Exit Do
Loop
Cells(i, 2) = inter(i)
Next i
End Sub


"Rai" a écrit dans le message de news: uwx4pMJ%
Bonjour,

Une solution :

Sub aleas()
<SNIP>
...
<SNIP>

Cordialement

Rai


"pPTIFRED" a écrit dans le message de news:
bonjours

j'ai une colonne avec des noms de a1 a a150 et en b1 a b150 je voudrais
avoir des chiffres alleatoires de 1001 a 9999 mais qui ne se repete pas c'est
possible

merci

ptifred