XL 2021 Aide macro / nettoyage fichier

sebastianbl

XLDnaute Nouveau
Bonjour,

Suite à un précédent message (https://excel-downloads.com/threads...ontrol-activex-resolu.20084662/#post-20661960), j'ai récupéré un fichier pleins de macros non fonctionnel (macro- copie.xlsm). J'ai réussi à avancer un peu en transférant les macros dans un nouveau fichier (macros fichier test.xlsm) avec une mise en page un peu différente tout en nettoyant des macros qui étaient en doublon dans d'autres modules.
Je pensais avoir réussi à modifier les macros avec les nouvelles références de cellule / range, mais je n'arrive pas à faire fonctionner toutes les macros du module 2

Ce qui marche:
Sub suppscore()
Sub toutSupprimer()
Sub SwitchTerrain1()
Sub SwitchTerrain2()
Sub SwitchTerrain3()
Sub SwitchTerrain4()
Sub SwitchTerrain5()
Sub SwitchTerrain6()
Sub SwitchTerrain7()

Ce qui bug:
Sub melangerJoueurs()
Sub shuffle()
Sub renseignerLeTerrain(listeJoueurs)
Sub placerJoueurs(listeJoueurs)
Sub recupererLesScores()
Sub highlighterLesGagnantsPtsParGame()
Sub highlighterLesGagnantsPtsTotal()

Ce que je ne comprend pas / ne sais pas ce que cela doit faire:
Sub cadre()

Est ce que je pourrais avoir un petit coup de main svp pour retrouver un fichier qui fonctionne ?
Il y a pas mal de commentaires dans le code, mais si besoin pour clarifier le principe du fichier, voici un résumé:
tournoi jusqu'à 200 personnes en paire vs paire
faire en sorte que personne ne rencontre 2 fois le même adversaire
ce qui ne jouent pas le tour actuel sont prioritaires pour le tour suivant
tout le monde doit jouer le même nombre de match
le classement se fait par le nombre de point marqué par chacun, ou si nombre de matchs inégaux, par la moyenne des pts / match

Merci d'avance!!

PS: merci à @sylvanu et @jurassic pork pour leur aide précédemment!
 

Pièces jointes

  • macro- copie.xlsm
    77.3 KB · Affichages: 2
  • macros fichier test.xlsm
    90.6 KB · Affichages: 5
Solution
Re, re et re
Voici où j'en suis :
J'ai laissé tombé la modification du calcul des pauses !
J'arrive à faire 6 tours sur un terrain quand les autres sont encore au tour 1 et j'ai pas de message d'erreur.
En effet cela ne provoque pas d'erreur, c'est juste la priorité donnée au joueur resté le plus souvent en attente qui peut être faussée, pas bien grave ..


Voir cette dernière version
À bientôt

vgendron

XLDnaute Barbatruc
Hello
déjà.. il faudrait dire sur quel fichier il faut travailler

ton fichier "Macro-copie" est semble-t-il vérolé.. il y a deux "Thisworkbook".. ce qui est normalement impossible
à chaque fois que j'ai vu ca, le fichier était buggé.. et il fallait repartir d'un fichier vierge..
 

vgendron

XLDnaute Barbatruc
Bon.. une première modif

1) pas besoin de selectionner pour effacer ou écrire dans une plage de cellule
donc.. tous tes select.. selection.clear.. on dégage

voir ta macro "suppscore" simplifiée

2) dans la feuille Tournoi, il y a un tableau qui commence en colonne O==> le transformer en table structurée
et lui donner un nom (j'ai choisi "t_Tournoi")
==> comme ca.. plus besoin des while i , range("O &i+2)....
pour parcourir la tableau, il suffit d'un for i=1 to listrows.count
listrows.count, c'est ton nombre de ligne que tu cherches.. mais que tu imposes.. 200 153....bref.. y'en a dans tous les sens

regarde la macro "Shuffle"

par contre;. pour la macro "melangerJoueurs".. je ne comprend pas bien ce que tu fais..
j'ai remplacé ton premier bloc while par une boucle for i=1....

t'en inspirer pour le reste...
 

Pièces jointes

  • macros fichier test.xlsm
    93.3 KB · Affichages: 2

sebastianbl

XLDnaute Nouveau
merci @vgendron .
Effectivement la macro suppscore est bien plus propre !

Pour le reste, je t'avoue ne pas arriver à suivre. je n'ai pas écrit ces macros, j'essaie d'avoir de nouveau quelque chose de fonctionnel afin d'aider mon association.
Quand je fais tourner "shuffle", j'obtien une erreur ici:
1728394537757.png


Je ne voudrais pas abuser de ton temps, mais si tu as un moment, j’apprécierai grandement ton aide pour réécrire / nettoyer ces macros afin de retrouver un fichier utilisable.
 

sebastianbl

XLDnaute Nouveau
je n'ai jamais réussi à le faire fonctionner depuis qu'on m'a donné une copie, mais je l'ai vu fonctionner l'année dernière.
Et oui j'ai renommé certaines feuilles. Pour être plus précis, j'ai créer un nouveau fichier avec la mise en page qui va bien puis transférer les macros. Depuis j'essaie de faire les ajustements pour que ca remarche.
Le fichier original est ici: https://excel-downloads.com/threads/vba-erreur-license-control-activex-resolu.20084662/post-20661877 si besoin

Je pense avoir corrigé cela maintenant avec ce fichier, du moins y'a un progrès puisque j'arrive à générer des chiffres aléatoires dans la colonne S (même si ca semble bugguer partir de la ligne 1184 (???) mais je sèche sur le reste.

Est ce que tu aurais besoin de plus de détails sur le principe de fonctionnement, ou entre mon post original et les commentaires dans le code c'est suffisamment clair?
 

Pièces jointes

  • macros fichier test2.xlsm
    257.3 KB · Affichages: 1

vgendron

XLDnaute Barbatruc
bah.. pour le principe de fonctionnement, c'est à toi de l'expliquer.. c'est ton fichier...

Ce que je vois
1) tu effaces les colonnes Rand et ListSorted
2) tu copies le nom (colonne Noms) dans la colonne "List Sorted" si le joue n'est pas noté "Absent" ou "Joue Pas" ou "en pause"
3) fonction Rand dans la colonne Rand pour une forme de "tirage au sort"
4) tri par rand croissant

5) des tris...je ne sais pas selon quoi et à quoi ils servent...
==> je n'ai pas adapté le code, et je l'ai mis en commentaire

6) une fois que les joueurs sont mélangés, tu mets la colonne "ListSorted" dans un tableau ListeJoueurs

et la.. tu renseignes le terrain.. mais encore une fois, dans cette macro , tu fais du for i =1 à 150... (pourquoi 150?? quel rapport avec le nombre de joueurs...

la fonction GetIndex.. ??? à quoi sert elle??
 

Pièces jointes

  • macros fichier test.xlsm
    100.3 KB · Affichages: 1

sebastianbl

XLDnaute Nouveau
ok pas de soucis, alors j'essaie d'expliquer comment ça doit fonctionner:

La finalité c'est d'organiser un sorte de tournoi ou tout le monde joue un certain nombre de matchs en paire, avec à chaque tour un partenaire et des adversaires différents.
Nous avons 7 terrains de disponible (schématisé dans les colonnes B à M), donc 28 joueurs peuvent jouer en même temps.
Les paires sont constituées aléatoirement (je pense que c'est à cela que servent les colonnes Rand et Liste sorted) et assignées sur un terrain (le nom de chaque joueur doit s'afficher sur le terrain): exemple, la paire en cellule B4/B7 joue contre la paire en D4/D7.
La colonne R indique qui joue et sur quel terrain, et qui est en "attente".

Si le match semble déséquilibré, on utilise le bouton "switch terrain" qui échange les joueurs entre eux pour faire de nouvelles paires.
Une fois le match terminé, on entre le score manuellement dans les cellules B2 et D2 et on clique sur un bouton genre "match terminé". Le score est capturé dans la colonne Y "G1" pour le tour 1, Z "G2" pour le tour 2, etc...
Exemple, si Paul et Pierre joue contre Franck et Benoît et gagne 11 - 4, Paul et Pierre marque chacun 11 pts en G1, et Franck et Benoît gagne 4 pts. La colonne V elle va indiquer combien de match ils ont joué chacun, donc 1 pour tous les 4 au tour 1.
Une fois ce bouton "match terminé", cela lance également le match suivant avec 2 nouvelles paires.

Les priorités:
D’abord faire jouer au tour 2 tous les joueurs qui étaient "en attente" au tour précédent ET qui ont le moins de match joués.
Le principe est de minimiser le temps de "attente" et faire une rotation entre tous les participants.

Exceptions:
si un joueurs est marqué "absent = oui", il n'est pas pris en compte dans le prochain match qui se lance.

Vainqueurs:
J'ai vu des macros qui permettent d'identifier qui a gagné le plus de points par genre (H ou F), ou qui a marqué le plus de points par match. Il me semble que ces macros font un top3.

Je ne sais pas quelle était la limite du précédent fichier, mais j’aimerai pouvoir accepter jusqu'à 250 participants. Est ce de là que vient le 150?

Et aucune idée pour la fonction GetIndex... Si pas nécessaire, l'enlever?

J'espère avoir été plus clair, n'hésites pas si je dois clarifier encore?

Merci encore!
 

vgendron

XLDnaute Barbatruc
Comme c'est un fichier d'un ami.. demande lui de revoir le document

sinon, pour l'organisation de tournois.. (pétanque foot. fléchettes et autres concours à la saucisse...) il y a plein de fichiers sur ce forum.. va voir du coté des ressources...
 

sebastianbl

XLDnaute Nouveau
j'avais supprimé pour voir à quoi c’était lié. Parfois ça aide non pas à résoudre le problème mais voir les dépendances.

j'ai vu les ressources et j'ai rien trouvé qui remplirait nos besoins, si non je n'aurai pas pris la peine d'écrire.

Quand au "clairement, tu ne sais pas ce que tu fais", je te confirme, je l'avais même dit ici ;-):

Merci quand même.
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonsoir à toutes & à tous, bonsoir @sebastianbl

Je regarde ton fichier, et j'essaie de comprendre (mais à mon allure 🐌) Comme @vgendron je préfère les tableaux structurés, mais aussi les formules matricielles dynamiques (puisque tu as comme moi EXCEL2021).

J'ai lu ton post #9 pour comprendre ton tournoi (Badminton si je ne m'abuse).
Il y a un truc qui me chagrine : si le but est que les rencontres doivent se faire avec des partenaires et adversaires différents il me semble qu'il faut mémoriser quelque part ces informations et là, je ne vois pas où !

Chaque joueur devrait faire 30 matchs, ça va durer un certain temps ce tournoi ...
Qu'est-ce qu'il y a dans la colonne Pause comme type de données ? "Oui/Non", un nombre, à quoi cela correspond ?

Je te posterai une version quand j'aurai avancé un peu plus.

À bientôt
 

sebastianbl

XLDnaute Nouveau
Bonsoir @AtTheOne ,
En fait non pas besoin de faire 30 matchs, le but ce n'est pas que tout le monde joue contre tout le monde mais que chacun rencontre des adversaires et fasse équipe avec un partenaire différent à chaque "tour", tout en jouant un nombre de match similaire.
Nous ne remettons pas de trophée ou médaille, le but est que les nouveaux membres puissent s'intégrer avec d'autres nouveaux et des anciens du club, c'est très convivial et pas orienté "compèt".

On arrête généralement au bout d'1h30-2h, certains arrive après le début, d'autres partent avant la fin, d’où la colonne "absent ?"

Je ne me souviens plus ce qu'il avait dans la colonne "Pause", je pense que c'est un nombre comme le nombre de fois qu'un joueur a été en "attente". Cela sert ensuite si ce nombre est élevé à augmenter sa "priorité" pour le prochain match.

J'ai repris contact avec la personne qui l'avait fait, mais je ne sais pas quand ni même si il pourra y jeter un œil avant notre prochain évènement..
 

Discussions similaires

Réponses
16
Affichages
994
Réponses
20
Affichages
726

Statistiques des forums

Discussions
315 124
Messages
2 116 464
Membres
112 748
dernier inscrit
Pboiusquet