Liste de validation avec recherche
Bonjour tout le monde,
J'essaye de mettre en place un devis simple pour l'imprimerie. Dans l'ensemble tout s'est bien passé mais je butte sur le calcul du prix papier du au nombre de références possible.
Les papiers sont ordonnés par Nom / Grammage / Format / Paquetage / Prix Tonne.
Pour créer les deux listes de validation "Nom" et "Grammages" possible en fonction de ceux ci : pas de problème. Par contre créer la troisième qui renvoi les formats, là je bloque. Idéalement, je voudrai éviter la nomination de chaque zone, est-il possible grâce aux deux critères NOM et GR de renvoyer toutes les autres informations ??
Je vous ai joint un fichier beaucoup plus explicite, n'hésitez pas à me poser des questions si cela n'est pas clair.
Merci d'avance pour votre implication
-- 12 Jan 2010, 11:03 --
Une petite piste svp ...
Bonjour,
Regarde si le fichier joint correspond à ce que tu attends !
Bonne journée
oSMoZ
Bonjour,
@ oZMoZ, tu ne peux pas utiliser SOMMEPROD en C3 vu qu'il y a plusieurs résultats possible.
J'ai rajouté une colonne et un mini-tableau sur la feuille Papier (en grisé).
Le mini-tableau est nommé FT.
Il est utilisé pour la 3ème liste déroulante.
Les autres cellules sont calculées avec SOMMEPROD.
A+
Un grand Merci à OOoiste !!!
Cela correspond exactement à ma recherche !!!
Est-il possible, dans le temps, que vous m'expliqiez la demarche utilisée (j'aime bien comprendre...
Merci encore
Colonne G :
=SI(ET(A2=DEVIS!$A$3;B2=DEVIS!$B$3);LIGNE();"")
On vérifie pour chaque ligne la concordance entre les saisies effectuées à l'aide des listes déroulantes
dans les cellules DEVIS!$A$3 et DEVIS!$B$3 et les valeurs figurant en A2 et A3.
Si les conditions sont vérifiées on affiche le numéro de ligne ( LIGNE() ) sinon rien ( "" ).
On a alors les numéros des lignes contenant les valeurs devant être affichés dans la liste déroulante.
Dans un deuxième temps on récupère ces valeurs dans un autre endroit de la feuille.
=SI(LIGNE()-2<=NB($G$1:$G$54);INDEX(C$1:C$54;PETITE.VALEUR($G$1:$G$54;LIGNE()-2));"")
PETITE.VALEUR($G$1:$G$54;LIGNE()-2)
la formule étant en ligne 3, cette formule nous donne le plus petit nombre de la colonne G.
En ligne 4, le 2ème + petit nombre et ainsi de suite.
On a vu + haut que ce nombre correspond au numéro de ligne.
Donc INDEX(C$1:C$54;numéro de ligne) nous donne la valeur correspondante à la ligne en colonne C.
J'ai prévu une plage de 3 lignes, ce qui dans ton tableau semble être le maximum de valeurs à afficher.
Mais il se peut qu'il y en ait moins de valeurs, la formule SI(LIGNE()-2<=NB($G$1:$G$54);formule INDEX;"")
demande le calcul de la formule tant que l'on a pas atteint le nombre de valeurs ( déterminé par NB ).
Dès que ce nombre est atteint, on affiche rien.
Cette plage de données ainsi obtenue sert donc à la création de la liste déroulante.
Concernant SOMMEPROD :
=SOMMEPROD((Papier!$A$2:$A$54=$A$3)*(Papier!$B$2:$B$54=$B$3)*(Papier!$C$2:$C$54=$C$3)*(Papier!D2:D54))
On récupère la valeur de la colonne D figurant sur la même ligne ou les 3 égalitées précédentes sont vérifiées.
A+