Dernièrement, un internaute me demandait s’il était possible de modifier le fonctionnement de l’auto complétion dans les listes déroulante. S’agissant d’une fonctionnalité interne d’ACCESS, il est évident que ce n’est pas possible nativement.

Par contre on peut toujours contourner le problème à l’aide du code VBA. Voici cette astuce basée sur l’utilisation de l’évènement KeyUp (touche relâchée) de la liste :

On commence par créer une variable globale dans le formulaire pour stocker les touches pressées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Option Compare Database
Option Explicit
Dim strList As String   'stocke les keycode
A chaque touche tapée par l’utilisateur, on parcourt la liste à la recherche du premier item correspondant aux caractères saisis.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Modifiable1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i As Long
'contrôle les touches
If KeyCode = 27 Then strList = ""  'Sur Echap vide le contenu
If Not (KeyCode > 64 And KeyCode < 123) Then Exit Sub  'ce n'est pas un caractère A-Z a-z (à affiner pour les caractères accentués)
 
strList = strList & Chr(KeyCode)  'ajoute la touche pressée
 
For i = 0 To Me.Modifiable1.ListCount - 1  'parcours les items
    If Me.Modifiable1.Column(1, i) Like "*" & strList & "*" Then  'l'item correspond
       Me.Modifiable1.ListIndex = i  'on s'y positionne
       Exit For  'et on sort
    End If
Next
End Sub
donne la valeur de la colonne 2 de la ligne i.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Like "*" & strList & "*"
est un opérateur logique commun à SQL et VBA.

Par sécurité on vide les caractères saisis sur la prise et la perte du focus.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
Private Sub Modifiable1_GotFocus()
strList = "" 'perte du focus on vide la liste de touche
End Sub
 
Private Sub Modifiable1_LostFocus()
     strList = ""   'perte du focus on vide les keycode
End Sub
Comme vous le voyez, rien de complexe, on utilise juste les nombreuses possibilités d’ACCESS pour contourner le problème. Il va sans dire que l’auto complétion classique de la liste fonctionne toujours.

N’hésitez pas à affiner le contrôle des touches tapées, en effet, dans cet exemple seul l’alphabet classique est pris en compte, il manque les caractères accentués, les chiffres…

D'autres astuces sur mon blog.