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
Bonjour

Cf. en pièce jointe. Je n'ai fait le travail, mis les listes déroulantes que pour les 3 joueurs (CINT!C8 à C10), pas pour celui de double (CINT!C11).

La liste à afficher est construite automatiquement dans la colonne DONNEES LIS!T, à partir de la seconde ligne. Elle porte le nom de listeàafficher.Elle dépend du contenu de la cellule juste au dessus de celle sélectionnée dans CINT!C. Pour voir cette liste à afficher dans cette colonne DONNEES LIS!T, il faut afficher la première feuille et la seconde feuille à l'écran, et sélectionner CINT!C8, C9 ou C10.

Pour "raccourcir" la formule matricielle dans DONNEES LIS!T2, j'ai défini les noms précédent (qui désigne la cellule au dessus de celle en cours dans la colonne CINT!C), précédentbis (qui désigne la plage allant de CINT!$C$7 à la cellule correspondant à précédent) et joueursbis (idem à la plage joueurs, mais commençant en ligne 1 et pas en ligne 2). J'ai aussi ajouté des $ devant les C$7 de la définition de nomCINT8.

@ plus
 

Pièces jointes

  • marc201608.xlsm
    746.9 KB · Affichages: 72
Dernière édition:

bellenm

XLDnaute Impliqué
Bonsoir Cisco,

Très beau travail, il y a deux trois petite chose que je ne comprend pas mais j'essaye de comprendre:
- Pourquoi lorsque j'ajoute des noms dans la feuille "DONNEES LIS" pour un autre club je n'ai plus rien!
- Pourquoi lorsque je change de nom de club il n'y a plus rien non plus même lorsque je reviens au nom du club "A.C. GRÂCE"
- Le but étant quand même de changer de club aussi comme de rajouter des joueurs dans la liste initiale j'ai plus de 600 noms pour tous les clubs!
Cf. en pièce jointe. Je n'ai fait le travail, mis les listes déroulantes que pour les 3 joueurs (CINT!C8 à C10), pas pour celui de double (CINT!C11).
Pour les doubles c'est moins grave car le principal est fait a moi de doubler d'attention lors des composition pour le double.
La liste à afficher est construite automatiquement dans la colonne DONNEES LIS!T, à partir de la seconde ligne. Elle porte le nom de listeàafficher.Elle dépend du contenu de la cellule juste au dessus de celle sélectionnée dans CINT!C. Pour voir cette liste à afficher dans cette colonne DONNEES LIS!T, il faut afficher la première feuille et la seconde feuille à l'écran, et sélectionner CINT!C8, C9 ou C10.
Dois je créer d'autre nom pour les cellule"i8 à i10" et mettre dans une autre colonne "DONNEES LIS!U" dans le fichier d'origine j'ai là 4 tableaux ! Que dois je au juste recopier et faire pour que cela fonctionne?
Pour "raccourcir" la formule matricielle dans DONNEES LIS!T2, j'ai défini les noms précédent (qui désigne la cellule au dessus de celle en cours dans la colonne CINT!C), précédentbis (qui désigne la plage allant de CINT!$C$7 à la cellule correspondant à précédent) et joueursbis (idem à la plage joueurs, mais commençant en ligne 1 et pas en ligne 2). J'ai aussi ajouté des $ devant les C$7 de la définition de nomCINT8.
Je suppose qu'ici je dois en faire de même avec les nomCINT19, nomCINT36 etnomCINT43 .
Par contre je ne trouve pas la formule matriciel DONNEES LIS!T2

Merci déjà car je sais qu'il doit y avoir une solution puisque tu as déjà une solution.
ps: si joint le fichier avec 4-5 noms en plus et comme tu pourras le voirla formule ne vas déjà plus après avoir modifier le nom de club en "C7" et lorsque je met une équipe en "i7" j'ai les donée complète du club de départ "A.C. GRÂCE"
Marc
 

Pièces jointes

  • marc201608bis.xlsm
    700.8 KB · Affichages: 47

bellenm

XLDnaute Impliqué
Bonsoir Cisco,

Je commence à avancer mais encore qlq question.
- Pourquoi dans la formule matricielle dans "DONNEES LIS! T2
Code:
=SIERREUR(INDEX('DONNEES LIS'!B$1:B$52;PETITE.VALEUR(SI(('DONNEES LIS'!D$1:D$52=CINT!C$7)*(LIGNE($1:$52)>=MIN(LIGNE(nomCINT8))+SIERREUR(EQUIV(DROITE(précédent;3);DECALER(nomCINT8;;1);0)-1;1))*(NB.SI(précédentbis;joueursbis)=0);LIGNE($1:$52));LIGNE(1:1)));"")
la valeur "52" est elle fixe ou puis je l'augmenter à"100"?
Ce nombre c'était celui du nombre total de ligne mais en réalité j'en ais plus de 6-700, peut il donc être modifier?
- Toujours le même problème si j'ajoute ou modifie le nombre de ligne dans "DONNEES LIS!B.." plus rien ne viens dans les cases "C8-9-10" pourquoi?

Donc je vais avancer pour mettre à jour toute ces infos pour les 4 tableaux.

Dans l'attente de te lire, merci d'avance et à bientôt Cisco

Marc
 

CISCO

XLDnaute Barbatruc
Bonsoir à tous

J'ai essayé de simplifier la formule dans DONNEES LIS!T2, mais le résultat est aussi long... donc ce n'est pas intéressant.

Je regarde tes remarques et essaye de corriger les défauts que tu as constatés... N'essayes pas de trop travailler sur le fichier tant que cela bugue tant que ça...

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Rebonsoir

Quelques questions :
1) J'ai un pb avec le fichier envoyé hier soir : A chaque fois que je le ferme, Excel le réouvre !!! Bien sûr, je peux annuler cette opération avec Echap, mais ce n'est pas très pratique. Est-ce que tu as le même pb ?

2) Quelle est la macro qui affiche continuellement l'heure ? Dans quel module (Il y en a tellement...) ?

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Rebonsoir

- Pourquoi lorsque j'ajoute des noms dans la feuille "DONNEES LIS" pour un autre club je n'ai plus rien!
J'ai essayé en modifiant ma précédente pièce (et non à partir de ta pièce jointe), et cela semble fonctionner.

- Pourquoi lorsque je change de nom de club il n'y a plus rien non plus même lorsque je reviens au nom du club "A.C. GRÂCE"
Cela fonctionne dans la nouvelle pièce ci-jointe.

Pour les doubles c'est moins grave car le principal est fait a moi de doubler d'attention lors des composition pour le double.
En utilisant le même type de formule matricielle que celle qu'il y a dans DONNEES LIS!T2, cela doit être faisable sans grande difficulté. Si j'ai bien compris, le joueur pris en double doit être mieux classé que le premier joueur choisi. C'est çà ?

Dois je créer d'autres noms pour les cellule"i8 à i10" et mettre dans une autre colonne "DONNEES LIS!U" dans le fichier d'origine j'ai là 4 tableaux ! Que dois je au juste recopier et faire pour que cela fonctionne?
Je te ferai cela demain pour que cela fonctionne aussi avec I8:I10.

Je suppose qu'ici je dois en faire de même avec les nomCINT19, nomCINT36 etnomCINT43
Je ne sais plus à quoi correspondent ces noms, et comme le fichier que tu as mis en pièce jointe est un fichier simplifié, leur définition dans le gestionnaire de noms est incomplète (avec des #REF dedans). Normalement, en cliquant sur cette définition, si elle désigne une plage particulière sur une feuille, Excel la met en valeur en l'entourant de pontillets. Mais là, cela ne fonctionne pas à cause de ces #REF. Je vais chercher dans les précédents fichiers sur ce fil pour essayer de comprendre leur rôle.


- Pourquoi dans la formule matricielle dans "DONNEES LIS! T2
Code:
=SIERREUR(INDEX('DONNEES LIS'!B$1:B$52;PETITE.VALEUR(SI(('DONNEES LIS'!D$1:D$52=CINT!C$7)*(LIGNE($1:$52)>=MIN(LIGNE(nomCINT8))+SIERREUR(EQUIV(DROITE(précédent;3);DECALER(nomCINT8;;1);0)-1;1))*(NB.SI(précédentbis;joueursbis)=0);LIGNE($1:$52));LIGNE(1:1)));"")
la valeur "52" est elle fixe ou puis je l'augmenter à"100"?
Ce nombre c'était celui du nombre total de ligne mais en réalité j'en ais plus de 6-700, peut il donc être modifier?
J'avais fait avec 52 juste pour voir si cela fonctionnait. Dans la nouvelle pièce jointe, la formule matricielle dans DONNES LIS!T2, utilise systématiquement le nom joueursbis à la place de $B$1:$B$52 (ou des plages dans d'autres colonnes définies à partir de ce nom), ainsi il ni a plus à ce préoccuper du n° de la dernière ligne.

@ plus
 

Pièces jointes

  • marc201608ter.xlsm
    745.1 KB · Affichages: 61
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour Cisco,
merci d'avoir déjà jeter plus qu'un oeil!
2) Quelle est la macro qui affiche continuellement l'heure ? Dans quel module (Il y en a tellement...) ?
Oui cette macro je l'ai aussi supprimer et remplacer la cellule par "maintenant() " qui se met a jour lors de chaque clic et embêtant visuellement, pour la macro "Auto_close" tu efface le tout c'est juste pour le chrono.

ps: je regarde ta réponse précédente et te recontacte

Marc
 

bellenm

XLDnaute Impliqué
re re: Cisco

Pour les doubles c'est moins grave car le principal est fait a moi de doubler d'attention lors des composition pour le double.
En utilisant le même type de formule matricielle que celle qu'il y a dans DONNEES LIS!T2, cela doit être faisable sans grande difficulté. Si j'ai bien compris, le joueur pris en double doit être mieux classé que le premier joueur choisi. C'est çà ?
Pour le double le joueur ne peut pas être plus fort que le premier joueur (donc de force égale mais ne doit pas être le deuxième ni le troisième joueurs puisque cela peut aussi être vide; le double ce jouerais avec le 1er et 3èm joueur par exemple ou alors avec le 2ème et le quatrième joueurs d'où alors intervient la règle que le quatrième joueurs pour le double DOIT AVOIR UN CLASSEMENT EGAL OU INFERIEUR AU PREMIER JOUEUR DE L'EQUIPE.

Est ce plus clair ainsi pour toi?

Bonne suite

ps: si tu veut l'intégralité du fichier pour ne plus avoir des "#" un peut partout, dit moi comment te le faire parvenir!

Marc
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

J'ai fait le "travail" pour C11 et I8:I11 en définissant de nouveaux noms :

* nomCINTC7 (l'ancien nomCINTC8) qui donne la plage des noms du club écrit dans C7

* nomCINTI7 qui donne la plage des noms du club écrit dans I7

* précédentbiscolC (l'ancien précédentbis) qui donne la plage de C7 à précédent

* précédentbiscolI qui donne la plage de I7 à précédent

* listeàafficherC (l'ancien listeàafficher) qui donne la plage de la colonne DONNEES LIS!T à afficher dans C8:C10 en fonction de la cellule au dessus de la cellule active

* listeàafficherdoubleC qui donne la plage de la colonne DONNEES LIS!U à afficher dans C11 en fonction de C8 (le premier joueur de la colonne C)

* listeàafficherI qui donne la plage de la colonne DONNEES LIS!V à afficher dans I8:I10 en fonction de la cellule au dessus de la cellule active

* listeàafficherdoubleI qui donne la plage de la colonne DONNEES LIS!W à afficher dans I11 en fonction de I8 (le premier joueur de la colonne I).

Cela semble fonctionner, mais pas tout à fait nickel, à savoir que la mise à jour des listes à afficher ne se fait pas toujours automatiquement, et qu'il faut donc appuyer souvent sur F9 pour forcer cette MAJ.

Comme tu as 4 x 2 tableaux, cela signifie qu'il faut définir 4 x 2 x 2 listes intermédiaires dans les colonnes T, U, V... et de nombreux noms semblables à ceux-ci dessus. Pas très pratique...

Je vais réfléchir pour trouver une méthode plus simple mais je ne te promet rien...

@ plus
 

Pièces jointes

  • marc201608quatre.xlsm
    755.1 KB · Affichages: 44

CISCO

XLDnaute Barbatruc
Bonjour

Sauf si je me suis trompé, une solution en pièce jointe ne nécessitant pas la définition d'autres noms et n'utilisant que 2 listes intermédiaires en colonnes T et U (de la ligne 2 à la ligne 40, mais tu peux tirer ces formules matricielles vers le bas si besoin est).

Cf. dans le gestionnaire de noms :
* listeàafficher (donne la plage de la colonne DONNEES LIS!T à afficher) (remplace listeàafficherC et listeàafficherI)

* listeàafficherdouble (donne la plage de la colonne DONNEES LIS!U à afficher dans les cellules donnant le joueur double) (remplace listeàafficherdoubleC et listeàafficherdoubleI)

* nomclubCINT (donne la plage listant tous les noms des joueurs du club de la colonne en cours des lignes 7, 19, 31 ( de 12 en 12)) (remplace nomCINTC7 et nomCINTI7)

* précédent (contenu de la cellule juste au dessus)

* et précédentbis (plage commençant en ligne 7 (ou 19, ou 31...) et finissant sur la cellule précédente) (remplace précédentbisC et précédentbisI)

Tout cela fonctionne parce que ces noms sont définis en utilisant le nom CA qui désigne la cellule active.

Dans la précédente pièce jointe, les noms étaient définis par rapport à la colonne CINT!C ou la colonne CINT!I, et en utilisant directement dans les formules le nombre 7 pour aller chercher le nom du club considéré sur cette ligne. Par conséquent, il fallait définir d'autres noms par rapport à la ligne 19, et encore d'autres par rapport à la ligne 31, et encore d'autres...
Dans la nouvelle pièce jointe, la formule recherche la ligne où se trouve le nom du club, 7, 19, 31, juste au dessus de la ligne en cours, grâce à la partie des formules en ENT(LIGNE(CA)/19)*12+7

Pour appliquer cela à d'autres tableaux, il suffit de copier la plage B6:N12 (ou B18:N24) et de la coller en faisant bien attention pour avoir le nom du club dans C31 et I31.

@ plus
 

Pièces jointes

  • marc201608cinq.xlsm
    755.5 KB · Affichages: 63
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 663
Messages
2 111 674
Membres
111 256
dernier inscrit
cvwvoizhjf