[Résolu]liste de choix sur deux zones + valeur associée

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Arisoy
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 01 juin 2020 18:02

[Résolu]liste de choix sur deux zones + valeur associée

Message par Arisoy »

Bonjour,

j'ai un document qui contient deux listes de choix : Des couleurs et des jours. J'aimerais que lorsque je choisis une des valeurs de la liste, le nombre qui lui est associé s'affiche également.

En plus de cela j'aimerais faire une sorte de "comboliste" qui regroupe les deux déjà existante en une seule. Avec la aussi le nombre associé qui s’affiche a coté.

Pour plus de clarté j'ai fais un petit fichier exemple. Je vous le mets en pièce jointe. J'ai mis en jaune les cellules sur lesquelles je bloque.

D'avance merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 14 juin 2020 20:00, modifié 2 fois.
Raison : [Résolu] remplace [resolu]
LibreOffice Version 6.1.5.2 sous Debian Buster
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: liste de choix sur deux zones + valeur associée

Message par OOotremer971 »

Bonjour,

PAs compris le résultat attendu en J13:K13 si tu pouvais donner un exemple. Merci
En K3 :

Code : Tout sélectionner

=RECHERCHEV(J3;$B$4:$D$9;3;0)
En K8 :

Code : Tout sélectionner

=RECHERCHEV(J8;$F$4:$H$10;3;0)
En validité de J13 :

Code : Tout sélectionner

SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))>NBVAL(_L1);INDEX(_L2;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))-(NBVAL(_L1)));SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1)))<=NBVAL(_L1);INDEX(_L1;LIGNE(INDIRECT("A1:A"&NBVAL(_L1))));""))
Les plages B4:B9 et F4:F10 sont respectivement nommées _L1 et _L2
en K13 :

Code : Tout sélectionner

=SIERREUR(RECHERCHEV(J13;$B$4:$D$9;3;0);RECHERCHEV(J13;$F$4:$H$10;3;0))
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Arisoy
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 01 juin 2020 18:02

Re: liste de choix sur deux zones + valeur associée

Message par Arisoy »

Super!

Merci pour la réponse.

Par contre tu pourrais m'expliquer la formule pour la validité :
OOotremer971 a écrit : En validité de J13 :

Code : Tout sélectionner

SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))>NBVAL(_L1);INDEX(_L2;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))-(NBVAL(_L1)));SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1)))<=NBVAL(_L1);INDEX(_L1;LIGNE(INDIRECT("A1:A"&NBVAL(_L1))));""))
Je comprend rien... :? Et je vais devoir adapter ça à plus de deux zones... Je vois pas du tout comment faire
LibreOffice Version 6.1.5.2 sous Debian Buster
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2744
Inscription : 16 avr. 2010 13:31

Re: liste de choix sur deux zones + valeur associée

Message par OOotremer971 »

Arisoy a écrit :Et je vais devoir adapter ça à plus de deux zones... Je vois pas du tout comment faire
J'en ai déjà une toute prête pour quatre plages :

Code : Tout sélectionner

SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2;_L3;_L4)))>NBVAL(_L1;_L2;_L3);INDEX(_L4;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2;_L3;_L4)))-(NBVAL(_L1;_L2;_L3)));SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2;_L3)))>NBVAL(_L1;_L2);INDEX(_L3;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2;_L3)))-(NBVAL(_L1;_L2)));SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))>NBVAL(_L1);INDEX(_L2;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))-(NBVAL(_L1)));SI(LIGNE(INDIRECT("A1:A"&NBVAL(_L1)))<=NBVAL(_L1);INDEX(_L1;LIGNE(INDIRECT("A1:A"&NBVAL(_L1))));""))))
L'avantage de cette formule est qu'elle s'adapte automatiquement. Il suffit de nommer les plages _L1, _L2, _L3, _L4 et même si il n'y a que 2 plages nommées, elle fonctionne quand même.

Tu ne la comprendra pas facilement si tu n'es pas habitué avec les formules matricielles. En gros, et il faut faire l'exercice, on génère une plage virtuelle numérotée de 1 à n où n correspond à la quantité de valeur contenues dans les quatre plages :
Valide "matriciellement" (Ctrl+Maj enfoncées lors de l'appui sur la touche Entrée) la formule suivante :

Code : Tout sélectionner

=LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))
attention, ton fichier doit contenir deux plages nommées _L1 et _L2 contenant des valeurs. Tu constates que la formule crée une plage numérotée de 1 au nombre total de valeurs contenues dans tes deux listes.
Ensuite avec un SI(), on cherche à savoir si le chiffre généré est supérieur au nombre de valeurs contenues dans la liste 1 _L1. Si oui alors la fonction INDEX() extrait de la liste2 _L2 les valeurs les unes après les autres en commençant par le première :

Code : Tout sélectionner

INDEX(_L2;LIGNE(INDIRECT("A1:A"&NBVAL(_L1;_L2)))-(NBVAL(_L1)))
et ainsi de suite avec la liste1 _L1.

PS, le premier fichier que j'ai joins n'était pas complet je l'ai remplcé.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10 et 11
Arisoy
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 01 juin 2020 18:02

Re: liste de choix sur deux zones + valeur associée

Message par Arisoy »

Ok j'ai pas tout compris, mais si jamais j'ai besoin de plus que 4 je repasserais par la :)

En attendant je passe le sujet en résolu car tout fonctionne bien.

Merci encore!
LibreOffice Version 6.1.5.2 sous Debian Buster