OVH Cloud OVH Cloud

Majuscules partielles

4 réponses
Avatar
khinoa
Bonjour à tous,

Je connais la fonction Proper qui met une majuscule à chaque première lettre
d'un mot. Si je tape M et Mme Tartempion née Machin, je vais obtenir "Et "
et "Née". Or je voudrais que "et" et "née" restent en minuscules. Ne pas
oublier que la place de "et" et "née" peut varier selon que l'on tape M ou
Mr, Mme ou Mlle.

D'avance merci pour l'aide

khinoa

4 réponses

Avatar
Pascal Engelmajer
Salut,
il faut combiner les fonctions :
en vba :
.../...
ch = Ucase(left(ch,1)) & Lcase(mid(ch,2))

=MAJUSCULE(GAUCHE(A1;1))&MINUSCULE(DROITE(A1;NBCAR(A1)-1))
--

Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"khinoa" a écrit dans le message de news:
40af037a$0$2392$
Bonjour à tous,

Je connais la fonction Proper qui met une majuscule à chaque première
lettre

d'un mot. Si je tape M et Mme Tartempion née Machin, je vais obtenir "Et "
et "Née". Or je voudrais que "et" et "née" restent en minuscules. Ne pas
oublier que la place de "et" et "née" peut varier selon que l'on tape M ou
Mr, Mme ou Mlle.

D'avance merci pour l'aide

khinoa




Avatar
khinoa
Bonjour Pascal,

Merci mais j'ai trouvé ceci :

For Each c In Range("a2:a20")
If InStr(2, c, "et") <> 0 Then
c = Application.Proper(c)
pos1 = InStr(1, c, "Et")
pos2 = InStr(1, c, "Née")
longueurnom = pos2 - 10 ' longueur du nom
diff = Len(c) - pos2 ' extraction à droite de Née
nom = Application.Proper(Mid(c, 10, longueurnom)) ' extraction nom
c = "M et Mme " & nom & "née" & Application.Proper(Right(c, diff - 2))
Else
c = Application.Proper(c)
End If
Next

Ce n'est pas parfait mais c'est mieux que rien

Au revoir

khinoa
Avatar
FxM
Bonjour,

Il me semble que remplacer (AVEC les espaces) devrait solutionner :
remplacer " Née " par " née "
remplacer " Né " par " né "
remplacer " Et " par " et "

@+
FxM



Bonjour Pascal,

Merci mais j'ai trouvé ceci :

For Each c In Range("a2:a20")
If InStr(2, c, "et") <> 0 Then
c = Application.Proper(c)
pos1 = InStr(1, c, "Et")
pos2 = InStr(1, c, "Née")
longueurnom = pos2 - 10 ' longueur du nom
diff = Len(c) - pos2 ' extraction à droite de Née
nom = Application.Proper(Mid(c, 10, longueurnom)) ' extraction nom
c = "M et Mme " & nom & "née" & Application.Proper(Right(c, diff - 2))
Else
c = Application.Proper(c)
End If
Next

Ce n'est pas parfait mais c'est mieux que rien

Au revoir

khinoa




Avatar
AV
=SUBSTITUE(SUBSTITUE(SUBSTITUE(NOMPROPRE(A1);"Née";"née");"Et";"et");"Né";"né")

AV