Listes en cascades

Light479

XLDnaute Nouveau
Bonsoir,

Voici un petit problème auquel je me confronte depuis quelques temps, j'ai fait le tour des forums, suis tombé sur le très complet tuto de boisgontierjacques mais malheureusement sur les listes en cascades x3 je ne trouve pas exactement ce qu'il me faut...

Explication rapide avant de lire mon fichier: J'ai 3 batiments avec un étage chacun, 20 à 30 pièces par étage et par batiments. Il faut que je fasse une automatisation du nommage des prises réseaux. Les listes en cascade n°1 "Batiment" et n°2 "Salle" est complété, pour la 3ème liste en cascade "Prises" j'ai besoin de 3 prises par salles.

Là est mon problème je suis un peu perdu en lisant le tuto et j'ai à peu près tout essayer de ce qu'il me passait par la tete sans que ca fonctionne : "la source est erroné...". J'arrive seulement à rajouter le nom de mes prises sans filtrer par rapport aux listes précédantes

Vous verrez dans mon fichier que seulement les 2 étages du premier batiment sont complétés dans ma BD, vous embettez pas pour le reste, connaitre le principe et l'appliquer est mon but!


Merci de m'avoir lu !
 

Pièces jointes

  • Brassage réseau.xlsx
    13.9 KB · Affichages: 66

Light479

XLDnaute Nouveau
Re : Listes en cascades

Rebonjour!

Après une semaine à bosser sur mon fichier je ne parviens pas à comprendre la méthode pour y ajouter ma 3ème colonne.
La formule que Modeste m'a communiqué fonctionne correctement, mais vous l'aurez compris si je suis encore là c'est que j'ai un problème...

J'ai mis un peu de temps à comprendre que la colonne "H" était devenu ma BD pour mes prises (si j'ai bien compris). J'ai donc mis à la suite des salles du "RDC Batiment Principal" celles du "Etage Batiment Principal", ca fonctionne jusque là, par exemple la 3ème listbox me remonte bien les prises de la salle 209 du "Etage Batiment Principal". J'ai donc voulu intégrer mon troisème batiment mais ca se complique, j'ai modifié

=DECALER(I1;EQUIV(B2;$H$2:$H$120;0);;NB.SI($I$2:$I$120;"*"&B2&"*"))
en
=DECALER(I1;EQUIV(B2;$H$2:$H$500;0);;NB.SI($I$2:$I$500;"*"&B2&"*"))
pour prendre large. Une fois modifié je cible la première salle du "RDC Batiment EST" et la listbox me remonte des prises de mon premier batiment...

Je me suis donc dis que c'était une histoire de libellé, j'ai donc rajouter la lettre "E" aux prises du batiment EST, mais du coup la listbox ne réagit plus :mad:

Le fichier Uploadé est biensur MAJ et est muni d'un petit code couleur pour vous y retrouver.

P.S. Par rapport aux libellés vous remarquerez que concernant les prises du "Etage Batiment Principal" seul les 2 premiers groupes (P-1-201-A;P-1-201-B;P-1-201-C;P-1-202-A;P-1-202-B;P-1-202-C) sont libellé et que tous les autres remontent sans soucis, une info là dessus?
 

Pièces jointes

  • Brassageréseau(1).xlsx
    14.9 KB · Affichages: 45

Modeste

XLDnaute Barbatruc
Re : Listes en cascades

Bonsoir Light479,

Rien n'oblige à n'utiliser que la colonne H ... d'autant qu'on aurait un problème avec des numéros de locaux identiques dans une seule colonne! J'ai donc conservé les 3 colonnes de base (bleue, jaune et verte) et modifié les noms en conséquence.
Au stade actuel, la formule pour la validation (en C2) devient:
Code:
=DECALER($H$1;EQUIV($B$2;INDIRECT(SUBSTITUE($A$2;" ";"_"));0);EQUIV($A$2;$H$1:$P$1;0);NB.SI(DECALER(INDIRECT(SUBSTITUE($A$2;" ";"_"));;1);"*"&B2&"*"))

Mais, si tu n'as jamais ni plus, ni moins de 3 prises par local, on peut la simplifier un peu comme suit:
Code:
=DECALER($H$1;EQUIV($B$2;INDIRECT(SUBSTITUE($A$2;" ";"_"));0);EQUIV($A$2;$H$1:$P$1;0);3)

... Regarde si ça fonctionne comme tu le souhaites (on verra ensuite pour les explications ;))
 

Pièces jointes

  • Brassageréseau(2).xlsx
    14.8 KB · Affichages: 51
Dernière édition:

Light479

XLDnaute Nouveau
Re : Listes en cascades

Encore une fois ca fonctionne nikel!

Pour le choix de la formule, c'est la première en mon sens qui resterait la plus compatible. Le but final du fichier est d'automatiser le nommage des prises. En gros si l'utilisateur souhaite brassé une nouvelle prise, à l'aide du fichier le nommage "complex" se fait "tout seul". Je pensais passer par du VB et agir en suite sur ma BD, mais ca c'est une autre étape :D

Revenons en à tes formules, dis moi si je me trompe,

=DECALER($H$1;EQUIV($B$2;INDIRECT(SUBSTITUE($A$2;" ";"_"));0);
Cette partie me permet de faire plusieurs Listbox avec une BD munit de caractère spéciaux et espaces.

;EQUIV($A$2;$H$1:$P$1;0);
Celle-ci d'indiquer ma BD, mais si c'est le cas je remplacerai $P$1 par $Q$1, puisque je dois encore rajouter une colonne pour mes prises.

NB.SI(DECALER(INDIRECT(SUBSTITUE($A$2;" ";"_"));;1);"*"&B2&"*"))
Et la dernière, je suis complètement pommé, si c'est pas déja le cas ;)

Par contre je vois que que le gestionnaire de noms n'a pas bougé, n'en a-t-on pas besoin?

Merci pour le temps que tu me consacre ;)
 

Modeste

XLDnaute Barbatruc
Re : Listes en cascades

Bonsoir :)

Cette partie me permet de faire plusieurs Listbox avec une BD munit de caractère spéciaux et espaces.
... Euh ... je ne suis pas certain qu'on puisse dire ça :rolleyes: Tu auras noté que les plages sont nommées de cette manière: "RDC_Batiment_EST". Dans la cellule A2, ainsi que H1, J1, L1, etc. le texte se présente sous la forme "RDC Batiment EST". D'un côté, donc, des tirets de soulignement, de l'autre, des espaces. La fonction INDIRECT permet de renvoyer une référence à une cellule ou plage de cellules. Dans le cas présent, on cherche à faire référence aux plages nommées: si A2 contenait le texte "RDC_Batiment_EST", INDIRECT(A2) ferait référence à la plage ainsi nommée. Comme A2 contient le texte avec des espaces séparant les mots, on utilise SUBSTITUE, pour remplacer les espaces par des 'underscores'.
Il s'agit donc d'alimenter une (et une seule) liste déroulante ... qui prend sa source dans une plage d'emplacement variable ... Tu me suis?

si c'est le cas je remplacerai $P$1 par $Q$1
Ici, tu as parfaitement raison: l'objectif de ce petit bout de formule est de déterminer de combien de colonnes il faut décaler la référence de base, pour trouver les bonnes données. Avec les colonnes encore à définir, je dirais même qu'il faudra aller jusqu'en colonne S :confused:

Et la dernière, je suis complètement pommé
Mon pauvre ami, pommé de cette manière, tu ressemblerais à un chou :p, ... Si tu veux dire que tu es un rien paumé, je peux comprendre et je t'assure que je compatis (mais je n'ai pas mieux en magasin ;)). Cette dernière partie permet de déterminer quelle "hauteur" de la plage devra garnir la liste déroulante. Dans chaque plage nommée, il s'agit de déterminer le nombre de prises dont le "nom" contient le n° de salle renseigné en B2 (c'est pour ça qu'un nombre déterminé de prises aurait simplifié la formule)

Pour ce qui est de:
le gestionnaire de noms n'a pas bougé
:confused: je crains de ne pas comprendre ce que tu veux dire. Tu as des références en erreur (que tu pourrais supprimer!?) et une multitude de "prises" dont je ne sais ce que tu feras? (... à supprimer aussi??). Je ne me suis occupé que de "RDC_Batiment_Principal", "Etage_Batiment_Principal" & "RDC_Batiment_EST"

Allez courage! :D
 

Light479

XLDnaute Nouveau
Re : Listes en cascades

Bonjour,

Expliqué comme tu le fais simplifie vachement plus la fonction et je t'en remercie! :)

Pour ce qui est du gestionnaire de nom en lisant le tuto de boisgontierjacques, j'avais compris qu'il fallait référancer les plages de cellules pour qu'elles puissent ensuite remonter dans les Listbox. Apparemment non puisque la plupart ne sont pas nommées, sauf la liste de mes batiments. Je viens donc de supprimer toutes les prises dans le gestionnaire et ca fonctionne toujours ;)

Bon beh voilà, j'ai à peu près compris le principe de la fonction et son fonctionnement et en plus de ca mon fichier fonctionne à merveille, que demande le peuple!

Je te remercie encore une fois pour l'aide que tu m'a apporté!

Light
 

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 006
Membres
103 429
dernier inscrit
PhilippeH