Fonction recherche

Bonjour

je vous sollicite pour savoir si cela est possible

Dans mon User lorsque la case recherche est sélectionné seul 5 case sont enabled.

est-il possible que si un utilisateur commence a écrire dedans (peut importe laquelle)cela se remplisse automatiquement (la case) s'il y a une correspondance avec le tableau excel, que cela sélectionne la ligne dans la liste des dossier à droite et donc que cela remplisse tout le reste du user?

merci de votre aide

Bonjour Tihneeos, bonjour le forum,

Désolé, mais j'ai réorganisé ton code car j'avoue que sinon j'y passe des heures à chercher... j'ai aussi attribué à chaque contrôle renvoyant des données une lettre dans la propriété [Tag] de ce contrôle, correspondant à la colonne où sa valeur est renvoyée***.

Deux soucis :

• Le numéro de facture "97A1905798" n'a pas été trouvé initialement car dans la cellule Q2 il y avait "97A1905798 " (avec un espace à la fin). J'ai corrigé...

• quand on tape le numéro de devis "DE4277" seule la ligne 5 est sélectionnée pas la ligne 9 car elles ont le même numéros. Peut-être faudrait des Comboboxes et non des Textboxes pour ces deux contrôle.

Un proposition dans la propriété [AfterUptade] des textboxes vertes. Exemple :

Private Sub TextBox6_AfterUpdate()
Dim COL As String 'déclare la variable COL
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)

If opboutton_recherche.Value = True Then
    COL = Me.TextBox6.Tag
    TV = Application.Intersect(Range("listedossier"), Sheets("sinistre").Columns(COL & ":" & COL))
    For I = 1 To UBound(TV, 1)
        If Me.TextBox6.Value = CStr(TV(I, 1)) Then Me.lstdossier.ListIndex = I - 1: Exit For
    Next I
End If
End Sub

Ton fichier modifié :

12tihneeos-ep-v01.xlsm (108.72 Ko)

***Peut aussi servir quand tu récupères les données d'excel pour les mettre dans les contrôle ou quand tu renvoies les données de l'UserForm dans le tableau Excel avec un code du Style :

Dim CTRL As Control
Dim LI As Integer

LI = 10 'ici le code qui permet de définit la ligne
For Each CTRL In Me.Controls
    CTRL.Value = Sheets("sinistre").Cells(LI, CTRL.Tag).Value
Next CTRL

Pour récupérer ou :

Dim CTRl As Control
Dim LI As Integer

LI = 10 'ici le code qui permet de définit la ligne
For Each CTRl In Me.Controls
    Sheets("sinistre").Cells(LI, CTRl.Tag).Value = CTRl.Value
Next CTRl

pour renvoyer.

Salut

et encore merci d'avoir pris le temps de regardé, navré pour le code, je n'ai pas les bases pour structurer mon code.

pour ce qui est des doublons il s'agit d'une erreur de saisie ou a lors j'ai une erreur de textbox qui copie sur 2 cases en même temps,ça je verrais.

ton code marche parfaitement je vais essayer de le mixer avec un bout de code d'auto complète trouvé entre temps sur le net.

encore un grand merci

Bonjour

juste pour ceux qui aurait besoin.

je demandais la possibilité de rechercher une valeur dans une tableau et forcer la sélection de la ligne dans la listbox correspondant.

avec l'aide de Thautheme et du net voici ce que cela donne

Fonction qui permet de remplir automatiquement la textbox en commençant à écrire dedans

Function autocomplete(entree As String) As String

Dim i As Long, j As Long, u As Long

For i = 2 To derlig
If InStr(UCase(tabEntree(i, 1)), UCase(entree)) > 0 Then j = j + 1: u = i
Next i

If j = 1 Then
autocomplete = tabEntree(u, 1)
End If

End Function

code de la textbox pour remplir la case avec la fonction du dessus + selection de la listbox + touche entrer forcer

j'ai mis les variables ici pour simplifier ce post

Private Sub TextBox6_Change()  'selon le N° de textbox
Dim COL As String 'déclare la variable COL
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim i As Integer 'déclare la variable I (Incrément)
Dim derlig As Long, dercol As Long
Dim tabEntree() As Variant
Dim LigneAss As Long

TextBox6.Text = UCase(TextBox6.Text) 'mettre en majuscule

derlig = ThisWorkbook.Sheets("sinistre").Range("L" & Rows.Count).End(xlUp).Row  'modifier la lettre du tableau
dercol = ThisWorkbook.Sheets("sinistre").Cells(2, Cells.Columns.Count).End(xlToLeft).Column

tabEntree = ThisWorkbook.Sheets("sinistre").Range(Cells(1, 12), Cells(derlig + 1, dercol)).Value 'modifier 12 qui correspond au chiffre de la lettre modifier au dessus

If TextBox6.Text <> "" And opboutton_recherche.Value = True Then
        If autocomplete(TextBox6.Text) <> TextBox6.Text And autocomplete(TextBox6.Text) <> "" Then
        TextBox6.Text = autocomplete(TextBox6.Text)
        SendKeys "{ENTER}" 'touche entrer simulé
    COL = Me.TextBox6.Tag
    TV = Application.Intersect(Range("listedossier"), Sheets("sinistre").Columns(COL & ":" & COL)) 
    For i = 1 To UBound(TV, 1)
        If Me.TextBox6.Value = CStr(TV(i, 1)) Then Me.lstdossier.ListIndex = i - 1: Exit For
    Next i

End If
    End If
End Sub

le tout visible dans le fichier (option recherche et remplir la 1ere case verte avec 339 par exemple remplissage auto en 33945) j'ai pas finis de mettre le code partout dans les autres cases vertes

Rechercher des sujets similaires à "fonction recherche"