[Résolu] liste déroulante à partir de plusieurs plages

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.

[Résolu] liste déroulante à partir de plusieurs plages

Messagepar EJM » 20 Avr 2020 20:29

Bonjour, je poursuis mon projet (merci à ceux qui m'ont déja aidé), et je me heurte à un nouveau soucis.
Pour résumer le projet : il s'agit d'une feuille de personnage de jeu de role préremplie.
Là ou je bute : j''invite l'utilisateur à choisir une race, un métier (et plus tard une classe). Chacun de ses choix renvoit à une série d'atouts. Ces atouts ont été séparément définis sous forme de plages nommées (ctrl F3). Ce que j'aimerais, c'est créer une liste déroulante qui réunirait l'ensemble de ces deux voire trois listes. Y a t'il une manipulation a faire?

Exemple : en EC105 de la feuille FDP, j'aimerais une liste déroulante, dont le contenu soit l'ensemble des plages AtoutsElfe et AtoutsArmurier
Je sais qu'il est possible de recourir à la fonction indirect et concaténer pour "appeler" une seule de ces plages, mais je ne sais pas comment cumuler 2 voire 3 plages.

Merci!
Pièces jointes
Base de donnée pour FDP.ods
(55.66 Kio) Téléchargé 6 fois
Dernière édition par EJM le 22 Avr 2020 11:13, édité 1 fois.
Open office 4.1.7 sous Windows
EJM
Membre lOOyal
Membre lOOyal
 
Message(s) : 36
Inscrit le : 21 Mars 2020 17:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar Jean-Louis Cadeillan » 20 Avr 2020 21:30

Bonsoir,
EJM a écrit:dont le contenu soit l'ensemble des plages AtoutsElfe et AtoutsArmurier
Je n'ai pas trop compris ce que ça veut dire : tous les items des deux plages sont dans une même liste en vrac ? Classés ? Croisés (tous les couples item i - liste j /item i' - liste j') ?
Ci-joint une proposition pour la dernière hypothèse, avec la formule de validité suivante (expression matricielle implicite) :
Code : Tout sélectionner   AgrandirRéduire
AtoutsElfe & REPT("_";25-NBCAR(AtoutsElfe))&AtoutsArmurier
À tester ci-joint.
Sinon, il faudra que tu fasses des listes miroirs (par exemple tu écris =AtoutsElfe et tu valides matriciellement), sur une feuille dédiée, par exemple, en mettant côte à côte tes listes.
Cordialement,
Jean-Louis
Pièces jointes
EJM_20200420_JLC01.ods
(56.5 Kio) Téléchargé 7 fois
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5006
Inscrit le : 03 Jan 2009 00:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar EJM » 20 Avr 2020 23:31

Alors la formule semble ne pas marcher; j'ai commencé à regarder ta liste miroir, mais je ne sais pas ce qu'est une validation matricielle (j'ai fait ctrl maj entrée comme me dit google mais rien ne se passe)
Open office 4.1.7 sous Windows
EJM
Membre lOOyal
Membre lOOyal
 
Message(s) : 36
Inscrit le : 21 Mars 2020 17:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar OOotremer971 » 21 Avr 2020 00:40

Bonjour,

Dans le fichier joint, une exemple à partir de 4 listes nommées _L1, _L2, _L3, _L4 dispersées au hasard sur une feuille. La liste de validité se trouve en K1 avec la formule suivante :
Code : Tout sélectionner   AgrandirRéduire
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))));""))))


La formule est constituée de séquence répétées en fonction du nombre de liste à gérer. La première séquence :
Code : Tout sélectionner   AgrandirRéduire
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)))

considère les listes de _L1 à _L4. Si ton fichier ne contient que 3 listes, il faut supprimer cette première séquence pour que la formule commence ici :
Code : Tout sélectionner   AgrandirRéduire
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)))

etc..

Pour les explications détaillées, je reviendrai plus tard dessus si tu souhaites comprendre car c'est un fichier que j'ai créé en mars 2019 (au départ je voulais en faire un fichier type pour le publier ici, mais faute de temps c'est passé aux oubliettes). Il faudra donc que je m'y replonge :lol:

A+
Pièces jointes
ValiditeMultiColonnes.ods
(12.05 Kio) Téléchargé 4 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian 10
Ubuntu 18.04.4 LTS
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2351
Inscrit le : 16 Avr 2010 14:31

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar Jean-Louis Cadeillan » 21 Avr 2020 13:12

Bonjour,
EJM a écrit: la formule semble ne pas marcher
C'est-à-dire ?
Voilà ce qu'elle donne (Sous AOO comme sous LibO) :
Liste.jpg
Cliquer pour agrandir.
D'autre part, tu n'as répondu à aucune de mes questions :
Jean-Louis Cadeillan a écrit:tous les items des deux plages sont dans une même liste en vrac ? Classés ? Croisés (tous les couples item i - liste j /item i' - liste j') ?
Cordialement,
Jean-Louis
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5006
Inscrit le : 03 Jan 2009 00:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar EJM » 21 Avr 2020 14:28

@ OOOtremer : merci, je vais regarder ça
@ Jean Louis : je ne comprends pas exactement ce que tu veux savoir, mais pour être très précis, pour le moment je veux associer une liste issue d'une des colonnes du second tableau de la feuille "métiers" et une liste issue d'une des colonnes du second tableau de la feuille "Races".
J'y arrive à présent : j'arrive à les chacune avec une liste déroulante en B2 et B3 de la feuille "Ppale", elles s'affichent à présent en B13 et au delà.
Pièces jointes
Base de donnée pour FDP.ods
(58.93 Kio) Téléchargé 5 fois
Open office 4.1.7 sous Windows
EJM
Membre lOOyal
Membre lOOyal
 
Message(s) : 36
Inscrit le : 21 Mars 2020 17:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar Jean-Louis Cadeillan » 21 Avr 2020 15:00

EJM a écrit:je veux associer une liste issue d'une des colonnes du second tableau de la feuille "métiers" et une liste issue d'une des colonnes du second tableau de la feuille "Races".
Je croyais que ton questionnement concernait l'association dans une liste déroulante, d'après cette phrase :
EJM a écrit: j'aimerais une liste déroulante, dont le contenu soit l'ensemble des plages AtoutsElfe et AtoutsArmurier
Mais d'après celle-là :
EJM a écrit:J'y arrive à présent : j'arrive à les [?] chacune avec une liste déroulante en B2 et B3 de la feuille "Ppale", elles s'affichent à présent en B13 et au delà.
j'en doute.
EJM a écrit:je ne comprends pas exactement ce que tu veux savoir
Toujours dans l'idée que tu voulais avoir une liste déroulante qui regroupe plusieurs plages, il me semble que tu n'a à aucun moment défini ce que tu appelles associer : quand cette liste déroulante est visible, qu'est-ce qu'on doit voir :
  • Les items de la première plage puis ceux de la deuxième ?
  • Les items de la première plage mélangés avec ceux de la deuxième, par ordre alphabétique ?
  • Les items de la première plage mélangés avec ceux de la deuxième, dans un autre ordre ?
  • Les items de la première plage en parallèle avec ceux de la deuxième (comme je t'ai proposé dans le fichier et visible dans la capture d'écran) ?
  • etc.
    EJM a écrit:la formule semble ne pas marcher
Tu ne m'a toujours pas expliqué pourquoi : est-ce que ça veut dire qu'elle ne produit rien chez toi ? Est-ce que ça veut dire qu'elle ne correspond pas à tes attentes ?
Cordialement,
Jean-Louis
LibO 6.3.6.2 (x64 avec Java 1.8.0_241) et AOO 4.1.7 (avec Java x32 1.8.0_251), Windows 7 Édition Intégrale 64 SP1, (Domicile)
LibO 5.4.1.2 (x86) sous Ubuntu LTS 16.04.1, noyau 4.4.0-93 et Xfce 4.12, Java (x86) 1.8.0_131 (Travail) [obligation de version]
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
 
Message(s) : 5006
Inscrit le : 03 Jan 2009 00:56

Re: Définir une liste déroulante à partir de plusieurs plage

Messagepar EJM » 21 Avr 2020 15:33

Désolé, pas facile d'être clair et concis, je gère mon fils de 4 mois en même temps que je bosse sur mon projet :)
le ? veut dire les désigner.
Les items des deux plages peuvent être mélangés, ca n'a pas d'importance, car je les trie ensuite par ordre alphabétique au moment de créer la validité (et dans le cadre de mon projet, je compte les faire précéder du niveau auquel tel atout devient accessible, ce qui du coup marchera très bien avec un tri alphabétique)
Pour finir, ta fonction renvoyait une erreur. Je ne saurais pas te dire laquelle, ni essayer de le reproduire, car entre temps j'ai changé le nom de mes plages pour simplifier.
Au final j'ai utilisé ton idée de liste miroir, ce qui marche très bien pour le moment. Merci!
Open office 4.1.7 sous Windows
EJM
Membre lOOyal
Membre lOOyal
 
Message(s) : 36
Inscrit le : 21 Mars 2020 17:56


Retour vers Tableur

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 8 invité(s)