Fonction NOMPROPRE en VBA

Bonjour,

Il existe la fonction NOMPROPRE() dans Excel mais on ne peut pas l'utiliser dans un code VBA. J'ai regardé dans nouvelles fonctions VBA mais il n'existe pas. J'ai bien trouvé un code VBA que transforme la première lettre d'une cellule en majuscule mais je voudrais faire un tableau avec les prénoms commençant avec une majuscule y compris pour les prénoms composés. Par exemple pour le prénom "jean-pierre" le code l'écrit "Jean-pierre" alors que pierre devrait avoir un P majuscule. Désolé mais je n'ai pas trouvé de réponse à ma problématique.

42prenoms.xlsm (15.36 Ko)

Bonjour,

x = Application.Proper("texte")
x = UCase("texte")
x = LCase("TEXTE")

Bonjour,

Il te suffit d'utiliser la fonction d'Excel NOMPROPRE() qui s'appelle PROPER() en Anglais :

Sub Test()

    Dim Chaine As String

    Chaine = "mettre tous les mots avec une majuscule"

    MsgBox Application.Proper(Chaine)

End Sub

Bonjour Isabelle

Désolé, pas rafraîchi

fcyspm30, tu peux te faire une fonction perso aussi comme celle-ci par exemple :

Sub Test()

    MsgBox NomPropre("mettre tous les mots avec une majuscule")

End Sub

Function NomPropre(Valeur As String) As String

    Dim T
    Dim I As Integer
    Dim Sep As String

    'teste le tiret ou l'espace...
    Sep = "-"

    T = Split(Valeur, Sep)

    If UBound(T) = 0 Then Sep = " "

    T = Split(Valeur, Sep)

    '...si aucun, un seul mot
    If UBound(T) = 0 Then NomPropre = UCase(Left(Valeur, 1)) & Mid(Valeur, 2, Len(Valeur)): Exit Function

    'sinon, plusieurs
    For I = 0 To UBound(T): NomPropre = NomPropre & UCase(Left(T(I), 1)) & Mid(T(I), 2, Len(T(I))) & Sep: Next I
    NomPropre = Left(NomPropre, Len(NomPropre) - 1)

End Function

re,

Désolé, pas rafraîchi

y'a pas de mal, on est synchro ce matin

Merci Isabelle je vais tester

Yves

Je ne suis pas arrivé à créer une fonction personnalisée. Je travail sur la question car je débute. En revanche la fonction Application.Proper() fonctionne parfaitement. Merci à tous.

re,

veux-tu que le texte inscrit se transforme automatiquement lors de la validation (Enter) ?

tout en majuscule ou en Nom propre ?

Oui c'est ce que je voulais

re,

à tester,

Private Sub Worksheet_Change(ByVal Target As Range)
Set isect = Application.Intersect(Target, Range("A2:A20"))  ' plage à adapter
If Not isect Is Nothing Then
    Application.EnableEvents = False
    Target = UCase(Target)  'ou bien Application.Proper(target)
    Application.EnableEvents = True
End If
End Sub
Rechercher des sujets similaires à "fonction nompropre vba"