Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Choix par contient dans liste deroulante

2 réponses
Avatar
xavier95
Bonjour à tous,
Je reviens vers vous car j'ai une question à vousposez:
J'ai une liste déroulante "Article" dans un formulaire.
Je souhaiterais choisir un item parmi les différents articles, mais par "contient" plutôt que par "commence"...
J'ai trouvé sur internet ce code et je l'ai adapté, mais ça ne fonctionne pas:

Private Sub Article_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i As Long
'contrôle les touches
If KeyAscii = 27 Then strList = "" 'Sur Echap vide le contenu
If Not (KeyAscii > 48 And KeyAscii < 123) Then Exit Sub

strList = strList & Chr(KeyAscii) 'ajoute la touche pressée

For i = 0 To Me.Article.ListCount - 1 'parcours les items
If Me.Article.Column(1, i) Like « * » & strList & « * » Then
'l’item correspond
'pour un liste
'Me.Article.ListIndex = i ‘on s’y positionne
'pour une liste déroulante
MsgBox Me.Article.Column(1, i)
Exit For 'et on sort
End If
Next
End Sub


L'un de vous aurait 'il la solution?
merci d'avance ;-)

2 réponses

Avatar
JièL
Hello,

Le 21/01/2016 16:07, xavier95 a écrit :
Bonjour à tous,
Je reviens vers vous car j'ai une question à vousposez:
J'ai une liste déroulante "Article" dans un formulaire.
Je souhaiterais choisir un item parmi les différents articles, mais par
"contient" plutôt que par "commence"...
J'ai trouvé sur internet ce code et je l'ai adapté, mais ça ne fonctionne pas:

Private Sub Article_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i As Long
'contrôle les touches
If KeyAscii = 27 Then strList = "" 'Sur Echap vide le contenu
If Not (KeyAscii > 48 And KeyAscii < 123) Then Exit Sub



Sans avoir testé, il me semble que c'est soit
Private Sub Article_KeyDown(KeyAscii As Integer, Shift As Integer)
soit
If KeyCode = 27 Then strList = "" 'Sur Echap vide le contenu
If Not (KeyCode > 48 And KeyCode < 123) Then Exit Sub

L'un de vous aurait 'il la solution?
merci d'avance ;-)



--
JièL pas testeur
Avatar
db
Bonsoir,

Pour les raisons qu'indique Jiél et pour bien d'autres qu'il serait trop
long de lister ici, ce code a peu de chances de fonctionner.

Essayez celui-ci en le rattachant à l'événement Sur touche relâchée de
la liste déroulante Article en sachant que ça ne fonctionnera que pour
la première lettre tapée (sauf à taper plus vite que Lucky Luke ne tire
:-) )

Private Sub Article_KeyUp(KeyCode As Integer, Shift As Integer)
Dim i As Long
Dim StrList As String

StrList = Me.Article.Text


For i = 0 To Me.Article.ListCount - 1 'parcours les items

If Me.Article.Column(1, i) Like "*" & StrList & "*" Then
Me.Article.ListIndex = i 'on s’y positionne
Exit For 'et on sort
End If
Next
End Sub


On suppose ici qu'il y a deux colonnes dans la liste et que le libellé
de l'article se trouve dans la deuxième.

Une autre solution plus efficace consisterait à séparer la zone de
saisie de la liste déroulante.

HTH

db



Le 21/01/2016 16:07, xavier95 a écrit :
Bonjour à tous,
Je reviens vers vous car j'ai une question à vousposez:
J'ai une liste déroulante "Article" dans un formulaire.
Je souhaiterais choisir un item parmi les différents articles, mais par
"contient" plutôt que par "commence"...
J'ai trouvé sur internet ce code et je l'ai adapté, mais ça ne fonctionne pas:

Private Sub Article_KeyDown(KeyCode As Integer, Shift As Integer)
Dim i As Long
'contrôle les touches
If KeyAscii = 27 Then strList = "" 'Sur Echap vide le contenu
If Not (KeyAscii > 48 And KeyAscii < 123) Then Exit Sub

strList = strList & Chr(KeyAscii) 'ajoute la touche pressée

For i = 0 To Me.Article.ListCount - 1 'parcours les items
If Me.Article.Column(1, i) Like « * » & strList & « * » Then
'l’item correspond
'pour un liste
'Me.Article.ListIndex = i ‘on s’y positionne
'pour une liste déroulante
MsgBox Me.Article.Column(1, i)
Exit For 'et on sort
End If
Next
End Sub


L'un de vous aurait 'il la solution?
merci d'avance ;-)