XL 2013 [Résolu par CISCO] Modifier une liste déroulante

bellenm

XLDnaute Impliqué
Bonjour à tous les internautes,

Comment faut-il formulé une liste déroulante de manière a ce quelle élimine tous les noms se trouvant avant la dernière sélection !

J’explique car ce ne doit pas être simple a faire

Voici une liste de joueurs :

* A.C. GRÂCE *************************************
Hxxx Sxxxx / B 0
Cxxxxx Sxxxxx / C 2
Jxxxx Exx / C 2
Lxxxxxx Gxxxxxx / C 2
Dxxxx Fxxxxx / C 4
Mxxxxxx Vxxxx / D 0
Vxxxxx Cxxxx / D 0
Bxxx Axxxx / D 2
Cxxxx Fxxxx / D 2
Dxxx Bxxxxxxx / D 4
Gxxxxx M-Pxxxx / D 4
Lxxxx Exxxx / D 4
Fxxxxx Fxxxx / D 6
Kxxxx J-Mxxx / D 6
Bxxxxx Mxxx / E 0

Voici des noms qui sont trier, oui mais pas par ordre alphabétique mais par classement : dans une autre feuille Les nom sont en colonne « B » et la colonne « C » indique le classement

La syntaxe est toujours la même LE NOM[un espace]/[un espace]A[soit deux chiffres ou un espace plus un chiffre].

La liste des noms arrive déjà trier d’une autre feuille après avoir choisis un club. « DONNEES LIS »

En somme si je choisis un joueur C 2 sur la liste sur la cellule suivante ne pourrait apparaitre que les autres C 2, C 4, D 0 etc. mais des classement plus haut comme C0, B 6, B 4, B2, B0, A10 etc. devraient disparaitre !

Ici le B 0 ne devrait plus être visible dans la liste des joueurs sélectionnable.
1er joueur : Jxxxx Exxxx / C 2
2ème joueurs : Dxxx Fxxxx / C 4
3ème joueurs : Hxxxx Sxxx / B 0
Joueur double : Cxxxxx Sxxxxx / C 2
Capitaine:

ICI le C 4 est en rouge car il signale une erreur de composition en effet le « B 0 » ne pouvait pas être aligné comme troisième joueurs !

Ci-joint en exemple le fichier avec les onglets nécessaire.

D’avance merci si vous trouver une solution a ce problème.
 

Pièces jointes

  • marc201608.xlsm
    721.2 KB · Affichages: 87

CISCO

XLDnaute Barbatruc
Bonsoir

Une possibilité en pièce jointe, utilisant le même type de formule matricielle dans DONNEES LIS!T2 et DONNEES LIS!U2 que précédemment mais avec (NB.SI(précédent7;joueursbis)=0) au lieu de (NB.SI(précédentbis;joueursbis)=0).

Le nom précédent7 correspond à la plage commençant sur la ligne 7, couvrant les colonnes C à I, et finissant juste au dessus de la cellule en cours (CA). Ce test en NB.SI ne renvoie 0 que pour les membres du club pas encore cités dans cette plage précédent7. Normalement, il faudrait faire uniquement avec l'intersection des plages C8:C11, I8:I11, C20:C23, I20:I23, C32:C35, I32:I35, C44:C47 et I44:I47 au dessus de la ligne en cours (Cela ne sert à rien de faire des tests par rapport aux textes "n° de match:", "visiteur :", "1er joueur :", "2ème joueur :", "3ème joueur :", "joueur double :", car on sait bien que les joueurs ne portent pas ces noms :)). Mais comme c'est plus simple de ne définir qu'une plage, plutôt que 8...

Cette méthode ne fait donc pas la différence entre les joueurs de la colonne C et ceux de la colonne I. Ainsi, tu peux aussi bien mettre un club dans la colonne C, et un peu plus loin le même club dans la colonne I. Les premiers joueurs de ce club, dans la colonne C, ne seront pas dans les listes déroulantes de la colonne I.

Ce système a un défaut : S'il existe des joueurs d'un même club ou de clubs différents portant le même nom et ayant le même classement, le second sera éliminé des listes déroulantes suivantes dès qu'un des deux aura été sélectionné. Toutefois, comme il est peut probable que deux joueurs portent le même nom et aient le même classement, je pense qu'on doit pouvoir faire avec... Au besoin, par précaution, on peut mettre dans la colonne DONNEES LIS!B:B une MFC mettant en évidence les nom/classement identiques. Si ce cas venait à se présenter, il te suffirait de changer légèrement le second nom/classement, par ex, en mettant EINSTEIN2 Albert / D 0 à la place du second EINSTEIN Albert / D 0.

@ plus

P.S.: Si tu le préfères, je peux modifier les formules pour qu'elles prennent en compte séparément les joueurs des colonnes C et I, comme proposé dans nos derniers posts.

P.S 2 : Il doit aussi être possible de prendre en compte automatiquement les rares cas nom/classement identiques automatiquement. Mais ces cas se présenteront t'ils ?
 

Pièces jointes

  • marc201608sept.xlsm
    762.8 KB · Affichages: 41
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour Cisco,

Je viens de tester le fichier, pour la colonne "c & i" cela fonctionne bien de première vue!
Dans le tri effectuer y a t'il moyen de définir pour la suite du tableau pour une équipe. Ces équipes resterons dans la colonne "c ou i" car j'ai fait les feuilles de match d'ordre de résultats en fonction d'une cellule si l'équipe est ou non à Domicile et cela fonctionne très bien.
Donc pour le club qui gérera son fichier et toute ses équipes (évoluant à domicile ou à l'extérieur) le fera depuis la colonne "C".
Donc dans mon cas toute nos équipes se suivront dans les tableau de la colonne "C": équipe 1 (C7), équipe 2 (C19), équipe 3 (C31), etc.. donc logiquement pas de problème SAUF qu'il faut impérativement que dans la sélection pour l'équipe 2 etc... que le premier joueur de la liste (C20, pour l'équipe 2) ne soit pas plus fort que le deuxième sélectionner de la liste 1 (C9, pour l'équipe 1), le premier "C32" ne soit pas plus fort que le "C21"de l'équipe 2.

Bon cela étant une chose, la deuxième dans la colonne "I" ce qui pourrait avoir lieu et pas dans la colonne "C" c'est l'inversion de place dans le tableau pour les visiteur d'où l'importance du numéro affection un club "A.C. SERAING" "1" car ca a été déjà le cas lorsque plusieurs équipe évolue dans la même division: AC GRACE 2 et 4 avec AC SERAING 3 et 5.
Il ne ce reçoivent pas toujours dans le bon ordre : 2 contre 3 et 4 contre 5, ce serait trop beau cela arrive bien sur puisqu'ils devront se rencontrer mais dans le cas où ce serait 2 contre 5 et 4 contre 3, il y aurait problème dans la liste puisque l'équipe 3 serait après l'équipe 5 ayant déjà choisis ses joueurs. Pour les visités pas de problème pour la colonne "C" car ils seront toujours dans l'ordre qu'ils jouent à domicile ou l'extérieur!

Donc voilà une plus grosse difficulté si on veut que cela fonctionne parfaitement.

Regarde ce que tu peux essayer, je serai en stand bye.

Merci Cisco pour ce qui a déjà été fournis.

Marc
 

CISCO

XLDnaute Barbatruc
Bonjour

OK. Je vais essayer de te faire ça cet après-midi ou ce soir. Je ne sais ce que cela donnera pour la colonne I.

@ plus

P.S : Est-ce que le code du classement est bien constitué, tout le temps, de 3 caractères, une lettre, un espace et un chiffre ?
 

CISCO

XLDnaute Barbatruc
Bonsoir

J'ai supprimé la colonne H pour simplifier les formules (donc les noms des membres sélectionnés sont dans la colonne H et plus dans la colonne I). Il faut donc remplacer les I par des H dans la macro dans la feuille CINT, ce qui donne Intersect (target, .Range("C7,H7,C19,H19,C31,H31,C43,H43")).

Dans DONNEES LIS!T2, j'ai utilisé la même formule que précédemment en changeant la partie
Code:
=DROITE(précédent;3)
en
Code:
=DROITE(SI((DECALER(précédentbis;;;1)=DECALER(précédentbis;-12;;1))*(numjoueur="1er joueur :");CAmoins11;précédent);3)
J'ai donné à cette partie le nom classementprécédent.

Ci-dessus, (DECALER(précédentbis;;;1)=DECALER(précédentbis;-12;;1)) renvoie VRAI lorsqu'il y a le même club dans deux cellules successives jaunes au dessus de la cellule active (CA)

(numjoueur="1er joueur :") renvoie VRAI que si la cellule active correspond au 1er joueur, c'est à dire pour C8, H8, C20, H20, C32... Il faut donc définir numjoueur dans le gestionnaire de noms avec DECALER(CA;;-1).

Si on a VRAI pour les deux tests ci-dessus, classementprécédent est le classement du 2nd joueur du tableau au dessus de la cellule active (CA) (dans la cellule nommée CAmoins11). Sinon, c'est le classement du joueur juste au dessus de la cellule active (donné par la cellule précédent).

Si on forme plusieurs équipes dans le même club, il faut les mettre dans des tableaux successifs, dans la même colonne (Ex : tableaux 2 et 3, et pas tableaux 1 et 3) (donc avec C19 = C31 ou I19 = I31).
 

Pièces jointes

  • marc201608huit.xlsm
    762.2 KB · Affichages: 52
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour Cisco,

Là, je ne vois pas comment résoudre, prendre en compte ce problème, puisqu'on ne sait pas à l'avance dans quel ordre passeront les équipes, tout en respectant les règles que tu as définies plus haut pour choisir le 1er joueur.
Alors pour ce problème, le plus simple je pense c'est de laisser le dernier tableau des huit que j'ai mis sur ma feuille et de faire comme avant en faisant bien-sûr très attention aux composition dans ce cas là.

La feuille "BYEbis" peut être enlevée puisqu'en rajoutant dans la base de donnée le nom "BYE" me permet de faire une feuille bye en respectant les noms et sans me tromper!

Je te remercie beaucoup pour le temps passé avec moi et ce problème qui n'en n'étais pas un pour toi qui manipule si facilement les formules excel.

Je te souhaite le meilleur pour toi et tes proches, à la prochaine fois pour d'autre formules!

Marc.
 

bellenm

XLDnaute Impliqué
Bonjour Cisco,

Après plusieurs essais, il y a un soucis sur ma feuille "CINT"
le calcul est bon pour les compositions pas:
prenons le cas "AC GRACE" joue en premier tableau dans le deuxième rien ou un autre club, je reprend "AC GRACE" en tableau 3 ou 4,5, etc.. la liste déroulante ne me met que les joueurs n'ayant pas été repris au par avant, alors qu'il devrait remettre tout les joueurs car le tableau vide pourrait signaler une autre journée par exemple donc tout les joueurs devrait être repris.

si tu vois la correct à faire, merci Cisco

Marc
 

CISCO

XLDnaute Barbatruc
Rebonjour

Bonjour Cisco,

Après plusieurs essais, il y a un soucis sur ma feuille "CINT"
... la liste déroulante ne me met que les joueurs n'ayant pas été repris au par avant, alors qu'il devrait remettre tout les joueurs car le tableau vide pourrait signaler une autre journée par exemple donc tout les joueurs devrait être repris.
...
Marc

C'est normal (depuis le post #32), car la formule matricielle élimine tous les membres déjà cités au-dessus .

Que faut-il exactement : Que la formule matricielle élimine :
1) que les noms cités dans le tableau en cours et dans le tableau précédent si c'est le même club
2) les noms du tableau en cours et tous les noms des tableaux au-dessus si c'est le même club à chaque fois, s'il ni a pas d'autres clubs ?


Ex 1 : tableau 1 --> club X, tableau 2 --> club Y ou pas de club, tableaux 3 et 4 --> club X. Que faut-il avoir ?
Ex 2 : tableau 1 --> club Y, tableaux 2, 3 et 4 --> club X. Que faut-il avoir ?

Faut-il faire la correction pour tous les tableaux, ou uniquement pour la colonne de gauche, ou celle de droite ?

@ plus
 
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour CISCO et merci pour ta réponse,

Il ne faut que modifier la colonne "C" tant que c'est le même club en "c7, c19, c31, c43, c55, c67, c79, c91" ont suit la liste donc chaque qu'un joueur est retiré soit comme 1er, 2ème, 3ème ou pour le double le joueur ne s'affiche plus!
Un fois que la série de nom de club n'est plus égal à la précédente la liste se réinitialise donc revient à zéro.

Cela Permettrait à concevoir plus facilement les convocation sur plusieurs semaine par 3 semaine pour deux équipes, C7, C19 la C 31 vide ou autre club puis on recommence C43, C55, C67 vide ou autre club et pour finir dernière semaine C79 et c91
Si trois équipe ont peut le faire que deux fois puisqu'il faut un vide pour remettre les joueurs ayant participer avant.

L'explication est elle plus clair comme cela?

Merci beaucoup

Marc
 

bellenm

XLDnaute Impliqué
Re :

Oui les membres s'enlevait bien sans soucis, mais ce que j'aurais aimé c'est que les membres soit de nouveau tous là dés qu'il y aurait eu une interruption du même nom de club dans les cellules "c7, c19, c31, c43, c55, c67, c79, c91" afin de recommencer la sélection sur plusieurs semaines puisqu'il ne saurait pas jouer deux matchs le même jour!

Marc
 

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 084
Membres
112 655
dernier inscrit
fannycordi