Liste de choix sur 2 colonnes

Résolu/Fermé
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007 - 30 nov. 2007 à 16:30
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 5 déc. 2007 à 17:26
Bonjour,

je cherche à afficher 2 colonnes dans une liste de choix et qu'il n'y ait que les données d'une seule colonne dans la case de résultat

exemple
Colonne A - Colonne B
Pomme Verte
Pommes rouge
Pomme jaune

je voudrais une liste déroulante qui puisse afficher :
Pomme verte
Pomme rouge
Pomme jaune

et le résutat affiché serait verte si j'ai sélectionné Pomme verte. (le résultat sera sur une autre feuille). je peux arriver à cette solution en passant par la cr"ation de colonnes supplémentaires qui afficheraient Pomme verte (=A1&A2)
puis ensuite une autre rechercher verticale en partant de pomme verte pour afficher "verte" mais cela allourdi ma base qui est déjà bien lourde

j'ai tout fouillé l'aide excel / forum ... mais je n'arrive pas à trouver et mes conaissances en VBA sont nulles

merci d'avance pour votre aide

17 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
30 nov. 2007 à 17:25
Bonjour,

Je pense que c'est ça que tu veux:
Utiliser une combobox(liste déroulante) de la "boite à outils Contrôles' (menu affichage / barres d'outils)
Ta liste en A1:B4 avec une ligne de titre en 1:1
Dessiner la combobox et en mode construction (l'icone avec une regle, une équerre et un crayon) cliquer-droit dessus et 'Propriétés'.
Changer les propriétés :
BoundColumn: 2
ColumnCount: 2
ColumnHeads: True (si tu inclus une ligne de titres)
LinkedCell: Feuil1!$D$1 (destination de la valeur sélectionnée, changer le nom de la feuille si besoin)
ListFillRange: $A$2$B$4

Pour LinkedCell et ListFillRange c'est mieux de nommer les zones et d'utiliser les noms.

Désactiver le mode construction.
Exemple: http://www.cijoint.fr/cij49890396433353.xls

eric
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
3 déc. 2007 à 11:49
bonjour eriiic,

merci beaucoup pour ta réponse c'est exactement ce que je cherche à faire.

Par contre j'ai encore besoin d'une précision, dans ta réponse tu indiques de changer les propriétes mais je n'arrive pas à afficher les mêmes données que toi.

moi j'ai Feuile 1 worksheet
alphabétique / par catégorie

si je clique sur l'onglet par catégorie j'obtiens :
divers puis
displaypagebreaks
displayrightToleft
....

peut être car je n'ai pas désactivé le mode création mais je ne sais comment faire

merci
Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
3 déc. 2007 à 13:47
Bonjour,

En mode création il faut sélectionner ta liste déroulante et faire un clic-droit dessus pour choisir propriétés.
Je suppose qu'ensuite tu as cliqué sur ta feuille (ce qu'il ne faut pas faire) ce qui t'a changé les propriétés de la combox pour celles du worksheet (feuille).

eric
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
3 déc. 2007 à 13:55
en fait c'est que je n'avais pas sélectionner mode création et donc je n'avais qu'une partie des données de la fenêtre qui s'affichait.

merci beaucoup pour ton aide, cela fait très longtemps que je cherchais sans jamais rien trouver

mille merci
bonne journée
Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
3 déc. 2007 à 14:07
Au plaisir...
Bonne journée à toi aussi
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
3 déc. 2007 à 15:31
pardon, j'ai encore un soucis, je voudrais copier la liste déroulante vers d'autres cellules et que la cellule de destination évolue également
exemple :
liste de choix1 liée avec cellule D1
liste de choix 2 liée avec cellule D2
...

Si je selectionne ma ligne et tire la zone vers le bas, toutes les données sont copiées à l'exception de ma liste de choix.

merci

Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
3 déc. 2007 à 19:31
hummm, je ne sais pas si j'ai bien compris ton problème...
Tu veux, après sélection dans la liste, ramener pomme dans une cellule et verte dans une autre ?
Si c'est le cas tu concatenes les éléments de liste1 et liste2 avec pour séparateur un caractère que tu sais toujours absent.
Par exemple:
pomme\rouge
pomme\verte
...
Tu utilises une liste classique à 1 colonne
Tu sélectionnes un élément de ta liste que tu sépares en 2 dans 2 cellules ensuite.
Ex avec ta cellule liée en A8:
partie gauche: =GAUCHE(A8;TROUVE("\";A8)-1) => Pomme
partie droite: =STXT(A8;TROUVE("\";A8)+1;50) => Verte
C'est ça que tu veux ?
eric
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
4 déc. 2007 à 08:55
non en fait j'ai un tableau qui va se compléter en fonction de ce que j'aurais sélectionné dans ma liste de choix en colonne A.

ce tableau comporte un certain nombre de lignes. pour le moment ma liste de choix est en A1 avec destination B1 et je voudrais recopier cette liste de choix en A2 avec destination B2 puis en A3 destination B3

pour le moment quand je recopie une liste de choix, je n'arrive pas à faire évoluer la cellule de destination sauf si je vais dans les propriétés de chaque liste. Il doit y avoir un moyen + simple de faire du copier/coller et que la cellule de destination évolue en même temps.

pour info dans ma 1ère combobox, j'ai indiqué en cellule de destination B1 sans $ en pensant qu'elle évoluerait mais ça ne marche pas.

le plus simple serait que je t'envoie mon fichier mais n'arrive pas à trouver comment faire.

marine
0
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
4 déc. 2007 à 09:29
Bonjour Marine
et à Eriiic au passage LOL

le plus simple serait que je t'envoie mon fichier mais n'arrive pas à trouver comment faire.
là j'ai la réponse , tu vas sur :
https://www.cjoint.com/
tu fais joindre , parcourir ...
et créer le lien
puis fais un copié collé du lien ici
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
4 déc. 2007 à 09:33
merci beaucoup xkristi j'y vais de suite et ainsi ce sera plus explicite que mes longs discours
bonne journée
Marine
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
4 déc. 2007 à 11:21
voilà, ce sera plus simple avec ma base et les explications sont dessus

fichier joint : https://www.cjoint.com/?meltx8EJsA

j'espère que ça va fonctionner !!!!

Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
4 déc. 2007 à 14:08
Bonjour marine, coucou xkristi,

Effectivement je n'avais rien compris :-s
Et oui, les listes déroulantes ne sont pas prévues pour fonctionner comme ça...
Et ton problème n'a plus grand chose à voir avec celui du début, je te propose autre chose.

Dans la feuille catalogue, te créer par concaténation (pas le choix, ou sinon faudrait faire en vba mais si tu peux être autonome c'est aussi bien je pense) ce que tu désires voir dans la liste.
Dans ta colonne A 'base de donnée' faire une validation par liste (j'ai du utiliser feuil1 pour te montrer car ta feuille 'base de donnée' refusait). Sélectionner toutes les cellules concernées avant de faire la validation par liste.
Et en colonne D récupérer la valeur qui t'intéresse par une formule à recopier vers le bas.
Voici ta feuille avec un exemple et un peu plus d'explication
http://www.cijoint.fr/cij79195910833727.xls

C'est mieux ?
eric
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
4 déc. 2007 à 14:22
ou si tu n'as que immatriculation à afficher en D (donc pas d'autres valeurs sur la même ligne) se contenter d'une formule plus simple pour récupérer la partie droite de la valeur sélectionnée dans la liste.
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
5 déc. 2007 à 08:49
bonjour,

je ne comprends pas pourquoi il n'est plus posible de faire de liste de validation dans ma feuille "base de donnée".

j'ai refais entierrement mon fichier et les lliste de validation fonctionnent...ouff.

j'ai étudié ta formule =SI(NON(ESTERREUR(EQUIV(A1;TypeImmat2;0)));INDEX(Catalogue!$B$2:$D$66;EQUIV(A1;TypeImmat2;0);2);"") que je ne sais déchiffrer et effectivement j'arrive au même résultat avec une fontion recherchev(a1;catalogueB:D;2;0)

merci beaucoup pour ton aide et celle de xkristi, j'ai appris beaucoup de choses par l'intermédiare de ce problème

bonne journée à tous
Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
5 déc. 2007 à 09:53
Bonjour,

Cette formule permet de ramener une valeur (comme recherchev) mais même si elle se trouve dans une colonne avant la clé de recherche. Et en plus avec filtrage des erreurs.
Si tu peux changer ton tableau pour utiliser recherchev c'est aussi simple oui
eric
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
5 déc. 2007 à 10:14
super, j'ai été obligée à plusieures reprises de modifier mes bases de données lorsuqe j'utilisais la fonction recherche et que mes colonnes n'étaient pas dns le bon ordre. GENIAL, je vais étudier ta formule et la mettre de coté pour modifier mes bases et les allégées des colonnes intermédiares cachées que j'ai du créer pour arriver à ce que cela fonctionne.
merci
Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
5 déc. 2007 à 10:40
Pour te guider:
INDEX(Catalogue!$B$2:$D$66;EQUIV(A1;TypeImmat2; 0);2) associe 2 fonctions

EQUIV(A1;TypeImmat2; 0) recherche la valeur exacte (car ;0) A1 dans la matrice TypeImmat2 et te retourne sa position x (n°ligne dans la liste) qui te servira de n° de ligne dans index().

INDEX(Catalogue!$B$2:$D$66;x;2) te retourne la valeur située ligne x colonne 2 dans $B$2:$D$66

eric
0
fafs Messages postés 17 Date d'inscription vendredi 30 novembre 2007 Statut Membre Dernière intervention 12 décembre 2007
5 déc. 2007 à 16:27
j'ai utilisé ta formule et mis à jour ma base qui est enfin terminée

encore un grand merci pour tes explications et ta patience

Bonnes fêtes de fin d'année
Marine
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 249
5 déc. 2007 à 17:26
De rien marine
Bonne continuation et bonnes fetes aussi :-)
eric
0