Liste déroulante à simplifier deux fois
Aurore
-
Raymond PENTIER Messages postés 71867 Date d'inscription Statut Contributeur Dernière intervention -
Raymond PENTIER Messages postés 71867 Date d'inscription Statut Contributeur Dernière intervention -
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,
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,
A voir également:
- Liste déroulante à simplifier deux fois
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Comment faire deux colonnes sur word - Guide
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
3 réponses
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
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
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.
* 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.
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.
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.
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,
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,
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
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