Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Liste de validation dynamique (formule matricielle ?) ?

2 réponses
Avatar
François Rivierre
Bonjour à tous,

Je cherche la solution à un problème, mais je n'ai rien trouvé qui me semble
correspondre en googleisant, ou sur excelabo et les autres sites...

J'expose :

J'ai un tableau qui peut contenir les dimensions d'une boîte, sous la forme
suivante :

- dans la colonne A, à partir de la cellule A2, j'ai la longueur de mes
boîtes (1 longueur par ligne).
- dans la ligne 1, à partir de la cellule B1, j'ai la largeur de mes boîtes
(1 largeur par colonne).
- à l'intersection d'une ligne et d'une colonne, j'ai dans la cellule
correspondante la hauteur de la boîte. La cellule d'intersection peut être
vide, s'il n'y a pas de boîte correspondante (c'est là que c'est important).

Sur une autre feuille, j'ai des zones de saisies dans lesquelles j'entre les
dimensions. La première dimension entrée est la longueur. J'utilise une
liste de validation, qui correspond à la colonne A de mon tableau des
boites.

Mon problème est le suivant : je cherche à remplir une colonne (qui me
servira ensuite de liste de validation) avec les largeurs de boites
disponibles en fonction de la longueur rentrée, la règle permettant de dire
qu'une largeur est disponible étant qu'une hauteur doit exister dans le
tableau, à l'intersection longueur/largeur. Evidemment, la liste de
validation ne doit pas comporter de lignes blanches, comme on me l'a demandé
(sinon, c'est trop facile).

Donc en résumant, je cherche à faire évoluer dynamiquement ma liste de
validation en fonction de la longueur.

J'ai essayé avec les formules conventionnelles, mais je n'arrive à rien.
Est-ce qu'une formule matricielle pourrait m'aider ?

On m'a aussi demandé de ne pas mettre de code VBA pour traiter cette
application (pour autant que ce soit possible).

Si quelqu'un a une idée, je suis preneur :) !

D'avance merci,

Cordialement,

François Rivierre

2 réponses

Avatar
SL
Bonjour

une piste avec
=PETITE.VALEUR(SI(DECALER(hauteur;EQUIV(A1;longueur;0)-1;0;1;COLONNES(largeur))=0;"";largeur);LIGNE(INDIRECT("1:"&COLONNES(largeur))))
en matricielle
On doit pouvoir simplifier.

Avec longueur la plage A2:Ax, largeur la plage B1:Y1 et hauteur la plage
B2:Yx et A1 la cellule de la 2e feuille ou tu rentres la longueur.

Celle formule fonctionne dans une plage de cellule mais je n'arrive pas à
comprendre pourquoi elle ne fonctionne plus en validation de données.
Je n'ai pas le temps de creuser...j'espère que tu trouveras une réponse.

Stéphane


"François Rivierre" a écrit dans le message de news:
unGd$
Bonjour à tous,

Je cherche la solution à un problème, mais je n'ai rien trouvé qui me
semble
correspondre en googleisant, ou sur excelabo et les autres sites...

J'expose :

J'ai un tableau qui peut contenir les dimensions d'une boîte, sous la
forme
suivante :

- dans la colonne A, à partir de la cellule A2, j'ai la longueur de mes
boîtes (1 longueur par ligne).
- dans la ligne 1, à partir de la cellule B1, j'ai la largeur de mes
boîtes
(1 largeur par colonne).
- à l'intersection d'une ligne et d'une colonne, j'ai dans la cellule
correspondante la hauteur de la boîte. La cellule d'intersection peut être
vide, s'il n'y a pas de boîte correspondante (c'est là que c'est
important).

Sur une autre feuille, j'ai des zones de saisies dans lesquelles j'entre
les
dimensions. La première dimension entrée est la longueur. J'utilise une
liste de validation, qui correspond à la colonne A de mon tableau des
boites.

Mon problème est le suivant : je cherche à remplir une colonne (qui me
servira ensuite de liste de validation) avec les largeurs de boites
disponibles en fonction de la longueur rentrée, la règle permettant de
dire
qu'une largeur est disponible étant qu'une hauteur doit exister dans le
tableau, à l'intersection longueur/largeur. Evidemment, la liste de
validation ne doit pas comporter de lignes blanches, comme on me l'a
demandé
(sinon, c'est trop facile).

Donc en résumant, je cherche à faire évoluer dynamiquement ma liste de
validation en fonction de la longueur.

J'ai essayé avec les formules conventionnelles, mais je n'arrive à rien.
Est-ce qu'une formule matricielle pourrait m'aider ?

On m'a aussi demandé de ne pas mettre de code VBA pour traiter cette
application (pour autant que ce soit possible).

Si quelqu'un a une idée, je suis preneur :) !

D'avance merci,

Cordialement,

François Rivierre




Avatar
François Rivierre
Bonjour,

une piste avec

=PETITE.VALEUR(SI(DECALER(hauteur;EQUIV(A1;longueur;0)-1;0;1;COLONNES(largeu

r))=0;"";largeur);LIGNE(INDIRECT("1:"&COLONNES(largeur))))
en matricielle
On doit pouvoir simplifier.

Avec longueur la plage A2:Ax, largeur la plage B1:Y1 et hauteur la
plage B2:Yx et A1 la cellule de la 2e feuille ou tu rentres la
longueur.

Celle formule fonctionne dans une plage de cellule mais je n'arrive
pas à comprendre pourquoi elle ne fonctionne plus en validation de
données. Je n'ai pas le temps de creuser...j'espère que tu trouveras
une réponse.


Merci pour la piste :). Je n'ai pas non plus réussi à m'en sortir avec cette
formule en matricielle. Je pense que mes compétences sont trop faibles dans
ce domaine :(. Par contre, ça m'a donné une autre idée : j'ai ajouté sous
mon tableau une ligne dans laquelle je valide la largeur de la boîte en
fonction de la longueur, via un recherchev sur la colonne et la longueur et
un test sur l'existence de la hauteur. Si c'est valide, je mets la largeur
dans la cellule, sinon je laisse à blanc. Je fais ça en dessous toutes mes
largeurs, puis sur une deuxième ligne, j'utilise la fonction PETITE.VALEUR,
en changeant mon ordinal dans chaque colonne. J'obtiens ainsi ma liste de
validation, triée du plus petit au plus grand, et sans cellule blanche :) !

Bien sûr, c'est pas merveilleux au niveau des formules, mais ça me permet
d'arriver à ce que je souhaitais. Si vous avez mieux, n'hésitez pas je suis
preneur ;) !

Merci beaucoup !

Cordialement,

François Rivierre