Excel : listes déroulantes conditionnelles. [Résolu/Fermé]

Signaler
-
 Cathozie -
Bonjour,

En lisant le forum, j'ai bien trouvé une partie de la solution à mon souci, mais il me manque quelque chose.

En effet, j'ai réussi à imbriquer mes listes déroulantes, c'est-à-dire que lorsque je sélectionne un fournisseur dans mon bon de commande, les produits disponibles sont bien ceux de mon fournisseur.

Par contre, dans ce bon de commande, j'ai également des fonctions de recherchev qui doivent m'afficher la référence et le prix du produit, mais certains produits étant identiques chez plusieurs fournisseurs (mais pas les prix ni les références), j'ai un affichage erroné.

Je ne comprends pas comment faire pour que cela n'arrive pas.

Merci beaucoup de votre aide.

Cath

4 réponses

Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
802
Salut le forum

Tu pourrais utiliser un SOMMEPROD
=SOMMEPROD((Col_Fournisseur=Fournisseur)*(Col_Prod=Prod)*Col_Prix)

Mytå
Quelle prétention de prétendre que l'informatique est récente
Adam et Eve avaient déjà un Apple ! [MsProject 2003(FR), Excel 2003-2007(FR)]
Hello et merci de ta réponse,

Je ne comprends pas cette formule et du coup, je ne sais pas où il faudrait la placer.

Cath
Messages postés
25298
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
5 476
Bonjour
si chaque produit à sa référence spécifique, un RECHERCHEV devrait permettre de traiter le problème sans parler du fournisseur, en plaçant la liste des références dans la 1° colonne du champ de recherche,non?
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
Hello, et merci de ta réponse,

Le problème est que j'opère ma recherchev sur le nom du produit parce que je n'ai pas la référence de tous les produits selon les fournisseurs. C'est pourquoi j'avais préféré la liste déroulante conditionnelle pour choisir le nom du produit.

Dans mon exemple, je peux commander ma bière chez France-Boissons ou Promocash, les prix sont différents pour le même produit. Quand je choisis dans ma première liste déroulante France-Boissons, cela me donne une liste des produits de chez France-Boissons dans la colonne désignation du produit.

Mais dans mes colonnes conditionnement, référence et prix, ça me choisit le prix de Promocash et pas de référence (puisque je ne la connais pas).

S'il faut organiser mes fonctions de recherches d'une autre manière, je ne vois pas trop comment pour le moment.

Cath
Messages postés
25298
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
5 476
... suite avec une autre option, les contraintes sont les mêmes, mais celle ci peut ressortir les références si elles ne sont pas num:
avec les mêmes données que message précédent:
=INDEX('feuil1'!$C:$C;EQUIV($A1&$B1;'feuil1'!$A:$A&'feuil1'!$B:$B;0))
cette formule est matricielle et doit être entrée avec la touche enter en maintenant les touches ctrl et shift enfoncées.
(elle doit se retrouver automatiquement entre accolades dans la barre de formule.
Vous pouvez éditer ainsi n'importe quel champ de votre base de données en modifiant le champ de INDEX($C:$C dans l'exemple)
attention aux blocages $ si vous copiez la formule.
crdlmnt
Ahhhh ! Merci, merci, merci !

Et merci aussi à Mytå qui a parlé de la SOMMEPROD.

Ta première proposition fonctionne parfaitement et j'ai réglé le problème de la référence qui m'affiche un 0 par une mise en forme conditionnelle, comme ça, quand j'aurai les références, elles réapparaîtront toute seules.

Merci pour le pas à pas qui m'a bien aidée à adapter mes formules à mon cas.

Cordialement

Cath
Messages postés
25298
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
5 476
Pas de quoi, c'est, comme vous le faites, bien sur Mita qu'il faut remercier.

Petite info:
si vous ne voulez pas du tout d'affichage de 0 dans votre feuille, vous pouvez éviter la MFC avec: Clic sur logo Microsoft en haut à gauche / option excel en bas de la fenêtre
à gauche: "options avancées"
et cherchez dans liste la ligne :"afficher un 0 quand la cellule à une valeur nulle " et décochez la.
vous ne verrez plus de 0

si excel avant 2007: même chose mais barre d'outil / option onglet affichage
crdlmnt
Oui, c'est vrai, je connais le truc également.

Merci encore.

Cath
Un petit plus serait d'effacer les données déjà affichées grâce à la liste déroulante des produits lorsque je change de fournisseur dans la liste déroulante de départ, est-ce que par hasard, tu aurais une idée ?

Cath
Messages postés
25298
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
5 476
Re

Clic droit sur le nom de l'onglet concerné
choisir :"visualiser le code"

coller ce texte dans la fenêtre affichée et l'adapter à votre tableau

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim Rw As Long
If Target.Column = 1 Then
Rw = Target.Row
Range("B" & Rw, "C" & Rw).Select
Selection.ClearContents
End If
End Sub



ce code effacera les cellules B et C de la ligne où vous entrez une valeur en colonne A

adaptation:
ligne:
If Target.Column = 1 Then
modifier le 1 et placer le N° de colonne de la feuille où vous entrez la donnée

ligne
Range("B" & Rw, "C" & Rw).Select
placer entre les parenthèses les codes colonnes suivi de &rw pour toutes les cellules à effacer sur la ligne, en séparant chaque adresse par une virgule.

bonne chance

crdlmnt



Yessssss !

Un tout dernier truc : quelle phrase dois-je inclure pour que les cellules ne restent pas sélectionnées.

Je sais, j'abuse ;-).

En tout cas, un immense merci à toi.

cath
Messages postés
25298
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
19 septembre 2020
5 476
Mais non, voyons!

Range("A11").Select

, juste en dessus de End If ou entre End if et End sub
vous irez ainsi dans la cellule A11

Au plaisir
C'est exactement ça et grâce à ton aide, j'ai finalisé mon bon de commande, je t'en remercie infiniment.

Cordialement

Cath
Messages postés
2966
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
802
Salut le forum

En évitant simplement les Select
Private Sub Worksheet_Change(ByVal Target As Range) 
  If Target.Address = "$A$11" Then 
    Range("D18:D55,I18:I55").ClearContents 
  End If 
End Sub

Mytå
Salut Mytå,

Encore plus simple !
Merci beaucoup à toi aussi pour ton aide.

Cordialement

Cath