XL 2016 concours de pétanque

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 !

chrisr1949

XLDnaute Nouveau
Bonjour a tous,
J'essais de construire un programme excel pour la gestion d'un concours de pétanque (doublette ou triplette formée).
lors du tirage aléatoire du nombre d'équipes inscrites (120) je souhaiterais pouvoir afficher en face de chaque numéros d'inscription(de 1 à 120)
le numéros correspondant au tirage.
exemple si la première équipe inscrite a le numéros 1 au tirage elle aurait le numéro 19 et inversement l'équipe 19 à le numéro 1
Merci de m'aider pour ce code ou formule adaptée à ce problème.
PS: je suis nouveau dans excel 2016.
 

Pièces jointes

Bonsoir chrisr1949, bienvenue sur XLD, salut JBARBE,

Voyez le fichier joint et cette macro :
VB:
Sub Tirage()
Dim a, ub%, b(), d As Object, i%, r%
Randomize
With [B3:B122] 'adaptable
    a = .Value: ub = UBound(a)
    ReDim b(1 To ub, 1 To 1)
    Set d = CreateObject("Scripting.Dictionary")
    For i = 1 To ub
        Do
            If i = ub Then If Not d.exists(a(i, 1)) Then r = b(1, 1): b(1, 1) = a(i, 1): Exit Do 'sécurité
            r = Application.RandBetween(1, ub)
        Loop While r = a(i, 1) Or d.exists(r)
        b(i, 1) = r
        d(r) = ""
    Next
    .Offset(, 2) = b 'décalage de 2 colonnes, adaptable
End With
End Sub
Edit : en colonne B les numéros peuvent être dans n'importe quel ordre mais toujours de 1 à 120.

A+
 

Pièces jointes

Dernière édition:
Merci pour le fichier très intéressant, mais ne correspond pas exactement a ma demande.
Bien sur cela parait exigent, avec mais avec 71 années assumées j'aimerais arriver à faire se dont je me suis fixer.
Mettre au point ce programme afin de montrer à mes congénères que l'age n'a pas de limite.
 
Voyez donc ce fichier (2), pour créer les paires le Dictionary est inutile :
VB:
Sub Tirage()
Dim a, ub%, b(), i%, r%
Randomize
With [B3:B122] 'adaptable
    If .Rows.Count Mod 2 Then MsgBox "Le nombre d'équipes doit être pair...": Exit Sub
    a = .Value: ub = UBound(a)
    ReDim b(1 To ub, 1 To 1)
    For i = 1 To ub
        If b(i, 1) = "" Then
            Do
                r = Application.RandBetween(1, ub)
            Loop While r = i Or b(r, 1) <> ""
            b(i, 1) = a(r, 1)
            b(r, 1) = a(i, 1)
        End If
    Next
    .Offset(, 2) = b 'décalage de 2 colonnes, adaptable
End With
End Sub
 

Pièces jointes

Merci pour le fichier "super"; mais y aurait il la possibilité de rendre le chiffre 122 à la ligne With (a3:a122) de la macro, identifiable automatiquement selon le nombre d'une autre cellule d'une autre colonne ou de feuille?
Merci de pour votre aide.
Christ1949
 
Comme indiqué [B3:B122] est adaptable.

On peut utiliser aussi :
VB:
With [B3].Resize(Application.Count([B:B]))
Ou en précisant la feuille (si la feuille active n'est pas la feuille Tirage) :
VB:
With Feuil1.[B3].Resize(Application.Count(Feuil1.[B:B]))
 
Comme indiqué [B3:B122] est adaptable.

On peut utiliser aussi :
VB:
With [B3].Resize(Application.Count([B:B]))
Ou en précisant la feuille (si la feuille active n'est pas la feuille Tirage) :
VB:
With Feuil1.[B3].Resize(Application.Count(Feuil1.[B:B]))
Merci, mais cela ne fonctionne pas, ni pour le code 1 ou 2
le tirage ce fait toujours sur 120 numéros?
Quoi faire..
Christ1949
 
Je ne comprends pas, c'est normal si de B3 à B122 il y a les nombres de 1 à 120 et qu'ensuite toutes les cellules sont vides...

Bien sûr B1 et B2 ne doivent pas contenir des nombres.
désolé, j'avais mal adapter les écritures.
Par ailleurs, y aurait il un moyen pour le second tirage et les suivants de faire jouer les gagnants ensembles ainsi que les perdants.
Exemple: 20 équipes dont 10 gagnants et 10 perdants
Merci pour votre précieuse aide à mon projet.
Christ1949
Bon noël
 
désolé, j'avais mal adapter les écritures.
Par ailleurs, y aurait il un moyen pour le second tirage et les suivants de faire jouer les gagnants ensembles ainsi que les perdants.
Exemple: 20 équipes dont 10 gagnants et 10 perdants
Merci pour votre précieuse aide à mon projet.
Christ1949
Bon noël
Est il possible d'ajouter une colonne dans laquelle il y aurais un numéros de terrain de 1 a 60
Merci
 

Pièces jointes

Bonjour chrisr1949,

La macro complétée pour le tirage aléatoire des terrains :
VB:
Sub Tirage()
Dim a, ub%, b(), c(), temp(), i%, r%, n%
Randomize
With [B5].Resize(Application.Count([b:b])) 'adaptable
    If .Rows.Count Mod 2 Then MsgBox "Le nombre d'équipes doit être pair...": Exit Sub
    a = .Value: ub = UBound(a)
    ReDim temp(1 To ub / 2)
    ReDim b(1 To ub, 1 To 1)
    ReDim c(1 To ub, 1 To 1)
    For i = 1 To ub / 2
        Do
            r = Application.RandBetween(1, ub / 2)
        Loop While IsNumeric(Application.Match(r, temp, 0))
        temp(i) = r
    Next
    For i = 1 To ub
        If b(i, 1) = "" Then
            Do
                r = Application.RandBetween(1, ub)
            Loop While r = i Or b(r, 1) <> ""
            b(i, 1) = a(r, 1)
            b(r, 1) = a(i, 1)
            n = n + 1
            c(i, 1) = temp(n)
            c(r, 1) = temp(n)
        End If
    Next
    .Offset(, 2) = b 'décalage de 2 colonnes, adaptable
    .Offset(, 4) = c 'décalage de 4 colonnes, adaptable
End With
End Sub
A+
 

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

Discussions similaires

  • Question Question
Microsoft 365 concours pétanque
Réponses
0
Affichages
101
Réponses
23
Affichages
2 K
Réponses
2
Affichages
1 K
Réponses
3
Affichages
2 K
Retour