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

Lencorev -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
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 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
Lencorev
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
En décomposant un peu, pour "majusculer" la première lettre des "Fxx" , xx allant de 5 à 10
For I = 5 To 10
    s = Sheets("Feuil1").Range("F" & I).Value
    s = UCase(Left(s, 1)) & Right(s, Len(s) - 1)
    Sheets("Feuil1").Range("F" & I).Value = s
Next I

Cdlmnt
0
Lencorev
 
Il me met "argument ou appel de procédure incorrect" à la ligne 3 :
 s = UCase(Left(s, 1)) & Right(s, Len(s) - 1)
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Je ne sais pas comment tu utilises
Un exemple
http://www.cjoint.com/c/EFpooOXE5jg
0