Après avoir cherché sur le forum, je ne comprends pas pourquoi cela ne marche pas.
Dans le fichier ci-joint, j'ai un userform contenant le label1 et une textbox1. J'ai écris du code pour qu'après avoir saisi un chiffre dans ma textbox1 (afterupdate) il y ait une rechercheV qui s'effectue pour retrouver un nom de fruit dans mon label. Le problème étant que ça plante.
Private Sub TextBox1_AfterUpdate()
Dim r As Range
Set r = Sheets("feuil1").Range("E4:F8").Find(Me.TextBox1.Value, , xlValues, xlWhole)
If Not r Is Nothing Then
Me.Label1.Caption = r.Offset(0, 1).Value
Else
Me.Label1.Caption = ""
End If
End Sub
J'ai utilisé la soluce de pierrejean et après quelques bidouilles cela marche.
Une question pour ma culture perso, pourquoi ne sert t-on pas de la fonction Vlookup ?
J'aurais tendance à dire que c'est une question de vitesse d'exécution. Mais aussi que la Fonction VlookUp est pratique dans le tableur car elle s'actualise au recalcul. Dans ton cas, tu récupères dans un Label puis quand tu ferme l'UserForm s'est fini... Mais PierreJean te donnera peut-être d'autres arguments.
Recherchev et Vlookup, c'est pareil (l'un en Formule et l'autre en VBA).
Mais Recherchev n'est pas toujours pratique (quoique je m'en sers de plus en plus), sauf à avoir ce qu'on recherche à droite du tableau. Donc Find ou Match semble plus approprié pour rechercher n'importe quoi sur une feuille.