Chargement d'un Combo en fonction de ce qui est saisi ds celui-ci

Résolu
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 - 19 janv. 2005 à 12:46
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 - 19 janv. 2005 à 15:24
Bonjour,
Malgré de multiples recherches sur VBFrance, je n'arrive pas à trouver la réponse à mon problème.
J'ai un combo qui est destiné a affiché un liste de nom(celui-ci n'est pas bloqué en saisie), je veux que en fonction de ce que saisi l'utilisateur, seul le noms commencant par ce qui est saisi s'affiche.
Voilà comment j'ai procédé : sur l'évènement Keypress du combo, j'appelle la procédure destiné à remplir le combo. La requête de cette procédure recherche dans la table tout les noms commencant par ce qui a été saisi.
Le problème c'est qu'à la première frappe, rien ne se passe, la seconde marche (il y a donc une lettre saisie dans le combo et les noms commencant par cette lettre qui s'affiche mais avec parfois un petit bug dans l'affichage correspondant je pense au temps nécessaire à l'éxecution de la requête), et ensuite bizarrement il est impossible de saisir d'autres lettres.

voici la procédure (dont l'appel s'effectue sur le keypress du combo) :
Public Sub CharTouCbSup(Debut As String, Cb As ComboBox)
If Rs_Sup.State = adStateOpen Then
Rs_Sup.Close
End If
'Je recherche le contenu de la table UTILISATEUR
Rs_Sup.Open "select * from [SUPPLEMENT] where [Lib_Sup] like '" & Debut & "%'", Cn, adOpenDynamic, adLockOptimistic
'nettoyage du contenu
Cb.Clear
'Tant que je ne suis pas arrivé à la fin de la liste
While Rs_Sup.EOF = False
'J'ajoute les champs trouvés au contenu du combo un par un
Cb.AddItem Rs_Sup.Fields("Lib_Sup").Value
'Je passe au suivant
Rs_Sup.MoveNext
Wend
Rs_Sup.Close

Quelqu'un a t'il un moyen plus efficace d'obtenir ce chargement sélectif ?

Merci d'avance

6 réponses

cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
19 janv. 2005 à 15:24
Merci à tous, j'ai finalement trouvé un autre code (le seul que j'ai réussi à comprendre) qui marche plutot bien, le voici (source de TequilaTex):

Private Sub Combo1_KeyUp(KeyCode As Integer, Shift As Integer)
'Saisie semie-automatique
If KeyCode = vbKeyBack Then Exit Sub
Dim inc1 As Integer
Wcount = Len(Combo1.Text)
If Combo1.Text = "" Then Exit Sub
For inc1 = 0 To Combo1.ListCount - 1
If LCase(Combo1.Text) = LCase (Left(Combo1.List(inc1), Wcount)) Then
Combo1.Text = Combo1.Text & Mid(Combo1.List(inc1), Combo1.SelStart + 1)
Combo1.SelStart = Wcount
Combo1.SelLength = Len(Combo1.Text)
Exit For
End If
Next inc1
End Sub
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
19 janv. 2005 à 13:42
Regardes dans mes sources il y a ce que tu recherche je crois...

It@li@
0
guigfs Messages postés 34 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 30 mars 2006
19 janv. 2005 à 13:44
Salut
essai avec ceci (desole mais aucun commentaire)

Private
Sub MaListe_KeyPress(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.KeyPressEventArgs)
Handles
MyBase.KeyPress

Dim maValeur
As
String =
Me.Text

Dim nbCaracteres
As
Integer = maValeur.Length()

Dim nbElements
As
Integer =
Me.Items.Count()

Dim nbCaract
As
Integer
Dim valeurListe
As
String
Dim positionCurseur
As
Integer
Dim i
As
Integer
If e.KeyChar <> Microsoft.VisualBasic.ChrW(8)
Then
maValeur = maValeur.ToUpper()

If
Me.Text <> ""
Then
For i = 0
To (nbElements - 1)
valeurListe = Mid(Convert.ToString(ds.Tables("maTable").Rows(i).Item(macolonne)), 1, nbCaracteres)
valeurListe = valeurListe.ToUpper

If maValeur = valeurListe
Then
Me.SelectedIndex = i
nbCaract =
Me.Text.Length()

Me.Select(nbCaracteres, nbCaract)

Exit
For
End
If
Next
End
If
End
If
End
Sub
0
guigfs Messages postés 34 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 30 mars 2006
19 janv. 2005 à 13:46
Pour info ceci s'appel une combo à saisie semi_automatique(pour les recherches google ca aide)
0

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

Posez votre question
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
19 janv. 2005 à 14:39
Merci, j'essaye de décoder ce code qui a l'air pas mal mais j'avoue que j'ai un peu de mal sans commentaires...
0
cs_Eric25 Messages postés 175 Date d'inscription mardi 19 octobre 2004 Statut Membre Dernière intervention 26 juin 2006 3
19 janv. 2005 à 14:50
Italia : Il me semble que ton code fonctionne lui avec un combo et une TextBox, mais j'essaye de comprendre son fonctionnement pour voir si cela peut marcher dans mon cas...
merci
0