Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/10/2011, 15h04   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Par défaut Interdiction de caractères dans un textbox

Bonjour
Je voudrais interdire tout autre caractère que les lettres, "entrée" et "retour" sur un textbox d'un formulaire.
J'ai créé le code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub txt_Utilisateur_KeyDown(Keyascii As Integer, Shift As Integer)
Select Case Keyascii
    Case 97 To 122
    ' Caracteres alpha min
     Case 65 To 90
    'Caracteres alpha Maj
    Case 8
    'Retour Chariot
    Case 24
    'Retour arrière
    Case Else
    Keyascii = 0
End Select
End Sub
Cela fonctionne parfaitement sauf pour les chiffres alors que les codes 48 à 57 ne sont pas autorisés

Merci de votre aide
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 17h10   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
As-tu vérifier quels codescorrespondent à tes chiffres ?

Pour le savoir :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub txt_Utilisateur_KeyDown(Keyascii As Integer, Shift As Integer)

debug.print KeyAscii

Select Case Keyascii
    Case 97 To 122
    ' Caracteres alpha min
     Case 65 To 90
    'Caracteres alpha Maj
    Case 8
    'Retour Chariot
    Case 24
    'Retour arrière
    Case Else
    Keyascii = 0
End Select
End Sub
et [ctrl][G] pour faire afficher la fenêtre de débugage immédiat.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2011, 20h12   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Bonsoir et merci pour ta réponse
J'ai un autre soucis :
Mon code fonctionne normalement sur un clavier normal, il en est tout autrement avec un clavier de portable sans pavé numérique.
En effet, pour exemple la touche 1/& (au dessus du A) prend le code ascii 49 quelque soit la position de la touche capslock et si on appuie sur shitf 1 je retourne les codes 16 puis 49.
J'aimerais autoriser les chiffres mais pas les caractères spéciaux or sur les touches en haut du clavier les codes ascii sont les mêmes quelque soit le caractère affiché :
& = ascii 49
1 = ascii 49 (associé au 16)

Merci de votre aide
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 16h19   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 655
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 655
Points : 6 220
Points : 6 220
Envoyer un message via MSN à argyronet
Bonjour,

C'est l'événement KeyPress qu'il faut utiliser.
de plus tu peux combiner.
Code :
1
2
3
4
5
6
7
Private Sub txt_Utilsateur_KeyPress(KeyAscii As Integer)
    Select Case KeyAscii
        Case 8, 39, 45, 65 To 90, 97 To 122
        Case Else
            KeyAscii = 0
    End Select
End Sub
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 17h58   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Merci argyronet
Celà fonctionne parfaitement, c'était en effet l'évènement qui fallait modifier
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/10/2011, 18h07   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Essaye avec KeyPress au lieu de KeyDown qui te donne la touche qui est appuyée pas le caractère à laquelle elle correspond.

Code :
1
2
3
4
5
Private Sub ShipRegion_KeyPress(KeyAscii As Integer)
    if caractereInvalide then
        KeyAscii = 0
    end if
End Sub
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h28.


 
 
 
 
Partenaires

Hébergement Web