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
Re,
Têtu que je suis, j'ai fait une recherche sur la toile,et j'ai trouvé je pense de quoi satisfaire le besoin.
Cette application permet de configurer un concours de telle façon que toutes les équipes peuvent jouer le même nombre de rencontres ( de 1 à 6 parties) et ensuite terminer sur une phase à élimination directe 1/8, 1/4,1/2, finale.

Ainsi au bout des matches 1 à n, les 16 premiers se retrouvent dans un concours A, puis les 16 suivants dans un concours B, les 10 suivants ( dans le cas de l'exemple ) dans un concours C.
J'ai chargé chargé cette application pour l'adapter au critère "pas de rencontres entre équipes du même club" au 1er tour, sauf si leur nombre est supérieur à la moitié du nombre d'inscrits.

Je vais effectuer quelques modifications ; commenter le VBA, le simplifier et y ajouter des contrôles notamment sur la validité des scores ( 13 points mini et pas plus de 18 points pour le vainqueur,et pas plus de 12 pour le perdant).
Il y a du boulot, mais j'ai tout mon temps confiné en appartement ( au lieu d'être en bord de mer dans le 44 ) et ne pouvant sortir que pour raisons médicales.
Je te tiens au courant de l'avancée
Claude



Concours Pétanque.PNG
 

Calou37

XLDnaute Nouveau
Hello Claude,
C'est super sympa ton soucis de vouloir mieux et je te comprends tout à fait. Je serais un peu de ce style là.
Avant de poster sur le forum j'avais fait beaucoup de recherche et il me semble que celui que tu as trouvé, je l'avais également regardé mais il me semble qu'il y avait beaucoup de points à modifier pour obtenir mon résultat attendu.
Déjà en ce qui concerne les scores, nous sommes sur un règlement très proche de la FFPJP, donc pour nous le score n'a pas d'importance, c'est sur 13 points et il n'y a que la victoire qui compte.
Ensuite comme je te l'ai indiqué, il n'y a pas d'élimination ni de concours différents.
Et pas de poules non plus.
Il faut que j'arrive au graphique que j'ai mis en image.
Je ne peux me permettre de remettre en question notre façon d'organiser nos concours puisque nous évoluons sous la gouverne d'une fédération (FSGT)
En contre partie, il est fort probable qu'il y est des choses à prendre intéressantes.
Je reste à preneur pour toutes évolution possibles bien sûr.
Merci encore et bon confinement, moi sur Tours mais en maison avec un bout de jardin qui permet de bien prendre l'air.
Au fait, quel blog as-tu été voir sur la pétanque ? Car il y en a beaucoup .
Bonne fin de soiree
Pascal
 

Calou37

XLDnaute Nouveau
Une autre question à propos de ton dernier jus de tirage.
Je l'ai adapté au contexte de mon ensemble (loin d'être fini mais ça avance, grâce à toi), tout fonctionne mais pour l'instant toujours avec le même exemple d'inscrits, par contre je trouve que c'est beaucoup plus lent pour faire le tirage. Ta feuille de test n'a rien à voir avec la rapidité ? Je n'ai pas eu l'impression que tu l'appelais dans le tirage définitif !
Merci encore
Pascal
 

Calou37

XLDnaute Nouveau
Hello Claude,
Bon et bien après avoir adapté ton code sur mon fichier, j'ai fait un test avec un plus grand nombre d'équipes (67) de manière à faire un tirage sur 128 et là, Hic ! Ça plante !
2020-04-12 10_09_26-Microsoft Visual Basic pour Applications - Projet 3 TirageConcoursPetanque...png

Je te joins ton dernier fichier que j'ai un peu adapté à mon besoin et en rajoutant donc quelques équipes.
Amicalement
Pascal
 

Pièces jointes

  • Projet 3 TirageConcoursPetanque.xlsm
    184.9 KB · Affichages: 9

Pounet95

XLDnaute Occasionnel
Bonsoir,
J'ai modifié les parties de code causant problème.
Tous les ZBL intercalés entre les équipes de club font que les YNH se retrouvent en fin de liste et font qu'une boucle interminable est lancée, qu'on ne peut arrêter que brutalement (Alt Ctrl Sup).
J'ai mis une copie d'écran du blog dans la feuil1
Il y a une erreur due à des cellules fusionnées ??? colonnes M et O de la feuille tirage.
J'ai mis en commentaire le code d'effacement de ces 2 colonnes.
J'y reviendrai
Bonne soirée
Claude
 

Pièces jointes

  • Projet 3 TirageConcoursPetanque en cours modif.xlsm
    744.7 KB · Affichages: 13

Calou37

XLDnaute Nouveau
Bonjour Claude,
Et bien cela avance à grands pas, pour le premier message d'erreur, c'est ma faute j'avais omis de faire le clear à partir de la ligne 4
With Sheets("BD_Inscrits")​
.Range("M4:M250").Clear​
.Range("O4:O250").Clear​
End With
Je te joins une copie du fichier repris (je sais que tu n'avais pas fini tes modifs) mais je t'ai ajouté une version que j'avais faite avant d'avoir demandé de l'aide. Elle fonctionne bien mais je n'arrive pas à faire une boucle sur ma colonne de vérification, alors je relançais la macro tant que tout n'était pas Ok, sauf que jusqu'à une petite quarantaine d'inscrits ça va, au delà problème de mémoire de pile :(
Si ça peut t'aider !
Et concernant tes modifs, c'est bizarre mais les 3 dernières lignes ne sont pas reportées.
Bon lundi de Pâques
Amicalement
Pascal
 

Pièces jointes

  • ProjetTiragePetanqueDoubleVersion.xlsm
    201.4 KB · Affichages: 11

Dranreb

XLDnaute Barbatruc
Bonjour.
Je finis par intervenir quand même ici, parce qu'il y a quelques pièces utiles dans le classeur joint, et pour ne plus polluer une autre discussion.
Votre problème ressemble beaucoup au système suisse très simplifié, démo en dernière feuille. Mais ce dernier n'impose pas un nombre de participant puissance de 2 complété par 'blanc' (c'est peut être pour ça que je ne suis pas intervenu jusqu'ici …)
 

Pièces jointes

  • ListeAléat.xlsm
    347.3 KB · Affichages: 12

Pounet95

XLDnaute Occasionnel
Bonjour Pascal,
Et oui je continue sur le sujet, et, en créant une discussion sur le "mouvement perpétuel", j'ai eu qq explications sur mon problème, mais surtout une réponse de Dranreb avec le fichier qu'il vient de mettre dans la conversation.
Il sont géniaux ( l'auteur et le classeur ) ! Enfin à mon avis ........
Je ne voulais pas le "bricoler" dans un premier en ne m'en servir qu'en mode caché, mais pas possible.
Donc je m'y suis mis et partant de ce que j'ai compris, je vais y apporter des adaptations qui devraient pouvoir être une solution à ce que tu veux faire.
A suivre
 

Dranreb

XLDnaute Barbatruc
Heu… je préconise de ne pas toucher au ListeAléat.xlsm: c'est une source de modules de service standards et de classe et un UserForm à glisser/déplacer vers des projets de classeurs d'application.
Il devrait toutefois être possible d'en faire un complément xlam, à condition de prévoir une fonction pour créer un exemplaire d'objet ListeAléat. Le mot clé New n'est en effet pas supporté pour des objets définis dans un autre projet en référence.
 
Dernière édition:

Pounet95

XLDnaute Occasionnel
Bonsoir Dranreb,
C'était bien là ma première idée : ne pas y toucher en se contentant de passer le nombre de joueurs et de manches en paramètres dans le classeur fermé, d'éxécuter le code lié au bouton de la feuille "1 contre 1" et ensuite de récupérer le résultat pour le traiter dans le classeur initial.
Pas possible apparemment. D'où la solution envisagée d'un ListeAléat réduit à la feuille "1 contre 1" et TOUT ce qui la fait fonctionner (usf, modules standards, de feuille et de classe).
On va chercher à faire autrement.
Je vais avoir du temps puisque confiné jusqu'à ........... ?????
 

Dranreb

XLDnaute Barbatruc
D'habitude quand je me décide à finaliser un classeur de ce genre d'un demandeur, j'ouvre mon ListeAléat.xlsm et dans l'explorateur de projet je fait un glisser/déplacer des modules de classe ListeAléat et Planification, de l'UFmVisu et du module XPlanificateur et éventuellement du MTirageNvsN qui va bien. Si aucun ne convient je m'inspire de l'algorithme qui s'en rapproche le plus pour faire du neuf. La plupart du temps il ne me reste plus qu'à écrire la partie édition des résultat en produisant des noms pris d'un tableau d'inscriptions en utilisant comme indices les numéros portés dans le tableau Public Tirage.
 

Pounet95

XLDnaute Occasionnel
Re,
J'avais commencé à faire à peu près ça en enregistrant le classeur sous un autre nom puis en supprimant ce dont je n'ai pas besoin. Dans un premier temps je ne m'intéresse qu'au 1 contre 1 que ce soit joueur ou équipe.
Je vais essayer de décrypter tout ça. Et puis, je verrais si je peux adapter simplement.
bonne soirée
 

Calou37

XLDnaute Nouveau
Bonjour à tous les deux Claude & Danreb,

Et bien je ne m'attendais à autant sur mon projet, à la base je n'avais besoin que d'un tirage au sort avec quelques conditions et je suis le fil de votre discussion, je vais finir par avoir une machine de guerre. Je n'en demandais pas tant mais ça m'a l'air bien sympathique.
J'ai parcouru le fichier présenté par Danreb "ListeAléat.xlsm" Whaou ! et je vois qu'il y a du lourd mais comme il l'indique ne correspond pas tout à fait à mon besoin, mais certaines choses seraient sûrement à prendre sauf que perso j'en suis bien incapable.
En parallèle, j'ai un collègue de la pétanque (développeur à la retraite) qui s'est également penché sur ce projet qui a cogité aussi suivant mon expression de besoin. Lui est parti sur du VB mais toujours sous excel. Ce qui pourra faire une 2ème solution que je manquerais pas de vous faire part dès qu'il aura finalisé.
En tout cas, un grand merci à tous les deux pour votre dévouement, ça fait chaud au coeur par ces moments difficiles.
Prenez bien soin de vous et de vos proches
Amicalement
Pascal
 

Discussions similaires

Réponses
5
Affichages
951

Statistiques des forums

Discussions
315 090
Messages
2 116 106
Membres
112 661
dernier inscrit
ceucri