Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SAISIE SEMI-AUTOMATIQUE DES COMBOS ACCESS EN VB .NET


Information sur la source

Catégorie :Formulaire Source .NET ( DotNet ) Niveau : Débutant Date de création : 15/08/2003 Date de mise à jour : 15/08/2003 13:55:35 Vu : 7 065

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • ' "" 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
' "" 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 :)

  
 

Commentaires et avis

signaler à un administrateur
Commentaire de Dalida le 28/08/2003 13:55:04

salut

j ai eu le meme besoin.
mais en me penchant sur ton source j ai trouve un solution un peu plus simple. si ca peut vous aider...

    Private Sub cmbNom_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles cmbNom.KeyUp
        If cmbNom.Items.Count &lt; 1 Then Exit Sub
'si la liste est vide on sort

        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

bonne bourre!

signaler à un administrateur
Commentaire de Dalida le 28/08/2003 14:01:06

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

signaler à un administrateur
Commentaire de Dalida le 28/08/2003 14:08:42

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 &lt; 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

signaler à un administrateur
Commentaire de ABL-Online le 26/05/2004 02:12:37

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

signaler à un administrateur
Commentaire de romit le 04/06/2006 22:01:17

DE plus, utilise des Try plutot que des On error !

signaler à un administrateur
Commentaire de big wallace le 23/11/2007 15:04:45 8/10

vraiment c'est un bon code, il m'a bien aider
merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,125 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.