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

aredo

XLDnaute Occasionnel
bonjour,

J'ai un petit souci avec une formule, je n'arrive pas à m'en sortir.
Si quelqu'un peut jeter un oeil.
merci au fofo

Ce fil comporte deux parties, l' une traitant des ex-aequo, départage et classement, et l'autre concernant la répartition des joueurs dans les poules.
 

Pièces jointes

  • Nou.xls
    46.5 KB · Affichages: 159
  • Nou.xls
    46.5 KB · Affichages: 157
  • Nou.xls
    46.5 KB · Affichages: 156
Dernière édition:

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
 

Pièces jointes

  • manuelTdT.pdf
    340 KB · Affichages: 95

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+
 

Pièces jointes

  • aredo_répartitionTennis.xlsm
    28.8 KB · Affichages: 88
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
 

Pièces jointes

  • aredo_répartitionTennis.xls
    51 KB · Affichages: 118

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+
 

Pièces jointes

  • aredo_répartitionTennis_v2.xlsm
    29.9 KB · Affichages: 116
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
 

aredo

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

Bonjour, David, Cisco, le forum,

Merci pour cette nouvelle étape. Dans l'exemple joint, ou 2 clubs se trouvent fatalement ensemble, ça ne fonctionne pas tout à fait.
Sinon, le code fonctionne pour 60 joueurs, mais le nombre peut varier de 10 à 60. Est-ce que le code peut permettre cet état ?
encore merci
 

Pièces jointes

  • aredo_répartitionTennis_v2.xls
    56.5 KB · Affichages: 85

david84

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

Bonjour,
j'ai failli t'oublier car tu ne passes pas souvent ! Il faudrait tout de même que tu sois plus présent pour faire vivre ton fil car sinon je risque de décrocher.
Merci pour cette nouvelle étape. Dans l'exemple joint, ou 2 clubs se trouvent fatalement ensemble, ça ne fonctionne pas tout à fait.
Je m'en était aperçu mais attendais ta réponse.
Ci-joint un nouvel essai à tester correctement de ton côté.
Sinon, le code fonctionne pour 60 joueurs, mais le nombre peut varier de 10 à 60. Est-ce que le code peut permettre cet état ?
Il sera temps de voir cela une fois que l'on est sûr que le code fonctionne bien, donc à toi de jouer en testant correctement ce code.
A+
 

Pièces jointes

  • aredo_répartitionTennis_v3.xlsm
    35.6 KB · Affichages: 98
  • aredo_répartitionTennis_v3.xlsm
    35.6 KB · Affichages: 86
  • aredo_répartitionTennis_v3.xlsm
    35.6 KB · Affichages: 85

aredo

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

bonjour David, Cisco, le forum,

Je suis bien présent, malheureusement, en ce moment, je traverse une période difficile. Le fait de venir ici, justement me fait oublier le reste.

J'ai bien testé ta nouvelle mouture et apparemment, c'est conforme à ma demande.
Je teste encore demain et te redis

merci
 

aredo

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

bonjour David, Cisco, le forum,

La méthode me parait judicieuse. Après d’autres essais, les changements sont optimisés par rapports aux contraintes. Difficile de faire mieux, bravo !
Ce serait bien de pouvoir tester avec un nombre de joueurs différent. J’espère ne pas trop compliquer car le nombre de combinaisons poules/joueurs peut être multiple.
Exemple pour 40 joueurs, plusieurs possibilités. Le fichier de Cisco traite cette étape -poste 77 - (Fichier joint dans liste et combinaisons). A moins que l’on puisse intégrer ton code avec les tableaux de Cisco.

Merci encore
 

Pièces jointes

  • Organisationdespoules20clubs.zip
    138.1 KB · Affichages: 76
  • Organisationdespoules20clubs.zip
    138.1 KB · Affichages: 82
  • Organisationdespoules20clubs.zip
    138.1 KB · Affichages: 81

david84

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

le nombre de combinaisons poules/joueurs peut être multiple.
Exemple pour 40 joueurs, plusieurs possibilités.
Sois plus précis s'il te plaît dans tes explications car je n'ai pas le temps de me replonger dans les fichiers antérieurs pour comprendre tes attentes.
Ci-joint un 1er essai : possibilité de choix du nombre de poules via le menu déroulant (entre 3 et 12 poules).
A toi de tester.
Ceci dit je te conseille de modifier la liste à repartir si tu veux tester sur un nombre de poule réduit car il me paraît difficile de tester correctement avec la liste actuelle.
A+
 

Pièces jointes

  • aredo_répartitionTennis_v3.xlsm
    40.1 KB · Affichages: 86
  • aredo_répartitionTennis_v3.xlsm
    40.1 KB · Affichages: 87
  • aredo_répartitionTennis_v3.xlsm
    40.1 KB · Affichages: 93

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345