Afficher le n° grâce au nom choisi dans une liste

Bonjour à tous,

Je cherche à donner à une cellule la valeur d'après le nom choisi dans une liste.

En Feuil1, j'ai de A6 à A11 des n°, et de B6 à B11 les noms correspondants.

En Feuil2, D4 affiche la liste des noms de la Feuil1.

Je voudrais savoir s'il est possible quand en Feuil2 D4 je sélectionne un nom, que son numéro s'affiche dans cette cellule D4.

Exemple, je sélectionne Joseph en Feuil2 D4, il faudrait qu'il s'affiche 1 dans cette cellule.

Je joins le fichier de travail en PJ. Il y a en Feuil2 tous mes essais de formules, mais entre les INDEX, EQUIV, DECALER, c'est moi qui suis maintenant complètement décalé

Merci d'avoir pris le temps de me lire

Cordialement

Joseph

261essai.zip (11.42 Ko)

=INDEX(Feuil1!$A:$A;EQUIV(Feuil2!D4;Feuil1!$B:$B;0))

Bonjour EngueEngue, le forum,

C'est une formule que j'avais déjà trouvée, mais elle ne permet pas d'afficher le n° dans la cellule D4 qui contient la liste.

La D4 en Feuil2 affiche la liste des noms de Feuil1. Quand je sélectionne un nom en D4, c'est son numéro que je veux en D4.

Je ne sais d'ailleurs même pas si ce que je demande est possible!

Merci pour ton aide...et si tu as une autre idée.

Par macro oui

Engue Engue, le forum,

Ce n'est pas comme qui dirait ce que je maîtrise le mieux.

Je vais essayer de trouver quelque chose.

Merci

Cordialement

Joseph

Tu dois faire une macro qui evaluera la formule sur l'évènement change de ta case D4...

un private sub worksheet_change

avec un if not intersect(target,range("D4") is nothing then

eval....

end if

Sauf que tu pourrais très bien faire que la cellule D4 dépénde de ce qui est écrit en D3... et mettre ce en D3 en couleur blanche pour ne pas que ça s'affiche ou masquer la cellule ...

Engue Engue, le forum,

Oui, bien sûr qu'il serait bien plus simple de faire référence à une autre cellule, sauf que je ne peux pas rajouter une autre colonne dans l'application réelle, qui est à la base de la création de dizaines de classeurs que je n'ai nulle envie de rectifier les uns après les autres.

D'un autre côté la zone de liste ne comprend que 8 à 10 noms. Il n'est donc pas si difficile de s'en rappeler les numéros. Je voulais juste un peu simplifier les choses.

Pour ce qui est de la macro, il faut qu'elle s'applique de D4 à D150 en vrai.

Merci du temps que tu as passé à me répondre.

Cordialement

Joseph

Fais une autre feuille dans laquelle tu feras ta selection... et place tes formules dans la cellule D4 la modification de tes listes fera que ces cellules se modifient, sinon comme je t'ai dit, macro évenmentielle. Ou alors autoriser les references circulaires avec un nombre d'itérations de 1

Je ne sais pas encore comment je vais faire, mais ce n'est plus pour aujourd'hui, parce que ma tête elle n'en peux plus. Je vais m'y remettre demain.

Par contre, chapeau. Je constate que tu es plein de ressources.

Cordialement

Joseph

Bonsoir,

A tester

341essai.xlsm (21.80 Ko)

nb: merci JB

Bonsoir Jean-Eric,

Pour ce soir, je n'en peux plus.

Mais dès demain je m'y remets et je te tiendrais au courant.

Merci pour ton aide

Cordialement

Joseph

Bonjour Engue Engue, Jean-Eric, le forum,

Très bien le fichier. C'est impeccable...sauf qu'il va me falloir disons, à la louche, le siècle qui vient pour comprendre.

On dirait que c'est la 1ere fois que je vois un code !!!

Je ne sais même pas comment faire dans le gestionnaire de noms pour avoir tblListe avec l'icone d'un tableau à gauche.

Dans le vrai fichier, la sélection se fait sur feuil2 dans les colonnes N6 à N154 et M6 à M154 et il faut rechercher dans la feuil1 le numéro dans la colonne A6 à A150 et le NOM Prénom dans la colonne E6 à E150.

Autant dire que...c'est pas gagné.

Mais de vifs remerciements sont de rigueur pour le mal que vous vous êtes donné.

Cordialement

Joseph

La macro evenementielle dont je t'avais parlé... Il suffit d'ajustertes ranges.

Cette macro est à mettre dans le code de ta feuil2

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("D4")) Is Nothing Then
Application.EnableEvents = False
target.value = Sheets("Feuil1").Range("B6:B12").Find(Target.Value).Offset(0, -1)
Application.EnableEvents = True
End If
End Sub

Traduit en langage simple:

Si le changement est dans le range D4 alors je désactive les évenements je vais chercher la valeur de D4 dans la feuille 1 dans les range B6àB12 et je prends la valeur de la cellule déplacée de 1 colonne vers la gauche et je la mets dans D4 puis je réactive les évenements.

Bonjour

En attendant, mise à jour.

121essai-v1.xlsm (22.02 Ko)

Bonjour EngueEngue, le forum,

Merci pour ta banalisation de cette macro.

Je me retrousse les neurones, et voyons si j'ai compris.

Pour me rapprocher du fichier réel, la zone de sélection s'étend de D4 à E10, et les donnés se trouvent sur feuil1 de A6 à A12 pour les n° et de C6 à C12 pour les noms.

La macro se transforme donc ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("D4:E10")) Is Nothing Then
Application.EnableEvents = False
Target.Value = Sheets("Feuil1").Range("C6:C12").Find(Target.Value).Offset(0, -2)
Application.EnableEvents = True
End If
End Sub

Et visiblement, ça FONCTIONNE !!!

Il ne me reste plus qu'à l'adapter au fichier réel et à vous réitérer mes remerciements. (et à remettre les neurones au repos !)

Cordialement

Joseph

Tout à fait.

If Not Intersect(Target, Range("D4:E10")) Is Nothing Then

Si l'intersection entre la cellule ou a lieu la modification et le range D4E10 n'est pas nulle alors

C'est à dire si la cellule ou a lieu la modification est comprise dans D4E10.

Des grands mots pour quelque chose de simple.

Bon travail d'adaptation. Bon repos aux neuronnes.

Bonjour,

Simple, en effet.

Enfin tout dépend pour qui.

Les explications ont en tout cas été claires, et la solution apportée.

Reste juste encore aux neurones à ne pas oublier de cocher "Résolu"

et à vous remercier tous.

Joseph

Rechercher des sujets similaires à "afficher nom choisi liste"