Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…