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

données/validation/liste - source sur autre feuille

9 réponses
Avatar
j-pascal
Bonjour,

Est-il possible d'avoir un menu déroulant (obtenu à partir de
"Données/Validation/Liste") à partir d'une source située sur une autre
feuille ?

J'ai une liste de noms dans la feuille 1 et j'ai besoin de récupérer ces
noms dans plusieurs feuilles.

Merci d'avance pour vos éventuelles réponses.

--
Cordialement @+
JP

9 réponses

Avatar
AV
Est-il possible d'avoir un menu déroulant (obtenu à partir de
"Données/Validation/Liste") à partir d'une source située sur une autre feuille
?


Il suffit de nommer la/les plages puis :
Données/Validation/Liste:
=maPlage

AV

Avatar
j-pascal
Bonjour,

Merci

En fait, ma question était incomplète ...

Sur la feuille 1, j'ai une plage "A1:A20" qui contient 10 valeurs (ce nombre
peut-être variable).
Soit 1 valeur dans chaque cellule de A1 à A10.
Dans la cellule C1, jai : ­RESSE(A1;A1)&":"&ADRESSE(A1+NBVAL(A1:A20)-1;A1)
ce qui me permet d'ajuster ma plage de données.

Dans "Données/validation/Source", j'ai "=INDIRECT(MaPlage) ce qui fonctionne
parfaitement si je suis sur la même feuille, mais pas si je suis sur une
autre feuille ...

Désolé d'ajuster si tardivement ma demande (je venais juste de faire
l'expérience en nommant MaPlage, ce qui répondait à ma question initiale.
Jusque là, j'essayais avec qqch comme "þuil1($A$1:$A$10)" ce qui ne
fonctionnait pas ; j'ignore pourquoi !).

A+ ?
"AV" a écrit dans le message de news:

Est-il possible d'avoir un menu déroulant (obtenu à partir de
"Données/Validation/Liste") à partir d'une source située sur une autre
feuille ?


Il suffit de nommer la/les plages puis :
Données/Validation/Liste:
=maPlage

AV





Avatar
AV
Dans la cellule C1, jai : ­RESSE(A1;A1)&":"&ADRESSE(A1+NBVAL(A1:A20)-1;A1)
ce qui me permet d'ajuster ma plage de données.


Glupsss !!
J'avais pas encore vu ça... Bizarre, bizarre....

Si tu veux utiliser une plage dynamique :
Définition de "maPlage" :
S'il n'y a pas d'étiquette de colonne
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
S'il y a une étiquette de colonne (c'est fortement conseillé)
ÞCALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)

Ensuite Données >>Validation >....Liste :
=maPlage

AV

Avatar
j-pascal
Bonjour AV,

"AV" a écrit dans le message de news:
e4WHo%
Dans la cellule C1, jai :
­RESSE(A1;A1)&":"&ADRESSE(A1+NBVAL(A1:A20)-1;A1) ce qui me permet
d'ajuster ma plage de données.


Glupsss !!
J'avais pas encore vu ça... Bizarre, bizarre....


Le fait d'utiliser "ADRESSE" ??

Si tu veux utiliser une plage dynamique :
Définition de "maPlage" :
S'il n'y a pas d'étiquette de colonne
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))

S'il y a une étiquette de colonne (c'est fortement conseillé)
ÞCALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)

Ensuite Données >>Validation >....Liste :
=maPlage

AV


Parfait !
Néanmoins, si les valeurs de la colonne A (MaPlage) sont importées de la
colonne B, ex :
A1 = B1, A2 = B2, etc... je me retrouve avec des zéros dans MaPlage et donc
dans ma liste déroulante ...

J'ai pensé à : ÞCALER(MaPlage;0;0;SOMMEPROD(SI(CODE(MaPlage)<>48;1;0))+1)
ce qui semble fonctionner.

Peut-être est-il possible d'améliorer cette dernière formule ?

A+ ?







Avatar
j-pascal
PS :

J'ai oublié de préciser que j'ai saisi la précédente formule dans "source"
de données/validation et non dans la définition de "MaPlage", ce qui est
quelque peu différent de la dernière solution que tu proposais.

"AV" a écrit dans le message de news:
e4WHo%
Dans la cellule C1, jai :
­RESSE(A1;A1)&":"&ADRESSE(A1+NBVAL(A1:A20)-1;A1) ce qui me permet
d'ajuster ma plage de données.


Glupsss !!
J'avais pas encore vu ça... Bizarre, bizarre....

Si tu veux utiliser une plage dynamique :
Définition de "maPlage" :
S'il n'y a pas d'étiquette de colonne
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A))
S'il y a une étiquette de colonne (c'est fortement conseillé)
ÞCALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1)

Ensuite Données >>Validation >....Liste :
=maPlage

AV





Avatar
AV
Glupsss !!
J'avais pas encore vu ça... Bizarre, bizarre....


Le fait d'utiliser "ADRESSE" ??


Je vois pas comment la syntaxe que tu utilises ADRESSE(A1;A1) peut te permettre
de définir une plage....
­RESSE(A1;A1) sous réserve que A1 contienne une valeur numérique renverra une
l'adresse correspondant à la valeur numérique contenue dans A1 qui sera alors
utilisée comme index de ligne ET de colonne
En résumé et comme exemple avec en A1 le chiffre 6
Résultat : $F$6
......

Néanmoins, si les valeurs de la colonne A (MaPlage) sont importées de la
colonne B, ex :
A1 = B1, A2 = B2, etc... je me retrouve avec des zéros dans MaPlage et donc
dans ma liste déroulante ...
...

ÞCALER(MaPlage;0;0;SOMMEPROD(SI(CODE(MaPlage)<>48;1;0))+1)
Peut-être est-il possible d'améliorer cette dernière formule ?

On pourrait faire (si j'ai bien compris le contenu de A1:Axxx) :
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A)-NB.SI(Feuil1!$A:$A;0))

AV


Avatar
j-pascal
Glouuuppps !

"AV" a écrit dans le message de news:
O$
Glupsss !!
J'avais pas encore vu ça... Bizarre, bizarre....


Le fait d'utiliser "ADRESSE" ??


Je vois pas comment la syntaxe que tu utilises ADRESSE(A1;A1) peut te
permettre de définir une plage....


Effectivement, dans le cas présent ça fonctionnait car A1 = 1 ! En fait,
j'avais sélectionné la cellule A1 dans l'idée (saugrenue) dans retirer le
numéro de ligne et de colonne ... C'était stupide. Heureusement que je t'ai
suggéré de préciser ta pensée au sujet de cette bizarrerie, sinon, il est
probable que cette subtilité m'aurait échappé.

Merci !

­RESSE(A1;A1) sous réserve que A1 contienne une valeur numérique
renverra une l'adresse correspondant à la valeur numérique contenue dans
A1 qui sera alors utilisée comme index de ligne ET de colonne
En résumé et comme exemple avec en A1 le chiffre 6
Résultat : $F$6


Soit !
....

Néanmoins, si les valeurs de la colonne A (MaPlage) sont importées de la
colonne B, ex :
A1 = B1, A2 = B2, etc... je me retrouve avec des zéros dans MaPlage et
donc dans ma liste déroulante ...
...

ÞCALER(MaPlage;0;0;SOMMEPROD(SI(CODE(MaPlage)<>48;1;0))+1)
Peut-être est-il possible d'améliorer cette dernière formule ?

On pourrait faire (si j'ai bien compris le contenu de A1:Axxx) :
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A)-NB.SI(Feuil1!$A:$A;0))


J'ai ajouté "+1" avant la dernière parenthèse, sinon je n'avais pas la
dernière valeur de la liste.

Ta formule va dans "Fait référence à:" du nom de la Plage,
La "mienne" va dans "source" de "Données/Validation/Liste" ...

Y-a-t-il un intérêt de l'une ou de l'autre si la Plage ne commence pas à la
première ligne ?

A+?

AV





Avatar
AV
­RESSE(A1;A1) sous réserve que A1 contienne une valeur numérique renverra
une l'adresse correspondant à la valeur numérique contenue dans A1 qui sera
alors utilisée comme index de ligne ET de colonne
En résumé et comme exemple avec en A1 le chiffre 6
Résultat : $F$6


Soit !
....

Néanmoins, si les valeurs de la colonne A (MaPlage) sont importées de la
colonne B, ex :
A1 = B1, A2 = B2, etc... je me retrouve avec des zéros dans MaPlage et donc
dans ma liste déroulante ...
...

ÞCALER(MaPlage;0;0;SOMMEPROD(SI(CODE(MaPlage)<>48;1;0))+1)
Peut-être est-il possible d'améliorer cette dernière formule ?

On pourrait faire (si j'ai bien compris le contenu de A1:Axxx) :
ÞCALER(Feuil1!$A$1;;;NBVAL(Feuil1!$A:$A)-NB.SI(Feuil1!$A:$A;0))


J'ai ajouté "+1" avant la dernière parenthèse, sinon je n'avais pas la
dernière valeur de la liste.


Ta formule va dans "Fait référence à:" du nom de la Plage,


Absolument : elle sert à définir la plage de façon dynamique et le nom défini
est directement utilisable dans Validation

La "mienne" va dans "source" de "Données/Validation/Liste" ...


L'inconvénient est que tu relance des calculs pour redéfinir une plage qui
elle-même est définie par des calculs...

Dans la solution que je t'ai proposée, 3 appels de fonctions.
Dans ta solution, 2 + 4 = 6 appels de fonctions
Moins il y en a et mieux c'est...!
Il est évidemment clair que sauf nombre très important de données, la différence
de rapidité d'exécution sera impalpable mais les petits ruisseaux....

Y-a-t-il un intérêt de l'une ou de l'autre si la Plage ne commence pas à la
première ligne ?


Quelles que soit les solutions retenues pour la définir, le fait de démarrer une
plage en ligne 1 est une très très mauvaise idée..
Un des principes intangibles d'organisation des données :
Les en-têtes de colonne en ligne 1 (elles servent à nommer les champs)

AV



Avatar
j-pascal