METTRE LES INITIALES EN MAJUSCULE AU COURS DE LA FRAPPE
VicoLaChips2
Messages postés436Date d'inscriptiondimanche 20 janvier 2002StatutMembreDernière intervention 2 février 2010
-
20 avril 2003 à 20:27
aghbalouu
Messages postés2Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 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.
aghbalouu
Messages postés2Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 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és436Date d'inscriptiondimanche 20 janvier 2002StatutMembreDernière intervention 2 février 20102 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és11Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention22 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és7Date d'inscriptionmercredi 29 janvier 2003StatutMembreDernière intervention28 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és11Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention22 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és436Date d'inscriptiondimanche 20 janvier 2002StatutMembreDernière intervention 2 février 20102 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
29 janv. 2005 à 19:13
13 oct. 2003 à 20:12
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
13 oct. 2003 à 12:13
------------------
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 ;)
25 avril 2003 à 09:28
Sub text1_KeyPress(KeyAscii as integer)
KeyAscii = Asc(Ucase(Chr(Keyascii)))
End Sub
22 avril 2003 à 13:23
21 avril 2003 à 16:07
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
21 avril 2003 à 16:02
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...........
21 avril 2003 à 15:56
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
20 avril 2003 à 20:27
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.