liste aleatoire sans doublons

  • Initiateur de la discussion perdinch
  • Date de début
P

perdinch

Guest
Bonjour
comment générer par VBA une liste aléatoire de nombre entre 1 et 20 sans doublons

merci
 
A

AV

Guest
Ave,

Sub zz_Tirage_Alea()
Application.ScreenUpdating = False
mini = 1: maxi = 20
[A1] = mini
[A1].DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=mini, Stop:=maxi
With Range('B1:B' & maxi + 1 - mini)
.Value = '=rand()'
[B1].Sort Key1:=[B1], Order1:=xlAscending
.ClearContents
End With
End Sub

AV [AV MVP Excel]
 

Hervé

XLDnaute Barbatruc
Bonjour perdinch, cher michel, re av :)


une autre facon de faire, plus longue que la méthode d'AV, mais sans l'utilisation d'une colonne supplémentaire.


Sub test()
Dim tablo() As Double
Dim mini As Byte
Dim maxi As Byte
Dim i As Byte, j As Byte, k As Byte
Dim temp As Double

mini = 1
maxi = 20

ReDim Preserve tablo(1 To maxi, 1 To 2)

For i = 1 To maxi
        tablo(i, 1) = i
        tablo(i, 2) = Rnd
Next i

For i = 1 To UBound(tablo)
       
For j = 1 To UBound(tablo)
               
If tablo(i, 2) > tablo(j, 2) Then
                       
For k = 1 To 2
                                temp = tablo(i, k)
                                tablo(i, k) = tablo(j, k)
                                tablo(j, k) = temp
                       
Next k
               
End If
       
Next j
Next i
               

For i = 1 To UBound(tablo)
        Cells(i, 1) = tablo(i, 1)
Next i

End Sub


salut
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Il te suffit dans le code de remplacer :

Cells(i, 1) = tablo(i, 1)

par :

Cells(i + 1, 'J') = tablo(i, 1)

cells(ligne, colonne) permet de désigner une cellule par le numéro de ligne, et de colonne.

cells(1,1)= cellule (ligne=1, colonne=1), soit cellule A1.

salut
 
P

perdinch

Guest
Merci beaucoup hervé ca marche trés bien.

Si je peux me permettre une ultime précision .

Comment adapter la macro si je souhaite imposer une serie de nombre aléatoire dans une liste .

Exemple une liste de 100 lignes contenant des numéros de 1 à 100 en colonne A je souhaite un tirage de 20 nombre aléatoire parmi les 100

en fait il s'asit de la formule alea.entrebornes de 1 à 100 je voudrais en extraire 20 sans doublons

encore merci de votre réactivité.

perdinch
 

Statistiques des forums

Discussions
312 489
Messages
2 088 852
Membres
103 974
dernier inscrit
chmikha