Recherchv depuis Userform

jedemenage

XLDnaute Nouveau
Bonjour,

Je souhaite, depuis un userform, "captionner" un label d'après une recherche établie sur des données d'une feuille.

J'ai écris l'équivalent de cela (pour exemple) :


Private sub Userform_Activate()


Msgbox Application.Recherchv(NomUserForm.NomTextBox.Value, Sheets("NomFeuille").Rang("A1:E100"), 2, False)




En lançant le code, j'obtiens un message d'erreur comme suit :

"Erreur d'exécution '438': Propriété ou méthode non gérée par cet objet


Ensuite, en mode débogage, la ligne de code en jaune produit les effets suivants.
Si je me positionne sur la chaîne :
"NomUserForm.NomTextBox.Value", j'affiche bien la valeur de la TextBox,
"False", j'affiche False=Faux
"Sheets..." etc., rien du tout.


En annexe, j'ai fait un petit exemple de ce qui ne marche pas.


Etant au travail, je ne pourrai pas downloader en retour le fichier : serait-il envisageable de bénéficier de vos conseils avec le texte du code dans le message de réponse, svp ?


Question subsidiaire : est-it possible de faire ce type de recherche dans une table (zone nommée, comme dans l'exemple "Table_ABCD", plutôt que de déclarer la zone elle-même (A1:E100) ?

P.S. : J'ai découvert hier les "WIKI" de MichelXld (mieux vaut tard que jamais...) : déjà que je trouvais la tenue du forum, son contenu et les interventions des forumeurs remarquables, je dis : MERCI, MERCI, et MERCI. Et également BRAVO !)
 

Pièces jointes

  • Recherchev_USF.xls
    31 KB · Affichages: 69
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Recherchv depuis Userform

Bonjour,

"recherchev" n'existe pas en vba, il faut utiliser "Application.VLookup" avec tous les arguments qui vont bien....

sinon la méthode "find" s'applique parfaitement :

Code:
Dim x As Range
Set x = Sheets("Données").Range("B2:B11").Find(TextBox1.Value, , xlValues, xlWhole, , , False)
If Not x Is Nothing Then Label1.Caption = x.Offset(0, 1).Value

en supposant que tu renseignes dans la "tesxtbox" une valeur présente dans la colonne b, te renverra la valeur de la colonne c dans le "label"... A adapter à ton projet...

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Recherchv depuis Userform

Re,

Pour info, le code ci-dessous fonctionne chez moi, placé dans le module de l'usf, effectue la recherche de la valeur de "textbox1" dans la plage A1:B5 et renvoie dans le label la valeur de la cellule adjacante... Attention la recherche doit aboutir, sinon vba renvoie un message d'erreur...i

Code:
Private Sub CommandButton1_Click()
Label1.Caption = Application.VLookup(TextBox1.Value, Sheets("Feuil1").Range("A1:B5"), 2, 0)
End Sub

bon après midi
@+
 

jedemenage

XLDnaute Nouveau
Re : Recherchv depuis Userform

Merci pour ces précisions.

En ce qui concerne la solution "DIM... etc.", je rencontre la difficulté décrite dans le fichier annexé.


Je pense qu'il s'agit d'un type de classement de la colonne de références, mais je ne trouve pas la solution.

Alors, je dis : AU SECOURS (svp) :)
 

Pièces jointes

  • Recherchev_USF_2.xls
    47.5 KB · Affichages: 61

Pierrot93

XLDnaute Barbatruc
Re : Recherchv depuis Userform

Re

A noter tout de même,, A priori la recherche devrait plutôt s'effectuer sur la plage A2 A16 :

Code:
Set x = Sheets("Données").Range("A2:A16").Find(TextBox1.Value, , xlValues, xlWhole, , , False)
 

jedemenage

XLDnaute Nouveau
Re : Recherchv depuis Userform

OK, j'ai corrigé la zone de recherche (j'ai pensé qu'il fallait sélectionner la colonne des références à chercher ET les colonnes des données).



Pour mon problème :

Si la recheche est faite avec des chiffres autres que ceux mis en évidence en bleu, dans la feuille (mais qui font partie de la liste indiquée dans le USF), ça marche.

Dès que la recherche se fait sur l'une des valeurs mises en évidence en bleu, ça ne renvoie plus rien...

En résumé, les COINGS, PECHES, PRUNES, MANGUES et ANANAS ne peuvent jamais s'afficher.


?? Je n'arrive pas à comprendre pourquoi ??
 

Pierrot93

XLDnaute Barbatruc
Re : Recherchv depuis Userform

Re,

dans le fichier joint, si je tape 151 j'ai bien "COINGS" de renvoyé...

code utilisé :
Code:
Private Sub CommandButton1_Click()
Dim x As Range
Set x = Sheets("Données").Range("A2:A16").Find(TextBox1.Value, , xlValues, xlWhole, , , False)
Label1.Caption = "?"
If Not x Is Nothing Then Label1.Caption = x.Offset(0, 2).Value
End Sub
 

jedemenage

XLDnaute Nouveau
Re : Recherchv depuis Userform

ça m'en bouche un...

Avec ce même fichier, si je saisis 151 ou 155 ou 203 ou 211 ou 998, je n'obtiens pas de valeurs (sur 2 PC différents) :confused:

Est-ce que je serais le seul à ne pas pouvoir faire fonctionner le code ?

Y aurait-il une configuration particulière qui pourrait expliquer ce dysfonctionnement (chez moi) ?
 

jedemenage

XLDnaute Nouveau
Re : Recherchv depuis Userform

Pfffff ! Je dois me fatiguer, et fatiguer les autres...

J'ai fait un copier-coller de ton code et... ça marche !

Désolé de t'avoir fait perdre du temps. J'ai dû faire une fausse manipulation, ou me croiser les yeux.

Merci encore pour ton aide précieuse.


Bonne fin de journée.
 

jedemenage

XLDnaute Nouveau
Re : Recherchv depuis Userform

A chaque jour, sa peine. :(

Bonjour.

Pierrot93 : j'ai fait l'essai avec VlookUp, sans succès (plantage). Et pourtant, j'ai bien copié ton code, avec adaptation nécessaire.

Encore un petit coup de pouce, c'est possible ?

A toutes fins utiles : Excel 2003 (11.8231.8221) SP3
 

Pièces jointes

  • Recherchev_USF_3.xls
    48.5 KB · Affichages: 88

Pierrot93

XLDnaute Barbatruc
Re : Recherchv depuis Userform

Bonjour,

essaye ainsi :

Code:
Private Sub CommandButton3_Click()
Label1.Caption = Application.VLookup([COLOR="blue"][B]CDbl[/B][/COLOR](TextBox1.Value), Sheets("Données").Range("A2:B16"), [B][COLOR="Blue"]2[/COLOR][/B], 0)
End Sub

bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 602
Membres
104 224
dernier inscrit
Brilma