OVH Cloud OVH Cloud

Gestion des touches

4 réponses
Avatar
Codial
Bonjour,

j'ai un form avec une zône de liste. A l'usage il s'avère que la recherche
d'un document dans cette liste est trop longue.
Aussi j'ai rajouter une zône de texte avec une gestion des touches pour
filtrer cette zone de liste avec le code suivant.

Ce que je n'arrive pas à faire c'est à intercepter la touche "Suppr" dans le
cas ou l'utilisateur sélectionne toute la zône de texte.

Comment je peux faire?

Mon code:
Dans le général:

Dim chaine As String
Dim monSql As String

Ma Sub:

Private Sub Texte32_KeyPress(KeyAscii As Integer)
On Error Resume Next
Select Case KeyAscii
Case 97 To 122 'Lettres miniscules
chaine = chaine + Chr(KeyAscii)
Case 65 To 90
chaine = chaine + Chr(KeyAscii) 'Lettres majuscules
Case 48 To 57 'Clavier numérique
chaine = chaine + Chr(KeyAscii)
Case 47, 45, 32, 46, 176
'47 = /
'45 = -
'Space = 32
'Point = 46
'° = 176
chaine = chaine + Chr(KeyAscii)
Case 8 'Touche RET.ARR
chaine = left(chaine, Len(chaine) - 1)
If Len(chaine) = 0 Then
Me.listDoc = Null
chaine = Null
End If
Case 27 'Touche ÉCHAP
chaine = ""
Me.Texte32 = Null
Case Else
End Select
'
monSql = "SELECT CATALOGUE.REF_MAT, CATALOGUE.PARTIE, CATALOGUE.DATE_EM,
CATALOGUE.PRIX, CATALOGUE.CLAIR " & _
"FROM CATALOGUE WHERE (((CATALOGUE.REF_MAT) LIKE '" & UCase(chaine) & "*'))
ORDER BY CATALOGUE.REF_MAT; "
'
Me.listDoc.RowSource = monSql

End Sub

Ou bien existe t'il un autre moyen?

D'avance merci

Codial

4 réponses

Avatar
Raymond [mvp]
RE.

en général quand une liste est trop longue, on crée une 2e liste imbriquée
( famille) pour diviser le nombre d'éléments de la liste initiale.
sinon la touche suppress est : vbKeyDelete
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Codial" a écrit dans le message de news:

Bonjour,

j'ai un form avec une zône de liste. A l'usage il s'avère que la recherche
d'un document dans cette liste est trop longue.
Aussi j'ai rajouter une zône de texte avec une gestion des touches pour
filtrer cette zone de liste avec le code suivant.

Ce que je n'arrive pas à faire c'est à intercepter la touche "Suppr" dans
le cas ou l'utilisateur sélectionne toute la zône de texte.

Comment je peux faire?

Mon code:
Dans le général:

Dim chaine As String
Dim monSql As String

Ma Sub:

Private Sub Texte32_KeyPress(KeyAscii As Integer)
On Error Resume Next
Select Case KeyAscii
Case 97 To 122 'Lettres miniscules
chaine = chaine + Chr(KeyAscii)
Case 65 To 90
chaine = chaine + Chr(KeyAscii) 'Lettres majuscules
Case 48 To 57 'Clavier numérique
chaine = chaine + Chr(KeyAscii)
Case 47, 45, 32, 46, 176
'47 = /
'45 = -
'Space = 32
'Point = 46
'° = 176
chaine = chaine + Chr(KeyAscii)
Case 8 'Touche RET.ARR
chaine = left(chaine, Len(chaine) - 1)
If Len(chaine) = 0 Then
Me.listDoc = Null
chaine = Null
End If
Case 27 'Touche ÉCHAP
chaine = ""
Me.Texte32 = Null
Case Else
End Select
'
monSql = "SELECT CATALOGUE.REF_MAT, CATALOGUE.PARTIE,
CATALOGUE.DATE_EM, CATALOGUE.PRIX, CATALOGUE.CLAIR " & _
"FROM CATALOGUE WHERE (((CATALOGUE.REF_MAT) LIKE '" & UCase(chaine) &
"*')) ORDER BY CATALOGUE.REF_MAT; "
'
Me.listDoc.RowSource = monSql

End Sub

Ou bien existe t'il un autre moyen?

D'avance merci

Codial




Avatar
Codial
Bonjour Raymond,

j'ai essayé vbKeyDelete mais ça marche pas! il n'y a pas de réaction !

Codial


"Raymond [mvp]" a écrit dans le message de
news:
RE.

en général quand une liste est trop longue, on crée une 2e liste imbriquée
( famille) pour diviser le nombre d'éléments de la liste initiale.
sinon la touche suppress est : vbKeyDelete
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Codial" a écrit dans le message de news:

Bonjour,

j'ai un form avec une zône de liste. A l'usage il s'avère que la
recherche d'un document dans cette liste est trop longue.
Aussi j'ai rajouter une zône de texte avec une gestion des touches pour
filtrer cette zone de liste avec le code suivant.

Ce que je n'arrive pas à faire c'est à intercepter la touche "Suppr" dans
le cas ou l'utilisateur sélectionne toute la zône de texte.

Comment je peux faire?

Mon code:
Dans le général:

Dim chaine As String
Dim monSql As String

Ma Sub:

Private Sub Texte32_KeyPress(KeyAscii As Integer)
On Error Resume Next
Select Case KeyAscii
Case 97 To 122 'Lettres miniscules
chaine = chaine + Chr(KeyAscii)
Case 65 To 90
chaine = chaine + Chr(KeyAscii) 'Lettres majuscules
Case 48 To 57 'Clavier numérique
chaine = chaine + Chr(KeyAscii)
Case 47, 45, 32, 46, 176
'47 = /
'45 = -
'Space = 32
'Point = 46
'° = 176
chaine = chaine + Chr(KeyAscii)
Case 8 'Touche RET.ARR
chaine = left(chaine, Len(chaine) - 1)
If Len(chaine) = 0 Then
Me.listDoc = Null
chaine = Null
End If
Case 27 'Touche ÉCHAP
chaine = ""
Me.Texte32 = Null
Case Else
End Select
'
monSql = "SELECT CATALOGUE.REF_MAT, CATALOGUE.PARTIE,
CATALOGUE.DATE_EM, CATALOGUE.PRIX, CATALOGUE.CLAIR " & _
"FROM CATALOGUE WHERE (((CATALOGUE.REF_MAT) LIKE '" & UCase(chaine) &
"*')) ORDER BY CATALOGUE.REF_MAT; "
'
Me.listDoc.RowSource = monSql

End Sub

Ou bien existe t'il un autre moyen?

D'avance merci

Codial








Avatar
Raymond [mvp]
vbKeyDelete c'est 46 et faut la tester sur l'évènement KeyDown
Private Sub Téléphone_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
End Sub

bien mettre à oui l'aperçu des touches.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Codial" a écrit dans le message de news:
OF$bf%
Bonjour Raymond,

j'ai essayé vbKeyDelete mais ça marche pas! il n'y a pas de réaction !

Codial



Avatar
Codial
Ok, je vais tester, encore merci

Codial

"Raymond [mvp]" a écrit dans le message de
news: egHO$
vbKeyDelete c'est 46 et faut la tester sur l'évènement KeyDown
Private Sub Téléphone_KeyDown(KeyCode As Integer, Shift As Integer)
MsgBox KeyCode
End Sub

bien mettre à oui l'aperçu des touches.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Codial" a écrit dans le message de news:
OF$bf%
Bonjour Raymond,

j'ai essayé vbKeyDelete mais ça marche pas! il n'y a pas de réaction !

Codial