Sub Tirage()
Application.ScreenUpdating = False
DL = Range("B65500").End(xlUp).Row ' dernière ligne
tablo = Range("B2:B" & DL) ' transfert des noms dans un tablo
ReDim Alea(DL) ' nouveau tableau de même taille pour contenir des nombres aléatoires
For Colonne = 4 To 13 ' de la colonne D à la colonne M soit 10 tirages.
For i = 0 To UBound(Alea) ' on remplit le tableau de valeurs alea...
Bonjour Seddiki,
il faut faire un copier / coller valeur. (manuellement ou par vba)
(je te laisse chercher la suite car j'suis pas disponible)
soan
Sub Tirage()
Application.ScreenUpdating = False
DL = Range("B65500").End(xlUp).Row ' dernière ligne
tablo = Range("B2:B" & DL) ' transfert des noms dans un tablo
ReDim Alea(DL) ' nouveau tableau de même taille pour contenir des nombres aléatoires
For Colonne = 4 To 13 ' de la colonne D à la colonne M soit 10 tirages.
For i = 0 To UBound(Alea) ' on remplit le tableau de valeurs alea
Alea(i) = Rnd
Next i
For i = 1 To UBound(tablo) ' on tri sur les valeurs alea croissantes
For j = 1 To UBound(tablo)
If Alea(i) > Alea(j) Then
Buffer = Alea(i): Alea(i) = Alea(j): Alea(j) = Buffer
Buffer = tablo(i, 1): tablo(i, 1) = tablo(j, 1): tablo(j, 1) = Buffer
End If
Next j
Next i
Cells(2, Colonne).Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo ' on restitue les données
Next Colonne
Application.ScreenUpdating = True
End Sub
je la fermeBonsoir Seddiki_adz, Soan,
Si le but est de faire des tirages au sort ( 5 dans votre fichier ), cela ne peut marcher qu'avec des copier/coller valeurs à la main.
Ou alors faire directement les tirages par VBA.
En PJ un exemple où on fait 10 tirages aléatoires avec cette macro :
VB:Sub Tirage() Application.ScreenUpdating = False DL = Range("B65500").End(xlUp).Row ' dernière ligne tablo = Range("B2:B" & DL) ' transfert des noms dans un tablo ReDim Alea(DL) ' nouveau tableau de même taille pour contenir des nombres aléatoires For Colonne = 4 To 13 ' de la colonne D à la colonne M soit 10 tirages. For i = 0 To UBound(Alea) ' on remplit le tableau de valeurs alea Alea(i) = Rnd Next i For i = 1 To UBound(tablo) ' on tri sur les valeurs alea croissantes For j = 1 To UBound(tablo) If Alea(i) > Alea(j) Then Buffer = Alea(i): Alea(i) = Alea(j): Alea(j) = Buffer Buffer = tablo(i, 1): tablo(i, 1) = tablo(j, 1): tablo(j, 1) = Buffer End If Next j Next i Cells(2, Colonne).Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo ' on rla estitue les données Next Colonne Application.ScreenUpdating = True End Sub
comment changer le code pour que la colonne B soit dans la feuil2 a partir cellule A4?je la ferme
excellent
grand grand merci
mes salutation