Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour Aredo

Je ne t'oublie pas, mais je ne sais pas comment faire évoluer ce tableau. Peut être en prenant en compte les totaux par poule... J'y réfléchis avant d'essayer de mettre cela en formule.

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour

En regardant le fichier, je ne vois pas trop comment faire pour corriger le "petit" défaut que tu signales. On pourrait essayer par rapport à la moyenne des sommes par poule, mais en pratique je ne vois pas trop comment.

Dans l'exemple que tu as donné, la moyenne est de 144, alors que les sommes pour les deux dernières colonnes, à droite, sont 98 et 106 (celles ayant un joueur en moins). On peut rechercher sur la ligne un n° de joueur disponible correspondant approximativement à la différence 144 - 98 pour l'une (45 par ex), 144 - 106 pour l'autre (? par exemple), et l'écrire à la place de la cellule vide. Ensuite, il faut mettre à la place des n° retirés sur cette ligne (45 et ?) les n° manquants (39 et 59), en espérant que cela ne change pas trop la moyenne. Mais bon, que cela me semble bien compliqué avec des formules, pour un résultat pas forcément mieux !

@ plus
 

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour Cisco,

On dit qu'une poule est équilibrée lorsque la somme des joueurs dans chaque poule est identique.
Peux-tu faire évoluer le tableau dans ce sens? Voir ensuite si le résultat est meilleur !Peut-être qu'en faisant ainsi, le déséquilibre serait moindre. A voir. Sinon, on peut laisser en l'état, car ce sont des cas qui ne sont pas forcément représentatifs, à moi de choisir les poules avec la répartition que tu as fait.
bon wkend
 

Fichiers joints

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonsoir

J'ai bien compris ce que tu appelles les poules équilibrées, mais cela serait bien, en plus, en respectant, le plus souvent possible, la condition "Pas de joueur de la même équipe dans la même poule". Pour le moment, je ne vois pas trop comment faire avec des formules. Avec une macro, ça doit être possible, mais ça, je ne sais pas faire.

@ plus
 

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour

Juste pour tester, une variante en pièce jointe, mélangeant les joueurs, tout en les laissant sur la même ligne. Pour obtenir un autre tirage, il suffit d'appuyer sur F9.

En faisant plusieurs essais, j'ai obtenu un écart type de 1,93 (tableau en bas à droite) (lorsque les poules sont parfaitement équilibrées, l'écart type est égal à 0). Il y a peut être des tirages plus équilibrés. A voir...

En pratique, cette méthode ne convient pas réellement dans ton cas car :
* Il faut appuyer de nombreuses fois sur F9 pour obtenir les tirages les plus équilibrés, sans être certain d'obtenir le meilleur. Cela peut être automatisé à l'aide d'une macro, en faisant par exemple 1000 tirages, et en ne gardant que ceux donnant les plus petits écarts type.
* Cela ne prend absolument pas en compte la condition "Pas de joueur de la même équipe dans la même poule", sauf exception.

On peut bien sûr ne faire ce mélange que sur une ligne, mais cela ne résoud pas les deux problèmes cités ci-dessus.

@ plus
 

Fichiers joints

Dernière édition:

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour Cisco,

Encore des formules à retenir bravo. Mais comment fais-tu pour faire défiler l'écart type avec F9 ?

Effectivement, ça ne résoud pas mon problème, mais bon, je garde l'organisation des poules que tu as fait précédemment. On est relativement proche de la réalité.
Je vais mettre en situation avec le reste, ça devrait convenir, encore une fois, c'est inespéré d'être arrivé à ce stade.
merci encore pour ta persévérence et d'avoir fait le maximum.
bon wkend
 

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonsoir

Tu appuies sur F9, et cela provoque un nouveau tirage au hasard des valeurs en bleu, d'où un nouvel écart type en J25. Lorsqu'on obtient une très petite valeur, on copie le tableau bleu, et on fait un collage spécial valeur. Mais cela ne résoud pas le problème...

@ plus
 

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour Cisco,

J'ai bien saisi la manip, mais quelle est la méthode employée, qui provoque le hasard du tirage avec la touche F9 ?

bon wkend
 

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonsoir

C'est la formule ALEA().

@ plus
 

david84

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour aredo, Cisco,
aredo, es-tu sûr que le fait d'éviter d'avoir plusieurs joueurs d'un même club soit une bonne idée ?
Est-ce une volonté personnelle ou cela fait-il partie du règlement fédéral ?

Pour ma part j'ai beaucoup pratiqué le tennis de table et j'ai donc eu souvent à organiser ce genre de compétition mais je ne me souviens pas qu'il fallait prendre en compte le fait d'éviter que des joueurs du même club se rencontrent puisque le classement des joueurs sur lequel tu t'appuies pour organiser les poules est la résultante des résultats issus des différentes compétitions antérieures.
De plus si tu veux avoir des poules équilibrées le meilleur moyen d'y arriver est justement de ne tenir compte que du classement initial des compétiteurs.

Il y aurait sûrement possibilité de tenir compte de ta condition mais rien ne te dit qu'au bout du compte le résultat final serait exactement celui souhaité. En fait j'ai l'impression que c'est une fausse bonne idée d'où ma question de savoir si ta demande émane d'une volonté personnelle ou si ce point partie du règlement fédéral de ta fédération (et dans ce cas il serait bien de nous préciser ce point pour savoir éventuellement comment le prendre en compte, ainsi que cette notion de poule équilibrée qui pour moi est la simple résultant de la répartition des différents joueurs sur la base du classement établi à la suite des résultats obtenus dans les compétitions antérieures et/ou du classement du joueur).

D'autre part, es-tu allé voir sur le site de la fédération (voire de ta ligue) si des fichiers permettant l'organisation de ce type de compétition n'existent pas déjà ? Certaines fédérations proposent des fichiers Excel permettant aux clubs d'organiser des compétitions, tournoi, etc...
A+
 

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour Cisco, david, le forum,

Ma demande se limite à l'organisation de tournois au niveau des foyers ruraux, ceci afin de redynamiser les échanges ruraux. J'essaie au maximum de me référer au règlement FFT. Voici ma source de recherche, qui traite en page 16, de l'association des joueurs de même club.
Il y a beaucoup de fichiers, soit trop basique ou alors trop complexe. C'est pour cela que je cherche à monter pas à pas un fichier concret simple et efficace.
bonne journée
 

Fichiers joints

david84

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Re

J'ai regardé ton document (c'est d'ailleurs un document estampillée FFTT et non FFT ce qui me fait penser que ce n'est pas le règlement de la fédération française de Tennis mais bon) et effectivement cette éventualité est traitée mais explique moi STP comment tu veux y arriver dans ton exemple puisque tu as 12 poules de 5 joueurs et que sur les 60 joueurs tu en as 13 de l'équipe Beg et 13 de YYYY.
Il n'est donc pas possible que parmi les 12 poules tu n'aies pas à moment donné au moins 2 joueurs d'une même équipe.
En plus il est bien dit que le décalage doit être cantonné sur la même ligne puisqu'il doit se faire dans le sens du serpent sauf en bout de ligne (ce qui restreint encore les possibilités de déplacement d'un joueur).
A+
 

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Re,

Oui effectivement, dans ce cas, on est obligé d'associer plusieurs joueurs du même club. Le but étant d'éviter au mieux de les faire jouer ensemble. Le fichier de Cisco est donc très approchant de ce que je veux au post 77. Et je crois que je vais m'y tenir. Je fais des tests pour valider et voir surtout comment réagit l'ensemble par rapport à des situations opposées.
merci pour ta réflexion.
bonne soirée
 

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonsoir à tous, bonsoir Aredo, David84
Effectivement, je ne vois pas trop comment concilier les deux contaiantes, "avoir le moins de joueurs possibles du même club dans chacune des poules", et "équilibrer chaque poule". Une possibilité peut être, à partir de mon second fichier du post 77 :
* Calculer la somme de chaque poule-colonne
* Calculer l'écart type correspondant.
Avec une macro :
* Inverser au hasard des n° de membres d'un même club (pour ne pas rajouter plus de cas ou il y a plusieurs joueurs du même club dans la même poule) placés sur la même ligne (pour rester assez près de la méthode en serpent).
Refaire un certain nombre de fois ces inversions, en stockant la dernière configuration donnant le plus petit écart type.
Si un nouvel écart type inférieur au précédent est trouvé, stocker la nouvelle configuration sur la dernière déja stockée, en écrasant donc cette dernière. Répéter par exemple ces déplacements 1000 fois. Afficher la dernière configuration intéressante, correspondant donc au plus petit écart type obtenu lors de ces 1000 déplacements, donc correspondant à la situation la plus équilibrée obtenue pendant ces 1000 essais.

@ plus
 

david84

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour,
Avec une macro :
* Inverser au hasard des n° de membres d'un même club (pour ne pas rajouter plus de cas ou il y a plusieurs joueurs du même club dans la même poule) placés sur la même ligne (pour rester assez près de la méthode en serpent).
Refaire un certain nombre de fois ces inversions, en stockant la dernière configuration donnant le plus petit écart type.
Si un nouvel écart type inférieur au précédent est trouvé, stocker la nouvelle configuration sur la dernière déja stockée, en écrasant donc cette dernière. Répéter par exemple ces déplacements 1000 fois. Afficher la dernière configuration intéressante, correspondant donc au plus petit écart type obtenu lors de ces 1000 déplacements, donc correspondant à la situation la plus équilibrée obtenue pendant ces 1000 essais.
Je pense que ce n'est pas utile : la lecture du document fourni par aredo au #91 (page 16) explique la marche à suivre et il n'est pas question de déplacement aléatoire. Il faut au contraire coller le plus possible au règlement permettant d'organiser les poules.

Ci-joint un 1er essai pour voir mais je ne garantis pas le résultat bien entendu.
La manière de traiter les joueurs d'une même équipe est correctement expliqué dans le document excepté le cas où le problème se présente en fin de ligne.
Personnellement j'ai compris qu'à ce moment-là il fallait simplement renseigner la poule sans tenir compte des équipes en doublon.
C'est la raison pour laquelle vous constaterez dans le fichier que les poules 1 et 12 ne sont pas équilibrées notamment (et pas uniquement, j'ai déjà expliqué pourquoi) parce que l'on se trouve en bout de ligne dans le sens du serpent et que donc...on y place le dernier nom parmi les 12 traités par ligne.
A+
 

Fichiers joints

Dernière édition:

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour, Cisco David, le forum,

Merci pour cette nouvelle approche par Vba. Indépendamment du traitement en fin de ligne, j'aurais inversé 2 joueurs(tableau du milieu). Bien que ne respectant pas le sens, on aurait pu faire ceci(tableau de contrôle en bas). Le traitement en fin est toujours délicat. A voir
bonne journée
 

Fichiers joints

david84

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour, Cisco David, le forum,

Merci pour cette nouvelle approche par Vba. Indépendamment du traitement en fin de ligne, j'aurais inversé 2 joueurs(tableau du milieu). Bien que ne respectant pas le sens, on aurait pu faire ceci(tableau de contrôle en bas). Le traitement en fin est toujours délicat. A voir
bonne journée
La construction d'un algorithme de traitement doit être basé sur des conditions claires, sinon c'est ingérable et autant faire cela manuellement et avec "bon sens".

Dans ton cas c'est le document communiqué qui doit servir de base et si tu lis bien la page 16 tu dois comprendre que Christophe et Patrice ne peuvent pas être inversés puisqu'ils se trouvent sur 2 lignes différentes.
J'ai relu ton document et la solution à ce cas est en fait décrite dans l'exemple de la page 16 (3ème ligne) où
Code:
N1 Z4 O4
devient après traitement
Code:
 O4 N1 Z4
De plus relis attentivement cet exemple et que tu comprendras que la solution ne consiste pas simplement à inverser les 2 noms mais à revenir en arrière pour trouver la place de ce nom puis à reprendre le cheminement à partir de cette place pour étudier le placement des noms suivants qui avaient initialement été placés
La mise en place des joueurs doit reprendre à la place qui a été laissée libre par cette manœuvre.
: donc on trouve la position de O4 en reculant puis en repart vers l'avant pour replacer N1 et Z4. Cela est plus difficile à régler qu'une simple inversion.

Toujours par rapport au cas de cette fin de ligne il faut également prévoir le cas ou aucune place dans la ligne n'est satisfaisante et donc dans ce cas le nom reste en fin de ligne puisque l'on ne passe pas d'une ligne à l'autre (en tout cas c'est ce que j'en conclus puisqu'il faut rester sur la même ligne) :
ainsi, lorsque un joueur devrait se trouver dans la même poule qu’un autre de son club déjà placé, on déplace le 2ème joueur à la première place possible dans l’ordre du "serpent", sauf en bout de ligne.
Relis attentivement ton document et dis-moi si l'on est bien d'accord avant que j'essaie de trouver une solution parce que une fois le travail commencé je ne le reprendrai pas si tu t'aperçois que cela ne convient pas.
A+
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

bonjour à tous,

Effectivement, j'ai voulu faire une variante, qui traite en priorité l'association des clubs à la différence de classement. Car le fait de traiter par ligne a pour but de limiter les écarts de points dans les échanges.
Je suis pour garder en partie la méthode décrite. Plusieurs possibilités:
1) on associe les joueurs de clubs différents en ne tenant pas compte des lignes.Dans notre cas, j' inverse Patrice et Christophe.
2) Si l'écart de points est trop important, privilégier les poules voisines (dans notre cas, inverser Christophe avec Julien).
3) on respecte scrupuleusement le règlement.
Dans notre cas, j'aurai pris l'option 2.
La construction d'un algorithme de traitement doit être basé sur des conditions claires, sinon c'est ingérable et autant faire cela manuellement et avec "bon sens".
Si les conditions énoncées sont ingérables, je m'en tiendrez donc à la méthode décrite.
merci
 

david84

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour,
pas évident ton affaire, donc je suis allé au plus simple tout en respectant les points importants du règlement pour traiter des noms à placer en bout de ligne dans le sens du serpent.
Si cette place ne convient pas je remonte la ligne dans le sens inverse en testant pour chaque poule une inversion possible de la paire nom/association : pour que l'inversion soit possible il faut :
- que l'association du nom à placer ne se retrouve pas dans la poule testée
- que l'association du nom de la même ligne de la poule testée ne se retrouve pas dans la poule du bout de ligne.
Si c'est le cas j'inverse les 2 paires nom/association.
Si aucune des poule testées ne permet cette inversion je place alors la paire clé/association dans la poule située en bout de ligne.
Tu trouveras dans le fichier ce code. A toi de le tester correctement (je n'en ai pas le temps) en variant la place des noms et des associations et de me dire s'il fait ce que je t'ai décrit.
Si ce n'est pas le cas place-moi dans le fichier des exemples qui posent problème en expliquant ce qui ne va pas.
A+
 

Fichiers joints

Dernière édition:

CISCO

XLDnaute Barbatruc
Re : Fonction Nb.si difficile à mettre en oeuvre (dans fichier tennis)

Bonjour à tous, bonjour Aredo, bonjour David84

Je vois avec plaisir que cela avance, même si ce n'est pas évident.

Dans les fichiers que j'avais proposé, le n° d'un participant d'une équipe déjà présente dans la poule en cours était déplacé un peu plus loin sur la ligne, et, de proche en proche, parfois à la fin de la liste de n° (et pas forcément à la fin de la ligne comme le demande le règlement, une condition de plus à respecter).

@ plus
 

Haut Bas