Supprimer choix sur la liste déroulante choix
xoxo
-
xoxo -
xoxo -
Bonjour,
j'ai créer ma liste déroulante de choix, ce que je voudrais, c'est qu'à chaque fois que je sélectionne un choix pour une première case par exemple celui-ci disparaisse des cases suivantes sur ma liste déroulante, est-ce possible sur Excel 2003?
merci pour vos réponses
j'ai créer ma liste déroulante de choix, ce que je voudrais, c'est qu'à chaque fois que je sélectionne un choix pour une première case par exemple celui-ci disparaisse des cases suivantes sur ma liste déroulante, est-ce possible sur Excel 2003?
merci pour vos réponses
A voir également:
- Supprimer menu déroulant excel
- Supprimer rond bleu whatsapp - Guide
- Menu déroulant excel - Guide
- Excel menu déroulant en cascade - Guide
- Supprimer page word - Guide
- Word et excel gratuit - Guide
4 réponses
Bonjour
Quelques explications, non ce n'est pas très compliqué et ça peut être plus simple selon vos besoins:
en l'état du modèle:
Feuille F_1 colonne A:
la liste originale de vos valeurs à placer dans le menu déroulant (soit en colonne E:E)
en colonne B:
une formule de qui permet de détecter si le nom est déjà utilisé ou pas, selon ce principe:
=SI(NB.SI(E:E;A2)=1;0;MAX($B$1:B1)+1)
NB.SI(E:E;A2) compte le nombre de fois où la valeur de A2 se trouve dans la colonne E
si la valeur y est une fois, la formule renvoie 0 sinon:
MAX($B$1:B1) incrémente de 1 chaque fois que NB.SI trouve une valeur inexistante en colonne E
remarquez que dans ce code, le premier $B$1 est bloqué, pas le second, de façon à étirer le champ en descendant la formule
ainsi MAX(..;..)+1 incrémente bien de 1 à chaque fois que la condition est correcte.
On obtient donc en colonne B une numérotation progressive des noms utilisables en éliminant les "déjà pris"
en colonne C la formule recrée la liste avec les noms restants selon:
=SI(LIGNE()-1>MAX($B$2:$B$27);"";INDEX($A$2:$A$27;EQUIV(LIGNE()-1;$B$2:$B$27;0);1))
Le code LIGNE() renvoie le N° de ligne où se trouve la formule donc en LIGNE()-1 en C2 renvoie 1 , en C3 2 etc...
la première partie de la formule évite l'affichage #N/A lorsque la valeur de LIGNE()-1 n'existe pas en colonne B
avec LIGNE()-1>MAX($B$2:$B$27)
ainsi la formule renvoi "" (rien) si le N° ligne -1 est plus grand que le maxi en colonne de codage
si la valeur LIGNE()-1 existe en B:
INDEX($A$2:$A$27;EQUIV(LIGNE()-1;$B$2:$B$27;0);1))
code INDEX renvoi la valeur trouvée dans le champ au N° de ligne indiqué et N° de colonne (du champ, pas de la feuille)
principe:=INDEX(Ligne;Colonne)
le code EQUIV renvoi le N° de ligne du champ correspondant à la valeur cherchée dans le champ (une colonne seulement)
le 0 qui termine le code est un code excel interdisant de ressortir une valeur proche
principe:=EQUIV(Valeur;champ colonne;0)
donc:
EQUIV recherche LIGNE()-1 en colonne B et ressort le N° de ligne du champ correspondant
et INDEX($A$2:$A$27(EQUIV(....))
ressort la valeur trouvé au N° de ligne du champ définit par EQUIV et dans la première colonne (définie par le;1) final
La liste reconstituée est donc évolutive en fonction du nombre de noms restants.
pour faciliter la mise en place de la validation, cette liste en colonne C est nommée selon le principe ci dessous:
Insertion/ Nom / Définir un nom
ce nom de LST est défini par la formule:
=INDIRECT("C2:C"&NB.SI(F_1!$C$2:$C$27;"><"))
soit:INDIRECT(...) qui transforme un texte en adresse de champ
"C2:C" pour définir en texte le départ du champ, invariable
& qui est le signe permettant de lier en la suite au texte, et ensuite
NB.SI(F_1!$C$2:$C$27;"><"))
qui compte le nombre de valeur dans le champ différentes de "", donc le nombre de cellules de la colonne C avec un nom
ainsi la liste s'ajuste en permanence au nombre de noms trouvés en C2:C27
Validation en colonne E:
=Validation de liste, il suffit alors d'entrer dans la fenêtre dce validation, en bas,:
=LST soit = nom donné à la liste.
A noter que cette solution en nommant le champ vous permet de placer la validation sur une autre feuille, ce qui n'est pas le cas si vous spécifiez simplement le champ.Ainsi, vous pouvez masquer la feuille qui sert à l'établissement de la liste
Cette solution donne quelque chose de complet et propre mais on peut faire plus simple si la liste originale n'est pas trop longue:
Toujours d'après le modèle:
de A2 à A27 la liste originale
nommez le champ B2:B27
en B2 la formule:
=SI(NB.SI(E:E;A2)=0;A2;"")
vous aurez alors dans le champ B une liste où ne se retrouveront que les noms inexistants en E
La validation sera donc faite par une liste "à trous" dont les noms déjà utilisés auront disparus.
Ouf,... bon courage..
ce n'est pas très facile à expliquer en prenant dès le tout début !!!
j'espère avoir été à eu près clair, mais c'est plus complexe à expliquer qu'à appliquer!
Revenez si besoin, peut être avec un modèle à adapter que vous pourrez placer sur:
http://www.cijoint.fr en revenant ici éditer le lien
crdlmnt
Quelques explications, non ce n'est pas très compliqué et ça peut être plus simple selon vos besoins:
en l'état du modèle:
Feuille F_1 colonne A:
la liste originale de vos valeurs à placer dans le menu déroulant (soit en colonne E:E)
en colonne B:
une formule de qui permet de détecter si le nom est déjà utilisé ou pas, selon ce principe:
=SI(NB.SI(E:E;A2)=1;0;MAX($B$1:B1)+1)
NB.SI(E:E;A2) compte le nombre de fois où la valeur de A2 se trouve dans la colonne E
si la valeur y est une fois, la formule renvoie 0 sinon:
MAX($B$1:B1) incrémente de 1 chaque fois que NB.SI trouve une valeur inexistante en colonne E
remarquez que dans ce code, le premier $B$1 est bloqué, pas le second, de façon à étirer le champ en descendant la formule
ainsi MAX(..;..)+1 incrémente bien de 1 à chaque fois que la condition est correcte.
On obtient donc en colonne B une numérotation progressive des noms utilisables en éliminant les "déjà pris"
en colonne C la formule recrée la liste avec les noms restants selon:
=SI(LIGNE()-1>MAX($B$2:$B$27);"";INDEX($A$2:$A$27;EQUIV(LIGNE()-1;$B$2:$B$27;0);1))
Le code LIGNE() renvoie le N° de ligne où se trouve la formule donc en LIGNE()-1 en C2 renvoie 1 , en C3 2 etc...
la première partie de la formule évite l'affichage #N/A lorsque la valeur de LIGNE()-1 n'existe pas en colonne B
avec LIGNE()-1>MAX($B$2:$B$27)
ainsi la formule renvoi "" (rien) si le N° ligne -1 est plus grand que le maxi en colonne de codage
si la valeur LIGNE()-1 existe en B:
INDEX($A$2:$A$27;EQUIV(LIGNE()-1;$B$2:$B$27;0);1))
code INDEX renvoi la valeur trouvée dans le champ au N° de ligne indiqué et N° de colonne (du champ, pas de la feuille)
principe:=INDEX(Ligne;Colonne)
le code EQUIV renvoi le N° de ligne du champ correspondant à la valeur cherchée dans le champ (une colonne seulement)
le 0 qui termine le code est un code excel interdisant de ressortir une valeur proche
principe:=EQUIV(Valeur;champ colonne;0)
donc:
EQUIV recherche LIGNE()-1 en colonne B et ressort le N° de ligne du champ correspondant
et INDEX($A$2:$A$27(EQUIV(....))
ressort la valeur trouvé au N° de ligne du champ définit par EQUIV et dans la première colonne (définie par le;1) final
La liste reconstituée est donc évolutive en fonction du nombre de noms restants.
pour faciliter la mise en place de la validation, cette liste en colonne C est nommée selon le principe ci dessous:
Insertion/ Nom / Définir un nom
ce nom de LST est défini par la formule:
=INDIRECT("C2:C"&NB.SI(F_1!$C$2:$C$27;"><"))
soit:INDIRECT(...) qui transforme un texte en adresse de champ
"C2:C" pour définir en texte le départ du champ, invariable
& qui est le signe permettant de lier en la suite au texte, et ensuite
NB.SI(F_1!$C$2:$C$27;"><"))
qui compte le nombre de valeur dans le champ différentes de "", donc le nombre de cellules de la colonne C avec un nom
ainsi la liste s'ajuste en permanence au nombre de noms trouvés en C2:C27
Validation en colonne E:
=Validation de liste, il suffit alors d'entrer dans la fenêtre dce validation, en bas,:
=LST soit = nom donné à la liste.
A noter que cette solution en nommant le champ vous permet de placer la validation sur une autre feuille, ce qui n'est pas le cas si vous spécifiez simplement le champ.Ainsi, vous pouvez masquer la feuille qui sert à l'établissement de la liste
Cette solution donne quelque chose de complet et propre mais on peut faire plus simple si la liste originale n'est pas trop longue:
Toujours d'après le modèle:
de A2 à A27 la liste originale
nommez le champ B2:B27
en B2 la formule:
=SI(NB.SI(E:E;A2)=0;A2;"")
vous aurez alors dans le champ B une liste où ne se retrouveront que les noms inexistants en E
La validation sera donc faite par une liste "à trous" dont les noms déjà utilisés auront disparus.
Ouf,... bon courage..
ce n'est pas très facile à expliquer en prenant dès le tout début !!!
j'espère avoir été à eu près clair, mais c'est plus complexe à expliquer qu'à appliquer!
Revenez si besoin, peut être avec un modèle à adapter que vous pourrez placer sur:
http://www.cijoint.fr en revenant ici éditer le lien
crdlmnt
Re!
J'y suis parvenue avec votre exemple de départ mais aussi avec vos explications, néanmoins je trouve tout de même cette manip complexe, mais je n'y serais pas arrivée sans votre aide.
Alors un GRAND MERCI... et au plaisir
J'y suis parvenue avec votre exemple de départ mais aussi avec vos explications, néanmoins je trouve tout de même cette manip complexe, mais je n'y serais pas arrivée sans votre aide.
Alors un GRAND MERCI... et au plaisir