Salut,
J'ai résolu le problème sous VB en 2 étapes :
1/ Lorsque tu initialises ton combo avec tes données, tu rajoutes dans le tag l'information sur laquelle tu feras ta recherche. Dans l'exemple, c'est sur le nom de l'imprimante :
'=== Init du combo ===================
Dim sSqlPrinters As String
Dim CboPrinters As ComboItem
Dim lngCpt As Long
lngCpt = 1
sSqlPrinters = "SELECT * FROM PRINTERS WHERE PRINTERS.BOODELETE = 0 ORDER BY PRINTERS.NOMPRINTERS;"
Set rsPRINTERS = New ADODB.Recordset
rsPRINTERS.Open sSqlPrinters, cnx, adOpenForwardOnly, adLockReadOnly
ImgCboPrinters.ComboItems.Clear
Do While Not rsPRINTERS.EOF
Set CboPrinters = ImgCboPrinters.ComboItems.Add(, "P" & rsPRINTERS("IPRINTERS"), rsPRINTERS("NOMPRINTERS"))
ImgCboPrinters.ComboItems.Item(lngCpt).Tag = rsPRINTERS("NOMPRINTERS")
lngCpt = lngCpt + 1
rsPRINTERS.MoveNext
Loop
If rsPRINTERS.State = 1 Then rsPRINTERS.Close
'================================
2/Ensuite, sur le "KeyUp" de ton combo(important de le mettre sur le KeyUp, sinon il a toujours une lettre de retard si tu utilises le "KeyPress"), tu rajoutes le code suivant qui fait appel à une fonction(dans mon cas, c'est ce que j'ai fais car je m'en sert une dizaine de fois!) où tu passes en paramètres le texte saisi et le nom de ton form
'======================
Private Sub ImgCboPrinters_KeyUp(KeyCode As Integer, Shift As Integer)
CherchePrinters ImgCboPrinters.Text, FICHECOPIESPRINT
End Sub
'=======================
Et voici la fonction miracle :
'=======================
Public Function CherchePrinters(strCleRecherche As String, frmNomForm As Form)
Dim lngCle As Long
Dim lngCpt As Long
Dim lngNb As Long
Dim CboPrinters As ComboItem
lngCpt = 1
For Each CboPrinters In frmNomForm.ImgCboPrinters.ComboItems
lngNb = Len(strCleRecherche)
If Mid(frmNomForm.ImgCboPrinters.ComboItems.Item(lngCpt).Tag, 1, lngNb) = strCleRecherche Then
lngCle = Mid(CboPrinters.Key, 2)
Set frmNomForm.ImgCboPrinters.SelectedItem = frmNomForm.ImgCboPrinters.ComboItems("P" & lngCle)
frmNomForm.ImgCboPrinters.SelStart = lngNb
frmNomForm.ImgCboPrinters.SelLength = Len(frmNomForm.ImgCboPrinters.Text) - lngNb
Exit For
End If
lngCpt = lngCpt + 1
Next
End Function
'===================
Mail-moi si tu as besoin, ou si tu as mieux, mais en tout cas çà marche!
A+
-------------------------------
Réponse au message :
-------------------------------
Bonjour,
J'ai une combo box que j'initialise à partir de valeurs issues d'une BD
L'utilisateur saisie du texte dans cette combo, l'objectif est que au fur et à mesure de sa saisie
on lui complète la fin par ce qui est trouvé en base...
exemple : je recherche toto en base
Je tape "t" et s'affiche alors "tata" dans combo
je tape "t"(déjà fait) et "o" s'affiche "tonton"
je tape "t" et "o" et "t" s'affiche alors "toto"
Merci de votre aide
