Tri aleatoire d'une liste

YOYO

XLDnaute Nouveau
Bonjour,

J'ai une liste de nombres que je souhaite trier aléatoirement en évitant que l'un des nombres de la liste triée correspondent au nombre d'origine.

Merci pour votre aide.

Exemple
Avant: 18-12-25-4
Après: 25-18-4-12
 

andré

XLDnaute Barbatruc
Salut,

Ta condition n'est pas facile à résoudre.
Tu veux trier et comparer avec une liste qui n'existe plus.
Par macro cela doit être faisable.

En attendant mieux, voici en pièce jointe une façon de procéder par formule et MFC.

Si la condition n'est pas remplie, la touche clavier F9 te permet de faire un nouvel essai.

En enregistrant cette procédure sous une macro, tu peux rendre le tout automatique.

Â+




[file name=tri_nontrie.zip size=1963]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tri_nontrie.zip[/file]
 

andré

XLDnaute Barbatruc
Resalut,

Mon exemple n'est pas bon, il peut y avoir des doublons dans la nouvelle liste triée.

Donc, il faut modifier la formule ALEA() pour les éviter.

Â+




[file name=tri_nontrie_V2.zip size=2103]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tri_nontrie_V2.zip[/file]
 

YOYO

XLDnaute Nouveau
Salut,

merci pour la réponse, je vais étudier ta proposition.
En fait et cela devrait simplifier les choses, je souhaite conserver la première liste et créer la deuxième liste triée aléatoirement dans une colonne adjacente.

A+ YOYO
 

YOYO

XLDnaute Nouveau
Salut,

merci pour la réponse, je vais étudier ta proposition.
En fait et cela devrait simplifier les choses, je souhaite conserver la première liste et créer la deuxième liste triée aléatoirement dans une colonne adjacente.

A+ YOYO
 
B

bof

Guest
bonsoir,
une petite macro qui fera ça :
Attention ! la liste de départ doit être sélectionnée (de A1 à A10 par exemple) et ne comporter que des integer
le résultat s'affiche en colonne B
Sub Test()
Dim melange As New Collection
Dim tmp As New Collection
Dim i%, j%, k%, x%
If Selection.Cells.Count > 1 Then
On Error GoTo GESTERR
For Each o In Selection
melange.Add o.Value
tmp.Add o.Value
Next
k = melange.Count
Kmem = k
Do While k > 0
If k > 0 Then
j = j + 1
Do
i = Int((k * Rnd) + 1)
x = melange(i)
Y = tmp(j) = x
If Y And j = Kmem Then Err.Raise 65535
Loop While Y
Cells(j, 2) = x
melange.Remove i
k = k - 1
End If
Loop
Else
MsgBox 'Vous devez sélectionner au moins' & Chr(10) & _
'2 cellules contenant des integer !'
End If
Exit Sub
GESTERR:
Test
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 951
dernier inscrit
Misterb