tri aleatoire

jfcjfc

XLDnaute Nouveau
Bonjour, je voudrai faire un tri aléatoire sur une ligne de 20 valeurs différentes pour en garder que 10.
ex: ("A1,T1") = 1,2,3;4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20.
le tri aléatoire doit m'en garder que 10 sur ces 20.
en macro VBA.
D'avance merci
 

Modeste geedee

XLDnaute Barbatruc
Re : tri aleatoire

Bonsour®
la même avec macro
Capture.jpg
 

Pièces jointes

  • jfcjfc.xlsm
    21.7 KB · Affichages: 41
  • Capture.jpg
    Capture.jpg
    27.6 KB · Affichages: 31

jfcjfc

XLDnaute Nouveau
Re : tri aleatoire

Merci, mais le curseur ne se déplace pas !
ex: j'ai 20 valeurs de ("BA,BT"), comment en effacer 10 de façon aléatoire sur cette ligne.
ou alors comment utiliser "clearcontents" aléatoirement, sur une ligne de 20 n° pour en effacer 10.
encore merci pour l'info.:p
 

Dranreb

XLDnaute Barbatruc
Re : tri aleatoire

comment en effacer 10 de façon aléatoire sur cette ligne.
Comme je dis de le faire en combinant mes poste #3 et #9

Ce qui donne évidemment ça par exemple :
VB:
Sub test()
Dim TAléa() As Long, P As Long, A As Long, J As Long, Plg As Range
ReDim TAléa(1 To 20): For P = 1 To 20: TAléa(P) = P: Next P
For P = 20 To 2 Step -1
   A = Int(Rnd * P) + 1: J = TAléa(A): TAléa(A) = TAléa(P): TAléa(P) = J
   Next P
Set Plg = ActiveSheet.[A1:T1]
For P = 1 To 10
   Plg.Columns(TAléa(P)).Value = Empty
   Next P
End Sub
 
Dernière édition:

jfcjfc

XLDnaute Nouveau
Re : tri aleatoire

Ce qui donne évidemment ça par exemple :
VB:
Sub test()
Dim TAléa() As Long, P As Long, A As Long, J As Long, Plg As Range
ReDim TAléa(1 To 20): For P = 1 To 20: TAléa(P) = P: Next P
For P = 20 To 2 Step -1
   A = Int(Rnd * P) + 1: J = TAléa(A): TAléa(A) = TAléa(P): TAléa(P) = J
   Next P
Set Plg = ActiveSheet.[A1:T1]
For P = 1 To 10
   Plg.Columns(TAléa(P)).Value = Empty
   Next P
End Sub
[/QUOTE]


j'ai besoin encore de votre aide:confused:
je voudrai pouvoir utiliser cette macro sur la ligne de mon choix
exemple
dim A,B,C as integer
A = 12163
B = 3
C = 22
''''Set Plg = ActiveSheet.[A1:T1], le changer en valeur numérique.
'du style : Range(Cells(A, B), Cells(A, C)).Select
' la boucle For P doit prendre en compte ce changement aussi.
'Plg.Columns(TAléa(P)).Value = Empty, doit être aussi changer,Il me semble.
'en résumé, pouvoir utiliser la macro à mon gré sur la ligne que j'ai choisie.
Encore une fois d'avance merci pour la réponse et excusez pour le dérangement.
Cordialement
 

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 158
dernier inscrit
laufin