Saisie "assistée" dans une combobox

cs_bouddhi Messages postés 11 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 8 mai 2003 - 13 janv. 2003 à 13:57
cs_bouddhi Messages postés 11 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 8 mai 2003 - 15 janv. 2003 à 14:31
Salut à tous,

Je voudrais effectuer la chose suivante avec une combobox:
lorsque l'utilisateur saisit une valeur dans celle-ci, je voudrais que la combobox affiche la valeur de la liste correspondant au premiers caractères saisis.

Par exemple:
si la combobox contient les valeurs "1234", "123456" et "2345", lorsque l'utilisateur tape "1" dans la zone de texte de la combo celle-ci doit afficher "1234" avec la possibilité "d'affiner" la recherche, c'est-à-dire que si l'on tape "12345" la zone de texte doit afficher "123456"

Une sorte de saisie semi - automatique en fait.

Désolé c'est pas très clair mais c'est pas facile à expliquer comme ça

Si vous avez une solution (et si vous avez compris la question dans un premier temps), je suis preneur...

Merci d'avance

Bouddhi 8-)

5 réponses

webboy Messages postés 55 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 23 mai 2003
13 janv. 2003 à 14:24
Tu te place ds l'evenement combo_change
Toutes tes valeurs tu les mets ds un tableau.

puis ensuite a chaque saisie de du user tu boucles sur ton tablô et tu compares (ex :instr()) puis ensuites tu n'as plus ka selectionner ton item
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
13 janv. 2003 à 14:35
Bonjour -;)
Bien compris la question mais :

Comment peut on afficher en même temps
ce qui est saisie et le résultat de la recherche ???

je suggère deux ctrl au lieu d'un pour ça ...

une zone de saisie et un combobox qui se positionne
sur le résultat(fragmentaire) de la recherche...

deux raisons :
1 - ça me parait difficile à réaliser
2 - D'un point de vue fonctionnel c'est foireux !!

@+, VIC
BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 12
14 janv. 2003 à 12:33
'j'ai mis 1 peut de temps a retrouver le code :)
vive l'API guide :))))))

'This project needs a ListBox, named List1 and a TextBox, named Text1
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As Any) As Long
Const LB_FINDSTRING = &H18F
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
'Add some items to the listbox
With List1
.AddItem "Computer"
.AddItem "Screen"
.AddItem "Modem"
.AddItem "Printer"
.AddItem "Scanner"
.AddItem "Sound Blaster"
.AddItem "Keyboard"
.AddItem "CD-Rom"
.AddItem "Mouse"
End With
End Sub
Private Sub Text1_Change()
'Retrieve the item's listindex
List1.ListIndex = SendMessage(List1.hwnd, LB_FINDSTRING, -1, ByVal CStr(Text1.Text))
End Sub

:clown) BasicInstinct :clown)
XWinnieX Messages postés 71 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004
15 janv. 2003 à 10:35
Dans ma formation on s'est posé la question...
Et on a trouvé ça :

Private Sub Combo_KeyUp(KeyCode As Integer, Shift As Integer)
dim textlen
On Error Resume Next If KeyCode vbKeyBack Or Shift 1 Then Exit Sub

textlen = Len(Comboplat)
Set RS = db.OpenRecordset("SELECT * FROM plat Where design_plat like '" & Comboplat & "*'", dbOpenDynaset)
Combo.Text = RS!design_plat
Combo.SelStart = textlen
Combo.SelLength = Len(Comboplat) - textlen

End Sub

Ici je recherche dans une base de données mais je pense que tu pourra l'adapter facilement au Combo.

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bouddhi Messages postés 11 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 8 mai 2003
15 janv. 2003 à 14:31
Merci c'est cool

A la prochaine 8-)
Rejoignez-nous