Menu déroulent

Résolu/Fermé
baloubaloubalou Messages postés 19 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 23 octobre 2012 - Modifié par baloubaloubalou le 18/10/2012 à 12:00
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 19 oct. 2012 à 11:03
bonjour a tous,


pourriez vous m'aider?


j'ai 2 problèmes avec un menu déroulant


1) Dans le menu déroulent Excel me propose toutes les valeurs de ma liste, donc certaine apparaisse plusieurs fois. Comment faire pour que chaque "Genre" ne soit proposer qu'une fois chaqu'un ?


2) Je voudrais afficher des lignes d'un tableau en fonction des la valeur choisi dans la liste déroulent.
Par exemple :
Si je choisi "Fantastique" Excel m'affiche que les filme dont l'un des genres est "Fantastique"(cf pièce jointe) https://www.cjoint.com/?3Jsl76fp00D


merci pour votre aide
A voir également:

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 416
18 oct. 2012 à 14:07
Bonjour
un exemple de solution ici, avec une liste déroulante aussi pour remplir le tableau de liste, car les erreurs de frappes interdisent une recherche correct.
Vous avez par exemple dans liste des >Thriller avec un blanc derrière et d'autre sans(corrigé sur le modèle joint)
Cette solution évitera ce risque.
https://www.cjoint.com/?BJsofUQjvMC
crdlmnt
0
baloubaloubalou Messages postés 19 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 23 octobre 2012 1
18 oct. 2012 à 14:45
excellent, merci beaucoup. C'est ce que je cherchais.
Vive le Vaucluse.
Merci encor
0
baloubaloubalou Messages postés 19 Date d'inscription mercredi 17 octobre 2012 Statut Membre Dernière intervention 23 octobre 2012 1
18 oct. 2012 à 15:34
je ne comprend pas certaine formule.
pourriez vous me donner plus d'explication s'il vous plait


=SI(LIGNE()-8>MAX(liste!$D:$D);"";INDEX(liste!$A:$C;EQUIV(LIGNE()-8;liste!$D:$D;0);2))


=SI(B2=choix!$B$6;MAX($D$1:D1)+1;"")
0
yvespeter Messages postés 185 Date d'inscription vendredi 6 juillet 2012 Statut Membre Dernière intervention 27 août 2016 7
18 oct. 2012 à 16:48
Merci Vaucluse pour la solution,

j'aimerai bien comprendre la syntaxe comme le demande Baloubaloubalou,c'est vrai je peux la prendre mais sans comprendre, peut être sans pouvoir trop vous demandez .
pourriez-vous nous faire un petit détail sur cette syntaxe, je sais que ce pas facile mais je crois que vous y arriverez vue votre compétence, copier c'est bon mais comprendre c'est encore mieux.

Une fois de plus merci de votre aide
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 416
Modifié par Vaucluse le 18/10/2012 à 17:23
Alors quelques explications:

La formule de détection

=SI(B2=choix!$B$6;MAX($D$1:D1)+1;"")

La condition demande, si la cellule B2 est égale à la cellule de choix B6, de relever le maxi du champ au dessus de la ligne où elle se trouve et d'y rajouter 1
si la condition n'est pas remplie, renvoie ""
ainsi on incrémente dans la colonne D de 1 chaque fois que dans la colonne B, la formule trouve la valeur choix!B6
à noter pour cela qu'"en D2 le 1° D1 est bloqué avec $D$1 et pas le second de façon à ce que le champ suive la positon de la formule
en D3> $D$1:D2 en D4> $D$1:D3 etc.....

La formule de recherche

=SI(LIGNE()-8>MAX(liste!$D:$D);"";INDEX(liste!$A:$C;EQUIV(LIGNE()-8;liste!$D:$D;0);2))

Principe de base:
INDEX(champ; ligne; colonne)
renvoie la valeur trouvée dans le champ ,à l'intersection du N° de ligne et du N° de colonne du champ, la ligne 1 et la colonne 1 étant celle de la première cellule en haut à gauche du champ.

la première partie du code évite le# N/A si la ligne de recherche n'existe pas

LIGNE() renvoie le N° de ligne (de la feuille) où se trouve la formule, donc Ligne()-8 sur ligne 9 est égal à 1, à 2 sur ligne()10 etc...

Dans cette première partie , si le n° obtenu par ce code est supérieur au maximum de la colonne de codage, la formule ne renvoie rien (sans ce code elle renvoie #N/A)
Si non c'est le code INDEX qui s'applique avec:

INDEX($A:$C;
$A:$C est le champ complet des données incluant colonne A,B,C à partir de la ligne 1 de la feuille

EQUIV(LIGNE()-8;liste!$D:$D;0)
ce code ressort la position dans la colonne D de la valeur définie par LIGNE()-8, et donc la ligne du champ A:C où se trouve la valeur de 1,2,3 etc...
Le 0 à la fin de ce code est une valeur excel qui précise que le code EDIT ne doit ressortir que des valeurs exactes. (sinon prend la ,plus proche inférieure dans une colonne classée)

;1)) ou;2)) ou 3))
selon la position de la valeur à ressortir, le ;1 ou ;2 ou;3 de la fin de formule indique dans quelle colonne du champ se trouve la valeur à ressortir

espérant avoir été clair ce qui n'est pas facile.

cordialement
0
yvespeter Messages postés 185 Date d'inscription vendredi 6 juillet 2012 Statut Membre Dernière intervention 27 août 2016 7
18 oct. 2012 à 18:03
vous êtes un vrai prof, laissez-moi vous dire que ceci ne profitera pas seulement à baloubaloubalou et moi, mais à toute une génération des débutons de Microsoft Excel .

t'es un ange
merci et à la prochaine
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
19 oct. 2012 à 11:03
Bonjour,

C'est super sympa de créer des doublons et de laisser les gens chercher pour rien, et de ne pas voir les autres proposition faites.
Voir ici
C'est irrespectueux et interdit par la charte du forum (que tu pourrais lire)
Je m'apprêtais à te proposer une solution par macro, je vais donc m'abstenir.

eric
0