Access : mettre dynamiquement à jour une liste déroulante [Fermé]

Signaler
Messages postés
2
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
3 janvier 2013
-
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
-
Bonjour, j'ai un petit problème avec une liste déroulante que j'aimerai filtrer dynamiquement (réduire les éléments de la liste en fonction de ce que saisi l'utilisateur).
Soit donc
Une liste déroulante
1er colonne utilisée (numéro ID) colonne liée
2nd colonne le Nom client

Lorsque l'utilisateur saisie sur la liste la première lettre d'un nom, j'aimerai que la liste soit filtrée et n'affiche plus uniquement que les noms qui commence par cette lettre.
A la saisie de la seconde lettre par l'utilisateur, re filtrage avec les 2 premières lettres

J'ai bien vu qu'on pouvait re définir la requête liée à la liste, et réactualiser la liste,
mais c'est bête, je n'arrive pas à récupérer ce que l'utilisateur saisie au niveau de la liste.
(je n'ai pas envie d'utiliser un autre champ texte car j'utilise d'autres propriétés de la liste).

Merci pour tout déblocage de ce filtrage dynamique d'une liste déroulante.

4 réponses

Messages postés
1491
Date d'inscription
vendredi 26 octobre 2012
Statut
Membre
Dernière intervention
28 janvier 2013
87
Bonjour info56,

Juste une idée, comme ça .. un évènement sur la liste (si j'ai bien compris, c'est dans la liste que l'utilisateur encode les premières lettres) .. évènement sur changement .. dans cet évènement, suivant le nombre de lettre encodées etc.
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour a vous

Un truc simple

exemple pour Zone de liste deroulante:

Private Sub Modifiable3_Change()
    Me.Modifiable3.Dropdown
End Sub


A voir
Messages postés
2
Date d'inscription
samedi 29 décembre 2012
Statut
Membre
Dernière intervention
3 janvier 2013

Ceci est la 4ième fois que je réponds au dernier message.
(Si le problème est que j'essayais d'illustrer mon propos avec une image de liste box... faut le dire...)
donc pour la quatrième fois (sans les images)
avec un dropdown, ou en cliquant sur la petite flèche de la listbox, la liste se déroule.
Si on saisi "a" dans la zone de liste, la liste se positionne automatiquement sur le premier item de la liste qui commence par a.
si après le a on saisi u, la liste se positionne sur le premier élément commencant par au. C'st déjà super.
Mais je voulais que tous les autres éléments qui ne commences pas par "au" ne s'affiche plus (car quand on a une liste de 200 noms, n'en afficher que 10 est plus facile....).
Donc comment filtrer la liste de manière automatique.
On peut modifier la requête qui a créé la liste, et faire un requery pour mettre à jour la liste. mais le problème
c'est comment récupérer les caractères saisis dans la zone de liste par l'utilisateur : les fameux "au" de mon exemple...
Messages postés
15831
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 juillet 2021
1 512
Bonjour,

Ceci est la 4ième fois que je réponds au dernier message.
(Si le problème est que j'essayais d'illustrer mon propos avec une image de liste box... faut le dire...)
C'est vous qui avez besoin d'aide, pas moi, et je n'ai jamais vu les trois autre reponses!!!!

Un exemple de code pour ce qui vous tracasse.

Propriete Donnees Contenu: vide puisque vous voulez voir une liste seulement au premier caractere saisi

Propriete Donnees Origine Source: Table/requete (valeur par defaut)

Private Sub Modifiable3_Change() 
    
  rsql = "SELECT table2.id, table2.nom " & _ 
        "FROM table2 " & _ 
        "WHERE Nom Like " & Chr(34) & Modifiable3.Text & "*" & Chr(34) & _ 
        " ORDER BY Nom;" 
             
  Me.Modifiable3.RowSource = rsql 
  Me.Modifiable3.RowSourceType = "Table/Query" 
             
  Me.Modifiable3.Dropdown 
End Sub


Bonne suite