Limiter repetition d'un nombre aleatoire à 5 fois

  • Initiateur de la discussion carlos
  • Date de début
C

carlos

Guest
Bonsoir, je repose une nouvelle question car je pense que c'est un nouveau sujet ...

A partir de cette macro de Michel comment limiter la repetition de tous les nombres aleatoires à 5 fois .

En d'autres termes je ne veux pas plus de 5 chiffres de 1, 5 chiffres de 2,5 chiffres de 3 etc ...

Sub Aleatoire()
Dim cell As Range
For Each cell In Range('a2:a10')
Randomize
If cell = Empty Then cell = Int(11 * Rnd) 'Generate random value between 0 and 10
Next
End Sub


Merci
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir Carlos

Comme déjà conseillé tout à l'heure... Si tu vas dans l'ancien Forum XLD :
=> Ce lien n'existe plus

... Et que tu ustilises le Moteur de Recherche de ce Forum
=> Moteur Recherche Archives du Forum - Base de plus de 100 000 messages
... là avec les mots clefs 'Aléatoire' ou 'Aleatoire'...

Car on a déjà planché sur cette question, je m'en souviens très bien, il y a que quelques mois... et il y a eu du monde sur le coup !!!

Bonne Soirée
@+Thierry
 
C

carlos

Guest
Bonsoir le forum
Bonsoir Thierry et Michel

G testé votre formule mais elle me parait inabordable pour moi car je n'ai pas encore le niveau , je butte sur la comprehension du code ..imbrication de Ordre et tirage ? PouHHHHHH

J'en suis ici /

Sub aleatoire()

Dim nbre, ordre, tirage As Long
Dim cptr As Byte

Randomize
'effacer ancien tirage
Range('g4:g44').ClearContents
'nombre de joueurs
nbre = Application.CountA(Range('e4:e44')) - 1
'De ligne 4 à 44
cptr = 4
For cptr = 4 To 44

ordre = Round(Rnd * nbre, 0)
tirage = Cells(ordre + 4, 7)

While Application.CountIf(Range(Cells(4, 7), Cells([cptr], 4)), tirage) > 0
ordre = Round(Rnd * nbre, 0)
tirage = Cells(ordre + 1, 1)
Wend

Cells(cptr, 4) = tirage

Next cptr

End Sub

Oulalal
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Carlos

tiens second post comme çà par le moteur de recherche...

Re: faire un tableau en VBA
Auteur: @+Thierry (---.monaco377.com)
Date: 28-11-04 15:33


Bonjour Celeda, Micheline, l'Equipe de Choc : Didier/Horatio

Je n'ai pas vu le kiki de Zon (ouf lol), mais par contre je suis content de te croiser Celeda depuis tout ce temps et je te fais une grosse bise.

Et bien sûr je suis aussi content de te croiser Didier, mais on a déjà eu l'occasion de se croiser dans le Tchat, quant à mon Amiral, c'est toujours un plaisir

Sinon voici aussi une variante au cas où on ne veut absolument pas de doublons dans les dix retournés.

Option Explicit

Sub TabAleatoire()
Dim TheCol As Collection
Dim TheColItem As Variant
Dim TheTab(10) As Byte
Dim TheNum As Integer
Dim TheNumber As String
Dim i As Byte
Dim X As Byte

Set TheCol = New Collection

On Error Resume Next
For i = 0 To 99
Randomize (i)
TheNum = Int((100 * Rnd))
TheCol.Add TheNum, CStr(TheNum)
Next
On Error GoTo 0

For Each TheColItem In TheCol
TheTab(X) = TheColItem
X = X + 1
If X = 10 Then Exit For
Next

'ICI c'est juste pour vider le tableau vers un MsgBox et la feuille active...
For i = 0 To 9
TheNumber = TheNumber & vbTab & TheTab(i) & vbCrLf
Range('A' & Range('A5000').End(xlUp).Row + 1) = TheTab(i)
Next

MsgBox 'Voici vos dix numéros tirés au sort aléatoirement sans doublon' & vbCrLf & TheNumber

End Sub

Pour la petite histoire, curieusement j'avais fait ceci logiquement :
On Error Resume Next
For i = 1 To 10
Randomize
TheNum = Int((100 * Rnd))
TheCol.Add TheNum, CStr(TheNum)
Next
On Error GoTo 0

Et sur beaucoup de tests, je me suis retrouvé avec deux retours de zéro... Enfin bon, je ne sais pas, ce doit être le resume next qui me fait un tour, en tout cas ça n'a pas l'air de le faire avec la boucle plus haut...

Mais peut-être ce n'est pas le besoin de Micheline.

Bon Dimanche à tous et toutes
@+Thierry

Bonne Soirée
@+Thierry
 

michel_m

XLDnaute Accro
Salut Carlos, Thierry

J'ai reconnu ma bidouille 'las vegas' à une erreur de syntaxe -les crochets entourant cptr- et à des expressions de variables 'bien d'chez moi' (on est plusieurs Michel sur ce forum...)

C'est vieux, ce machin, mais je l'ai retrouvé: on cherche ici 20 gagnants sur une liste de noms variable dans la colonne A

J'ai donc tenté de te mettre des commentaires dans la macro ci jointe

N'hésites pas au cas où, mais pas de réponses de ma part avant demain soir because boulot: montage et raccordement de nouvelles bécanes à la place de ces saletés de gadget de bare bones; donc, si d'autres forumeurs passent dans le coin...

Bon courage

Michel

Ps à @+Thierry: ta démo sur les étiquettes est super; je tente de l'adapter à un vieux stock de papier à étiquette auto-collantes 3 colonnes 7 lignes pour une assoce du coin mais pas beaucoup de temps. Quoiqu'il en soit c'est nettement supérieur à l'assistant dans Word [file name=las_vegas.zip size=14533]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/las_vegas.zip[/file]
 
Dernière édition:
M

michel_m

Guest
Bonjour Thierry

Merci pour ton offre. Mais question de philosophie xldienne, j'aimerai essayer de le faire; je te tiendrai au courant (quand est la question...)

Amicalement

Michel (at work)
 

Discussions similaires

Statistiques des forums

Discussions
314 011
Messages
2 104 528
Membres
109 061
dernier inscrit
nedjima