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
645
Réponses
13
Affichages
513

Statistiques des forums

Discussions
314 653
Messages
2 111 592
Membres
111 208
dernier inscrit
estalavista