Première lettre d'un mot en majuscule [Résolu]

Signaler
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021
-
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021
-
Bonjour,

Une question simple (j'espère) : est-il possible d'écrire un prénom en minuscule dans une cellule et que, quand on quitte la cellule, la première lettre du prénom passe en majuscule.

J'aimerai que ce soit faisable sans saisir toute une liste de prénoms et revenir ensuite faire cette opération par une macro.
Merci d'avance.

7 réponses

Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021
472
Bonjour,

Voici une solution possible à placer dans une feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim text As String
text = Target.Value
Target.Value = UCase(Left(text, 1)) + Mid(text, 2, Len(text))
End Sub


Source: https://stackoverflow.com/questions/59113711/vba-how-to-use-vbpropercase-to-capitalize-the-first-letter-but-keep-every-other
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021

Bonjour,
Cette solution me convient parfaitement et répond à mon besoin.
Par contre, ça ne fonctionne pas avec les prénoms composés, mais sur 99 saisies, il n'y en a que 2, donc négligeable.
Et je n'arrive pas à utiliser la solution de michel_m qui répondait à la question de PapyLuc.
Merci à tous pour vos solutions et vos remarques qui m'ont bien aidées.
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
9 juin 2021
3 189
Bonjour

Tout simplement :-)


Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
9 juin 2021
3 189
errata
Messages postés
3269
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
9 juin 2021
922
Salut à tous

J'ai essayé ce code qui fonctionne très bien sur la 1ere lettre.

Qu'en est-il lorsqu'il s'agit d'un prénom composé? rajouter un bout de code (moi, je n'y connais rien)

Sinon il existe la fonction NOMPROPRE() qui évite de faire une liste.

cordialement
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
9 juin 2021
3 189
Salut Papy
avec plusieurs prénoms composés
Option Explicit
'---------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Separ, Prenom As String, Cptr As Byte

If Not Intersect(Target, Columns("B")) Is Nothing Then
Application.EnableEvents = False 'interdit le réamorcage de la macro
Separ = Split(Target, "-")
For Cptr = 0 To UBound(Separ)
Prenom = Prenom & Separ(Cptr)
If Cptr < UBound(Separ) Then Prenom = Prenom & "-"
Next
Target = Application.Proper(Prenom)
End If
Application.EnableEvents = True
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------
Sub sos_events()
'Au cas où on sort de la macro avant enableevents=true,Les macros ne peuvent plus fonction dans Excel!!!!!
'cette macro réhabilite le fonctionnement: A CONSERVER PRECIEUSEMENT
Application.EnableEvents = True
End Sub
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
9 juin 2021
3 189
Lorsque tu as selectionné "worksheet" dans la fen^tre du milieu, sélectionne dans la fen^tre (déclarations) :
l'option "Change"

Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021

Bonjour Ozone,
j'ai créé cette macro, mais pas de résultat.
j'ai loupé quelque chose ?
Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021
472
Cette macro est-elle bien placée dans la feuille concernée ? (Souvent l'onglet Feuil1)
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021
>
Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021

elle est bien placée, mais j'ai ce message : erreur de compilation : nom ambigu détecté : Worksheet _Change
Messages postés
54020
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
9 juin 2021
16 045
Bonjour.

Ce que tu veux faire, c'est une fonctionnalité des traitements de texte ; pas des tableurs.
Par conséquent tu dois copier-coller ta liste dans Word, utiliser l'outil "Modifier la casse", et de nouveau faire un copier-coller, mais cette fois de Word vers Excel.

Le mieux, bien entendu, est de saisir correctement les prénoms dès le départ !
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021

Bonjour,
Je vous remercie tous pour vos messages, mais quand j'essaie la solution de Michel, j'ai à nouveau ce message :
erreur de compilation : nom ambigu détecté : Worksheet _Change

Je pense faire correctement mais ....
Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021
472
Tu dois déjà avoir une instruction Worksheet_change présente dans la feuille.
Vois pour les regrouper
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021
>
Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021

Bonjour,
je me suis absenté un peu, je reviens.
Effectivement, j'ai déjà une instruction Worksheet...

Qui est la suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 And Target.Value = 0 Then
ActiveSheet.Unprotect "w"
Cells(Target.Row, 1).Resize(, 8).Locked = True
ActiveSheet.Protect "w"
End If
End Sub

Et bien entendu, je ne sais pas les regrouper !
Encore un peu d'aide ?
Merci
Messages postés
1429
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
8 juin 2021
472 >
Messages postés
74
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
9 juin 2021

He bien je propose cette solution pour tout regrouper :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 And Target.Value = 0 Then
ActiveSheet.Unprotect "w"
Cells(Target.Row, 1).Resize(, 8).Locked = True
ActiveSheet.Protect "w"
End If
ActiveCell = Application.proper(ActiveCell)
End Sub


Je reprends la solution de michel_m car bien plus simple que ma proposition du début.
Et pour info, l'instruction peut être mise avant ou après la condition déjà présente (If/End If)
Messages postés
3269
Date d'inscription
dimanche 3 mai 2009
Statut
Membre
Dernière intervention
9 juin 2021
922
J'ai procédé comme ceci pour entrer le code

clic droit sur l'onglet de la feuille / visualiser le code / coller dans la fenêtre qui s'ouvre

Cordialement