[Excel 2013] Liste déroulante avancée
Résolu/Fermé
NoobExcel
-
30 oct. 2014 à 14:44
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 oct. 2014 à 14:40
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 31 oct. 2014 à 14:40
A voir également:
- [Excel 2013] Liste déroulante avancée
- Liste déroulante excel - Guide
- Excel liste déroulante en cascade - Guide
- Word 2013 free download - Télécharger - Traitement de texte
- Excel 2013 gratuit - Télécharger - Tableur
- Powerpoint 2013 - Télécharger - Présentation
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
30 oct. 2014 à 15:17
30 oct. 2014 à 15:17
Bonjour,
Non, ce n'est pas possible.
Par contre, vous pouvez afficher ce numéro dans la cellule à côté.
Exemple :
en colonne A vos noms
en colonne B vos ID
en D2 : votre liste déroulante,
en E2 saisir la formule : =SI(D2="";"";RECHERCHEV(D2;A1:B1000;2;FAUX))
Non, ce n'est pas possible.
Par contre, vous pouvez afficher ce numéro dans la cellule à côté.
Exemple :
en colonne A vos noms
en colonne B vos ID
en D2 : votre liste déroulante,
en E2 saisir la formule : =SI(D2="";"";RECHERCHEV(D2;A1:B1000;2;FAUX))
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 oct. 2014 à 11:53
31 oct. 2014 à 11:53
Bon...
Clic droit sur l'onglet de la feuille concernée, copiez-collez ce code :
Et testez...
Clic droit sur l'onglet de la feuille concernée, copiez-collez ce code :
Private Sub Worksheet_Change(ByVal Target As Range) 'Limitation de l'exécution du code à la plage de cellules : D2:Dxxx If Target.Column <> 4 Or Target.Row < 2 Or Target = "" Or Target.Count > 1 Then Exit Sub Dim Trouve As Range Set Trouve = Range("A3:A23").Cells.Find(Target.Value) Application.EnableEvents = False If Not Trouve Is Nothing Then Target = Trouve.Offset(0, 1) Else Target = "Erreur" Application.EnableEvents = True End Sub
Et testez...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 oct. 2014 à 14:11
31 oct. 2014 à 14:11
Tu dois modifier cette macro. En effet elle utilise un événement de feuille : Worksheet_Change, événement unique à chaque feuille...
ok merci, dernière question, dans ce cas, les données et les listes sot sur la meme feuilles, tu as donc mis "A3:A23" pour la liste. Que mettre dans cette chaîne de caractère dans le cas où les données de la liste sont dans ue feuille à part ?
j'ai essayé "data!A3:A23" mais il y a une erreur sur la ligne.
j'ai essayé "data!A3:A23" mais il y a une erreur sur la ligne.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 31/10/2014 à 14:37
Modifié par pijaku le 31/10/2014 à 14:37
Remplacer :
Par :
Range("A3:A23")
Par :
Sheets("data").Range("A3:A23")
Merci de vos réponse, n'y a t'il pas un moyen de répondre à ma demande par le biais de macro ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 oct. 2014 à 07:53
31 oct. 2014 à 07:53
Salut,
Que veux tu que fasses la macro dans ce cas?
Un choix est-il définitif?
J'entends pas là, qu'une fois que ton choix est fait dans la validation de données, celle-ci est supprimée de la cellule et la valeur est remplacée par le chiffre. ça c'est faisable, mais est-ce bien ce que tu souhaites?
Que veux tu que fasses la macro dans ce cas?
Un choix est-il définitif?
J'entends pas là, qu'une fois que ton choix est fait dans la validation de données, celle-ci est supprimée de la cellule et la valeur est remplacée par le chiffre. ça c'est faisable, mais est-ce bien ce que tu souhaites?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 oct. 2014 à 08:45
31 oct. 2014 à 08:45
Deux choses :
1- tu ne réponds pas à ma question : Un choix est-il définitif?
2- Il va nous falloir un fichier de travail. Pour cela, anonymise ton fichier et transmet le nous :
1- tu ne réponds pas à ma question : Un choix est-il définitif?
2- Il va nous falloir un fichier de travail. Pour cela, anonymise ton fichier et transmet le nous :
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
1- Un choix n'est pas définitif
2 - voici mon fichier: http://www.cjoint.com/14oc/DJFkUwRXgAB.htm
A: nom de l'item
B: ID de l'item
D: liste déroulate
Le but est donc que les liste déroulantes (D) listent les items (A) mais que la case deviennent l'ID (B) après la sélection dans la liste.
Merci pour ton implication.
2 - voici mon fichier: http://www.cjoint.com/14oc/DJFkUwRXgAB.htm
A: nom de l'item
B: ID de l'item
D: liste déroulate
Le but est donc que les liste déroulantes (D) listent les items (A) mais que la case deviennent l'ID (B) après la sélection dans la liste.
Merci pour ton implication.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
31 oct. 2014 à 11:07
31 oct. 2014 à 11:07
Le but est donc que les liste déroulantes (D) listent les items (A) mais que la case deviennent l'ID (B) après la sélection dans la liste.
ça tout le monde l'aura compris. Mais comme le choix n'est pas définitif, tu souhaiterais que lorsque l'utilisateur clic à nouveau sur une des cellules, la liste de choix réapparaisse?
ça tout le monde l'aura compris. Mais comme le choix n'est pas définitif, tu souhaiterais que lorsque l'utilisateur clic à nouveau sur une des cellules, la liste de choix réapparaisse?
30 oct. 2014 à 15:20
Si en colonne A vous avez les ID et en colonne B les noms, la recherchev ne fonctionnera pas.
Dans ce cas, en E2, utilisez la formule :
=SI(D2="";"";INDEX(A1:B21;EQUIV(D2;B1:B21;0);1))