Bonjour,
Novice dans le domaine du VBA, j'essaye de concevoir un automatisme pour faire une sélection de valeurs d'une liste.
Donc j'explique, dans ma feuille j'ai une liste de noms dont le nombre varie (car la liste est changée chaque mois).
J'aimerais créer une macro me permettant de sélectionner X valeurs de cette liste.
Par exemple, au début du programme il réclamerait le nombre de valeurs qu'on veut. Imaginons que l'utilisateur choisit 25, cela résulterait quelques colonnes plus loin, une liste des 25 noms sélectionnés sans doublon.
Dans le fichier ci-joint, plusieurs macros ont été réalisés mais j'y retourne plusieurs problèmes.
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim LI As Byte 'déclare la variable LI (LIgne)
Dim TS(1 To 100) As Variant 'déclare le tableau de 100 TS (Tirage au Sort)
Set O = Worksheets("Feuil2") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Randomize 'lance le générateur de nombre aléatoire
LI = Int((100 * Rnd) + 1) 'définit la ligne LI
TS(1) = TV(LI, 1) 'définit le 1er tirage au sort
TV(LI, 1) = "" 'vide la donnée ligne I colonne 1 de TV
For i = 2 To 100 'boucle sur les X autres tirages au sort
LI = Int((100 * Rnd) + 1) 'définit la ligne LI
Do Until TV(LI, 1) <> "" 'exécute en boucle jusqu'à ce que la donnée ligne LI colonne 1 de TV ne soit pas vide
LI = Int((100 * Rnd) + 1) 'définit la ligne LI
Loop 'boucle
TS(i) = O.Cells(LI, 1) 'définit le Ième tirage au sort
TV(LI, 1) = "" 'vide la donnée ligne LI colonne 1 de TV
Next 'prochain tirage azu sort de la boucle'
Range("E2").Resize(100, 1) = Application.Transpose(TS) 'renvoie dans E2 redimensionnée le tableau TS transposé
End Sub
Dans celle ci par exemple, ils prend bien le nombre de valeurs mais uniquement dans les 100 premiers de la liste...
Quelqu'un pour m'aider s'il vous plait?