Le nom en majuscule les prénoms en nom propre

Bonjour à tous,

Je voudrai dans un textbox que le nom qui est souvent entré en 1er soit en majuscule et les prénoms soient en nompropre.

Je sais qu'on va certainement me proposer de saisir dans 2 textbox différents et un 3ème qui donnerai le résultat du 1er & résultat du ?2ème et éventuellement qu'après la saisie le textbox1 prend le résultat du textbox1 & textbox2. Çà je sais faire.

Ce que je veux réellement c'est lors de la saisie je rentre le nom qui est en majuscule et les autres qui sont séparés par des espaces me l'écrive en nompropre.

Merci de votre aide

Amicalement

Noel

Bonjour,

Petite procédure à adapter, mais le principe est là.

Mais tu as un souci avec les noms et prénoms composés.

Cdlt.

Public Sub DEMO()
Dim tbl
Dim sText As String
Dim i As Byte

    tbl = Split([A1], " ")
    sText = UCase(tbl(0))
    For i = 1 To UBound(tbl)
        sText = sText & " " & Application.Proper(tbl(i))
    Next i
    MsgBox sText

End Sub

Bonjour Jean Eric

Je te remercie pour le code que je vais passer à la moulinette et je te tiendrai informé.

Je ne pense pas que j'aurai un problème avec les prénoms composés acr je mettrai un trait d'union entre chaque mot composé.

@+

Amicalement

Noel

Re,

Désolé je ne suis pas arrivé à faire fonctionner ce code.

J'ai même essayer de l'adapter pour un textbox rien.

J'ai un textbox dans lequel je rentre le nom et prénoms des personnes. ce textbox nommé Nom_Pre

Voici le code que j'ai au départ

Private Sub Nom_Pre_AfterUpdate()
Sheets("Base").Select
Nom_Pre = Application.Proper(Nom_Pre.Value)
If Application.CountIf(Range("j3:j500"), Me.Nom_Pre) > 0 Then
          MsgBox "Ce plaignant existe"
         Exit Sub
        End If
End Sub
Private Sub Nom_Pre_AfterUpdate()
Sheets("Base").Select
Nom_Pre = Application.Proper(Nom_Pre.Value)
If Application.CountIf(Range("j3:j500"), Me.Nom_Pre) > 0 Then
          MsgBox "Ce plaignant existe"
         Exit Sub
        End If
End Sub

Voici le code que j'ai essayé d'adapter

Private Sub Nom_Pre_AfterUpdate()
DEMO
Sheets("Base").Select
'Nom_Pre = Application.Proper(Nom_Pre.Value)
If Application.CountIf(Range("j3:j500"), Me.Nom_Pre) > 0 Then
          MsgBox "Ce plaignant existe"
         Exit Sub
        End If
End Sub

Cela ne me donne pas le résultat escompté.

Merci de ton aide

Amicalement

Noel

Re,

Quel est le rapport entre la question initiale et cette demande?

Cdlt.

Bonjour Jean Eric,

Je n'ai pas posé une deuxième question mais un constat.

En ce qui concerne le nom propre chez moi ça fonctionne.

Le code que tu m'as fourni, je pense que c'est pour un résultat dans la feuille alors que voudrai en VBA. Le résultat doit être dans un textbox.

Amicalement

Noel

Bonjour,

A tester.

Cdlt.

Private Sub Nom_Pre_AfterUpdate()
Dim ws As Worksheet
Dim rng As Range
Dim tbl
Dim sText As String
Dim i As Byte

    Set ws = Worksheets("Base")
    Set rng = ws.Range("J3:J500")

    tbl = Split(Nom_Pre.Text)
    sText = UCase(tbl(0))
    For i = 1 To UBound(tbl)
        sText = sText & " " & Application.Proper(tbl(i))
    Next i

    If Application.CountIf(rng, sText) > 0 Then
        MsgBox "Ce plaignant existe"
        Exit Sub
    End If

    Set rng = Nothing: Set ws = Nothing

End Sub

Re,

J'ai testé le code cela ne donne rien.

Le résultat est tel que l'entrée des données.

@+

Amicalement

Noel

Re,

Sans fichier, il est difficlie de t'aider.

Recopie ce code et à la fin de la procédure, dans VBE tape CTRL+G.

Tu auras des informations utiles sur les valeurs des différentes variables.

Private Sub Nom_Pre_AfterUpdate()
'A la fin de la procédure faire CTRL+G
Dim ws As Worksheet
Dim rng As Range
Dim tbl
Dim sText As String
Dim i As Byte

    Set ws = Worksheets("Base")
    Set rng = ws.Range("J3:J500")
    Debug.Print rng.Address

    tbl = Split(Nom_Pre.Text)
    sText = UCase(tbl(0))
    Debug.Print sText
    For i = 1 To UBound(tbl)
        sText = sText & " " & Application.Proper(tbl(i))
        Debug.Print sText
    Next i
    debug.print sText
    Debug.Print Application.CountIf(rng, sText)
    If Application.CountIf(rng, sText) > 0 Then
        MsgBox "Ce plaignant existe"
        Exit Sub
    End If

    Set rng = Nothing: Set ws = Nothing

End Sub

Bonjour,

Proposition pour obtenir dans un TextBox le nom en majuscules et le prénom avec initiale(s) majuscule(s).

Conditions : un seul prénom, placé à la fin ; si composé, obligatoirement avec trait d'union (le dernier mot constitue le prénom, les autres le nom.

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim np, p, i%
    np = TextBox1.Value
    If InStr(1, np, " ") > 0 Then
        np = Split(np, " ")
        For i = 0 To UBound(np) - 1
            np(i) = StrConv(np(i), 1)
        Next i
        p = np(UBound(np))
        If InStr(1, p, "-") > 0 Then
            p = Split(p, "-")
            For i = 0 To UBound(p)
                p(i) = StrConv(p(i), 3)
            Next i
            p = Join(p, "-")
        Else
            p = StrConv(p, 3)
        End If
        np(UBound(np)) = p
        np = Join(np, " ")
    Else
        np = StrConv(np, 1)
    End If
    TextBox1.Value = np
End Sub

Remarque : dans le cas où le prénom manque, le nom sera en majuscules s'il est composé d'un seul mot ; dans le cas où le nom comprendrait plusieurs mots, on peut forcer sa mise en majuscules en tapant 2 espaces à la suite (pour faire prendre en compte un prénom "vide" conduisant ce qui précède à être mis en majuscules).

Cordialement

Ferrand

Bonjour,

Bonjour MFerrand,

Pas habitué aux contrôles USF, quelle est la différence entre TextBox_AfterUpdate et TextBox_Exit?

Cdlt.

Salut Jean-Eric,

Dans le cas qui nous intéresse aucune incidence : l'évènement AfterUpdate intervient avant Exit, mais comme il n'empêche pas Exit de se produire (l'appui sur la touche Entrée faisant normalement passer au contrôle suivant), le résultat sera le même. Utile si on voulait empêcher la sortie du contrôle...

Cordialement

Ferrand

Re,

Merci pour cette information.

Fainéant sur ce coup pour consulter l'aide.

Cdlt.

Bonjour, Jean Eric,

Bonjour MFerrand,

Je vous remercie de votre aide.

Dans la journée, je testerai es 2 codes.

MFerrand tues rentrée dans l'ile?

Jean Eric, je peux t'envoyer un bout du fichier si tu y tiens, mais c'est en USF

@+

Amicalement

Noel

Re,

C'est bon tout est réglé.

Celui de Jean Eric j'ai un problème avec ton code cela ne fonctionne toujours pas.

Merci à vous deux

@+

Amicalement

Noel

Bonjour,

Non, dans 2 mois. Basé à Nice, mais un peu itinérant... Je pars d'ailleurs dans 2 heures.

Bonne journée.

Rechercher des sujets similaires à "nom majuscule prenoms propre"