FORCER LES MAJUSCULES DANS UNE TEXTBOX

Gvb Messages postés 19 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 5 novembre 2004 - 17 déc. 2003 à 12:55
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 - 18 déc. 2003 à 16:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/18785-forcer-les-majuscules-dans-une-textbox

hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
18 déc. 2003 à 16:18
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
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 déc. 2003 à 07:45
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
cs_pepito Messages postés 2 Date d'inscription lundi 27 décembre 1999 Statut Membre Dernière intervention 20 octobre 2004
17 déc. 2003 à 14:09
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 ;-)
cs_kelly Messages postés 55 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 9 septembre 2004
17 déc. 2003 à 13:20
eh ben j'aurais appris qqch aujourd'hui !
Gvb Messages postés 19 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 5 novembre 2004
17 déc. 2003 à 12:55
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
Rejoignez-nous