Liste de validité avec saisie multiple possible

Je dois fournir une liste de participants à un diner en précisant pour chacun ses contre-indications alimentaires.
Pour ce faire, j’ai une liste de validité des contre-indications
Végétarien
Sans gluten
Sans contre-indication
Sans sel
Sans lactose

et j’ai une liste de validité dans ma feuille libre office (en PJ)

Jusque-là, pas de pbm de fonctionnement.

Cependant, certaines personnes peuvent avoir plusieurs contre-indication, par exemple :

Végétarien / Sans gluten / Sans sel

où je dois pouvoir indiquer 3 indications de la liste de validité :

Comment puis-je avoir une liste de validité avec multi-sélection possible ?

Merci pour votre aide…

Le fichier d’exemple :
alimentaire.ods (11.0 KB)

alimentaire LeroyG.ods (13.9 KB)
S’il s’agit d’une option, sélectionnez-la dans la liste (cela écrase la formule) ; si plus d’une option, tapez 1s.
Ouvrez le fichier d’exemple pour voir la formule dans la langue de votre LibreOffice.
en:
If one option, select from the list (this overwrites the formula); if more than one option, type 1s.
Open the sample file to see formula in the language of your LibreOffice.

EDIT:
alimentaire LeroyG.ods (18.4 KB)

Validité par colonnes individuelles.
en: Validity by individual columns.

Validité pour tous.
en: Validity for all.

@LeroyG merci pour ta proposition mais ça n’est pas le type de solution que je recherche.

en:
Last test: alimentaire LeroyG.ods (17.2 KB)

Le rajout de colonnes, en plus de celle que j’ai créées, n’est pas une solution de mon point de vue. Merci pour vos efforts mais ce n’est pas le fonctionnement que je souhaite.
Je souhaite pouvoir avoir une seule liste déroulante, fonctionnant en choix multiple uniquement dans la colonne “Pbm alimentaires”.

Bonjour jpghiena, LeroyG, le forum

R1 en partant de la solution proposée par LeroyG, une table de valeurs a été générée en feuille2
en utilisant la formule :

=JOINDRE.TEXTE(" - ";1;SI($A2=1;$A$1;"");SI($B2=1;$B$1;"");SI($C2=1;$C$1;"");SI($D2=1;$D$1;"");SI($E2=1;$E$1;""))

Les valeurs obtenues étant en colonne F de la feuille2, mettre :

$Feuille2.$F$2:$F$16

comme formule de “validité” dans la liste déroulante de choix qui se compose de :

Sans contre-indication
Sans gluten
Sans gluten - Sans lactose
Sans gluten - Sans lactose - Sans sel
Sans gluten - Sans lactose - Végétarien
Sans gluten - Sans sel
Sans gluten - Sans sel - Végétarien
Sans gluten - Végétarien
Sans lactose
Sans lactose - Sans sel
Sans lactose - Sans sel - Végétarien
Sans lactose - Végétarien
Sans sel
Sans sel - Végétarien
Végétarien

Voyez dans le fichier joint
jpghiena_alimentaire.ods (15,4 Ko)
:wink:

R2, une nouvelle approche:
comme formule de “validité” dans la liste déroulante de choix testez avec :
SI(C2="";AItem;SI(ESTNUM(TROUVE(" - ";C2));CItem;BItem))
Voyez dans le nouveau fichier joint
jpghiena_alimentaire2.ods (12,0 Ko)
:wink:

1 Like

Je comprends la logique du bidule mais je pense qu’on la solution n’est pas utilisable par des utilisateurs non aguerris : comment va se comporter la liste déroulante lorsqu’il y aura 10 ou 15 items de contre-indications ? On va se retrouver avec une liste déroulante de 50 ou 60 items où il faudra choisir l’item exactement correspondant.
Merci pour les efforts déployés mais seul un comportement identique à une liste à choix multiple HTML pourrait faire l’affaire : une idée comment intégrer une liste à choix multiples ?

La liste de validité n’est clairement pas faite pour ça, et c’est logique.
C’est possible avec un contrôle “Zone de liste” sur un formulaire. Il faudra gérer le résultat avec une macro.

Bonjour, je viens d’installer LibreOffice et regarder dans un Calc vide . mais …
J’ai l’habitude de travailler sur Google Sheets et ma solution pourrait être valable ou modifiable avec des codes de Calc ressemblants à ceux de Sheets. Les formules de Sheets s’adaptent à Ms Office, pourquoi pas à LibreOffice en les adaptant.
C’est la 1ere fois que je viens ici, veuillez me pardonner si mon post ne vous aide pas.

Voici donc la proposition en capture écran dans cette réponse (en espérant que ça marche).

Présentation du tableau

A droite des noms en A:B, j’ai ajouté 1 colonne C (Régimes) pour les résultat des régimes, puis de D à H , 5 colonnes pour les différents régimes.

Sous D:H j’ai inséré des cases à cocher (càc) sur toutes les lignes des noms,
il suffit de sélectionner les 5 colonnes, puis d’insérer les càc.
A chaque ligne de chaque nom, il suffit de cocher les régimes en D:H correspondants aux noms

Je n’ai pas trouvé les noms de code de formule correspondant aux miens dans Calc (que je ne connais pas du tout).

puis de copier cette formule en C2
=join("";arrayformula(if($D2:$H2=false;;$D$1:$H$1&" / ")))
(Parfois, le logiciel adapte automatiquement une formule externe, sinon faudra l’adapter)

Sélectionnez la cellule C2 et la descendre jusqu’à la fin des noms.

Ensuite, vous pouvez (Grouper ou Masquer les colonnes D:H) n’afficher que les 3 premieres colonnes (en cachant D:H avec une manip dans Calc).

En espérant vous avoir au moins ajouter une nouvelle idée.

Suite pour un affichage simplifié au maximum.

Pour ne pas afficher toutes les colonnes, je vous propose de créer en “Feuille 2” ** une recherche par Nom qui vous permettrait de voir ceci:

Recherche par personne 1

Méthode

En B1 : Créez une liste déroulante provenant de ‘Feuille 1’!A2:A ,
pour choisir le nom d’une personne.

En B2 : Affichez le nom complet (Nom + Prénom) de la personne
Formule: ="Régime(s) de “&$B$1&” "&vlookup($B$1;‘Feuille 1’!$A:$H;2;false)

A partir de B3:B : Affichez la LISTE des régimes associée à la personne en B1
(cela évite une cellule de résultat bien trop large si beaucoup de régimes…)
Formule: =transpose(split(" “&vlookup($B$1;‘Feuille 1’!$A:$H;3;false);”/"))

En espérant que vous retrouverez les équivalents de VLOOKUP et TRANSPOSE dans Calc

Bonjour,
et merci pour le temps consacré à mon affaire. Votre solution revient à celle exprimée précédemment par LeroyG et donc pas exactement ma recherche.
Merci pour l’effort.

C’est peut-être parce que c’est la différence entre un tableur et une base de données. Faire passer Calc pour une base de données relève d’astuces et de bidouillages. Utiliser Base et des formulaires serait bien plus simple pour les utilisateurs non aguerris :wink:

Bonne journée,
Luc.

1 Like

Oui, je sais bien mais pas possible dans mon contexte.
Je vais clôturer le post car on a pris une direction différente, du coup.
Merci à tous.