cs_minus87
Messages postés12Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention22 novembre 2008
-
20 nov. 2008 à 19:09
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 2013
-
21 nov. 2008 à 09:04
Bonjour
Je suis en language vba sous excel
Avec une textbox j'ai utiliser la commande strconv pour mettre en majuscule la première lettre si l'utilisateur rentre le texte en minuscule.
1er problème est que si c'est un mot en majuscule comme EP il me met le texte au moment de la validation en : Ep. J'aimerai que les lettre en majuscule reste tel quel.
2eme problème si c'est un mot composé comme jean-marc il me met Jean-marc j'aimerai qu'il le transforme en Jean-Marc.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 20 nov. 2008 à 19:52
Bonsoir,
1) Il sera peut-être bien de commencer à appeler chaque chose par son nom ! StrConv n'est pas une "commande",
mais une fonction !
Ce ne sont pas que des mots (ou alors je continue cette réponse en utilisant des "trucs" et des "machins", ainsi que des "bidules" (et on verra
la tête que tu feras et si tu es capable de comprendre, tiens...)
2) Voilà un exemple avec une textbox placée sur un UserForm
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Len(Text1.Text) = 0 Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
ElseIf Mid(Text1.Text, Text1.SelStart, 1) = "-" Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End If
End Sub
Je dis exemple, car je ne suis pas allé plus loin que ce que tu as jusqu'à présent exprimé.
Si tu découvres maintenant que tu as finalement besoin de traiter d'autres cas de l'espèce, inspire-toi de cet exemple et continue ainsi jusqu'où tu veux.
cs_minus87
Messages postés12Date d'inscriptionmercredi 4 juin 2008StatutMembreDernière intervention22 novembre 2008 20 nov. 2008 à 23:17
Merci pour ta réponse malgré qu'il comporte un bug et plusieurs défaut je connais peut être pas l'appellation de chaque chose mais pour un débutant j'ai réussi a pondre une chose serte un peu longue mais qui fonctionne sous toutes les coutures.Donc amicalement, la prochaine fois avant d'essayer de faire la leçon au gens essaie plutôt de les aider en étant plus constructif.
'1ere lettre en majuscule
If TXT_Nom.Value <> "" Then
TXT_Nom.SelStart = 0
TXT_Nom.SelLength = 1
TXT_Nom.SelText = StrConv(TXT_Nom.SelText, vbUpperCase)
End If
'Pour les "-"
Dim Deb, Nb_boucle, i As Integer
Deb = 1
Nb_boucle = Len(TXT_Nom)
For i = 1 To Nb_boucle
Dim Found As String
Dim Search
Search = "-"
Found = InStr(Deb, TXT_Nom, Search, 1)
If Found <> 0 Then
TXT_Nom.SelStart = Found
TXT_Nom.SelLength = Len(Search)
TXT_Nom.SelText = StrConv(TXT_Nom.SelText, vbUpperCase)
End If
Deb = Found + 1
Next i
'Pour les espaces
Dim Deb2, Nb_boucle2, j As Integer
Deb2 = 1
Nb_boucle2 = Len(TXT_Nom)
For j = 1 To Nb_boucle2
Dim Found2 As String
Dim Search2
Search2 = " "
Found2 = InStr(Deb2, TXT_Nom, Search2, 1)
If Found2 <> 0 Then
TXT_Nom.SelStart = Found2
TXT_Nom.SelLength = Len(Search2)
TXT_Nom.SelText = StrConv(TXT_Nom.SelText, vbUpperCase)
End If
Deb2 = Found2 + 1
Next j
Voila si quelqu'un à une solution moins lourdes je suis preneur
++
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 21 nov. 2008 à 09:04
J'ignore où tu as le bug dont tu parles...
Quant à vérifier après et non, comme je te le proposais, à la saisie même :
Voilà un exemple :
Private Sub Command1_Click()
'toto = "jean-pierre"
MsgBox convertir("jean-pierre")
MsgBox convertir("MARTIN-pierre")
MsgBox convertir("pierre-DURAND")
End Sub
Private Function convertir(titi As String) As String
Mid(titi, 1, 1) = UCase(Mid(titi, 1, 1))
pos = InStr(titi, "-")
If pos > 0 Then
Mid(titi, pos + 1, 1) = UCase(Mid(titi, pos + 1, 1))
End If
convertir = titi
End Function