Liste déroulante à simplifier deux fois

Fermé
Aurore - 30 mai 2012 à 17:51
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 - 13 juin 2012 à 14:58
Bonjour,

Je ne suis pas une professionnelle d'Excel, mais pour mon usage personnel, j'aimerais créer un programme qui me permet de simplifier une liste déroulante au maximum grâce à deux variables.
Je m'explique. Par exemple, admettons que :

J'ai une liste "Produit" composée de "Fruit" et de "Légume"
J'ai une liste "Gout" composée de "Sucré", "Amer", "Acide" ...

Et enfin, j'ai une liste de tous les fruits et les légumes qui existent.

Par exemple, si je choisis "Fruit" et "Sucré" j'aimerais que la liste déroulante m'affiche que les fruits sucrés, et non pas "courgette", "salade"...

J'ai essayé de faire avec la fonction "INDIRECT" mais je n'arrive pas à inclure la deuxième variable pour qu'elle influe dans le choix final.

Merci d'avance,

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 mai 2012 à 18:01
Bonsoir Aurore
un petit tuto qui montre que l'on peut utiliser INDIRECT en cascade, ,il suffit de nommer correctement les listes.
revenez si ça ne convient pas.
https://www.cjoint.com/?BEEr7Fau5rs
Crdlmnt
0
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
31 mai 2012 à 02:57
Bonjour.
* 1) Définir un nom pour les plages et cellules :
Plage A2:A3 nommée "Produit" __________ Cellule A18 nommée "ProduitX"
Plage B2:B5 nommée "Goût" ____________ Cellule B18 nommée "GoûtX"
Plage C2:C11 nommée "Liste" ___________ Cellule D18 nommée "Code"
Plage C2:D11 nommée "Matrice" _________ Plage E2:E11 nommée "Tri"
* 2) Remplir D2:D11 avec les codes :
FAc pour fruit acide _________ LAc pour légume acide
FAm pour fruit amer _____.___ LAm pour légume amer
FFa pour fruit fade __________ LFa pour légume fade
FSu pour fruit sucré _________ LSu pour légume sucré
* 3) Ecrire les formules :
En E2:E11 saisir =SI(D:D=Code;C:C;"")
En D18 saisir =GAUCHE(ProduitX;1)&GAUCHE(GoûtX;2)
* 4) Insérer les validations de données avec "Autoriser liste" et la source :
=Produit en A18 ; =Goût en B18 ; =Tri en C18*
5) Utiliser les listes déroulantes en A18 et B18 ; constater que le code en D18 est correct ; utiliser la liste déroulante en C18 pour choisir parmi les produits triés.
0
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
31 mai 2012 à 03:11
Voici le fichier qui m'a permis de rédiger ma réponse :
https://www.cjoint.com/?BEFdhyWElGZ
https://www.cjoint.com/?BEFdifWAPqg

J'espère qu'un autre membre du forum complétera mon fichier en optimisant la plage Tri pour que les items soient accolés.
0
Bonjour à tous,

Merci beaucoup pour toutes vos réponses!! J'ai pu faire ma liste déroulante! Ça me simplifie la vie!!
J'aurais encore une petite requête, j'ai fait mes 3 listes déroulantes avec les deux simplifications.
Est ce qu'il serait possible de supprimer tous les anciens choix lorsque par exemple je change la liste "Produit".

Un petit exemple pour mieux comprendre.

Dans un premier temps, je choisis dans produit "fruit", dans gout "sucré", et là il me sort un liste avec abricot, ... et je sélectionne abricot.

Ensuite, je veux modifier gout, je choisis "acide", là ça me change la liste de choix, jusqu'ici tout va bien.
Par contre, j'ai la bonne liste de choix, mais il reste toujours affiché "Abricot" en en-tête.

De même, si j'avais sélectionné "fruit", "sucré", et "abricot" et que je veux changer "fruit" en "légume", les listes changent, mais pas les en-tête, donc je vois "légume", "sucré" "abricot".

Je ne sais pas si j'ai été assez claire, mais comme je retraite les informations par la suite, cela va me donner des erreurs dans le programme donc j'aimerais savoir si il y a pas une petite macro ou une fonction capable de résoudre mon problème.

Merci d'avance,
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié par Vaucluse le 13/06/2012 à 10:27
Il n'y a qu'une solution, passez par une macro pour effacer la cellule où est placée la validation secondaire:
par exemple, vous allez dans l'onglet. clic droit sur le nom d'onglet/ visualiser le code et vous coller ça (merci Eriiic..)dans la fenêtre VBA affichée:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Union([B3], [B3], Range("B3:B3"))) Is Nothing Then Exit Sub
Range("C3:G3,I3:M3").Select
Selection.ClearContents
ActiveSheet.Protect
End Sub



en remplaçant toutes les valeurs de B3 qui deviennent l'adresse de la cellule 1 et la valeur de la ligne Range ou vous mettez entre parenthèse et entre guillemets l'adresse de la cellule à effacer

Note: cette option n'est valable que si vous n'avez dans la feuille qu'une cellule initiale à traiter. Sinon revenez, mais avec un modéle de votre feuille et la localisation des champs nécessitant une intervention de ce genre.

crdlmnt
0
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
13 juin 2012 à 14:58
... et sans macro, il suffit d'effacer le contenu de B18 et C18 avant de relancer un choix !
Mais d'habitude tout le monde se contente de renseigner A18, B18 et C18 et de lire le résultat : on ne s'arrête pas en chemin !
0