Macro : 1ère lettre du 1er mot en majuscule

Fermé
Lencorev - 15 juin 2015 à 13:51
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 15 juin 2015 à 16:15
Bonjour,

J'utilise la fonction "nom propre" sur excel qui permet de mettre une majuscule à chaque début de mot, et je l'utilise sur toute une colonne :

Sheets("Feuil3").Range("F5").Select
ActiveCell.Value = StrConv(ActiveCell.Value, vbProperCase)

For I = 1 To 400
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = StrConv(ActiveCell.Value, vbProperCase)
Next I


Le problème c'est par exemple lorsqu'une cellule contient "inox et plastique", mon code transforme la cellule en "Inox Et Plastique" alors que je voudrais "Inox et plastique"...
Existe-il une fonction qui fait ça directement? Ou pensez vous à un autre moyen? Je sèche un peu..

Merci d'avance!
A voir également:

3 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
15 juin 2015 à 13:55
Bonjour

il te suffit de "majusculer" le premier caractère de ta chaine
Public Function InitialeMajuscule(s As String) As String
InitialeMajuscule = UCase(Left(s, 1)) & Right(s, Len(s) - 1)
End Function


Cdlmnt
0
Merci beaucoup de prendre le temps de me répondre.

J'ai essayé d'adapter votre code à mon cas et voila ce que ça donne :
Sheets("Feuil3").Range("F5").Select
ActiveCell.Value = UCase(Left(Sheets("Feuil3").Range("F5").Value, 1)) & Right(Sheets("Feuil3").Range("F5").Value, Len(Sheets("Feuil3").Range("F5").Value) - 1)

For I = 5 To 402
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = UCase(Left(Sheets("Feuil3").Range("F" & I).Value, 1)) & Right(Sheets("Feuil3").Range("F" & I).Value, Len(Sheets("Feuil3").Range("F" & I).Value) - 1)
Next I


Mais ce code transforme toute la colonne F5 en majuscule, je ne comprends pas pourquoi..
0