Comparer la valeur d'une textbox aux valeur d'une colonne V2

MaximeRoth

XLDnaute Junior
Bonjour,

Je souhaiterai faire une interface VBA pour une inscription dans une base de donnée.
Pour faciliter et optimiser l'utilisation de cette interface, je souhaiterai faire un auto-remplissage de certaines textbox.
En effet certaines valeurs de textbox dépendraient de la valeur de la première textbox.
Pour cela j'ai utilisé la recherche vertical pour faire des croisements dans un tableau avec la valeur de la textbox et les valeurs associées.
Code:
With Sheets("Numero_de_Serie")

If TextBox1.Value = "" Then
MsgBox "Entrez un code svp", , "Erreur"

ElseIf TextBox1.Value = WorksheetFunction.VLookup(TextBox1.Value, Sheets("Base_Article").Range("B3:B32"), 1, False) Then
TextBox2.Value = WorksheetFunction.VLookup(TextBox1.Value, Sheets("Base_Article").Range("B3: D32"), 2, False)

ElseIf TextBox1.Value <> WorksheetFunction.VLookup(TextBox1.Value, Sheets("Base_Article").Range("B3:B32"), 1, False) Then
MsgBox "Code non reconnu", , "Erreur"

End If

Ce code marche très bien dans la cas ou la valeur de la textbox1 correspond à une des valeurs de la colonne B ou quand la textbox1 est vide. Le seul problème est lorsque ma valeur ne correspond à aucune valeur dans la colonne B mon programme plante car il ne peut pas lancer de recherche vu que la valeur ne correspond à aucune valeur.

J'ai donc pensé à faire une pré-étape visant à déterminer si la valeur de la textbox 1 correspond à une valeur de la colonne B. Mais je n'ai aucune idée de quelle fonction utiliser. Auriez vous une idée ?

Je suis débutant sous Excel donc ma méthode n'est peut être pas la plus adaptée, si vous avez une autre idée je suis preneur.

Merci d'avance

Max
 

MaximeRoth

XLDnaute Junior
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Merci pour ta réponse.
Je dois être demeuré car depuis toute à l'heure je cherche un topic pouvant m'aider avec la méthode Find et pas moyen de trouver quelque chose qui m'aide. Aurais tu un lien m'expliquant ce que cette fonction fait, ou me l'expliquer brièvement ?
Max
 

MaximeRoth

XLDnaute Junior
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Merci je n'avais absolument pas pensé à regarder l'aide fournie par VBA :p
Si je peux me permettre une autre question, car maintenant je vois ce que fait la fonction find.
J'ai du mal à voir la mise en forme.
En effet malgré l'aide je n'arrive pas à savoir à quoi sert le terme "object".
Et pour utiliser les réponse, je peux utilisé un:
"If true
Elseif false" ?
 

MaximeRoth

XLDnaute Junior
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Merci c'est en effet beaucoup plus claire avec un exemple concret :)
Cependant mon programme plante encore voici le code:

Code:
With Sheets("Base_Article")
Dim x As Range

Set x = Value.Find(TextBox1.Value, 3, 2, 32, 2)

If x Is Nothing Then
    MsgBox "Code non reconnu", , "Erreur"
ElseIf TextBox1.Value = "" Then
    MsgBox "Entré un code svp", , "Erreur"
Else
    TextBox2.Value = WorksheetFunction.VLookup(TextBox1.Value, Sheets("Base_Article").Range("B3: D32"), 2, False)
End If

End With

Il me dis qu'un objet est requis.
 

Pierrot93

XLDnaute Barbatruc
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Re,

A la place de "TextBox2.Value = WorksheetFunction.VLookup(TextBox1.Value, Sheets("Base_Article").Range("B3: D32"), 2, False)" utilise également la méthode "find"...

je mettrais peut être ce test en tout premier :
Code:
If TextBox1.Value = "" Then    MsgBox "Entré un code svp", , "Erreur" : Exit Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Re,

préciser la plage dans laquelle la recherche doit être faite...
Code:
Set x = Sheets("NomFeuille").Cells.Find(TextBox1.Value, 3, 2, 32, 2)

pas sûr que les arguments soient les bons...
Code:
3, 2, 32, 2
.... regarde l'exemple et l'aide vba te fournira les arguments adéquats...
 

MaximeRoth

XLDnaute Junior
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

J'ai précisé la feuille de recherche:
Code:
Set x = Sheets("Base_Article").Value.Find("TextBox1.Value", 3, 2, 32, 2)
Ça ne marche toujours pas,
J'ai essayé avec .value (avant le .find) j'ai ce message : "Propriété ou méthode non géré par cet objet"
et .cells : "Incompatibilité de type"
En faite je ne vois pas quel est le rôle de l'object
 

Pierrot93

XLDnaute Barbatruc
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Re,

Code:
Dim x As Range
Set x = Sheets("NomFeuille").Cells.Find(TextBox1.Value, , xlValues, xlWhole, , , False)

pour un textbox placé sur un userform, le code dans le module de ce même userform....
 

MaximeRoth

XLDnaute Junior
Re : Comparer la valeur d'une textbox aux valeur d'une colonne V2

Merci ce code fonctionne très bien.
Cependant je ne comprend pas pourquoi le mien ne fonctionnait pas:
Je souhaitais faire une recherche de la ligne 3 à 32 et ce dans la colonne 2.
D'où le :
Code:
Set x = Sheets("Base_Article").Cells.Find("TextBox1.Value", 3, 2, 32, 2)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16