Liste déroulante choix multiple sur toute une colonne

Bonjour à toutes et tous,

J'espère que vous vous portez bien en ces temps un peu compliquer,

J'ai un petit soucis, que je n'arrive pas a résoudre sur un tableau que je crée pour l'équipe relatant les événements, nous comptons le remplir quotidiennement et pour faciliter la tâche j'ai crée plusieurs listes déroulantes (jusque là j'étais autodidacte),

Mais je bute sur un soucis, j'ai crée 2 colonnes, 1ère colonne "l'étage" et la 2nd "la salle" et je veux faire en sorte que la seconde colonne dépende de la première, donc pour une ligne la commande =INDIRECT() est bien comprise, par contre je ne me vois pas faire ça pour les 365 jours de l'année, sur plusieurs années,

J'aurai donc aimé savoir si il y a une commande pouvant faire le même effet que =INDIRECT() mais qui s'applique sur l'intégralité de ma colonne "Salle"

Merci d'avance pour vos réponses

Hello,

Bonsoir, Rag02700,

une proposition avec une "facilité" de mise à jour des listes de choix 1 et 2 :

La liste de choix 1 correspond à la colonne A de la feuille 2 qui sert de base de données, et le sous menu de chacune de ces liste se sont les cellules sur la même ligne à partir de la colonne B.

Ensuite la base de données est dans un tableau structuré, ce qui fait qu'à l'ajout d'une donnée en colonne A, il y a répétition des listes de choix des colonnes B et C.

@ bientôt

LouReeD

Bonjour à tous,

Merci pour vos réponses,

Rag02700, mon fichier était tellement basique que je me suis dit que ça n'en valait pas la peine de le partager, le prochain coup je le ferai instinctivement :)

LouReeD, C'est parfait, c'est exactement ça que je voulais, vous êtes passé par du VBA pour y parvenir ? En tout cas un grand Merci

Bonjour,

Non pas de VBA, uniquement des formules...

Le fichier peut rester en .xlsX

@ bientôt

LouReeD

Bonjour,

Je vois vaguement après avoir un peu fouiller le fichier que vous m'avez envoyé,

Je testerai de reproduire ce genre de formule et d'aller un peu plus loin pourquoi pas,

Un grand merci

Bonsoir,

j'essaie de vous expliquer :

C'est basé sur la fonction DECALER qui permet de désigner (créer) une plage de cellule en prenant en référence une cellule dont on va décaler d'un certain nombre de ligne et de colonne et ce sur un certain nombre de ligne et de colonne.

La première liste est simple, elle s'appelle Choix1 et elle est visible dans le gestionnaire des noms.

La formule est : =DECALER(BD!$A$2;;;NBVAL(BD!$A:$A)-1;)
Structure de la fonction DECALER( cellule de référence ; décalage de x ligne ; décalage de x colonne ; sur x ligne ; sur x colonne )

si on prend A1 en référence est que l'on veut définir la plage F4:H9 alors cela donnera :
=DECALER(A1;3;5;6;3)

Dans le fichier qui nous concerne il faut que Choix1 représente la plage de cellule de la colonne A de la feuille BD sans prendre en compte l'entête de cette colonne et sans avoir de "vide" à la fin de la liste donc nous allons prendre A2 en référence, puis le décalage de x ligne pour atterrir sur la première cellule de la plage voulue donc ici 0, c'est pourquoi après le ";" il n'y a pas de valeur. Ensuite le décalage en colonne, vu que l'on reste en colonne A il n'y a pas de décalage, pas de valeur donc juste le ";".
Maintenant il faut déterminer sur combien de ligne la plage doit s'étendre, pour cela il suffit de compter le nombre de valeur qui se trouve dans la colonne en retirant l'entête, on a donc NBVAL(A:A) -1 qui nous fait la soustraction du nombre de valeur de la colonne A - 1. Il ne reste plus qu'à déterminer sur combien de colonne, vu que l'on reste en colonne A ce sera "rien".

Attention ! Tous les paramètres sont utiles même si égale à rien il faut donc avoir utiliser "tous les ;".

La deuxième formule est basée sur le même principe à la différence près qu'il faut connaître le numéro de ligne correspondant au choix1. Pour cela on va utiliser la fonction EQUIV qui renvoie la position d'une donnée dans une matrice (ou plage de cellule), donc EQUIV("LouReeD";Choix1;0) renverra 3 si LouReeD se trouve en troisième position dans la plage de cellule représentée par Choix1. La valeur cherchée "LouReeD" est en fait la valeur de la colonne avec comme validation la liste de choix1 donc dans le fichier exemple la valeur "même ligne" colonne de gauche soit C2 pour la première cellule de choix en colonne D.
La cellule de référence pour cette fonction décaler, n'est pas une cellule mais un nom créer dans le gestionnaire de nom qui fait référence à une formule qui donne en référence la ligne 2 de la feuille BD : =BD!2:2

Du coup lorsque vous écrivez la formule =DECALER(Choix2 c'est une ligne entière qui sert de référence.

A la suite on trouve la fonction EQUIV qui va nous permettre de décaler cette ligne de référence du nombre de ligne qu'il faut pour arriver sur la ligne de la valeur en colonne A choisie : EQUIV(C2;Choix1;0) ou renvoie la position de la valeur de la cellule C2, dans la plage Choix1 en comparaison "exacte", donc si on continue avec LouReeD en troisième position, si C2 = LouReeD, EQUIV va retourner 3. Du coup on décale la référence BD!2:2 de 3, mais là Aïe on arrive à 5, c'est pourquoi il y a le "-1" car la première donnée de liste de la colonne A est en ligne 2, mais c'est la première position, il faut donc réduire de 1.

La formule "entière" : =DECALER(Choix2;EQUIV(C2;Choix1;0)-1;1;;NBVAL(DECALER(Choix2;EQUIV(C2;Choix1;0)-1;0))-1)

Là la formule travaille "en ligne" et non pas en colonne comme pour le Choix1 du coup on part de la ligne 2, on décale de 3 - 1, on arrive en ligne 4, mais comme la première colonne de la ligne correspond à l'entête de cette ligne, il faut également décaler d'une colonne ;1. Sur combien de ligne et bien 0 car on reste sur une seule ligne de donnée, et sur combien de colonne, on utilise là encore le NBVAL -1, mais le numéro de la ligne testée est là aussi trouvée par la même formule EQUIV, et on retire -1 pour supprimer la valeur d'entête de la ligne.

Voilà pour le fonctionnement, sans VBA, mais pour seulement 2 listes liées, mais avec une simplicité de remplissage et/ou de modification :

Choix 1 première colonne, sous choix les colonnes à sa droite, ceci avec comme seules limitation la taille des feuilles Excel ! Et bien sûr pas de cellule vide entre les données de la colonne A et celle de la colonne B vers Z pour chaque ligne.
Si d'aventure vous vouliez mettre des cellules vides afin de faire des séparations visuelle sur les listes alors ce n'est pas NBVAL qu'il faudrait utiliser mais une autre formule afin de connaître la dernière ligne utilisée pour la colonne A et la dernière colonne utilisée pour chaque ligne .

@ bientôt

LouReeD

Merci beaucoup pour l'explication, je comprend mieux, reste plus qu'a essayer et jouer un peu avec tout ça pour voir les possibilités faisables

Merci BEAUCOUP ! :)

Merci @ vous pour votre retour !

@ bientôt

LouReeD

Rechercher des sujets similaires à "liste deroulante choix multiple toute colonne"