Créer une liste de valeurs numérique uniques via une macro

Bonjour a tous,

j'ai fais plusieurs recherche sur google avant de venir crer un sujet ici, et je n'ai pas trouvé sur le forum qqch qui correspond a mon besoin. Au demeurant celui-ci me semble assez simple

je voudrais une macro qui sur ma feuille de calcul excel pour une plage de cellule donnée (disons A1 a A200) me mettent dans chacune de ces cellules une valeur numérique aléatoire MAIS avec aucun doublons au seins de cette plage.

pour l'instant mon code se résume a ca (évidement ca ne marche pas j'ai un tas de brique et un peu de ciment mais ça ne fait pas un mur)

Sub randunik()
Dim i As Integer

Dim k As Integer

Dim randvalu As Integer
Dim liste As New Collection
i = 1
k = 0
randvalu = 0
Randomize

randvalu = Int(200 * Rnd) + 1
Cells(1, 1) = randvalu
liste.Add (randvalu)

For i = 2 To 200

While randvalu = liste.Item(k)
randvalu = Int(200 * Rnd) + 1
Wend

Next
Cells(i, 1) = randvalu
liste.Add (randvalu)
Next

End Sub

Si vous pouviez m'aider ce serait chouette

dans l'idee je me suis dit qu'il fallait collecter dans une liste mes randvalu pour ensuite comparer mes nouvelles randvalu a cette liste

Bonjour,

Voici ce sur quoi je suis tombé après une brève recherche. J'imagine que la solution se trouve ici.

https://forum.excel-pratique.com/excel/generer-nombres-aleatoires-sans-doublons-24418

ca marche en effet mais j'aime bien comprendre ce que j'utilise

Sub Aleatoire()
Dim plage As Range
Dim cel As Range
Dim alea As Double-> pourquoi pas integer?

Set plage = Range("A1:A10")
plage.Value = ""
If plage.Count > 15 Then Exit Sub

->pourquoi 15 et pas 11?

Randomize

For Each cel In plage
1 alea = WorksheetFunction.RandBetween(1, 15)
If Application.CountIf(plage, alea)

-> j'imagine que c'est la la couer du truc mais je ne comprends pas

Then GoTo 1 Else cel = alea
Next

End Sub

Je n'ai pas dit que j'avais tout compris, mais qu'à priori c'était une solution ;)

Dim alea As Double-> pourquoi pas integer?

Tu as essayé avec integer ? Ca donne le même résultat. Après, Integer ou double, pas sûr que ça change quelque chose ici. À voir si tu bosses uniquement sur des entiers ou pas.

->pourquoi 15 et pas 11?

Aucune idée

1 alea = WorksheetFunction.RandBetween(1, 200)

If Application.CountIf(plage, alea) >0 Then GoTo 1 Else cel = alea

1 : tu génères un nombre aléatoire entre 1 et 200.

Countif = NB.SI. Donc si dans la plage tu as déjà un nombre égal à ta variable alea, alors tu reviens à 1, sinon la cellule de ta boucle prend la valeur aléatoire qui vient d'être générée.

super clair merci, je clos le sujet

Rechercher des sujets similaires à "creer liste valeurs numerique uniques via macro"