Comment réaliser un tirage au sort multi-critère?

bibigiggs

XLDnaute Nouveau
Bonjour,

Je fais partie d'une association de badminton et nous organisons prochainement un tournois entre nos adhérents... seulement voilà tout doit être aléatoire et mixte.

Je m'explique, la liste des participants (100 grand maximum) sera connue au dernier moment et les joueurs seront classés par sexe et niveau (2 catégories de niveau). L'idée est de mixer le sexe et le niveau au maximum sachant qu'il faudra aussi palier au lacunes ou rareté de certaines catégories (ex : moins de filles expérimentées que de garçons débutants). A priori le critère prioritaire sera le niveau (je ne sais pas si ça a une influence sur les formules / programmation utilisées?).

Et ensuite, il y a plusieurs niveau de tirage au sort :
[*] la constitution des équipes ;
[*] puis les poules (avec identification du nombre poules sachant qu'on souhaiterait avoir un tableau final à partir des 1/4 de finale); cette seconde partie est très optionnelle car au pire on devrait pouvoir le faire manuellement.

Je n'y connais rien en programmation vba mais je me dis que c'est la seule solution (ou alors, il faut un grand chapeau)... et du coup je suis un peu paumé...

Help... merci d'avance
 

Pièces jointes

  • LFdV - Tirage au sort.xls
    20.5 KB · Affichages: 109

bibigiggs

XLDnaute Nouveau
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour Cisco,

J'ai essayé de montrer dans le fichier joint ce à quoi je m'attendrai en terme de résultat.

Merci d'avance de ton aide en espérant avoir été assez clair dans mes explications.

@ bientôt
 

Pièces jointes

  • LFdV - Tirage au sort-v02.xls
    22 KB · Affichages: 114

camarchepas

XLDnaute Barbatruc
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour à tous ,

Voici pour le tirage de formation des équipes .
Attention si le nombre de participants n'est pas paire , le tirage ne s'effectue pas , il faudra donc ajouter ou supprimer une personne

Code à copier dans un module standard

Si ok, il faudra me donner la maniére de constituer les poules , afin que je poursuive l'écriture

Code:
Sub Tirage()
Dim Tableau As Variant
Dim Sortie() As String
Dim Boucle As Long, Tourne As Long, Choix As Long
Dim FinLigne As Long, NbElements As Long
Dim Trouve As Boolean, Niveau As Boolean, Sexe As Boolean
FinLigne = Sheets("Participants").Range("A" & Rows.Count).End(xlUp).Row
Tableau = Sheets("Participants").Range("A2:D" & FinLigne)
NbElements = UBound(Tableau, 1)

If NbElements Mod 2 <> 0 Then MsgBox "Nombre de participants incorrect": Exit Sub
For Tourne = 1 To NbElements / 2
Encore:
Boucle = 0
ReDim Sortie(NbElements)
Do
Boucle = Boucle + 1
Do
 Choix = Int(Rnd(Timer) * NbElements) + 1
Loop Until Sortie(Choix) = ""
Sortie(Choix) = "*"
If Choix <> Tourne Then
 If Tableau(Choix, 4) = "" And (Tableau(Choix, 2) <> Tableau(Tourne, 2) Or Sexe) Then
  If Tableau(Choix, 3) <> Tableau(Tourne, 3) Or Niveau Then
    Tableau(Choix, 4) = Tourne
    Tableau(Tourne, 4) = Choix
    Trouve = True
  End If
 End If
End If
Loop Until Trouve Or Boucle = NbElements
If Boucle = NbElements And Not Niveau Then Niveau = True: GoTo Encore
If Boucle = NbElements And not Sexe Then Sexe = True: GoTo Encore
If Boucle = NbElements  then msgbox "Constitution des équipes non résolue"
Trouve = False
With Sheets("equipes")
  .Range("A" & Tourne + 1) = "Equipe " & Tourne
  .Range("B" & Tourne + 1) = Tableau(Tourne, 1)
  .Range("C" & Tourne + 1) = Tableau(Tableau(Tourne, 4), 1)
End With
Next Tourne
End Sub
 
Dernière édition:

bibigiggs

XLDnaute Nouveau
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour Camarchepas !

et merci beaucoup pour ton aide, ton pseudo devrait plutôt être "camarchedutonnere" ou "camarchaitpasavant";-)

Enfin bref, le tirage de poule devra permettre d'avoir entre 3 et 5 équipes par poule sachant que le mieux serait qu'elles soient équilibrées. Leur tirage est quant à lui soumis à aucune contrainte.
L'objectif final est que les 2 meilleures équipes de la poule arrivent dans le tableau final (quart ou huitième selon le nombre d'équipes qualifiées).

voilà, je ne sais pas si ça répond à ta question ?

@ plus tard
 

camarchepas

XLDnaute Barbatruc
Re : Comment réaliser un tirage au sort multi-critère?

oups,

sur la ligne :
If Boucle = NbElements Then Sexe = True: GoTo Encore
il faut en fait pour éviter une boucle infernal si le cas se présente :
If Boucle = NbElements And not Sexe Then Sexe = True: GoTo Encore

Je modifie dans le post 4

Enfin bref, le tirage de poule devra permettre d'avoir entre 3 et 5 équipes par poule sachant que le mieux serait qu'elles soient équilibrées. Leur tirage est quant à lui soumis à aucune contrainte.

Pas clair, c'est le nombre d'équipes par poule qui doit être équilibré ou le niveau des équipes dans les différentes Poules.

Je suppose qu'il faudra donc dans le tableau des poules une cellule pour saisir les scores afin de déterminer les qualifiés pour les 1/4 de final .
 

bibigiggs

XLDnaute Nouveau
Re : Comment réaliser un tirage au sort multi-critère?

A priori le niveau devrait être équilibré compte tenu du 1er tirage des équipes donc c'est bien le nombre d'équipe par poule qui est à équilibrer.

Effectivement, je pensais rajouter de la place pour les scores ensuite mais ça n'est pas primordial.

@ + et merci encore
 

CISCO

XLDnaute Barbatruc
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour à tous, bonjour bibigiggs, Camarchepas.

Avec des formules, on devrait pouvoir faire avec quelque chose du genre de ce que j'avais posté sur ce fil :
https://www.excel-downloads.com/threads/tri-aleatoire-avec-conditions.210539/

sur le post 29. Dans ce cas, c'était le contraire, il fallait mettre ensemble des gens d'un même club (un peu comme si dans ton cas, on mettait les hommes de niveau 1 avec des hommes de niveau 1, ceux de niveau 2 avec ceux de niveau 2, et ainsi de suite). Malheureusement, je ne comprend plus la totalité des formules de ce fichier. Cela fait quelques mois que je ne planche plus sérieusement sur Excel, et j'ai oublié quelques combinaisons... Je suis un peu rouillé.

J'ai essayé avec d'autres formules sur ton fichier avec des colonnes intermédiaires, mais cela ne fonctionne pas correctement.

Puisque Camarchepas nous a proposé une solution en VBA... je laisse tomber mes recherches.

@ plus
 

camarchepas

XLDnaute Barbatruc
Re : Comment réaliser un tirage au sort multi-critère?

Bonsoir ,

un pas de plus ,

mais bon , pas sur que ce soit top,

donc si arrangement automatique des poules l'on fait ,

si pas divisible propose diverses solutions .

A voir .....
 

Pièces jointes

  • LFdV - Tirage au sort-v03.xls
    61 KB · Affichages: 86
  • LFdV - Tirage au sort-v03.xls
    61 KB · Affichages: 66
  • LFdV - Tirage au sort-v03.xls
    61 KB · Affichages: 64

bibigiggs

XLDnaute Nouveau
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour camarchepas,

C'est nickel ce que tu as fait !
Il y a juste un petit problème d'affichage entre les solutions de tirage proposées (boite de dialogue) et le tirage au sort des poules me semble-t-il :
par exemple avec 50 joueurs (soit 1 de moins que dans le fichier) il propose de faire 8 poules de 3 membre et une de 1 et il en créé 6 de 4 membres et 1 de 1
ou à l'étape d'après il propose 7 poules de 4 membres et une de 4 et en fait il créé 5 poules de 5 équipes.

Merci encore.
@ bientôt
 

camarchepas

XLDnaute Barbatruc
Re : Comment réaliser un tirage au sort multi-critère?

Bonjour ,

Alors encore une amélio à faire dans l'affichage ,

Mais la découpe est ok maintenant .

Je reprends dés que je peux
 

Pièces jointes

  • LFdV - Tirage au sort-v03.xls
    63.5 KB · Affichages: 119
  • LFdV - Tirage au sort-v03.xls
    63.5 KB · Affichages: 82
  • LFdV - Tirage au sort-v03.xls
    63.5 KB · Affichages: 121

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin