Liste Déroulante: Allez à A,Z...

PseudoNana Messages postés 11 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
Je travaille sur Access 2003 et cherche à accélérez ma saisie.
J'ai crée une liste déroulante avec deux colonnes : une comprenant le code insee (colonne liée cachée) et une autre avec le nom des communes. Au lieu de défiler toute ma liste pour arriver aux communes commençant par les dernières lettres de l'alphabet, je souhaite taper la lettre Z dans ma liste par exemple et arriver automatiquement aux communes commençant par Z.
Comment faire?
A voir également:

3 réponses

Polux31 Messages postés 7219 Statut Membre 1 204
 
bonjour,

voici un extrait de https://vb.developpez.com/faq/?page=Controles#combo_larg

Copiez tout d'abord ces déclarations au début du module de la form :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
                                     (ByVal hwnd As Long, ByVal wMsg As Long, _
                                      ByVal wParam As Long, lParam As Any) As Long
Private Const CB_FINDSTRING = &H14C


Tout le reste du code se situe dans la procédure de l'événement KeyPress, qui a lieu chaque fois qu'un caractère est entré :
Private Sub Combo1_KeyPress(KeyAscii As Integer)

    Dim Trouve As Long, Position As Integer, Taille As Integer, strTemp As String
   
    With Me.Combo1
        If KeyAscii = 8 Then
            If .SelStart = 0 Then Exit Sub
            .SelStart = .SelStart - 1
            .SelText = ""
        Else
            Position = .SelStart
            strTemp = .Text
        End If
        .SelText = Chr(KeyAscii)
        Trouve = SendMessage(.hwnd, CB_FINDSTRING, 0, ByVal .Text)
        If Trouve = -1 Then
            'les trois lignes suivantes doivent être enlevées en cas de non correspondance possible
            .Text = strTemp
            .SelStart = Position
            .SelLength = (Len(.Text) - Position)
            KeyAscii = 0
            Exit Sub
        Else
            Position = .SelStart
            Taille = Len(.List(Trouve)) - Len(.Text)
            .SelText = .SelText & Right(.List(Trouve), Taille)
            .SelStart = Position
            .SelLength = Taille
            KeyAscii = 0
        End If
    End With
   
End Sub


bon courage

;o)

polux
0
PseudoNana Messages postés 11 Statut Membre
 
Merci,
Mais je crois que je vais laisser ça de côté pour le moment. Je m'attendais à ce que ce soit plus simple.
0
Polux31 Messages postés 7219 Statut Membre 1 204
 
salut,

Il suffit de faire un copier/coller et si tu rencontres des difficultés tu reviens ici ...

;o)

polux
0