Supprimer des nombres utiliser d'une liste
Bonjour,
Je débute avec excel et j'aimerais savoir si il est possible d'avoir une génération de chiffres aléatoires dans une liste et qu'une fois choisi le chiffre disparaisse de la liste et qu'on puisse le supprimer manuellement. Je vais exmplifier ma demande : j'ai donné des numéros à des personnes afin de les rendre anonyme allant de 1 à 600. Donc si je dois donner un nouveau numéro, j'aimerais que cela soit généré automatiquement de manière aléatoire et que ce numéro ne soit plus disponible dans le tirage. Donc si le numéro 50 est attribué à une personne celui-ci est sorti de la liste et au prochain tirage tout les numéros de 1 à 600 seront disponibles sauf le 50.
Je suis très intéressé à apprendre donc je ne veux pas forcément un code clé en main mais si quelqu'un a une marche à suivre ou une piste, ce serait avec plaisir.
je vous remercie d'avance de l'aide que vous pourriez m'apporter.
bonne soirée !
Bonjour,
Le plus simple est de créer une liste de 600 numéros en colonne "A" d'une feuille (de A1 à A600), puis lancer la fonction "ALEA.ENTRE.BORNES(1;600)" qui génèrera un N°, il par la suite aller chercher ce N°; et supprimer la ligne entière ou il se trouve. il faut ensuite refaire la fonction "ALEA.ENTRE.BORNES(1;599)" et ainsi de suite, mais pas très pratique, le mieux c'est d'utiliser un code VBA qui fera tout ça, sauf la suppression de la ligne qui restera toujours à votre main.
Exemple ici
le code (Faire ALT + F11 pour accéder au code)
Sub Creation_Liste() 'Création de la liste des numéros de 1 à 600
'demande confirmation avant de créer la liste complète
If MsgBox("La liste des 600 N° va être régénérée, cliquez sur OUI pour confirmer", vbYesNo + vbCritical + vbDefaultButton2, "Contrôle des dates") = vbNo Then Exit Sub
Range("A7:A606").FormulaR1C1 = "=Row()-6" 'formule qui crée le N° égal au N° de la ligne
Range("A7:A606").Value = Range("A7:A606").Value 'On écrase la formule en ne conservant que la valeur
Columns(2).Clear 'effacement des traces éventuelles encore visibles dans la colonne B
ActiveWindow.ScrollRow = 1 '
End Sub
Sub Tirage()
Dim DerLig As Long, N° As Long 'Déclaration des variables
DerLig = Range("A" & Rows.Count).End(xlUp).Row 'recherche de la dernière ligne
Alea_Min = 1
Alea_Max = DerLig
Randomize 'lancement du générateur de valeurs aléatoires
N°_Tiré = Int((Alea_Max - Alea_Min + 1) * Rnd) + Alea_Min 'Nombre compris entre 1 et 600
Cells(N°_Tiré + 6, "B").Interior.Color = RGB(176, 176, 176)
Cells(N°_Tiré + 6, "B").Value = "Supprimez cette ligne"
Cells(N°_Tiré + 6, "A").Select 'sélection de la cellule contenant le N° trouvé
ActiveWindow.ScrollRow = N°_Tiré + 6 'Le n° tiré est en haut de la feuille juste sous les boutons
End SubCdlt