Programme spécifique tournoi de pétanque
J’organise un tournoi de pétanque et j’ai grandement besoin de votre aide car je me sens « dépassé ».
Entre 10 et 28 équipes.
4 tours de jeux à prévoir.
Le fichier doit donc fonctionner de la manière suivante :
- Encodage du noms des équipes.
- Sur base de cet encodage, il faut générer un 1er tirage au sort et attribuer un terrain pour chaque match.
- Je dois pouvoir encoder le résultat de chaque partie (exemple 13-3, 5-13).
- Sur base de ces résultats encodés, un classement doit se faire automatiquement avec les critères suivants :
- Indiquer « 1 » dans une colonne « V » qui correspond à une victoire.
- Si défaite, indiquer « 0 ».
- Ensuite, dans une colonne « avérage », il faut indiquer la différence du résultat => si par exemple 13-7 => la différence est 6. Pareil si le score est 7-13 => différence = -6.
- Il faut donc que le fichier intègre automatiquement le score pour les 2 équipes concernées et génère le classement.
- Les critères de tri sont donc : Victoire (1er niveau) et Avérage (2ème niveau) en tenant compte que c’est du plus grand au plus petit pour ces 2 critères.
- Une fois le classement du 1er tour complet, il faut donc générer le 2ème tour. Pour ce second tour, il faut simplement reprendre le suivi du classement (1er contre 2ème, 3ème contre 4ème…) et répartir chaque match sur un terrain.
- Je dois pouvoir encoder le résultat de chaque partie (exemple 13-3, 5-13) pour ce second tour.
- Sur base de ces résultats encodés, un second classement doit se faire automatiquement avec les critères suivants :
- Indiquer « 1 » dans une colonne « V » qui correspond à une victoire.
- Si défaite, indiquer « 0 ».
- Il faut aussi additionner les 2 résultats.
- Ensuite, dans une colonne « avérage », il faut indiquer la différence du résultat => si par exemple 13-7 => la différence est 6. Pareil si le score est 7-13 => différence = -6. Il faut également additionner ces résultats.
- Il faut donc que le fichier intègre automatiquement le score pour les 2 équipes concernées et génère le classement.
- Les critères de tri sont donc : Victoire (1er niveau) et Avérage (2ème niveau) en tenant compte que c’est du plus grand au plus petit pour ces 2 critères.
- Une fois le classement du 2ème tour complet, il faut donc générer le 3ème tour. Pour ce troisième tour, il faut simplement reprendre le suivi du classement (1er contre 2ème, 3ème contre 4ème…) et répartir chaque match sur un terrain (inverser l’ordre des terrains).
- Je dois pouvoir encoder le résultat de chaque partie (exemple 13-3, 5-13) pour ce troisième tour.
- Sur base de ces résultats encodés, un troisième classement doit se faire automatiquement avec les critères suivants :
- Indiquer « 1 » dans une colonne « V » qui correspond à une victoire.
- Si défaite, indiquer « 0 ».
- Il faut aussi additionner les 3 résultats.
- Ensuite, dans une colonne « avérage », il faut indiquer la différence du résultat => si par exemple 13-7 => la différence est 6. Pareil si le score est 7-13 => différence = -6. Il faut également additionner ces résultats.
- Il faut donc que le fichier intègre automatiquement le score pour les 2 équipes concernées et génère le classement.
- Les critères de tri sont donc : Victoire (1er niveau) et Avérage (2ème niveau) en tenant compte que c’est du plus grand au plus petit pour ces 2 critères.
- Une fois le classement du 3ème tour complet, il faut donc générer le dernier tour. Pour ce dernier tour, il faut simplement reprendre le suivi du classement (1er contre 2ème, 3ème contre 4ème…) et répartir chaque match sur un terrain (garder l’ordre des terrains – par exemple 1er contre 2ème sur terrain 1).
- Je dois pouvoir encoder le résultat de chaque partie (exemple 13-3, 5-13) pour ce dernier tour.
- Sur base de ces résultats encodés, un classement final doit se faire automatiquement avec les critères suivants :
- Indiquer « 1 » dans une colonne « V » qui correspond à une victoire.
- Si défaite, indiquer « 0 ».
- Il faut aussi additionner les 4 résultats.
- Ensuite, dans une colonne « avérage », il faut indiquer la différence du résultat => si par exemple 13-7 => la différence est 6. Pareil si le score est 7-13 => différence = -6. Il faut également additionner ces résultats.
- Il faut donc que le fichier intègre automatiquement le score pour les 2 équipes concernées et génère le classement.
- Les critères de tri sont donc : Victoire (1er niveau) et Avérage (2ème niveau) en tenant compte que c’est du plus grand au plus petit pour ces 2 critères.
Et pour finir, est-ce possible de configurer tout cela afin que ce soit imprimable en format a4 ?
Salut DjBueno
Peut-être avec ce fichier
A tester et nous dire
A+
bonsoir, vois si ce fichier peu correspondre a ta demande
@JExceL2fr, un TS est un outil vraiment pratique, il faut profiter de cela ! Il mémorise ses formules, MFCs, formats, etc. Donc inutile d'écraser ces formules
un exemple pour Tour1. Les 3 premières lignes après 'With range ..." sont suffisant pour règler le nombre de lignes et on ne touche pas aux colonnes avec les formules. Sans ces 2 colonnes "ID", ce serait encore plus facile.
Sub M_Tour1()
Dim N, N2, Arr1, Arr2, Arr3, i, c
N = Range("EquipesTable").Rows.Count
If N Mod 2 = 1 Then MsgBox "unpair": Exit Sub
N2 = N \ 2
With Range("Tour1_Matches").ListObject 'TS du premier tour
If .ListRows.Count = 0 Then .ListRows.Add 'min 1 ligne
If .ListRows.Count > N2 Then .DataBodyRange.Offset(N2).Resize(.ListRows.Count - N2).Delete 'supprimer les lignes supplémentaires
.ListColumns("terrain").DataBodyRange.Resize(N2, 2).Value = WorksheetFunction.Sequence(N2) 'les terrains et les matchs (et ev. ajouter des lignes si nécessaire)
.ListColumns("Score1").DataBodyRange.Resize(, 4).ClearContents 'RAZ ces 4 colonnes
Arr1 = WorksheetFunction.RandArray(N) 'matrice avec de valeurs aléatoires 0-1
Arr2 = Application.Sort(Arr1) 'matrice triée
ReDim Arr3(1 To N)
For i = 1 To N: Arr3(i) = Application.Match(Arr1(i, 1), Arr2, 0): Next 'matrice avec le "rang" de ces chiffres aléatoire de Arr1
i = 0
For Each c In Union(.ListColumns("Equipe1_ID").DataBodyRange, .ListColumns("Equipe2_ID").DataBodyRange) 'vos 2 colonnes ID
i = i + 1: c.Value = Arr3(i) 'vos n° rankings
Next
End With
End Sub
macro sans ces 2 colonnes
Sub M_Tour1()
Dim N, N2, Arr1, Arr2, Arr3, i, c
N = Range("EquipesTable").Rows.Count
If N Mod 2 = 1 Then MsgBox "unpair": Exit Sub
N2 = N \ 2
With Range("Tour1_Matches").ListObject 'TS du premier tour
If .ListRows.Count = 0 Then .ListRows.Add 'min 1 ligne
If .ListRows.Count > N2 Then .DataBodyRange.Offset(N2).Resize(.ListRows.Count - N2).Delete 'supprimer les lignes supplémentaires
.ListColumns("terrain").DataBodyRange.Resize(N2, 2).Value = WorksheetFunction.Sequence(N2) 'les terrains et les matchs (et ev. ajouter des lignes si nécessaire)
.ListColumns("Score1").DataBodyRange.Resize(, 4).ClearContents 'RAZ ces 4 colonnes
Arr1 = WorksheetFunction.RandArray(N) 'matrice avec de valeurs aléatoires 0-1
Arr2 = Range("EquipesTable[NomEquipe]").Value2 'noms des équipes
For Each c In .ListColumns("Equipe1_NOM").DataBodyRange.Resize(, 2).Cells 'vos 2 colonnes ID
i = i + 1: c.Value = Arr2(Application.Match(WorksheetFunction.Large(Arr1, i), Arr1, 0), 1) 'vos noms, trié aléatoire
Next
End With
End Sub