Générer nombres aléatoires sans doublons

Bonjour,

Je voudrais qu'excel me génère une liste de nombres aléatoires ( fonction : alea.entre.bornes() ) mais sans avoir de doublons dans cette liste.

En fichier joint, la colonne A me génère 10 nombres compris entre 1 et 15 et je ne voudrais voir qu'une seule fois chaque nombres.

Es-ce faisable ?

1'761classeur1.xls (17.50 Ko)

Bonjour

Une demande quasi identique a été traitée hier.

Zirak a fourni le code suivant (adapté à ta plage)

Sub Aleatoire()
Dim plage As Range, cel As Range, alea As Double

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

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

End Sub

Amicalement

Nad

Bonjour,

Ci-joint une solution avec macro sur bouton,car je ne sais pas si une formule existe sans passer par une colonne intermédiaire.

Cordialement.

Edit: Bonjour Nad, toujours aussi rapide ^^

7'253classeur1-v2.zip (8.83 Ko)

Super c'est le résultat souhaité.

Merci à vous deux pour votre rapidité.

Bonsoir,

Un peu à la bourre, mais une autre approche...

Tu entres dans la cellule A2 le nombre de numéros désiré, dans la cellule B2, la valeur minimale et dans la cellule C2, la valeur maximale.

Si tu as commis une erreur à l'insu de ton plein gré (par exemple, tu veux 10 numéros, dans les bornes [5:10]), tu as un message....

fichier joint :

4'216tirage-aleatoire.zip (9.67 Ko)

Bonne soirée

Bonsoir cousinhub,

c'est exactement ce que je cherche, mais je souhaite générer 10 nombres mais entre les bornes 1 et 6 ce qui implique des doublons. Donc quand je change les bornes ça ne fonctionne plus.

Avez-vous une solution ?

en fait j'ai un tableau avec 6 colonnes numérotées de 1 à 6 et 6 lignes numérotées de 1 à 6. Dans 2 colonnes je veux générer aléatoirement un numéro de ligne et à coté à numéro de colonne et ceci 10 fois de suite ((une ligne sous l'autre). je me suis donc servie de votre bouton mais j'ai besoin de pouvoir doublonner les résultats dans chaque colonne.

Merci d'avance.

Chris

Alors là!

Alors là!!!

je m'inscris sur ce forum pour vous remercier.

Suffit d'insérer dans le fichier téléchargé ses variables, de modifier les normes de la fonction macro, d'appuyer sur le bouton et le tour est joué.

Merci, merci beaucoup.

Bonjour,

Merci pour ces réponses.

J’ai besoin de pousser un peu plus loin la difficulté, je m'explique :

J'ai 17 musiciens pour 14 chaises.

Les positions 3 à 16 font l'objet d'un placement aléatoire, MAIS NE PEUVENT PAS être doublées avant que les 14 musiciens n'aient utilisé chacune des 14 positions à disposition.

Les positions 1 et 2 sont déterminées de façon non aléatoire puisqu’il s’agit de solistes, j'ai donc utilisé le fichier de Nad comme ceci :

Nb numéro = 14 / Valeur Min = 3 / Valeur Max = 17

Au final, je dois produire une suite de colonnes (=concert) affichant le tirage au sort des positions sans doublons jusqu’au 14e tirage sachant que le 15e ne doit pas présenter de doublons avec le 14e et que le processus se répète toutes les 14 colonnes et pour une saison entière.

Je crains de ne pouvoir éviter VBA, raison pour laquelle toute aide serait la bienvenue.

Bien cordialement,

CRAM

Bonjour,

voici une macro qui génère des positions aléatoirement.

faire alt-F8 pour lancer la macro

889concert.xlsm (17.71 Ko)

Bonjour,

Merci pour cette prompte réponse qui fonctionne à merveille.

J'ose une dernière question pour approfondir un peu plus la chose, si je veux que les nombres issus de cette macro soient remplacés par des noms ("6"="nom6") directement ou indirectement, quelle méthode vous suggérez d'utiliser ?

J'imagine qu'il faut tout d'abord identifier les noms n3 = "Nom3" etc. puis utiliser la méthode For If Then pour chacune des cases impliquées par la macro.

Savez-vous si, dans les tutoriels du site il existe quelque chose se rapprochant de cette demande ?

Encore merci d’avoir répondu à ma première requête et meilleurs voeux pour 2017.

Cordialement,

Cram

Bonjour,

faire le tirage en sélectionnant le feuille sheet1 puis en lançant la macro aaargh via ALT-F8

résultat dans la feuille sheet2

107concert.xlsm (25.14 Ko)

Bonjour CousinHub,

La génération aléatoire de nombres (nombre variable, de 1 à 300 par exemple) tirés à partir d'une liste existante et non d'un intervalle est il possible ?

Dans l'attente, merci et mes meilleurs vœux aux utilisateurs du forum.

Bonjour je souhaite réaliser un questionnaire aléatoire de 10 questions à partir d'une liste de 20 questions. Cependant je n'arrive pas à éliminer ces fichus doublons. Ci joint une capture d'écran du tableau et du code VBA. La fonction aléatoire marche très bien et les réponses associées aux questions également le problème réside juste dans les doublons. Pouvez vous m'indiquer quoi faire. Merci beaucoup

capture capture2

Bonjour,

une solution possible

Sub aleatoire()
    Dim a(20) As Long, i As Long, q As Long
    For i = 1 To 20
        a(i) = i
    Next i
    For i = 1 To 10
        q = Application.RandBetween(1, 21 - i)
        Worksheets("sheet1").Range("A" & i + 1) = a(q)
        a(q) = a(21 - i)
    Next i
End Sub

Merci h2so4,

Je vous remercie d'avoir fait aussi vite. Malheureusement cela ne marche pas. Ca se trouve c'est moi qui m'y prend mal. J e vous envoie le fichier joint au cas où, ce sera peut-être plus facile. J'ai beau essayer tout ce que je trouve çela ne marche pas.

bonjour,

la macro que j'ai donnée fonctionne telle quelle pas besoin de l'adapter.

Ah cool merci c'est nickel. Cela fait une semaine que je cherche partout. Et finalement vous me réglez le soucis en une après midi. C'est top, Merci beaucoup =)

Rechercher des sujets similaires à "generer nombres aleatoires doublons"