Comme il s'agit d'un événement feuille, il faut coller le code dans les modules des feuilles :
je te laisse adapter aux bonnes colonnes
Une autre petite chose...
je t'ai fait une fonction personnalisée initialeMaj()
Tu peux aussi l'utiliser sur feuille, elle doit rester dans un module Standard.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
Application.EnableEvents = False
If Not Intersect(Target, Union(Columns("D"), Columns("O"))) Is Nothing Then
' MAJUSCULE
Target = UCase(Target)
ElseIf Not Intersect(Target, Union(Columns("G"), Columns("L"), Columns("P"))) Is Nothing Then
' Nom Propre
Target = WorksheetFunction.Proper(Target.Value)
ElseIf Not Intersect(Target, Columns("M")) Is Nothing Then
' initiale
Target = initialeMaj(Target.Value)
End If
Application.EnableEvents = True
End Sub
Function initialeMaj(ch As String) As String
If Len(ch) = 1 Then
initialeMaj = UCase(ch)
Else
initialeMaj = UCase(Left(ch, 1)) & LCase(Mid(ch, 2))
End If
End Function
eric