Recherche par textbox

Bonjour le forum,

Je reviens vers vous car je n'arrive pas à lancer une recherche à l'aide d'une txtbox dans un UserForm. Je voudrais que quand je tape une lettre dans la textbox1 alors la textbox2 me retourne le numéro a lequel la lettre appartient dans le tableau. Voici un petit test que j'ai fait mais sans succès :

Private Sub TextBox1_Change()
Dim Lettre As String, Prenom As String

Lettre = Feuil1.Range("C3") + 1
Prenom = Feuil1.Cells(Lettre, 1)

If Me.TextBox1 = Feuil1.Range("C3") + 1 Then
Me.TextBox2 = Prenom
Else
MsgBox "Cette lettre n'existe pas dans la bdd", vbCritical + vbOKOnly, "Erreur"
End If
End Sub

Merci encore pour votre aide.

3test3.xlsm (23.76 Ko)

Cordialement,

Bonjour,

Voici une proposition:

Private Sub TextBox1_Change()
Dim tabRecherche As Variant
Dim ligTrouve As Integer

'exécuté quoi qu'il arrive
TextBox2 = ""
If TextBox1 = "" Then Exit Sub

'exécuté uniquement si Textbox1 n'est pas vide
tabRecherche = Range("C3").CurrentRegion.Value

'recherche de la lettre sans respecter la case
For i = 2 To UBound(tabRecherche, 1)
    If LCase(tabRecherche(i, 1)) = LCase(TextBox1) Then
        ligTrouve = i
        Exit For
    End If
Next i

If ligTrouve > 0 Then
    TextBox2 = tabRecherche(ligTrouve, 2)
Else
    MsgBox "Cette lettre n'existe pas dans la bdd", vbCritical + vbOKOnly, "Erreur"
End If
End Sub

Bonjour Ausecour,

Alors franchement tu m'épate, le code fonctionne très bien. Je vais essayer bien évidement de comprendre comme tu as fais. Je reviendrais vers toi si jamais il y a certaines lignes que je ne comprend pas. Merci encore.

Cldt,

Pas de souci, bon courage pour la compréhension du code, merci à toi d'avoir passé le sujet en résolu

Ausecour,

J'ai modifier le code pour le mettre sur mon fichier réel. Mais le problème c'est qu'il me dit que la variable i n'est pas définit, c'est normal?

je me dit que c'est peut-être paracerque le tableau est sur une autre feuille (6).

Voici la modification que j'ai fais :

Private Sub txt_PeauComposants_Change()
Dim tabRecherche As Variant
Dim ligTrouve As Integer

'exécuté quoi qu'il arrive
Me.txt_PeauComposants2 = ""
If Me.txt_PeauComposants = "" Then Exit Sub

'exécuté uniquement si Textbox1 n'est pas vide
tabRecherche = Feuil6.Range("J1").CurrentRegion.Value

'recherche de la lettre sans respecter la case
For i = 2 To UBound(tabRecherche, 1)
    If LCase(tabRecherche(i, 1)) = LCase(Me.txt_PeauComposants) Then
        ligTrouve = i
        Exit For
    End If
Next i

If ligTrouve > 0 Then
    Me.txt_PeauComposants2 = tabRecherche(ligTrouve, 2)
Else
    MsgBox "Cette lettre n'existe pas dans la bdd", vbCritical + vbOKOnly, "Erreur"
End If
End Sub

Merci encore.

édit: j'avais mis le Option explicit

Bonjour,

En effet Option Explicit demande de déclarer toutes les variables utilisées, y compris les variables de boucles, ce que je trouve très pénible donc je code toujours sans utiliser cette option , si le fichier est très long (plus de 30 000 lignes), il faudra passer la variable de boucle ainsi que la variable "ligTrouve" au type Long (permet d'avoir des valeurs de lignes plus grandes comme 40 000).

Rechercher des sujets similaires à "recherche textbox"