VBA - Liste de nom

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 ?

Bonjour,

Si tu as un fichier simplifié, ce serait sans doute plus qu'utile.

Regarde aussi côté tables de Berger ... https://www.excel-pratique.com/fr/telechargements/utilitaires/tables-berger-excel-no431

Hello,

Merci de ta réponse, en effet le concept est assez proche mais ne me permet pas d'effectuer ce que je cherche à faire.
J'ai dans ma liste de nom des gens "actif" et "inactif" que je ne peux pas supprimer, des gens qui vont s'ajouter au fur et à mesure du temps, etc ...

J'ai uniquement besoin de selectionner deux random number dans un liste donnée (non continue). Est-il possible de faire cela ?

Par exemple:

collection = (1,3,4,5,8,11)
RandomNumber1 = FonctionQueJeCherche(collection)

Randomnumber2= FonctionQueJeCherche(collection)

Si tu as un fichier simplifié, ce serait sans doute plus qu'utile.

Rechercher des sujets similaires à "vba liste nom"