Macro pour établir un tableau de berger?

videocontact

XLDnaute Junior
Bonjour à tous,

quelqu'un a t-il une macro qui permet la création automatique d'un tableau de berger?

Explication :

j'aimerai définir un nombre d'adversaires, et ensuite Excel me crée un tableau qui me permet a chaque tour de jouer contre un adversaire différent...
Je sais que le tableau de berger donne un tableau qui donne autant de tours que d'adversaire (si par exemple 15 adversaire, donc il y aura 14 tours ou tous finirons par se rencontrer une fois), moi perso j'ai besoins que maximum 6 tours...

Merci de votre aide.
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re... (bonjour à tous, merci à david84 pour les vérifications - c'est fastidieux à faire - et les commentaires)


Je suis à l’œuvre pour donner une version plus lisible du code, notamment de la ligne de calcul booléen, assez complexe en effet, et peu propice à la maintenance et à la compréhension.

En fait, cette ligne résulte de mon calcul sur papier pour essayer de prendre en compte toutes les contraintes. Je n'ai pas pris la peine de transcrire cela de façon plus claire parce qu'il n'y a aucun intérêt à le faire si ce code n'intéresse personne, et en particulier le demandeur. Mais dans la mesure où le code vous intéresse, il devient utile de conduire le travail à son terme. Je ferai donc une nouvelle proposition dans les heures qui viennent.

En attendant, voyons les points suivants :
1° Concernant le résultat obtenu, il me semble que rien n'ait été oublié (...)
Tant mieux et merci d'avoir fait cette pénible vérification.

Le tableau annexe (celui de la feuille 1) permet à chaque participant de visualiser quel adversaire il affronte à telle ronde, s'il reçoit (ou joue avec les blancs) ou se déplace.
2 remarques concernant ce tableau :
- bye n'est pas indiqué (ce n'est pas gênant à mon avis mais je vous le signale au cas où)
- peut-être préciser à quoi sert la MFC (personnellement, je ne l'ai pas comprise).
C'est effectivement volontairement que les joueurs exemptés ne figurent pas dans ce tableau : dans mon esprit, le tableau donne le numéro k de la ronde où une rencontre i versus j a effectivement lieu.
Quand à la mise en forme conditionnelle, elle n'a pas grand intérêt. Je l'ai utilisée en phase d'étude pour voir les différences entre deux méthodes de calcul d'une part, pour voir les cas où un joueur à le trait (les blancs) deux fois de suite d'autre part. Par exemple, avec 6 joueurs, on voit que 2 est marqué en orange dans la première ligne ; cela signifie que le joueur 1 à le trait dans la deuxième ronde (rencontre 1 vs 2) et qu'il l'avait aussi à la ronde précédente (rencontre 1 vs 6).

(...) je remarque que vous utilisez du calcul Booléen en lieu et place de conditions (if...then), le vrai ou faux ramené étant directement intégré dans le calcul de la valeur de k.

Indépendamment de la concision du code, quel est selon vous l'intérêt de cette façon de procéder ?
Aucun intérêt autre que la concision du code, en effet. J'ai simplement transcrit ma "recherche-papier" au plus court, sans faire l'effort de clarté qu'on eût pu souhaiter... Je vais corriger cela...

Gagne-t-on en vitesse de traitement ?
J'en doute fort, quoique je n'ai rien vérifié.


Voilà. À bientôt pour la suite...​


ROGER2327
#5685


Mercredi 4 Clinamen 139 (Saint Pagne, confident - fête Suprême Quarte)
6 Germinal An CCXX, 5,3851h - blette
2012-W13-1T12:55:27Z
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Suite...


La ligne
Code:
k = ((((i + j - 2) Mod (r - 1)) + 1) * ((i + j - (i > j)) Mod 2) * (i < r) - (2 * j - r) * (i = r) * (2 * j > r)) * (j < r) + (2 * i - 1) * (j = r) * (2 * i <= r)
peut être remplacée par
  1. VB:
                    Select Case (j = r) + 2 * (i = r)
                    Case 0: k = (((i + j - 2) Mod (r - 1)) + 1) * ((i + j - (i > j)) Mod 2)
                    Case -1: k = (1 - 2 * i) * (2 * i <= r)
                    Case -2: k = (r - 2 * j) * (2 * j > r)
                    Case -3: k = 0
                    End Select
  2. VB:
                    If j < r And i < r Then
                        k = (((i + j - 2) Mod (r - 1)) + 1) * ((i + j - (i > j)) Mod 2)
                    ElseIf j = r Then
                        k = (1 - 2 * i) * (2 * i <= r)
                    Else
                        k = (r - 2 * j) * (2 * j > r)
                    End If
  3. VB:
                    If j < r And i < r Then
                        If (i + j - (i > j)) Mod 2 Then k = (((i + j - 2) Mod (r - 1)) + 1) Else k = 0
                    ElseIf j = r Then
                        If 2 * i <= r Then k = (2 * i - 1) Else k = 0
                    Else
                        If 2 * j > r Then k = (2 * j - r) Else k = 0
                    End If
  4. VB:
                    k = 0
                    If j < r And i < r Then
                        If (i + j - (i > j)) Mod 2 Then k = (((i + j - 2) Mod (r - 1)) + 1)
                    ElseIf j = r Then
                        If 2 * i <= r Then k = (2 * i - 1)
                    Else
                        If 2 * j > r Then k = (2 * j - r)
                    End If
Sous l'une de ces formes, est-ce plus clair ?
Reste à voir ce qui est le plus rapide...
(À suivre...)


ROGER2327
#5688


Mercredi 4 Clinamen 139 (Saint Pagne, confident - fête Suprême Quarte)
6 Germinal An CCXX, 5,7933h - blette
2012-W13-1T13:54:14Z
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Suite...

La solution la plus rapide est la variante 3 ci-dessus.
La plus lente est la solution initiale. Normal : dans la formule booléenne, tous les tests et tous les calculs sont effectués, alors qu'avec les variantes, on ne calcule (presque ?) que ce qui est nécessaire...​


ROGER2327
#5690


Mercredi 4 Clinamen 139 (Saint Pagne, confident - fête Suprême Quarte)
6 Germinal An CCXX, 6,0742h - blette
2012-W13-1T14:34:41Z
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re
La solution la plus rapide est la variante 3 ci-dessus.
Ok, partons donc sur celle-ci. Je la regarderai de plus près à tête reposée.
La plus lente est la solution initiale. Normal : dans la formule booléenne, tous les tests et tous les calculs sont effectués, alors qu'avec les variantes, on ne calcule (presque ?) que ce qui est nécessaire...
C'était mon analyse a priori mais tant que l'on a pas testé...voila qui est fait.
 

videocontact

XLDnaute Junior
Re : Macro pour établir un tableau de berger?

Serait-il possible d'avoir aussi une "Feuil" qui permet d'avoir par joueur les adversaires pour chaque tour?

Exemple :

Joueur 1 : Tour 1 / Bye; Tour 2 /2; Tour 3/10; etc...
Joueur 2 : Tour 1 / 15; Tour 2 /4; Tour 3/6; etc..

Merci de votre aide les amis.
 

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re...


Bonjour,

un âme charitable pourrait-elle me donner une variante de la V4pour un nombre plus grand de participants (jusqu'à 50 joueurs)?

Merci de votre aide.
Diable ! On voit grand !
En fait ce n'est pas plus difficile pour cinquante que pour trente-deux. Il suffit de fixer le paramètre p de la fonction BERGER à 50 au lieu de 32 et, bien entendu, d'étendre en conséquence le tableau dans la feuille.​


Serait-il possible d'avoir aussi une "Feuil" qui permet d'avoir par joueur les adversaires pour chaque tour?
(...)
La table étant déjà établie, ce n'est pas très-difficile : il s'agit seulement de réorganiser le résultat dans un autre tableau. Comme vous ne fournissez pas de modèle de tableau, mais que le problème m'amuse, j'en joins un : vous l'adapterez à vos besoins.​


Bonne nuit.


ℝOGER2327
#7705


Mercredi 11 Sable 142 (Nativité de Saint Grabbe, scherziste - fête Suprême Quarte)
21 Frimaire An CCXXIII, 0,5731h - érable à sucre
2014-W50-4T01:22:31Z
 

Pièces jointes

  • XLD_181004_Tableau de Berger_v5.xlsm
    83.7 KB · Affichages: 133

jerome6259

XLDnaute Nouveau
Re : Macro pour établir un tableau de berger?

Bonjour,
je suis ravis d'être tombé sur cette page car je me casse la tête depuis un moment sur un petit speed contact que j'organise nous serons 16 participants sur 4 tables de 4 et l'on ne doit pas rencontrer la même personne. Si je prends les tableaux des anciens posts, ça ne colle pas avec ma demande car au second tour il y a déjà des doublons.
Quelqu'un peut m'aider s'il vous plais ????????????? :-(
 

videocontact

XLDnaute Junior
Re : Macro pour établir un tableau de berger?

Re, voici le tableau sous la forme que j'aimerai voir apparaître le résultat ; est-ce possible car moi j'arrive pas à le faire (pas assez doué lol)?
Merci de votre précieuse aide.
 

Pièces jointes

  • Exemple Tableau.jpg
    Exemple Tableau.jpg
    59.9 KB · Affichages: 96
  • Exemple Tableau.jpg
    Exemple Tableau.jpg
    59.9 KB · Affichages: 94
  • Exemple Tableau.jpg
    Exemple Tableau.jpg
    59.9 KB · Affichages: 87

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re...


Re, voici le tableau sous la forme que j'aimerai voir apparaître le résultat ; est-ce possible car moi j'arrive pas à le faire (pas assez doué lol)?
Merci de votre précieuse aide.
Il me semble que l'onglet P1 donne tous les éléments.
Il suffit de travailler un peu le formatage : voyez par exemple l'onglet P4 du classeur joint.
Côté formules, c'est d'une simplicité biblique. Tout est dans le formatage numérique des cellules :
Standard" joue contre ";;;@ dans la plage B4:B53
Standard"*";Standard;;"-" dans la plage C4:AY53.
Arrangez ceci à votre convenance...​


Bonne soirée.


ℝOGER2327
#7740


Dimanche 15 Gueules 142 (Alice au Pays des Merveilles - fête Suprême Tierce)
21 Pluviôse An CCXXIII, 6,4628h - thlaspi
2015-W07-1T15:30:39Z


Bonne journée.
 

Pièces jointes

  • XLD_181004_Tableau de Berger_v5-1.xlsm
    110.1 KB · Affichages: 79
  • XLD_181004_Tableau de Berger_v5-1m.pdf
    45.1 KB · Affichages: 53

videocontact

XLDnaute Junior
Re : Macro pour établir un tableau de berger?

Hello Roger2327,

effectivement c'est le résultat que j'aimerai mais pas sur cette version Excel de la table de Berger (car là d'autre l'on adapté à leurs besoins lol) mais si possible sur cette version (car je l'ai adapté sous cette forme dans une de mes applications et je n'ai pas besoins de ce système d'Astérix moi, mais bien de la "bye" en cas de nombre impairs au départ).

Je sais que je suis lourd et que cela doit paraître simple à faire, mais désolé je suis pas doué dans Excel, j'ai deux mains gauches)

Salutations
 

Pièces jointes

  • Table de Berger V3.xlsm
    69.2 KB · Affichages: 52

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re...


Décidément, vous ne savez pas ce que vous voulez. Au message #20, vous vouliez une extension à 50 joueurs. Ce que j'ai fait...
Au message #21 vous vouliez
(...) aussi une "Feuil" qui permet d'avoir par joueur les adversaires pour chaque tour?

Exemple :

Joueur 1 : Tour 1 / Bye; Tour 2 /2; Tour 3/10; etc...
Joueur 2 : Tour 1 / 15; Tour 2 /4; Tour 3/6; etc..
Ce que j'ai fait... ...pour rien : maintenant vous revenez à la vieille version à 31 joueurs !

Voyez si l'onglet Tableau de la pièce jointe vous convient. Il n'y a pas de code VisualBasic ; seulement une formule Excel qui prend ses données dans l'onglet BERGER et du formatage conditionnel.​


ℝOGER2327
#7742


Lundi 16 Gueules 142 (Saint Münchhausen, baron - fête Suprême Quarte)
22 Pluviôse An CCXXIII, 1,0046h - thyméle
2015-W07-2T02:24:39Z
 

Pièces jointes

  • Table de Berger V3-1.xlsm
    82.3 KB · Affichages: 38
  • Table de Berger V3-1.xlsm
    82.3 KB · Affichages: 41
  • Table de Berger V3-1.xlsm
    82.3 KB · Affichages: 45

videocontact

XLDnaute Junior
Re : Macro pour établir un tableau de berger?

Re Roger2327,

c'est vrai qu'au départ nous comptions faire notre appli pour pouvoir gérer 50 équipes ; mais vu la configuration ou se déroulera le tournoi, nous ne pouvons acceuillir qu'un maximum de 32 équipes.
Désolé.

Le petit soucis, c'est que j'ai fais mon appli pour 32 équipes, et ici je vois que cela s'arrête à 31 équipes ; peux-tu me dire comme rajouter la 32ème équipe dans les tableaux (oui jesais je sis très nul même dans certaines tâches simple)? (Il y a tellement eu de versions qui sont passées que finalement je sais plus de laquelle je suis parti pour construire mon appli, vraiment déso).

Aussi non c'est bien le résultat souhaité dans la version que tu viens de posté, merci.

Merci de ta disponibilité.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Macro pour établir un tableau de berger?

Re...


(...)
Le petit soucis, c'est que j'ai fais mon appli pour 32 équipes, et ici je vois que cela s'arrête à 31 équipes ; peux-tu me dire comme rajouter la 32ème équipe dans les tableaux (...)
J'ai voulu aller trop vite ! J'ai oublié une ligne.

Il suffit d'ajouter une ligne au tableau, voyez la pièce jointe.​


Bonne journée.


ℝOGER2327
#7743


Lundi 16 Gueules 142 (Saint Münchhausen, baron - fête Suprême Quarte)
22 Pluviôse An CCXXIII, 4,4161h - thyméle
2015-W07-2T10:35:55Z
 

Pièces jointes

  • Table de Berger V3-1.xlsm
    87.8 KB · Affichages: 87
  • Table de Berger V3-1.xlsm
    87.8 KB · Affichages: 89
  • Table de Berger V3-1.xlsm
    87.8 KB · Affichages: 137

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi