1ere lettre en majuscule de chaque mot dans un Textbox ouCobobox

J-Charles

XLDnaute Occasionnel
Bonjour à tous,

J'aimerais lors de la saisie dans un textbox ou un comcocbox que la 1ere lettre de chaque mot se mette en majuscule mais également si ces mots sont simplement séparés par un tiret - ou deux points : ou un espace. Il s'agit en l’occurrence de prénom. Je souhaiterais que le changement se fasse lors de la saisie donc en utilisant Change.
J'ai cherché un peu partout mais le seul code que j'ai trouvé ne fonctionne pas.
Je vous remercie par avance de votre aide
 

Dranreb

XLDnaute Barbatruc
Re : 1ere lettre en majuscule de chaque mot dans un Textbox ouCobobox

Bonjour
Je souhaiterais que le changement se fasse lors de la saisie donc en utilisant Change.
Non, je pense que vous souhaiteriez dans la mesure du possible que le changement se fasse lors de la frappe donc en utilisant Keypress.
VB:
Private Sub TBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim C As String * 1
If TBx.SelStart > 0 Then C = Mid$(TBx.Text, TBx.SelStart, 1)
If UCase$(C) <> LCase$(C) Then KeyAscii.Value = Asc(LCase$(Chr$(KeyAscii.Value))) _
                 Else KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
End Sub
Extrait d'un code plus général que je vous livre à tout hasard :
VB:
Private Sub TBx_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim C As String * 1
On ClauseFrappe GoTo Nom, Phrase, Prénom, Virgule, Heure
Exit Sub
Nom: KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Phrase: If TBx.SelStart = 0 Then KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Prénom: If TBx.SelStart > 0 Then C = Mid$(TBx.Text, TBx.SelStart, 1)
If UCase$(C) <> LCase$(C) Then KeyAscii.Value = Asc(LCase$(Chr$(KeyAscii.Value))) _
                          Else KeyAscii.Value = Asc(UCase$(Chr$(KeyAscii.Value)))
Exit Sub
Virgule: If KeyAscii.Value = Asc(".") Then KeyAscii.Value = Asc(",")
Exit Sub
Heure: If InStr(TBx.Text, ":") > 0 Or TBx.SelStart < TBx.TextLength Or KeyAscii.Value = Asc(":") Then Exit Sub
   If TBx.TextLength < 2 Then On Error Resume Next: If TBx.Text & Chr$(KeyAscii.Value) < 24 Then Exit Sub
   Application.SendKeys Chr$(KeyAscii.Value): KeyAscii.Value = Asc(":")
End Sub
 

Discussions similaires

Réponses
9
Affichages
456

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth