Tirage aléatoire tournoi chapeaux

Igo9one

XLDnaute Nouveau
Bonjour à tous,

Dans le contexte de mes études je dois réaliser un tournoi de football, je me suis inspiré de la coupe du monde. Je viens vous demander de l'aide car ça va faire 2 semaines que je but sur ce fichier.
Mon problème rencontré est le suivant: Je souhaiterai à partir des chapeaux (A,B,C,D) regroupant les 32 équipes suite à la qualification. Pouvoir placer aléatoirement une équipe par chapeau dans les différentes poules (4 équipes par poules (A,B,C,D,E,F,G,H)). Je ne parviens pas à trouver la fonction qu'il convient.

Si il est possible pour vous de m'aider, je l'accepte volontiers.

Higo
 

Pièces jointes

  • acquisition des données-devoir.xlsx
    28.5 KB · Affichages: 20

job75

XLDnaute Barbatruc
Bonjour Igo9one,

Voyez le fichier joint et cette macro qui crée les 4 "chapeaux" :
VB:
Sub Tirage()
Dim lig&, c As Range
Application.ScreenUpdating = False
lig = 1
For Each c In [B5:E12]
    Cells(lig, "Z") = c
    lig = lig + 1
Next
[AA1:AA32] = "=RAND()"
[AA1:AA32] = [AA1:AA32].Value 'supprime les formules
[Z1:AA32].Sort [AA1], Header:=xlNo 'tri
lig = 1
For Each c In [B5:E12]
    c = Cells(lig, "Z")
    lig = lig + 1
Next
[Z1:AA32].ClearContents
With ActiveSheet.UsedRange: End With 'actualise les barres de défilement
End Sub
A+
 

Pièces jointes

  • Tirage(1).xlsm
    43.2 KB · Affichages: 32

Igo9one

XLDnaute Nouveau
Bonjour à vous Job75,

Un grand merci pour votre aide, et votre rapidité.
Dans l'idée le tirage que vous avez effectué correspond. Mais je souhaiterai si possible pour vous, par rapport au fichier de base où les équipes sont rangées respectivement par rapport aux qualifications. Que le tirage aléatoire s'effectue au sein même du chapeau et non sur la totalité des équipes ?
Par exemple: l'équipe de France est dans le chapeau A, le mélange soit effectué mais celle-ci reste dans ce même chapeau. Et cela valable sur les différents chapeaux.
Juste les équipes placé reste dans le même chapeau.

Merci d'avance
 

job75

XLDnaute Barbatruc
C'est plus simple, voyez le fichier (2) et cette macro :
VB:
Sub Tirage()
Dim colonne As Range
Application.ScreenUpdating = False
For Each colonne In [B5:E12].Columns
    colonne.Insert xlToRight 'insertion d'une colonne auxiliaire
    colonne(0) = "=RAND()"
    colonne(0) = colonne(0).Value 'supprime les formules
    colonne(0).Resize(, 2).Sort colonne(0), Header:=xlNo 'tri
    colonne(0).Delete xlToLeft
Next
End Sub
 

Pièces jointes

  • Tirage(2).xlsm
    43.1 KB · Affichages: 27

Igo9one

XLDnaute Nouveau
Bonjour Job75,
Ce qui a été réalisé ci-dessus me convient parfaitement, un grand merci à vous pour votre aide.

j'essaye de rendre mon devoir le plus automatisé possible, j'ai alors mis une macro concernant le reset de tous les scores en seul bouton. maintenant je souhaiterait établir des résultats aléatoires avec la fonction "Alea.entre.bornes" avec un minimum de zéro et le maximum étaient définis à 6. je ne parviens pas à l'appliquer partout d'un seul coup. Excel me notifie que c'est impossible car la taille des cellules fusionnées ne sont pas les même que les autres lorsque je sélectionne les colonnes.

Est ce que par hasard vous auriez la solution ?

Désolé de vous déranger
 

Pièces jointes

  • Tirage(2).xlsm
    38.3 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonsoir Igo9one,

Fichier (3) avec cette macro :
VB:
Sub Score()
Dim a As Range
Application.Calculation = xlCalculationManual 'évite le recalcul des formules
With Range("F5:G10,F14:G19,F23:G28,F32:G37,F41:G46,F50:G55,F59:G64,F68:G73")
    .Formula = "=RANDBETWEEN(0,6)"
    For Each a In .Areas
        a = a.Value 'supprime les formules
    Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub
A+
 

Pièces jointes

  • Tirage(3).xlsm
    44.9 KB · Affichages: 13

Igo9one

XLDnaute Nouveau
Bonsoir Job75, j'espère que vous allez bien.

Malheureusement je ne parviens pas à ouvrir le dernier document. Cela me signale une erreur et impossible de l'ouvrir.

En revanche lorsque j'ai essayé de le faire de moi-même je n'arrivai pas à appliquer la formule sur toute le case, malgré la sélection de toutes les cases je ne comprends pas. Celle-ci s'appliquait que dans une seul cellule.

je pensais à deux alternatives concernant les résultats:
1- tirage aléatoire avec une macro (Automatisé)-Application de tous les résultats
2- incrémentation de 1 en 1 , et soustraction de 1 en 1 en cas de but annulé (Manuel). Mais je souhaiterai que cela ne s'applique que dans le match sélectionné et pas dans toute la colonne.
Est-ce que vous pensez que c'est possible de faire cela ?

En espérant ne pas trop vous déranger. Etes vous formateur Excel dans votre vie ?

En vous remerciant d'avance.
Bonne soirée
 

Igo9one

XLDnaute Nouveau
Merci Job75 j'y suis parvenu, je l'ai fait également pour les phases finales.

Je me demandais s'il était possible d'instaurer un code couleur dans la macro c'est a dire "Vert" en cas de Victoire et "Rouge" en cas de défaite ? afin que ce soit plus clair.
 

Pièces jointes

  • Tirage(3).xlsm
    42.1 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour Igo9one, le forum,

Fichier (4) :
VB:
Sub Score2()
Dim a As Range
Application.Calculation = xlCalculationManual 'evite le recalcul des formules
For Each a In Range("D3:D4,D7:D8,D11:D12,D15:D16,D19:D20,D23:D24,D27:D28,D31:D32,G5:G6,G13:G14,G21:G22,G29:G30,J9:J10,J17:J18,J25:J26,M17:M18").Areas
    Do
        a = "=RANDBETWEEN(0,6)"
    Loop While a(1) = a(2) 'evite l'égalité
    a = a.Value 'supprime les formules
Next
Application.Calculation = xlCalculationAutomatic
End Sub
PS : j'ai mis le code du post #4 pour la macro Tirage.

Bonne journée.
 

Pièces jointes

  • Tirage(4).xlsm
    48.6 KB · Affichages: 32

Discussions similaires

Statistiques des forums

Discussions
312 169
Messages
2 085 914
Membres
103 036
dernier inscrit
Greg33091