Rapport de message :*
 

Re: affichage suivant une selection

Titre du sujet : Re: affichage suivant une selection
par Mth le 28/11/2010 03:18:39

Bonsoir Claude,

Tu trouveras ton fichier en PJ avec beaucoup d'aménagements...

1: Mise en place des menus déroulants en cascade pour les cellules K3, J6 et O6.

J'ai créé un onglet "Tables" permettant de gérer les listes.
Tu verras que j'ai souvent utilisé la fonction DECALER() soit de façon simple comme expliqué dans le tutoriel "nommer une plage dynamique" pour la liste des Références de barbotines:
 
=DECALER(Tables!$A$1;;;;NBVAL(Tables!$A$1:$F$1))

soit un peu plus compliqué en imbriquant plusieurs fonctions DECALER() (mais le raisonnement est le même)pour la liste des plans de contrôle liés à chaque Ref de barbotine :
 
=DECALER(Tables!$A$2:$A$11;;EQUIV('100668'!$K$3;RefBarbotine;0)-1;NBVAL(DECALER(Tables!$A$2:$A$11;;EQUIV('100668'!$K$3;RefBarbotine;0)-1)))

Le dernier menu déroulant est plus complexe, j'ai placé dans l'onglet table autant de petits tableaux que de Ref de barbotines, chaque tableau doit avoir rigoureusement le même nombre de ligne (pas forcément remplies), la fonction DECALER() se décale à chaque fois d'autant de lignes qu'il y a de tableaux pour tomber sur la bonne barbotine (en l'occurrence ici 8 lignes, à adapter au cas où). J'ai utilisé des zones nommées pour rendre la formule du dernier menu déroulant un peu plus lisible (mais elle reste longue ... ):

=DECALER(DECALER(NbIndice;(EQUIV(K3;RefBarbotine;0)-1)*8;0);;EQUIV(J6;DECALER(NbPlan;;EQUIV(K3;RefBarbotine;0)-1;NBVAL(DECALER(NbPlan;;EQUIV(K3;RefBarbotine;0)-1)));0)-1; NBVAL(DECALER(DECALER(NbIndice;(EQUIV(K3;RefBarbotine;0)-1)*8;0);;EQUIV(J6;DECALER(NbPlan;;EQUIV(K3;RefBarbotine;0)-1;NBVAL(DECALER(NbPlan;;EQUIV(K3;RefBarbotine;0)-1)));0)-1)))

Comme il y a trois menus déroulants liés, il pourra être intéressant de remettre les cellules J6 et O6 à blanc si l'on modifie K3, ou simpleent O6 à blanc si l'on modifie J6 (simple suggestion, je n'ai pas intégré cette macro évènementielle dans le fichier joint).

  • 2: Utilisation de la fonction BDLIRE() pour remplir les cellules lignes 12 et 15, en fonction de ces 3 menus déroulants:

Toujours dans l'onglet "Tables" tu trouveras une zone nommée "Critère" reprenant les 3 intitulés de la base de données ainsi que les 3 valeurs des menus déroulants.
La base de l'onglet "Base" est également une zone nommée dynamique.
La formule utilisée est (par exemple en D12):
BDLIRE(BAse;5;Critère)
Critère est la zone nommée reprenant les 3 critères d'interrogation de la base
Base est le nom de la base de données
5 est le cinquième champ de la base
(tu peux consulter l'aide Excel qui est bien faite sur cette fonction BDLIRE())
Afin de ne pas afficher d'erreur si un élément sélectionné dans les menus déroulants n'existe pas dans la base, j'ai testé avec ESTERREUR():
=SI(ESTERREUR(BDLIRE(BAse;5;Critère));"";BDLIRE(BAse;5;Critère))

Voilà Claude, je te laisse consulter ton fichier en PJ en espérant que cela correspond à tes attentes.
Pour illustrer tout ça et surtout tester, j'ai ajouté quelques enregistrements bidons dans la base, avec notament plusieurs enregistrements pour une même référence de barbotine, plusieurs plans de contrôles possibles, mais sans doublons au niveau des indices.
(j'espère ne pas avoir compliqué la situation pour rien )

Bonne soirée (/nuit) et à bientôt,

Mth