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
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é
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