Saisie semi-automatique des combos access en vb .net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 426 fois - Téléchargée 38 fois

Contenu du snippet

Bonjour à tous,

qui n'a pas déjà été frustré par les combos sous VB, car on ne peut pas taper quelques lettres pour sélectionner automatiquement le premier élément de la liste qui correspond. Comme sous access quoi !

Ce code n'est pas de moi à l'origine (http://www.vbfrance.com/article.aspx?ID=4015), mais je l'ai adapté à VB .NET car il est vraiment trop pratique (merci encore à DeathAngel pour la source VB 6).

J'espère qu'il aidera des programmeur en herbe comme moi.
@++

Source / Exemple :


' "" REMARQUE A SUPPRIMER
' "" Cette procédure est à appeler sur le KeyUp de la ComboBox, comme suit

     If (e.KeyValue() >= Keys.A And e.KeyValue() <= Keys.Z) Then
            AutoSelection(Me.CBox.Text, Me.CBox)
        End If

' "" FIN REMARQUE

Sub AutoSelection(ByVal rstrValeurSaisie As String, ByVal rctlCombo As ComboBox)

        ' "" La fonction complète automatiquement la saisie en fonction de la liste du combobox

        Dim strTemp As String
        Dim i As Integer
        Dim n As Integer
        Dim intLongueur As Integer

        On Error GoTo AutoSelection_Err

        n = rctlCombo.Items.Count - 1
        intLongueur = Len(rstrValeurSaisie)

        With rctlCombo
            For i = 0 To n
                If StrComp(Microsoft.VisualBasic.Left(.Items.Item(i), intLongueur), rstrValeurSaisie, vbTextCompare) = 0 Then
                    ' "" On a trouvé un élément qui commence comme la valeur saisie
                    ' "" on le sélectionne
                    .SelectedIndex = i
                    ' "" On surligne la fin du mot
                    .SelectionStart = intLongueur
                    .SelectionLength = Len(.Text) - intLongueur
                    Exit For
                End If
            Next i
        End With

AutoSelection_End:
        Exit Sub

AutoSelection_Err:
        MsgBox(Err.Number & " : " & Err.Description)
        Resume AutoSelection_End
        Resume

    End Sub

Conclusion :


d'autres tests sur les e.KeyValue() sont possibles mais pas traités ici.
Si vous avez des questions, vous connaissez la musique.

Merci de laisser des commentaires :)

A voir également

Ajouter un commentaire Commentaires
big wallace Messages postés 30 Date d'inscription mardi 21 mars 2006 Statut Membre Dernière intervention 3 décembre 2007
23 nov. 2007 à 15:04
vraiment c'est un bon code, il m'a bien aider
merci
romit Messages postés 160 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 30 juin 2011
4 juin 2006 à 22:01
DE plus, utilise des Try plutot que des On error !
ABL-Online Messages postés 62 Date d'inscription dimanche 16 septembre 2001 Statut Membre Dernière intervention 21 septembre 2006
26 mai 2004 à 02:12
Franchement vous rechercher midi à 14 heures

le combobox à déjà une propriété FindItem !!!

voir ma source :

http://www.vbfrance.com/code.aspx?ID=23147
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
28 août 2003 à 14:08
pour le moment ca fonctionne bien avec

Private Sub cmbNom_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cmbNom.KeyUp
If cmbNom.Items.Count < 1 Then Exit Sub
If e.KeyValue = System.Windows.Forms.Keys.Delete Or _
e.KeyValue = System.Windows.Forms.Keys.Back Then
Exit Sub
End If

Dim intLongueur, intIndex As Integer
intLongueur = Len(cmbNom.Text)
intIndex = cmbNom.FindString(cmbNom.Text)

cmbNom.SelectedIndex = intIndex
cmbNom.Select(intLongueur, Len(cmbNom.Text) - intLongueur)
End Sub
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
28 août 2003 à 14:01
OULALA!

le source de mon message precedent ne tourne pas.
il ne gere pas les noms inexistants et ne permet pas d effacer.

il sagit donc d une piste de developpement plus que d une solution...
quand je l aurai code entierement je vous en ferai part ici meme

a plus
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.