• Initiateur de la discussion Initiateur de la discussion Pati
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

P

Pati

Guest
Bonjour à tous.

Dans le cadre de l'organisation d'un petit tournoi FIFA (le jeu vidéo), je souhaite organiser un tirage au sort.

J'ai 20 participants et 50 équipes. J'aimerai que chaque participant se voit aléatoirement allouer une de ces 50 équipes (il restera donc 30 équipes non "prises").

Étant loin d'être un spécialiste du tableur je m'en remets donc à votre aide.

En vous remerciant par avance.

Cordialement.

Pati
 
Re : Tirage au sort

salut,

un petit exemple en VBA

si tu met tes equipes sur la colonne B et tes noms de joueurs sur la colonnes C

avec ce code les equipes se classent aléatoirement sur la colonne B et donc les 20 joueurs recoivent des equipe tiré aléatoirement.

Code:
Sub test()
For i = 1 To 50
Cells(i, 1) = Rnd(1)
Next i
Columns("A:B").Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Columns("A:A").Delete Shift:=xlToLeft
End Sub
le pricince du code est le suivant sur la colonne A on va mettre des chiffres tiré aléatoirement puis on les classe dans l ordre croissant.
 
Re : Tirage au sort

Bonsoir,

une autre alternative...

Avec ce code, tu évites les doublons, et tu alloues aux participants une équipe
Tu peux faire plusieurs tirages, et chaque participant ne pourra pas rejouer contre une même équipe

Le code :

Code:
Sub tirag()
Dim MesNumeros As Object, X As Byte, Num As Byte
Dim DerCol As Byte
Set MesNumeros = CreateObject("Scripting.Dictionary")
DerCol = IIf([IV2].End(xlToLeft).Column = 1, 2, [IV2].End(xlToLeft).Column + 1)
Do While X < 20
    Randomize (Timer)
    Num = Int((50) * Rnd + 2)
    If Not MesNumeros.Exists(Num) And Application.CountIf(Range(Cells(X + 2, 2), Cells(X + 2, DerCol)), Num) = 0 Then
        X = X + 1
        MesNumeros.Add Num, Num
    End If
Loop
Cells(2, DerCol).Resize(MesNumeros.Count, 1).Value = Application.Transpose(MesNumeros.items)
End Sub

le fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

I
  • Résolu(e)
Réponses
8
Affichages
3 K
Informatique661
I
P
  • Question Question
5 6 7
Réponses
94
Affichages
10 K
C
Réponses
8
Affichages
2 K
Ced1212
C
P
Réponses
5
Affichages
3 K
Poikage
P
F
Réponses
2
Affichages
821
falldaouda
F
D
Réponses
11
Affichages
2 K
T
Réponses
2
Affichages
1 K
titi8769
T
T
Réponses
2
Affichages
4 K
titi8769
T
B
Réponses
13
Affichages
7 K
bibigiggs
B
S
Réponses
8
Affichages
4 K
Retour