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

[Résolu]
Signaler
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
-
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
-
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

Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
8
Regardes dans mes sources il y a ce que tu recherche je crois...

It@li@
Messages postés
34
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
30 mars 2006

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
Messages postés
34
Date d'inscription
jeudi 13 mars 2003
Statut
Membre
Dernière intervention
30 mars 2006

Pour info ceci s'appel une combo à saisie semi_automatique(pour les recherches google ca aide)
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
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...
Messages postés
175
Date d'inscription
mardi 19 octobre 2004
Statut
Membre
Dernière intervention
26 juin 2006
3
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