melanger une liste de noms

christelle44

XLDnaute Nouveau
bonjour,
je veux créer un tableau aléatoire pour générer un graphique dynamique mais je n'arrive pas a mélanger ma liste de noms.
Suis peut être gourdasse :p

En attendant dans ma colonne A, j'ai une liste de noms. J'ai essayé : =aléa(A1.A27), cela ne fonctionne pas. J'ai trouvé une formule sur un forum : =INDEX(A1:A27;ALEA.ENTRE.BORNES(A1;A27)) cela ne fonctionne pas non plus.

Qui peut m'aider, j'essaie d'aider un ami dans son travail mais la juste pour çà je bloque:mad:

merci
Christelle
 

Dranreb

XLDnaute Barbatruc
Bonjour.
J'utilise d'habitude cette procédure VBA pour constituér des numéros uniques en ordre aléatoire :
VB:
Private Sub InitAléa(TA() As Long, ByVal Nombre As Long)
Dim P1 As Long, P2 As Long, A As Long
ReDim TA(1 To Nombre)
For P1 = 1 To Nombre: TA(P1) = P1: Next P1
Randomize
For P1 = Nombre To 2 Step -1
  P2 = Int(Rnd * P1) + 1
  A = TA(P2): TA(P2) = TA(P1): TA(P1) = A
  Next P1
End Sub
 

Dranreb

XLDnaute Barbatruc
Exemple de code permettant de maitriser la décision de reconstituer le tirage :
VB:
Option Explicit

Sub ProduireNomAléat()
GénérerNomAléat ActiveSheet.[C3:C14], ActiveSheet.[B3:B14]
End Sub

Sub GénérerNomAléat(ByVal PlgRésu As Range, ByVal PlgNoms As Range)
Dim TNoms(), TA() As Long, TRésu(), L As Long
TNoms = PlgNoms.Value
InitAléa TA, UBound(TNoms, 1)
ReDim TRésu(1 To PlgRésu.Rows.Count, 1 To 1)
For L = 1 To UBound(TRésu)
  If L > UBound(TA) Then Exit For
  TRésu(L, 1) = TNoms(TA(L), 1): Next L
PlgRésu.Value = TRésu
End Sub

Private Sub InitAléa(TA() As Long, ByVal Nombre As Long)
Dim P1 As Long, P2 As Long, A As Long
ReDim TA(1 To Nombre)
For P1 = 1 To Nombre: TA(P1) = P1: Next P1
Randomize
For P1 = Nombre To 2 Step -1
  P2 = Int(Rnd * P1) + 1
  A = TA(P2): TA(P2) = TA(P1): TA(P1) = A
  Next P1
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 752
dernier inscrit
fred13340