Recherche incrémentable dans une combobox

Soyez le premier à donner votre avis sur cette source.

Vue 5 758 fois - Téléchargée 680 fois

Description

Permet d'obtenir une aide à la saisie dans n'importe quelle ComboBox de vos projets.
Ce code est très facilement ajoutable à un projet existant, il suffit de rajouter le code suivant dans l'événement KeyUp d'une ComboBox et de changer une seule ligne de code !

Source / Exemple :


'==========================================================
'
'==========================================================
Private Sub CB_KeyUp(KeyCode As Integer, Shift As Integer)

    Static NoSelectText As String   ' texte tapé par l'utilisateur
    Dim i As Long                   ' compteur de boucle
    Const RGBerror = 255            ' couleur du fond en cas d'erreur
    
    
    With CB '<== SEULE LIGNE A MODIFIER
      
        ' touche que l'on ne doit pas gérer dans cette procedure
        If KeyCode = vbKeyUp Then Exit Sub      ' utilisé par VB
        If KeyCode = vbKeyDown Then Exit Sub    ' utilisé par vb
        If KeyCode = vbKeyLeft Then Exit Sub    ' pour se déplacer
        If KeyCode = vbKeyRight Then Exit Sub   ' pour se déplacer
        
        ' action spéciale pour la touche BACK
        If KeyCode <> vbKeyBack Then
        NoSelectText = Mid(.Text, 1, Len(.Text) - .SelLength)
        Else
            If NoSelectText <> "" Then
            NoSelectText = Mid(NoSelectText, 1, Len(NoSelectText) - 1)
            End If
        End If
        
        ' recherche de la correspondance
        For i = 0 To .ListCount - 1
            If UCase(NoSelectText) = UCase(Mid(.List(i), 1, Len(NoSelectText))) Then
                .ListIndex = i
                Exit For
            End If
        Next
        
        ' selection de la partie que l'on a rajouté automatiquement
        .SelStart = Len(NoSelectText)
        .SelLength = Len(.Text)
        
        ' partie optionnelle qui change la couleur de fond en cas d'erreur
        If .ListIndex = -1 Then
            .BackColor = RGBerror
        Else
            .BackColor = vbWindowBackground
        End If
        
    End With

End Sub

Conclusion :


Maj sur
http://fred.just.free.fr/francais/exemples/comboboxsearch.html

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

waldbah
Messages postés
4
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
20 juin 2004
-
ON PEUT AMELIORER LE CODE EN AJOUTANT
.TopIndex = i

pour mettre la première occurence en relief comme ça s'il y a plusieurs occurenceS on pourait choisir.

' recherche de la correspondance
For i = 0 To .ListCount - 1
If UCase(NoSelectText) = UCase(Mid(CITY.List(i), 1, Len(NoSelectText))) Then
.ListIndex = i
.TopIndex = i
Exit For
End If
Next
waldbah
Messages postés
4
Date d'inscription
samedi 2 août 2003
Statut
Membre
Dernière intervention
20 juin 2004
-
MERCI C'EST VRAIMENET FACIL ET GENIAL
J4AI EXPERIMENTE DAUTRE CODE MAIS C' EST LE MEILLEUR ET LE PLUS SIMPLE!
cs_tiouane
Messages postés
1
Date d'inscription
vendredi 3 décembre 2004
Statut
Membre
Dernière intervention
19 septembre 2006
-
Ca marche très bien, commenté comme il faut. Un exemple à suivre! Bravo. Et merci aussi.
matyeu
Messages postés
1
Date d'inscription
mardi 17 décembre 2002
Statut
Membre
Dernière intervention
14 novembre 2003
-
Ce que j'aime dans un code, c'est quand il est propre, commenté et très UTILE donc je mets 10 / 10.

Merci à toi FredJust !
ICIoBRa
Messages postés
368
Date d'inscription
dimanche 24 juin 2001
Statut
Membre
Dernière intervention
7 décembre 2015
-
Appareemnt ta oublié la maj, ca donne :
Http://fred.just.free.fr/francais/exemples/comboboxsearch.html
:]

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.