Bonjour à tous et merci pour votre temps,
J'ai une database excel avec des noms/prenom/email/...
Dans le cadre de rencontre E-coffee, je souhaite coder en VBA un algorithme me permettant de faire "matcher" deux personnes ensembles de façon aléatoire.
Je bloque sur une point de code...
Est-il possible de faire un random pick dans une liste et de diminuer la taille de la liste à chaque itération (match réussi) ?
Option Explicit
Sub Button2_Click()
Dim wk As Workbook
Dim sh_main As Worksheet
Dim People_number As Integer
Dim Couple_match_number As Integer
Dim test As String
Dim name_dict As Scripting.Dictionary
Dim Couple_match_dict As Scripting.Dictionary
Dim i As Integer
Dim people1, people2 As Integer
Set wk = ActiveWorkbook
Set sh_main = wk.Sheets("Sheet1")
'Define the number of people'
People_number = sh_main.Cells(sh_main.Rows.Count, "A").End(xlUp).Row
'Define the number of match'
Couple_match_number = WorksheetFunction.RoundDown(People_number / 2, 0)
'Create the dictionary of all name'
Set name_dict = New Scripting.Dictionary
i = 1
While sh_main.Cells(i, 1) <> ""
name_dict(i) = CStr(sh_main.Cells(i, 2).Value)
i = i + 1
Wend
'Define the rule'
'Def function'
'Make the matchs'
Set Couple_match_dict = New Scripting.Dictionary
'Select X diffent random people in the list'
For i = 0 To Couple_match_number
people1 = [RandBetween(1,People_number)]
people2 = [RandBetween(1,People_number)]
While people2 = people1
people2 = Int(People_number * Rnd) + 1
Wend
'Check condition'
'Make the match and add to dictionary'
Couple_match_dict(people1) = people2
'Remove from the list of name''
Next
End Sub
Je vois bien que je suis parti dans la mauvaise direction.
Idéalement il faudrait que je fasse un array avec le numero de chaque personne, que je tire au hasard deux nombre de cet array et que je les retire, etc ...
Mais cela est-il possible ?