Tirage au sort

Bonjour

Alors désolé si j'aborde une énième fois un sujet déjà évoqué, mais je n'ai pas réussi à trouver mon bonheur.

J'ai une liste de 32 joueurs que je veux repartir en 8 poules de 4. J'ai voulu éviter la VBA que je ne maîtrise pas pour essayer avec la formule ALEA, mais comme je ne sais pas comment figer les résultats obtenus, c'est un peu la misère.

Je vous joins mon fichier pour que vous pussiez me dire comment je peux faire en VBA pour faire le tirage, et au passage m'expliquer pas à pas comment vous faites parce que j'aurais le même fichier a faire, mais avec 16 équipes

Merci par avance pour votre aide.

PS: je n'arrive pas à joindre mon fichier , je vous laisse donc le lien drive pour le telecharger

Le mod de passe est "modif"

Bonjour, killerjo

Un fichier à tester, il concerne un tournoi de pétanque

mais le principe reste le même

Amicalement

Pierrot

Merci, mais ce fichier ne répond pas complètement à ma demande.

Le tirage au sort effectué place les joueurs sur le tableau et non pas en poules de 4

Et je ne connais pas le mot de passe pour déverrouiller le fichier et aller fouille les entrailles de la bête

Bonjour,

Quelque chose qui peut peut-être t'intéresser.

Une fonction personnalisée, qui répartit aléatoirement un nombre de numéros défini (de 1 à n) sur une plage.

Function TIRAGESELEC2D(n As Integer)
    Dim tabt(), tablo() As Integer
    Dim i%, j%, k%, m%, x%, lig%, col%
    Application.Volatile False
    If n < 1 Then
        TIRAGESELEC2D = CVErr(xlErrNum)
        Exit Function
    End If
    m = Selection.Cells.Count
    lig = Selection.Rows.Count
    col = Selection.Columns.Count
    ReDim tabt(1 To lig, 1 To col)
    If m > n Then
        For i = n To m - 1
            j = i \ col + 1
            k = i Mod col + 1
            tabt(j, k) = CVErr(xlErrNA)
        Next i
    End If
    ReDim tablo(n)
    For i = 1 To n
        tablo(i) = i
    Next i
    Randomize
    For i = 1 To n
        x = Int(n * Rnd + 1)
        tablo(0) = tablo(x)
        tablo(x) = tablo(i)
        tablo(i) = tablo(0)
    Next i
    tablo(0) = tablo(n)
    x = Int(n * Rnd + 1)
    For i = 0 To n - 1
        j = i \ col + 1
        k = i Mod col + 1
        tabt(j, k) = tablo((x - 1 + i) Mod n)
    Next i
    TIRAGESELEC2D = tabt
End Function

Utilisation :

Copier la fonction et la coller dans un module standard (Ouvrir l'éditeur VBA par Alt+F11 ou par l'onglet Développeur), Insertion > Module, et coller)

Dans ta feuille : Sélectionner une plage, dans ton cas 4 lignes sur 8 colonnes (ou l'inverse)

Taper = et le nom TIRAGESELEC2D (aux premières lettres il apparaîtra dans la liste des fonctions proposées par l'assistant et tu pourras sélectionner le nom).

Indiquer entre parenthèse à la suite le nombre de numéros à tirer : 32 dans ton cas.

=TIRAGESELEC2D(32)

Valider par Ctrl+Maj+Entrée (fonction matricielle).

Et les nombres de 1 à 32 apparaissent aléatoirement répartis sur la plage.

La fonction ne se recalcule pas lors du recalcul automatique (pour relancer le calcul, il faut l'éditer en se positionnant dans la barre de formule et la valider à nouveau).

Tu auras préalablement numéroté tes joueurs, et tu disposeras donc de tes 8 poules de 4.

Cordialement.

Merci. On commence à en prendre le chemin.

J'ai donc fait comme tu m'as dit, mais ... Les noms à prendre en compte sont ceux dans la colonne H (colonne masquée) puisque c'est l'addition des 2 joueurs

Comment je sais si dans ta macro c'est le cas ?


Hopelaaaa, je viens de comprendre !!!

J'ai donc mes 8 colonnes sur 4 lignes remplies de numero.

Je me met en dessous et fait une RECHERCHEV.

=RECHERCHEV(M36;H8:I39;1;FAUX) le probleme c'est qu'il me met #N/A


Bon c'est solutionné (me demandez pas comment. J'ai refait la manip et c'est reglé)

Le probleme c'est que si je veux refaire un tirage au sort, je dois retaper la formule et la revalider ? On peut pas faire un bouton ?

Je n'ai pas regardé ton fichier, je ne m'occupe pas des noms...

Je propose juste une fonction personnalisée, qui en une seule validation te répartit des numéros de 1 à 32 en 4 x 8, ce qui correspond à ta problématique de répartition aléatoire.

A toi de l'intégrer de façon à établir une correspondance noms-numéros de la façon qui te convient...

De la même façon, la fonction répartira le nombre de numéros que tu lui fourniras en arguments sur n'importe quelle plage que tu auras sélectionnée avant de taper et valider la fonction.

Si tu sélectionnes plus de cellules que le nombre que tu indiques, elle afficher #N/A dans les dernières cellules de la plage où elle ne dispose plus de numéros à fournir.

Si tu sélectionnes moins de cellules que le nombre que tu mets au tirages, tu auras autant de nombre différents que de cellules sélectionnées, parmi la série numérique demandée, mais certains n'auront pu être tirés et manqueront.

C'est un outil tout à fait adaptable à de nombreuses situations...

Effectivement, c'est NIKEL, merci. Par contre comment je peux faire pour refaire un tirage ? Sinon apres ca me convient avec la rechercheV

Tu resélectionnes la plage, tu te positionnes dans la barre de formule pour éditer, et tu revalides, comme je l'avais indiqué dans mon premier post.

Effectivement ... J'oubliais de me placer sur la barre de formule

Merci, ca me convient

Rechercher des sujets similaires à "tirage sort"