METTRE LES INITIALES EN MAJUSCULE AU COURS DE LA FRAPPE

VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 - 20 avril 2003 à 20:27
aghbalouu Messages postés 2 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 janvier 2005 - 29 janv. 2005 à 19:13
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/6793-mettre-les-initiales-en-majuscule-au-cours-de-la-frappe

aghbalouu Messages postés 2 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 janvier 2005
29 janv. 2005 à 19:13
Eh bon je trouve le code et trés intréssant mais j'ai un avis pourquoi vous développez pas lors de la saisie d"un texte la premiére caratére qui vous entrez automatiquement devenir en majuscule sauf les autres caratéres sont en minuscules par expemle vous entrez une ville "rabat" lors de la siaie il donne "Rabat".
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
13 oct. 2003 à 20:12
Encore une autre méthode !

Private Sub Text1_KeyPress(KeyAscii As Integer)
Text1 = StrConv(Text1, vbProperCase)
Text1.SelStart = Len(Text1)
End Sub

ça fait un petit effet zarbi mais bon...vue que j'chui faignant !

@+, VIC
raffmarseille Messages postés 11 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 22 avril 2008
13 oct. 2003 à 12:13
Pour le text box
------------------

Sub Text1_KeyPress(KeyAscii As Integer)
KeyAscii=FirstsInMaj(KeyAscii, Text1)
End Sub


Dans le code de la form ou ds un module
-----------------------------------------------

Function FirstsInMaj(KeyAscii As Integer, TextBoxName As TextBox)
Dim Str
If KeyAscii > 96 And KeyAscii < 123 Then
If Len(TextBoxName) = 0 Then
KeyAscii = KeyAscii - 32
Else
Str = Mid(TextBoxName, TextBoxName.SelStart, 1)
Select Case Str
Case "-", "_", " ", "/": KeyAscii = KeyAscii - 32
End Select
If TextBoxName.SelStart = 0 Then
KeyAscii = KeyAscii - 32
End If
End If
End If
FirstsInMaj = KeyAscii
End Function



Le pti commentaire comme d'hab
-------------------------------------
En fait, le code de Renfiels marche au poil, sauf qu'il faut l'intégrer dans une fonction et non pas dans une procédure ;) En résumé, finalement, Merci Renfield lol. Je sais j'ai mis du temps... Mais on ne se penche sur les choses que lorsqu'on en a vraiment besoin ;)
edsinouhe Messages postés 7 Date d'inscription mercredi 29 janvier 2003 Statut Membre Dernière intervention 28 juin 2010
25 avril 2003 à 09:28
Que c'est compliqué ...


Sub text1_KeyPress(KeyAscii as integer)
KeyAscii = Asc(Ucase(Chr(Keyascii)))
End Sub
raffmarseille Messages postés 11 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 22 avril 2008
22 avril 2003 à 13:23
Un seul petit inconvénient pour la fonction UCase (désolé pour le retard de réponse, mais j'ai eu des soucis de connec) elle est super lente à l'interprétation et en +, elle intervient après la frappe... c'est pour ça que je ne l'utilise pas ds mes codes (ou uniquement en cas de contrôl postérieur à la frappe, c'est, je pense, le seul avantage qu'elle présente.) Le plus léger pour la machine étant de travailler avec des entiers, ce qui ne demande que très peu de ressource au moment du calcul. Merci en tout K pour tous ces commentaires, je vais me pencher sur l'amélioration de tout ça ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 avril 2003 à 16:07
MEA CULPA !

Ca m'apprendra a faire des changements de derniere minute , avant de mettre mon code en ligne, la condition avec Vbnullstring est foireuse !

Private Sub Text1_KeyPress(KeyAscii As Integer)
Call FirstsInMaj(KeyAscii, Text1)
End Sub

Sub FirstsInMaj(ByRef KeyAscii As Integer, TextBoxName As TextBox)
Dim Str
If KeyAscii > 96 And KeyAscii < 123 Then
If TextBoxName.SelStart = 0 Then
KeyAscii = KeyAscii - 32
Else
Str = Mid(TextBoxName, TextBoxName.SelStart, 1)
Select Case Str
Case "-", "_", " ", "/": KeyAscii = KeyAscii - 32
End Select
End If
End If
End Sub
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 avril 2003 à 16:02
VicoLaChips2

ta solution fonctionne egalement , elle fait pareil que la source de raffmarseille sauf qu'elle est BEAUCOUP PLUS LENTE , évidement , tu ne le vois pas , mais il faut prendre l'habitude d'optimiser un minimum son code :

- la premiere condition permet d'eviter de traiter tous les caracteres saisis , si on ne saisi pas du texte , on sort , c'est important !

- il vaut bien mieux faire une soustraction ( keyascii = keyascii -32 ) plutot que de faire appel a trois fonctions !!

- de plus , pour recupere le dernier caractere , mieux vaut faire
str = Right$ ( textBoxName , 1 )


le prend pas mal surtout , c'est juste quelques petits conseils qui je l'espere porteront leurs fruits...........
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 avril 2003 à 15:56
Moi , je vois ca comme ca......
pas besoin de faire une fonction , tu modifie le parametre (KeyAscii) a l'interieur !!! (ou alors , met un ByVal ! )

et si , avec ta fonction , je place le curseur de saisie en plein milieu , je n'ai pas de saisie automatique de mes majuscules........

Private Sub Text1_KeyPress(KeyAscii As Integer)
Call FirstsInMaj(KeyAscii, Text1)
End Sub

Sub FirstsInMaj(ByRef KeyAscii As Integer, TextBoxName As TextBox)
Dim Str
If KeyAscii > 96 And KeyAscii < 123 Then
If TextBoxName.Text = vbNullString Then
KeyAscii = KeyAscii - 32
Else
Str = Mid$(TextBoxName, TextBoxName.SelStart, 1)
Select Case Str
Case "-", "_", " ", "/": KeyAscii = KeyAscii - 32
End Select
End If
End If
End Sub
VicoLaChips2 Messages postés 436 Date d'inscription dimanche 20 janvier 2002 Statut Membre Dernière intervention 2 février 2010 2
20 avril 2003 à 20:27
Bonjour -;)

Bonne idée de faire ça !!
J'ai une autre solution :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1) = 0 Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
ElseIf Mid(Text1, Len(Text1), 1) = " " Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End If
End Sub

@ bientôt VIC.
Rejoignez-nous