XL 2010 Tirage au sort d'équipes avec conditions en VBA

Calou37

XLDnaute Nouveau
Bonjour à toutes et à tous,
Ceci est mon premier post car depuis très longtemps j'arrive à me débrouiller en fouillant un peu partout.
Je ne suis pas développeur (malgré avec fait quelques formations) mais un grand bidouilleur en récupérant des applis à droite et à gauche et en les adaptant à mes besoins.
Mais là je tombe sur un os où je n'arrive pas à me dépatouiller.
Je suis sur un projet de passer de graphiques papiers pour l'organisation de concours de pétanque à du numérique. Il en existe beaucoup disponibles sur le net mais aucun ne correspond à notre formule qui est un graphique continu, c'est à dire qu'il n'y a pas d'éliminations, le nombre de parties est en fonction du nombre d'équipes, les gagnants se rencontrent ainsi que les perdants.
Mon soucis majeur est le premier tirage au sort pour donc la première rencontre, où selon les équipes inscrites (déjà formées) certaines sont dites Homogènes (les 2 joueurs(ses) sont du même club et d'autres non Homogènes. Puis selon le nombre d'équipes inscrites, on arrondi ce nombre pour avoir ou 8, 16, 32, 64 ou 128 équipes en ajoutant des Blancs pour compléter.
J'ai deux conditions :
1) 2 équipes du même club ne peuvent se rencontrer au premier tour​
2) 1 équipe NH (non Homogène) ne peut rencontrer un Blanc (sauf si plus de NH que d'équipes Homogène)​
Privilégier les équipes Homogènes (Clubs) pour attribuer des Blancs​
Je vous joints un fichier exemple de ce que j'aimerais obtenir, il n'y aucune macro afin de partir de 0. Des explications sont sur le fichier.

Je vous remercie beaucoup d'avance de votre aide, avec nos conditions actuelles de confinement, on s'occupe comme on peut mais surtout :
Respecter ce confinement, Restez chez vous et Prenez soin de vous et de vos proches
 

Pièces jointes

  • ProjetTirageConcoursPetanque.xlsm
    51.9 KB · Affichages: 85

Pounet95

XLDnaute Occasionnel
Bonsoir Pascal, Dranreb
Peu satisfait ( voire pas du tout) de mes tentatives pour aboutir à un résultat probant, je me suis décidé à utiliser le classeur de Dranreb.
J'en ai fait une copie dans laquelle je n'ai gardé que la feuille de calcul "1 contre 1".
Les modules Standard et Classes sont conservés tels quels.

Les modifications apportées sont l'ajout d'une feuille de calcul "Equipes_Clubs" dans laquelle a été créé un tableau à 2 colonnes "TbEquipes_Club".
Ce tableau est recalculé en fonction des paramètres de la feuille "1 contre 1" dans laquelle j'ai inséré un champ de saisie du nombre de clubs participant au tirage.
Les paramètres saisis dans la feuille "1 contre 1" sont donc le nombre d'équipes , le nombre de matches et le nombre de clubs.
J'ai inséré une procédure recalculant le tableau TbEquipes_Club de façon à le passer en paramètres pour le contrôle de l'empêchement de se rencontrer pour 2 équipes d'un même club.
Je vérifie avec diverses valeurs.
Il y a toujours quelques rencontres qui ne répondent pas au critère. J'essaie de voir dans quels cas ça se produit. A priori moins il y a de clubs différents plus le phénomène se produit, ce qui me semble logique.
Je mets "au propre" le VBA de vérification avant de joindre les tests effectués.
En tout cas, c'est HYPER rapide et c'est ce qui me plait énormément.
A suivre
Claude
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
D'habitude on prend une colonne du tableau des inscriptions qui contient aussi les noms pour pouvoir les restituer dans les document finaux d'après les numéros portés dans le tableau Tirage. Il se peut que le Système Suisse simplifié convienne mieux. Surtout qu'après le tirage du 1er tour le demandeur va revenir avec les tirages des tours suivants, avec des contraintes liées aux résultat des tours précédents. Or justement le système Suisse est déjà conçu comme ça. Les absurdes équipes 'blanc' ne devraient pas géner: s'il sait faire sans, il devrait aussi pouvoir faire avec …
 

Dranreb

XLDnaute Barbatruc
Mais non, bon sang importe seulement les modules, les feuilles ne sont que des démos.
La programmation du système Suisse a un autre avantage: comme elle ne dispose pas de tous les éléments pour effectuer le tirage elle est munie de procédures pour les renseigner de l'extérieur dans des boucles. C'est le cas des positions au classement, mais aussi, et ça tombe bien, des joueurs qui ne doivent pas se rencontrer. Il y a des commentaires explicatifs pour chaque procédure de cette sorte dans le module MTSuisse.
 
Dernière édition:

Pounet95

XLDnaute Occasionnel
Bonjour à tout le monde,
Bien sûr l'objectif est de "customiser" la ou les feuilles de calcul permettant d'avoir le résultat escompté.
Pour le moment j'en suis a "décortiquer" le code pour comprendre comment ça marche. J'y mettrais sûrement du temps, mais ça aura a minima l'avantage de m'occuper puisque bloqué comme bon nombre d'entre nous. Je vis en appartement et mes seules sorties sont dédiées à prendre des rayons, mais pas soleil. Mais bon, c'est comme ça.
Pour en revenir aux feuilles ( 1 contre 1, Système Suisse par exemple ), elles me permettent de voir, en tentant de décrypter les procédures et fonctions appelées, l'enchainement des opérations jusqu'au tableau final.
Comme je l'ai déjà écrit, j'ai beaucoup de difficultés dues au fait que :
- je n'avais jamais utilisé les tableaux structurés, les tableaux à multi-dimensions avant de lire ton code,
- les variables utilisées sont telles qu'il m'est difficile au 1er abord de comprendre à quoi elles correspondent ( exemple :LOt pour liste d'objet !)
- le code est compacté de telle sorte que voir les instructions et de les interpréter ne saute pas ux yeux. J'en suis toujours à une vieille méthode (?) d'indentation pour améliorer la visibilité et la lisibilité au détriment peut-être de la performance. Au vu de la rapidité de ton code, j'en suis quasi convaincu.
Et me prends à rire quand j'ai le temps de voir apparaître dans le USf les mots dépêtré, dénoué, réglé.
Pas eu l'occasion de passer par le cas "Procédure abandonnée" ou "Tirage raté".
- certaines notions mathématiques m'échappent ;Distribution quasi normale, le pourquoi des exposants 0.18148, ecart-type, moyen , classement Buchholz (vu Wikipedia), etc ...
Quand j'aurais intégré tout ça , je pourrais faire sans les dites feuilles. Mais pour l'heure, ces exemples me satisfont bien.
En espérant aller au bout de ce projet !
Claude
 

Dranreb

XLDnaute Barbatruc
Bonjour.
LOt c'est généralement le nom que je donne à une variable de type ListObject. Ce type de la bilbiothèque Excel a pour rôle de représenter un tableau Excel. Comme beaucoup d'autres choses, ils font toujours partie d'une collection ListObjects de l'objet Worksheet qui représente la feuille.
C'est pourquoi il ne faut pas reprendre la feuille de démonstration. Ma distribution quasi normale ne sert qu'a arribuer des ELO bidons aux participant, qui jouent ensuite un rôle dans la simulation de saisie des résultats de la manche quand on clique sur le bouton "Issue simulée".
Maintenant si la curiosité l'emporte, trace la fonction dans un graphique, ainsi que l'inverse de l'intégrale d'une courbe de Gauss avec même moyenne et écart type, tu verras qu'elles sont très proches, sauf que cette dernière n'atteind jamais les limites parce qu'une courbe de Gauss ne retombe jamais à 0.
 
Dernière édition:

Pounet95

XLDnaute Occasionnel
Bonsoir,
Bien qu'ayant un Bac+50, série E, je n'ai plus pratiqué les maths depuis 1970. Je me souviens encore un peu des dérivées et intégrales, mais sans plus. Tout juste en fin de programme à l'époque nous commencions à voir les différentielles. Mes études ce sont arrêtées là car j'ai été convié à un séjour tous frais payés de l'autre côté de la frontière, en Allemagne, pour 12 mois.
Je fais mon possible pour comprendre, mais là ça dépasse mes compétences, largement.
Et en attendant de meilleurs moments, je vais, toujours par curiosité, continuer à "étudier".
Merci des conseils
Claude
 

Calou37

XLDnaute Nouveau
Bonjour Claude & Danreb,

Tout d'abord j'espère que vous allez bien et je tiens à m'excuser de mon silence pendant un bon moment mais j'ai profité de ce confinement pour me ressourcer sur plein d'autres sujets extérieurs auxquels je n'avais jamais pris le temps (Jardin, bricolage, etc ....). Du coup j'avais mi une parenthèse à mon projet.
J'ai lu vos différents échanges et m'aperçois que vous êtes partis bien loin alors que ma demande initiale me paraissait relativement simple mais il faut croire que non ;)
Malgré tout et comme je vous l'avez indiqué, j'ai un homologue d'un autre club de par chez moi qui est ou plutôt était (retraite) développeur (pas spécialement vba) et qui a également cogité sur ce projet et je pense qu'il a obtenu gain de cause.
Je vous joins sa version que j'ai testé en créant toutes les difficultés que nous pouvons rencontrer lors de nos inscriptions de concours, tout marche impeccable et d'une rapidité fulgurante.
Vous me direz ce que vous en pensez.
En vous souhaitant une bonne journée ainsi qu'un bon week-end. Et encore désolé de mon silence.
Amicalement
Pascal
 

Pièces jointes

  • ProjetTirageConcoursPetanqueContinu.xlsm
    58.6 KB · Affichages: 52

Calou37

XLDnaute Nouveau
Bonjour Pascal, Dranreb et tout le monde
Ca répond à ton problème, donc tu peux passer ce fil à résolu.
Bons tournois et bonjour à Fanny : tu l'embrasseras pour moi !
Claude alias Pounet95
Bonjour Pascal, Dranreb et tout le monde
Ca répond à ton problème, donc tu peux passer ce fil à résolu.
Bons tournois et bonjour à Fanny : tu l'embrasseras pour moi !
Claude alias Pounet95
Bonsoir Claude.
Encore un grand merci pour tout le travail accompli. Même si tous tes efforts n'ont pas abouti à la solution finale, cela m'a appris beaucoup de choses non négligeables et que je garde sous le coude.
Heu ! Par contre je ne sais pas comment on fait pour indiquer que c'est résolu.
En attendant, prends bien soin de toi et de tes proches. Encore merci pour tout.
A bientôt
Amicalement
Pascal
 

Pounet95

XLDnaute Occasionnel
Salut Pascal,
A cet endroit
Bon déconfinement

Claude alias Pounet95
Resolu.PNG
 

Discussions similaires

Réponses
5
Affichages
951

Statistiques des forums

Discussions
315 093
Messages
2 116 130
Membres
112 667
dernier inscrit
foyoman