Bonjour,
Je n'arrive tjrs pas à me dépatouiller ce cette fichue virgule dans des zone
de texte c'est pour cela que je me remets à vos compétences
Je voudrais savoir si on peux modifier la virgule du pave numérique par un
point sans avoir à toucher au paramètres régionaux de windows.
En vba j'arrive à modifier cette touche par n'importe quelle lettre sauf le
point comme par hasard.
J’ai une zone de texte recherche n° de téléphone, l'utilisateur saisit dans
cette zone un N° de tel qui commence par 02.22 et cela m’affiche dans une
liste box tous les clients qui ont le N° de tel qui commence par 02.22. Mon
filtre s'applique sur chaque caractère saisi dans cette zone sur l’événement
changement.
Je ne peux pas utiliser un masque de saisie pour cette zone de texte sinon
ma recherche s’effectue en tps réel sans avoir à appuyer sur un bouton
Dans ma table client le champ tel est de la forme 02.25.25.26.64 en format
texte
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
Eric
Bonjour Yannick,
Essaies ce code.(A améliorer) Je suis sous Access2k et le point du pavé numérique renvoie une virgule. Le KeyCode est 110 mais le KeyAscii est 46.
L'évènement KeyDown agit avant KeyPress, donc ca t'affiche la virgule systématiquement.
Sur l'évènement Keypress(Touche activée), je teste le code Ascii. Si c'est le 46, je lui affecte le caractere associé à Ascii 46. Par ce biais j'ai bien affiché un point et donc le filtre sql marche
En supposant que ta zone de texte s'appelle Texte0 et la liste Liste3. Texte0 est renseigné par concaténation avec les caractères saisis et traités si nécessaire.
Private Sub Texte0_KeyPress(KeyAscii As Integer) Dim car As String If KeyAscii = 8 Then ' Test du BackSpace If IsNull(Texte0) Then Exit Sub Texte0 = Left(Texte0, Len(Texte0) - 1) ElseIf KeyAscii = 46 Then car = Chr(46) Else car = Chr(KeyAscii) End If KeyAscii = 0 Texte0 = Texte0 & car Texte0.SelStart = Len(Texte0) Dim strSQL As String 'Redéfinition du sql strSQL = "Select ... ,telephone from TaTable where telephone like '" strSQL = strSQL & Texte0 & "*'" Me.Liste3.RowSource = strSQL Me.Liste3.Requery End Sub
J'espère que tu auras les mêmes résultats sur Access2003 A+ Eric
Essaies ce code.(A améliorer)
Je suis sous Access2k et le point du pavé numérique renvoie une virgule.
Le KeyCode est 110 mais le KeyAscii est 46.
L'évènement KeyDown agit avant KeyPress, donc ca t'affiche la virgule
systématiquement.
Sur l'évènement Keypress(Touche activée), je teste le code Ascii. Si
c'est le 46, je lui affecte le caractere associé à Ascii 46.
Par ce biais j'ai bien affiché un point et donc le filtre sql marche
En supposant que ta zone de texte s'appelle Texte0 et la liste Liste3.
Texte0 est renseigné par concaténation avec les caractères saisis et
traités si nécessaire.
Private Sub Texte0_KeyPress(KeyAscii As Integer)
Dim car As String
If KeyAscii = 8 Then ' Test du BackSpace
If IsNull(Texte0) Then Exit Sub
Texte0 = Left(Texte0, Len(Texte0) - 1)
ElseIf KeyAscii = 46 Then
car = Chr(46)
Else
car = Chr(KeyAscii)
End If
KeyAscii = 0
Texte0 = Texte0 & car
Texte0.SelStart = Len(Texte0)
Dim strSQL As String
'Redéfinition du sql
strSQL = "Select ... ,telephone from TaTable where telephone like '"
strSQL = strSQL & Texte0 & "*'"
Me.Liste3.RowSource = strSQL
Me.Liste3.Requery
End Sub
J'espère que tu auras les mêmes résultats sur Access2003
A+
Eric
Essaies ce code.(A améliorer) Je suis sous Access2k et le point du pavé numérique renvoie une virgule. Le KeyCode est 110 mais le KeyAscii est 46.
L'évènement KeyDown agit avant KeyPress, donc ca t'affiche la virgule systématiquement.
Sur l'évènement Keypress(Touche activée), je teste le code Ascii. Si c'est le 46, je lui affecte le caractere associé à Ascii 46. Par ce biais j'ai bien affiché un point et donc le filtre sql marche
En supposant que ta zone de texte s'appelle Texte0 et la liste Liste3. Texte0 est renseigné par concaténation avec les caractères saisis et traités si nécessaire.
Private Sub Texte0_KeyPress(KeyAscii As Integer) Dim car As String If KeyAscii = 8 Then ' Test du BackSpace If IsNull(Texte0) Then Exit Sub Texte0 = Left(Texte0, Len(Texte0) - 1) ElseIf KeyAscii = 46 Then car = Chr(46) Else car = Chr(KeyAscii) End If KeyAscii = 0 Texte0 = Texte0 & car Texte0.SelStart = Len(Texte0) Dim strSQL As String 'Redéfinition du sql strSQL = "Select ... ,telephone from TaTable where telephone like '" strSQL = strSQL & Texte0 & "*'" Me.Liste3.RowSource = strSQL Me.Liste3.Requery End Sub
J'espère que tu auras les mêmes résultats sur Access2003 A+ Eric