Données aléatoires avec macro

S

Sylvain

Guest
Bonjour,
Après maintes recherches sur le net et tentatives infructueuses, je me permet de vous faire part de mon soucis.
Voilà, je souhaiterais trouver une macro qui me permette d'afficher de façon aléatoire et sans doublons dans la ligne 2 [10 cellules] de ma feuille 1 les données contenues [ au nombre de 50] dans la colonne 1 de ma feuille 2.
Je remercie d'avance tous ceux qui pourront le débutant que je suis.
Sylvain
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Sylvain, bonjour le forum,

Je ne comprends pas très bien... Tu veux afficher de façon aléatoire 50 données dans 10 cellules... Es-tu sûr que les 40 autres données sont des doublons des 10 premières ? Désolé mais mon petit cerveau a besoin de précisions pour pouvoir t'aider.
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Sylvain, bonjour le forum,

Ben oui Sylvain... Dit comme ça. Des fois je me demande pourquoi je suis tant compliqué...

Je te propose la macro suivante :

Sub Macro1()
Dim x As Byte, y As Byte 'déclare les variable x et y
Dim li As Byte 'déclare la variable li
Dim val() As Byte 'déclare le tableau de variables val

For x = 1 To 10 'boucle 1 sur 10 éléments
Randomize 'initialise le générateur de nombres aléatoires
li = Int((50 * Rnd) + 1) 'définit la variable li aléatoirement
'attribue à la cellule L2Cx une des valeurs aléatoirement de la colonne A (Feuil2)
Sheets('Feuil1').Cells(2, x).Value = Sheets('Feuil2').Cells(li, 1).Value

'partie pour éviter les doublons
ReDim Preserve val(x - 1) 'redéfinit le tableau de variable val

If x > 1 Then 'condition 1 : si x est supérieur à 1

For y = 0 To UBound(val, 1) 'boucle 2 sur toutes les valeurs du tableau de variables val

If li = val(y) Then 'condition 2 : Si la variable li est égale à la valeur du tableau val
Sheets('Feuil1').Cells(2, x).Value = '' 'vide la cellule L2Cx
x = x - 1 'redéfinit la variable x
GoTo suite 'va à la balise suite
End If 'fin de la condition 2

Next y 'prochaine valeur du tablau de variable val

End If 'fin de la condition 1

val(x - 1) = li 'attribut la valeur de li à la nouvelle variable du tableau val

suite: 'balise

Next x 'prochain élément de la boucle 1
End Sub

À mon avis il doit y avoir bien plus simple mais je n'ai pas mieux. [file name=sylvain.zip size=9318]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/sylvain.zip[/file]
 

Pièces jointes

  • sylvain.zip
    9.1 KB · Affichages: 36
  • sylvain.zip
    9.1 KB · Affichages: 32
  • sylvain.zip
    9.1 KB · Affichages: 34

Discussions similaires

Réponses
4
Affichages
218

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia