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 ;-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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 ;-)
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
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 ;-)
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 ;-)
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 ;-)