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

bellenm

XLDnaute Impliqué
re bonjour Cisco,

Alors là rien a dire, ça fonctionne super bien :)

Je vais voir les noms a rajouter dans le gestionnaire de noms ainsi que toute les formules a recopier.

Dans la dernière feuille où je devrais aussi mettre des noms puis je le faire également même si entre deux noms il y a une ligne vide entre, j'explique:

nom club
ligne vide
ligne vide
nom joueur 1
ligne vide
nom joueur 2
ligne vide
nom joueur 3
pas de double

Merci beaucoup pour cette aide je me met au travail, d'abord récolter les nouvelles données les copier puis tester.

Marc
 

bellenm

XLDnaute Impliqué
Bonsoir Cisco,

J'ai recopier me semble t'il tour les noms du gestionnaire des noms, les deux formules matricielle les formule pour les validation des données mais là je bloque toujours la même erreur:
"La source est reconnu comme erroné. Voulez-vous continuer?
Je sais que c'est dû a une erreur mais laquelle?
J'ai déjà recontrôler les noms et formules de chaque noms dans le gestionnaire rien
En comparant les deux fichier le tient qui fonctionne super bien et le mien Les fichiers ayant la même structure le mien étant complet j'aurais beaucoup trop de difficulté de recopier toute les feuilles avec leurs liens, leurs formules cela risquerai de me prendre un bon mois!

Voici le fichier en question si tu trouve l'erreur ou l'oublis tout rentrera dans l'ordre

Marc
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonsoir

Dans les formules, tu utilises le nom joueursbis, alors que dans le gestionnaire de noms, tu as écri joueurbis. Il suffit de rajouter le s au milieu dans le gestionnaire pour corriger ce défaut. Essayes et dis moi si cela fonctionne mieux.

@ plus

P.S.1: Il y a une erreur dans précédentbis dans la pièce jointe de mon post #15. Il faut faire avec
Code:
=DECALER(CA;(ENT((LIGNE(CA)-7)/12)*12+7)-LIGNE(CA);;LIGNE(CA)-(ENT((LIGNE(CA)-7)/12)*12+7))
Je modifie donc cette pièce jointe.

P.S.2 : Et bonne nuit :)
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Rebonsoir

Si j'ai bien compris, tu veux utiliser un ou des tableaux ayant ce type de disposition :

nom club
ligne vide
ligne vide
nom joueur 1
ligne vide
nom joueur 2
ligne vide
nom joueur 3
pas de double

Dans ce cas, il faudra certainement modifier les 7 et les 12 dans la définition de précédentbis
Code:
=DECALER(CA;(ENT((LIGNE(CA)-7)/12)*12+7)-LIGNE(CA);;LIGNE(CA)-(ENT((LIGNE(CA)-7)/12)*12+7))
en fonction du n° de la ligne où se trouve le premier nom de club (7 ci-dessus), et du nombre de lignes pour passer, sur une colonne, d'un nom de club au suivant (12 ci-dessus).


@ plus

P.S.: Si tu n'as que deux tableaux dans cette feuille, on peut faire plus simple.
 
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour très matinal Cisco,

Oui il manquait bien le "s" dans ce nom grrr.
Mais je vérifierais cet après midi pourquoi le tableau 3 et 4 indique bien des nom mais pas par rapport aux club qu'il devrait!

Merci pour ton aide Cisco
ps: j'ai supprimer le dernier fichier joint trop de données personnel.

Marc
 

CISCO

XLDnaute Barbatruc
Bonjour

Bonjour très matinal Cisco,
...
Mais je vérifierais cet après midi pourquoi le tableau 3 et 4 indique bien des nom mais pas par rapport aux club qu'il devrait!
...
Marc
As tu corrigé la définition de précédentbis ?

Sélectionne une cellule en dessous du nom du club correspondant au 1er, ou au 2nd ou au 3ème joueur. Dans le gestionnaire de noms, clique sur précédent, puis sur sa définition. La cellule mise en valeur par Excel avec des pointillés doit être celle juste au dessus de la cellule que tu as sélectionnée. Fais de même avec précédentbis. La plage mise en valeur doit englober le nom du club jusqu'à la cellule correspondant à précédent.
précédentbis.JPG


ps: j'ai supprimer le dernier fichier joint trop de données personnel.
Je pensais te demander de le faire...

@ plus
 

bellenm

XLDnaute Impliqué
Re Bonjour Cisco,

Voilà la rectification est bien faite et cela fonctionne encore mieux que je ne l'avais imaginé.
Sans ton aide si précieuse je n'y serais pas arrivé.

Bon dernière chose la feuille BYE

que faut'il faire ou copier?

Marc
 

bellenm

XLDnaute Impliqué
Re re:

En plus de la Feuille BYE,

une amélioration qui pourrait être utile si faisable:
lorsque l'on sélectionne un nouveau club y a t'il possibilité d'effacer les noms précédemment inscrit?

Merci d'avance si tu y arrive

Marc
 

CISCO

XLDnaute Barbatruc
Bonsoir

On peut faire ce que tu demandes avec le code suivant (En modifiant celui qui est déjà dans la feuille CINT)
Code:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
ActiveCell.Name = "CA" 'nomme la cellule active
With Sheets("CINT")
        If Not Intersect(target, .Range("C7,I7,C19,I19,C31,I31,C43,I43")) Is Nothing Then
        Range(.Cells(ActiveCell.Row + 1, ActiveCell.Column), .Cells(ActiveCell.Row + 4, ActiveCell.Column)) = ""
        End If
End With
End Sub

@plus
 

Pièces jointes

  • marc201608cinq.xlsm
    757.1 KB · Affichages: 40

bellenm

XLDnaute Impliqué
Bonjour Cisco,

Je viens de modifier ma feuille avec ta formule super.

Bon il ne me reste qu'une chose a remplacer ces les formules pour un tableau (BYE) dans une autre feuille nomée "BYE":
la cellule pour le club = "AA17"
1er joueur = "AA20"
2ème joueurs = "AA22"
3ème joueurs = "AA24"

Après les test virtuel, dans deux semaines je passe au test réel je me réjouis d'utiliser ce fichier qui vas en plus de simplifier le travail d'encodage des feuilles de matchs et de diminuer les erreurs de la saison précédente et tout ça grâce à toi Cisco merci.

Marc
 

CISCO

XLDnaute Barbatruc
Bonjour

La feuille BYE étant protégée, j'ai fait le "travail" sur une nouvelle feuille dénommée BYEbis.

Bien sûr, j'ai utilisé une méthode identique à ce qui a été fait précédemment, avec presque la même macro, la même formule matricielle et les mêmes noms.
* Une macro dans la feuille BYEbis qui donne le nom CABYE à la cellule active dans cette feuille et qui vide de leur contenu les 3 cellules jaunes en dessous du nom du club dans AA13.
Code:
Private Sub Worksheet_SelectionChange(ByVal target As Range)
ActiveCell.Name = "CABYE" 'nomme la cellule active dans la feuille BYEbis
With Sheets("BYEbis")
        If Not Intersect(target, .Range("AA13")) Is Nothing Then
        Range(.Cells(ActiveCell.Row + 3, ActiveCell.Column), .Cells(ActiveCell.Row + 7, ActiveCell.Column)) = ""
        End If
End With
End Sub
Il faut mettre dans la feuille BYE ce code en remplaçant With Sheets("BYEbis") par With Sheets("BYE")

* la formule matricielle dans DONNEES LIS!V2
Code:
SIERREUR(INDEX(joueursbis;PETITE.VALEUR(SI((DECALER(joueursbis;;2)=BYEbis!AA$13)*(LIGNE(joueursbis)>=MIN(LIGNE(nomclubBYE))+SIERREUR(EQUIV(DROITE(précédentBYE;3);DECALER(nomclubBYE;;1);0)-1;1))*(NB.SI(précédentBYEbis;joueursbis)=0);LIGNE(joueursbis));LIGNE(1:1)));"")
Il faut que tu fasses avec
Code:
SIERREUR(INDEX(joueursbis;PETITE.VALEUR(SI((DECALER(joueursbis;;2)=BYE!AA$13)*(LIGNE(joueursbis)>=MIN(LIGNE(nomclubBYE))+SIERREUR(EQUIV(DROITE(précédentBYE;3);DECALER(nomclubBYE;;1);0)-1;1))*(NB.SI(précédentBYEbis;joueursbis)=0);LIGNE(joueursbis));LIGNE(1:1)));"")

* et les noms
précédentBYE
Code:
=DECALER(CABYE;-2;)
précédentBYEbis
Code:
=DECALER(CABYE;13-LIGNE(CABYE);;LIGNE(CABYE)-13)
nomclubBYE
Code:
=DECALER('DONNEES LIS'!$B$1;EQUIV(BYEbis!$AA$13;ColClub;0);;INDEX(NbMembres;EQUIV(BYEbis!$AA$13;club;0)))
que tu dois remplacer par
Code:
=DECALER('DONNEES LIS'!$B$1;EQUIV(BYE!$AA$13;ColClub;0);;INDEX(NbMembres;EQUIV(BYE!$AA$13;club;0)))
listeàafficherBYE
Code:
=DECALER('DONNEES LIS'!$V$2;;;NB.SI('DONNEES LIS'!$V$2:$V$40;"><"&""))

J'espère ne rien avoir oublié.

@ plus
 

Pièces jointes

  • marc201608six.xlsm
    737.5 KB · Affichages: 47

bellenm

XLDnaute Impliqué
Bonsoir Cisco,

Voilà superbe travail, il y avait deux petite erreur dans les formules la numérotation des cellules erronées mais rectifier et un "=" manquant dans la première formule.

Sans toi je n'y serais arriver, merci et beaucoup.

Ci-joint le fichier réaliser avec l'aide de Cisco: encodage de feuilles de rencontre de club 3 joueurs contre 3 avec un double format RILTT (Fédération Inter-corporative Liégeoise de Tennis de Table)


D'avance merci Cisco

Marc
 

Pièces jointes

  • Feuilles matchs.xlsm
    1.2 MB · Affichages: 40
Dernière édition:

bellenm

XLDnaute Impliqué
Bonjour Cisco,


Une explication plus claire s’impose.

Voilà j’ai repris l’ancien fichier « marc2016six.xlsm » afin de partir sur une bonne base et plus d’autre lien vers des feuilles qui m’existe plus !

J’ai mis 8 tableaux, pour la colonne « i » elle fonctionne très bien ainsi que la « C »
mais pour celle-là j’ai pensé à un plus :

En définissant que la Colonne de gauche « C » soit le club local ce qui serait logique, la « listeàafficher » du premier tableau aurait ça suite sur le tableau 2 et ainsi de suite.

Et une fois que l’on choisit un autre club que celui de la cellule « C7 » la « listeàafficher » soit en adéquation avec le club choisi dans la cellule « choix du club ». Là aussi je cherche le moyen pour ce choix un exemple est sur le fichier « FM2016 ».


Merci pour ton aide Cisco.


Marc
 

Pièces jointes

  • FM2016.xlsm
    727.8 KB · Affichages: 40
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour


Autrement dit, tu aimerais que les listes proposées dans la colonne C, par exemple en dessous de C19 (donc dans C20:23), si le club dans C19 est le même que celui dans C7, affiche les noms pas encore cités dans C8:C11, tout en respectant les règles données au début de ce fil par rapport au classement (2ème joueur pas mieux classé que le premier...). De même pour C32:35 si C31 = C7. Etc... C'est bien ça ?

@ plus

P.S 1 : On pourrait très bien faire cela aussi dans la colonne I, lorsqu'un club est choisi plusieurs fois (I7 et I19 par ex, mais aussi I7 et I31).
P.S : Je ne pourrais pas te faire ces modifications dans la journée. Ce soir peut être...
 

Discussions similaires

Statistiques des forums

Discussions
312 233
Messages
2 086 465
Membres
103 224
dernier inscrit
VieuxSeb