Liste Déroulante: Allez à A,Z...
PseudoNana
Messages postés
11
Statut
Membre
-
Polux31 Messages postés 7219 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?
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?
Configuration: Windows XP Internet Explorer 6.0
3 réponses
-
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 -
Merci,
Mais je crois que je vais laisser ça de côté pour le moment. Je m'attendais à ce que ce soit plus simple. -
salut,
Il suffit de faire un copier/coller et si tu rencontres des difficultés tu reviens ici ...
;o)
polux