Forcer les majuscules dans une textbox

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 227 fois - Téléchargée 29 fois

Contenu du snippet

Toute petite fonction, très simple:

Source / Exemple :


Public Function ForceMaj(KeyAscii As Integer)
If KeyAscii > 96 And KeyAscii < 123 Then
     KeyAscii = KeyAscii - 32
End If
ForceMaj = KeyAscii
End Function

' utiliser dans l'evenement KeyPress de la TextBox comme suit:
Private Sub TxtBox_KeyPress(KeyAscii As Integer)
    KeyAscii = ForceMaj(KeyAscii)
End Sub

Conclusion :


Voila, c'est très simple mais ça peut être utile.

A voir également

Ajouter un commentaire

Commentaires

Gvb
Messages postés
19
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
5 novembre 2004
-
Hello,

Tu peux également éviter l'appel d'une fonction en mettant directement dans l'événement Keypress le code suivant :

[
keyascii = Asc(Ucase(Chr(KeyAscii)))
]

Pour expliquer à ceux qui ne connaissent pas les petites fonctions utilisées :
Chr : retourne le caractère associé à un code Ascii
Ucase : transforme une chaîne de caractères en majuscule
Asc : retourne le code Ascii d'un caractère

@+

Gvb
cs_kelly
Messages postés
55
Date d'inscription
jeudi 1 mai 2003
Statut
Membre
Dernière intervention
9 septembre 2004
-
eh ben j'aurais appris qqch aujourd'hui !
cs_pepito
Messages postés
2
Date d'inscription
lundi 27 décembre 1999
Statut
Membre
Dernière intervention
20 octobre 2004
-
Hum..

Oui, en effet!

A part l'aspect didactique concernant les valeurs ASCII des lettres,
je pense que ta solution est en tous points meilleure.

Bah..on apprend tous les jours ;-)
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
57 -
Pas d'accord avec Gvb

Une simple manipulation d'entiers est bien préferable a l'utilisation empilée de TROIS fonctions...... coté optimisation, c'est pas top !!

La fonction ForceMaj n'est pas du meilleur gou non plus.... j'ajouterais même que sous cette forme, elle est inutile :
KeyAscii est passé par réference, ta fonction ne ourrait don être qu'une procédure !! :

Et Ca fonctionne Tout Autant !!
*************************
Public Sub ForceMaj(KeyAscii As Integer)
If KeyAscii > 96 And KeyAscii < 123 Then
KeyAscii = KeyAscii - 32
End If
End Function

Private Sub TxtBox_KeyPress(KeyAscii As Integer)
ForceMaj KeyAscii
End Sub
*************************

tu peux aussi faire ca pour tous tes TextBoxes d'un seul cou pp
Private sub Form_Load
Me.KeyPreview = True
end sub

Public Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii > 96 And KeyAscii < 123 Then KeyAscii = KeyAscii - 32
End Sub
hvb
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1 -
je suis d'accord que la 1ere methode soit pas la meilleur, mais la tienne (renfield) ne gere pas les accents, Ucase lui les gere.
donc un petit Ucase sur tout le texte (et pas char par char, en couplant asc et chr) , dans l'evenement textchange ou keypress, sera tout aussi efficace. (et vu que c'est de la saisie par l'user, je ne pense pas que les texte fassent + de qq Ko, ce qui niveau performance ne changera pas trop.)
c'est moins rapide, mais plus simple. et ça gere touts les accents ^^'

pour gvb...marrant ton nick..... :p

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.