VBA retourner une valeur correspondante par recherche

Bonjour

J’ai une liste d’éléments de deux colonnes, A et B

de A3 à A6 : des numéros : 1 2 3 4

De B3 à B6 : des noms... par exemple : bonjour, bonsoir, salut, aurevoir

Comment faire si je tape une valeur en A1 (exemple : 3) appuyer sur enter, avoir un message qui m’affiche la donnée correspondante en B ? (Boite de texte indiquant « salut », car salut est à droite de 3...)

Idem si je tape 1 = bonjour, 2 = bonsoir.. etc.

Je n’ai pas de fichier (même bidon) vu l’heure (sorry: 00:30)... En revanche, vous pouvez bien sûr créer un doc bidon de 5 6 lignes sur 2 colonnes pour voir comment vous codez cela et le partager.

Je privilégie du vba, car mon fichier est susceptible de faire plus de 200-300 lignes avec données confidentielles.

Je fais donc une demande plus « pédagogique » afin de comprendre le raisonnement et de l’adapter au fichier que j’ai et apprendre le raisonnement VBA en fonction de mes différents besoins.

Merci beaucoup pour votre partage de trucs et astuces. :-)

PS : c’est bien en appuyant sur ENTER (à droite du clavier numérique) ou le saut de ligne (en dessous de la barre pour supprimer du texte) qui enclenche le résultat (boite de message).

Lucrob

Je n’ai pas de fichier (même bidon) vu l’heure (sorry: 00:30)... En revanche, vous pouvez bien sûr créer un doc bidon de 5 6 lignes sur 2 colonnes pour voir comment vous codez cela et le partager.

drôle de façon de demander de l'aide...

Bonjour,

Macro évènementielle à copier dans le module de la feuille, est activée lors de la saisie d'une valeur en A1.

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Sortie
    If Target.Address = "$A$1" Then
        Plage = "A3:B" & Range("A" & Rows.Count).End(xlUp).Row
        Texte = Application.WorksheetFunction.VLookup(Target, Range(Plage), 2, 0)
        MsgBox Texte
    End If
Sortie:
End Sub

Cdlt

Merci Arturo, cela fonctionne

J'imagine que si je veux l'appliquer sur plusieurs colonnes, je n'ai qu'à rajouter les coordonnées des plages et modifier texte en texte1, texte2... etc en fonction de mes colonnes

Bonne journée

"J'imagine que si je veux l'appliquer sur plusieurs colonnes, je n'ai qu'à rajouter les coordonnées des plages et modifier texte en texte1, texte2... etc en fonction de mes colonnes"

Oui , si la plage s'étend jusqu'à la colonne F, ce sera:

Plage = "A3:F" & Range("A" & Rows.Count).End(xlUp).Row

et dans :

Texte = Application.WorksheetFunction.VLookup(Target, Range(Plage), 2, 0)

remplacer la valeur 2 par le n° de la colonne contenant la valeur recherchée.

Cdlt

J’évoquais plutot:

AB (formule ci-dessus)

DE

GH

Etc etc

Pour si j’ai bien compris pour DE

ce sera if.target = D1

=plage = D3:E ,

range sera E & rows.count

Et à la place de « texte » =

j’indique texte1 , la même formule que « texte », sauf que je change le 2 (colonne b) en 5 (colonne E), le 0 reste le même (valeur exacte)

Et msgbox = texte1.

Le plus simple c'est de faire des essais pour voir si cela correspond bien à ce que vous voulez.

Rechercher des sujets similaires à "vba retourner valeur correspondante recherche"