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 09/01/2011, 03h42   #1
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 99
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 99
Points : 19
Points : 19
Par défaut Appel d'une procedure dans un évènement keypress

Bonjour Tous,
je mets sous bout de code dans l'évènement keypress d'une zone de texte afin de n'autoriser que l saisie des valeurs numeriques.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Code :
123456
Private Sub zdt1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then
   KeyAscii = 0
End If
 
End Sub
cela marche

Aussi je mets ce code dans une fonction appélé chiffres afin de pouvoir l'appéler dans les différentes zone de texte de mon formulaires
Code :
1
2
3
4
5
Public Sub chiffres()
If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then
    KeyAscii = 0
End If
End Sub
mais la quand j'appele cette fonction dans une zone de texte il ne fonctionne pas.
Code :
1
2
3
4
Private Sub zdt1_KeyPress(KeyAscii As Integer)
chiffres
 
End Sub
que manque t'il à ma fonction pour qu'elle puisse être correctement appélé dans un évènement keypress.

Bien Merci
lecaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 08h09   #2
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Bonjour,

Si tu compile ton code VBA, tu auras tout de suite la réponse à ta question....

Tu crées une Sub public (..et non une Fonction !!), dans laquelle tu utilise KeyAscii ......qui est censé représenter quoi ...

En fonction de ton application, tu peux définir cette limitation de façon globale pour le formulaire
Code :
1
2
3
4
5
Private Sub Form_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then
    KeyAscii = 0
End If
End Sub
.....bien sur, tu adapte ce code si tu ne souhaite "impacter" que des champs particuliers de ton formulaire..
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 11h33   #3
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 99
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 99
Points : 19
Points : 19
Merci bien pour votre réponse, ce code fonctionne sur toutes les zones de saisies de mon formulaire
Code :
1
2
3
4
5
Private Sub Form_KeyPress(KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) Then
    KeyAscii = 0
End If
End Sub
Malheureusement la compilation du code ne m'a pas permis d'avoir une réponse à ma précédente préoccupation;
je mets en place une fonction de la sorte
Code :
1
2
3
4
Public Function chiffres()
If (keyascii < 48 Or keyascii > 57) And (keyascii <> 8) Then
   keyascii = 0
End If
Mais l'appel à la fonction dans un évènement keypress d'une zone de texte voulue ne fonctionne.
Y'a til des arguments à passer à ma fonction chiffres qui manquent?
Merci de m'aider à réaliser une telle fonction que je pourrai appéler par la suite.

Merci
lecaire est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2011, 11h53   #4
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 309
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 309
Points : 2 847
Points : 2 847
Je pense que tu n'as pas compris le sens de ma réponse..

Ici, dans ton application tu souhaite ne saisir que des chiffres dans tes zones de texte.
Donc la solution de gérer cela de façon globale apporte la réponse.....

Citation:
Mais l'appel à la fonction dans un évènement keypress d'une zone de texte voulue ne fonctionne.
Y'a til des arguments à passer à ma fonction chiffres qui manquent?
Ici, tu essaie de créer une fonction en utilisant KeyAscii....
Mais dans ta fonction , ce "terme" est uniquement reconnue comme une variable ......c'est d'ailleurs ce que te précise le message d'erreur lors d'une compilation (si bien sur en en-tête tu as l'instruction Option Explicit..)
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h22.


 
 
 
 
Partenaires

Hébergement Web