Faire un mélange aléatoire

Bonjour, je me pers un peu avec ce que j'ai à faire et votre aide serais plus que la bienvenue, j'ai besoin de faire un tirage aléatoire pour des joueurs par équipe.

j'ai mis dans mon excel une description plus détaillé, et plus compréhensive je pense :-) je ne sais vraiment pas quoi faire car trop d'aléa pour moi, si l'un de vous pourrais me sauvé, je vous remerciais mille fois

20melange.xlsm (288.48 Ko)

re bonjour, j'essaye de me plancher sur le sujet activement...., ici j'ai fait en sorte que les 2 colonnes soit mélanger, et qu'on aille enlever les joueurs qui ont perdu. jusque la ok :-D apres j'ai fait un nbval, pour avoir le nombre dans chaque colonne, il y a ici une différence de 2. et copier dans une autre colone les chiffres min....

Dim min As Integer

Call tirageequipes
' rangement dans le tour
Sheets("Suite tour").Range("A2:A57").Value = Sheets("liste équipe").Range("H2:H57").Value
'melange
Sheets("Suite tour").Range("F2:G29").Value = Sheets("Suite tour").Range("C2:D29").Value

    'on enleve les éliminés

    Range("F2:G29").Select
    Selection.SpecialCells(xlCellTypeConstants, 1).Select
    Selection.Delete Shift:=xlUp

Sheets("Suite tour").Range("I" & min).Value = Sheets("Suite tour").Range("F" & min).Value

End Sub

alors évidement... va donne rien de bon ... enfin je suis perdue... si je trouve pas de solution je le ferais manuellement, mais le but étant évidement que cela se fasse tout seul....

je vous remet le nouveau fichier avec les modification qui on été aporté

alors SVP, HELP ME

vraiment personne n'a une idée??? j ai beau réfléchir je vois pas comment faire...

re, je ne comprends pas le système. Vous voulez quoi ?

Montrez le résultat voulu (ou un début de cela)

tout d'abord merci infiniment pour ta réponse, j'ai fait des capture d'écran, en espérant que ce soit un peu plus clair.

=> donc sur celui-ci il reste 56 joueurs donc il nous en fraudais 26 de chaque coté, étant donner que les équipes ne peuvent pas se rencontré entre elles (ex : équipe amis), j'essaye de faire en sorte qu’après un tirage sur les nom d'équiper je fasse correspondre des place déterminer afin d’éviter cela donc.

capture d ecran 2025 05 27 142444

mais sur ce tableau on retrouve 1 joueur tout seul alors qu'il pourrait aller à gauche pour remplir l'espace vide, un peu plus loin avec encore moins de joueurs, même résultat ( sauf qu'ici il faut 20 joueurs de chaque coté) donc il faudrait le faire remonté à droite dans la case vide

capture d ecran 2025 05 27 143043

j'aimerais que cela se fasse en automatique en 1 clic k ou tout le monde est bien mis et les équipes se retrouve pas a jouer ensemble, mais je débute et malgré mes essaies j'ai toujours des bug-gage.

en espérant avoir été un peu plus clair

re, un peu plus d'explication, on a 14 fois 4 équipes. On commence avec 4 matches entre équipes différents (pas en poules mais complètement aléatoire).

Après ces 4 matches, on fait quoi ? On prend les 28 meilleurs et on fait la même chose ???

donc en gros il y a 14 équipes - avec 4 joueurs par équipes qui ont chaque 4 vies.

c'est pour ca que j'ai deja fais les 4 premiers tours, car il n'aura pas d’éliminer, c'est apres que ca me pose problème, faire un tirage aléatoire sur Xnbre de joueurs, ok mais il faut vérifier qu'ils ne joue pas dans la même équipe afin qu'il ne s'élimine pas entre eux, puisque la dernière équipe encore en vies, gagne

c'est pour ca que je fais plusieurs tirage, il doit y avoir une façon bebeaucoup plus simple je suis sure, mais je ne m'y connait pas assez en codage pour ca

mais en fait si "simplement" on demande à la colone la plus grande de transféré vers l'autre, genre je vais pas vous le faire en code car il me faut bien toutes mes plumes

si le chiffre en A3 est pair, alors le chiffre A3 est diviser en 2,

si la colone D est plus grande que la colone C

alors on prend x nbre de cellule de la fin de D (A3/2) et on les rajoute a la fin de C

sinon on fait l'inverse,

alors pour ma part il va surement me falloir des heures pour faire cela, mais si ca inspire l'un d'entre vous je prend mdr

Bonsoir,

Je te propose une fonction VBA qui te permet de générer des rencontres aléatoires entre membres de club différents. Donc basé sur une liste dont le nombre de personnes par club peut varier.

vérifie dans le fichier exemple si cela produit le résultat que tu souhaites, après il faudra l'intégrer dans ton fichier...

Sub testmelange()
'exemple d'utilisation de la fonction
    Dim plage As Range, plageresultat As Range, dl&
    ' à adapter
    dl = Cells(Rows.Count, 1).End(xlUp).Row
    Set plage = Range("A1:A52") '<- plage contenant les noms à utiliser pour la génération des rencontres, à adapter
    Set plage = Range("A1:A" & dl) '
    Set plageresultat = Range("E1") '<- première cellule où mettre le résultat, à adapter

    tbr = melange(plage) ' on mélange et crée les rencontres
    plageresultat.Resize(UBound(tbr), 2) = tbr 'on affiche le résultat

End Sub

Function melange(d As Range) As Variant
'fonction melange prend comme paramètre une plage contenant une liste de membres (selon le format "club - nom du membre") et retourne un tableau à 2 dimensions avec pour chaque ligne le nom des 2 adversaires en s'assurant qu'ils sont de clubs différents.
    Dim dl&, dl2&, tb, tbr, i&, j&, a, tbri1, tbri2, tbrj1, tbrj2
    With d
        dl = .Rows.Count
        dl = dl + dl Mod 2 'on ajuste le nombre de participants si nombre impair
        dl2 = dl / 2
        tbo = .Value
    End With
    ReDim tb(1 To dl, 1 To 1)
    For i = 1 To d.Rows.Count
        tb(i, 1) = tbo(i, 1)
    Next i
    If d.Rows.Count <> dl Then tb(i, 1) = " - " 'on ajoute un participant fictif si nombre impair

    'on mélange les noms
    For i = 1 To dl
        q = Application.RandBetween(1, dl)
        a = tb(i, 1)
        tb(i, 1) = tb(q, 1)
        tb(q, 1) = a
    Next i

    'rencontres
    ReDim tbr(1 To dl2, 1 To 2)
    For i = 1 To dl2
        tbr(i, 1) = tb((i - 1) * 2 + 1, 1)
        tbr(i, 2) = tb(i * 2, 1)
    Next i

    'on corrige les rencontres opposant des membres d'une même équipe
    For i = 1 To dl2
        tbri1 = Split(tbr(i, 1), " - ")(0) 'club membre 1
        tbri2 = Split(tbr(i, 2), " - ")(0) 'club membre 2
        If tbri1 = tbri2 Then 'dans le même club ?
            For j = 1 To dl2 'on recherche une ligne avec laquelle faire un échange
                tbrj1 = Split(tbr(j, 1), " - ")(0) 'club membre 1 
                tbrj2 = Split(tbr(j, 2), " - ")(0) 'club membre 2
                If tbri2 <> tbrj2 And tbri2 <> tbrj1 Then
                    a = tbr(j, 2)
                    tbr(j, 2) = tbr(i, 2)
                    tbr(i, 2) = a
                    Exit For
                End If
            Next j
                If j > dl2 Then 'on a parcouru toute la liste des rencontres et on n'a pas trouvé d'échange possible
                    MsgBox "pas de solution trouvée"
                    End
                End If
        End If

    Next i
    melange = tbr
End Function
6melange.xlsm (21.40 Ko)

bonjour,

tu es un amour, je n'en espérais pas tant c est parfais un tout tout tout tout grand merci

Rechercher des sujets similaires à "melange aleatoire"