Tri aleatoire sur 3 colonnes

Bonjour à tous,

J'ai un souci de tirage aléatoire.

Sur une colonne actuellement cela ne pose plus le problème. Ne voulant pas me retrouver avec une feuille avec une liste sur une colonne afin de visualiser les noms plus facilement , je les ai mis sur 3 colonnes pour le moment ou cela peut bien être sur plusieurs colonnes.

Pour être plus explicite je vous joins le fichier

https://www.excel-pratique.com/~files/doc2/Tirage.xls

merci de votre aide.

amicalement

Noel

Bonjour à tous,

Peut-être pourras-tu piocher des idées sur cette étude.

https://www.excel-pratique.com/~files/doc2/REiEXPoules_Concours2.xls

Amicalement

Claude.

Bonjour

Une solution imparfaite et un peu lourde par formules, pour voir le principe et donner des idées aux "VBAïstes". qui adapteront.

(La partie ALEA est en VBA dans ThisWorkbook)

https://www.excel-pratique.com/~files/doc2/k2zZeTirage.xls

Cordialement

bonjour,

je n'ai pas trop compris la question... mais je t'ai déjà donné tous les outils dans ton précédent fil. Tu as la-dedans 3 macros génériques pour quasiment tous les tirages aléatoires que tu veux...

Si l'on prend la dernière par exemple la macro "tirage" :

YAKA modifier le range d'origine pour aller à la pêche de tes participants là ou ils sont.

j'ai supposé qu'ils étaient là :

Set Plage = Range("J1:J32,L1:L32,N1:N32")

Bon on a maintenant une collection prête à être mélangée :

Sub tirage()
Dim melange As New Collection
Dim a%, i%, j%, k%, x%, y%, o, v, Plage As Range
'Définition de la plage
Set Plage = Range("J1:J32,L1:L32,N1:N32")
'Stockage dans une collection
For Each o In Plage
melange.Add o.Value
Next
k = melange.Count
Do While k > 0
j = j + 1
If k > 0 Then 'tirage...
i = Int((k * Rnd) + 1)
v = melange(i)

et affichée colonne O (15) par exemple :

'Affichage
Cells(j, 15) = v
jj = 0
melange.Remove i
k = k - 1
End If
Loop
End Sub

La sortie colonne O ne te convient pas ? Soit tu utilises du code générique soit tu le joues à la barbare... et tu insères quelques lignes pour modifier la sortie en dur (ici colonnes Q, S, U, (17,19,21) mais tu peux bien y mettre ou tu veux :

'Disposition de la sortie
Select Case j
Case Is < 33: x = 17
Case Is < 65: x = 19
Case Else: x = 21
End Select
a = IIf(j Mod 32 > 0, j Mod 32, 32)
jj = jj + a

La macro finale :

Sub tirage2()
Dim melange As New Collection
Dim a%, i%, j%, jj%, k%, x%, y%, o, v, Plage As Range
'Définition de la plage
Set Plage = Range("J1:J32,L1:L32,N1:N32")
'Stockage dans une collection
For Each o In Plage
melange.Add o.Value
Next
k = melange.Count
Do While k > 0
j = j + 1
If k > 0 Then 'tirage...
i = Int((k * Rnd) + 1)
v = melange(i)
'Disposition de la sortie
Select Case j
Case Is < 33: x = 17
Case Is < 65: x = 19
Case Else: x = 21
End Select
a = IIf(j Mod 32 > 0, j Mod 32, 32)
jj = jj + a
'Affichage
Cells(jj, x) = v
jj = 0
melange.Remove i
k = k - 1
End If
Loop
End Sub

YA juste la ligne d'ffichage qui a changé pour s'adapter aux nouvelles variables... Ok?

A+

Rechercher des sujets similaires à "tri aleatoire colonnes"