Format Nom Prénom

  • Initiateur de la discussion Djay
  • Date de début
D

Djay

Guest
Bonjour à tous! J'essaye de mettre un format spécifique pour le nom et le prénom du type Majuscule pour le nom et pour la première lettre du prénom et minuscule pour le reste du prénom. Pour le Nom je force avec Ucase jusqu'à ce qu'on arrive à l'espace ensuite je fais une sous-chaine pour le prénom mets ça me plante. Mon nom et mon prénom je l'ai rentre dans une même combobox et ensuite je les recolle dans une cellule par ordre alphbétique et pour ça pas de problème mais ça coince avec le format. Peut-être que mon tri alphabétique et mon collage empêche le format de ma combobox?
Merci d'avance et bonne journée.
Djay
 
E

Eric C

Guest
Bonjour le Forum
Bonjour Robert, Re Djay

Merci beaucoup pour ta réponse Robert que je me suis empressé de mettre au chaud. Toutefois, j'ai tenté de retranscrire cette formule en VB mais je n'y parvient pas.
Mon souhait serait que des utilisateurs saisissent un nom & prénom dans un TextBox comme ils en ont envie Exemples : CAULIER ERIC ou caulier eric ou Caulier eric ...... et que la valeur saisie devienne : CAULIER Eric.
Sinon je te remercie cordialement.
Bon Week end
@++ Eric C
 
E

Eric C

Guest
Re le forum
Re Djay (déjà en W.end, on ne t'entend pas ??), Re Robert

Après moultes recherches j'ai trouvé ceci mais malheureusement qui ne met les Majuscules qu'au début des "mots" trouvés. Je persiste dans mes recherches.
Private Sub CommandButton1_Click()
TextBox1.Value = Application.WorksheetFunction.Proper_(TextBox1.Value)

End Sub

@ ++ Eric C
 
E

Eric C

Guest
Bonjour le forum
Bonjour Djay, Robert & Michel

Je n'ai pu poster avant car modem planté. Donc un grand Merci Michel, j'ai pu appliquer ton code à mon TextBox, 2peccable.
Cela faisait un bail que j'attendais une telle soluce.
Bon Week-End à toutes & à tous.

@ ++ Eric C
 
E

Eric C

Guest
Re le forum
Re bonjour Michel

Puis je abuser de ta générosité ?? Oui, merci beaucoup, pourrais tu (je me prend la tête avec les formules) me donner le code pour le nom (en premier) puis le prénom caulier eric ==> CAULIER Eric . Je n'arrive pas à me dépétrer dans les codes. Te remerciant par anticipation de ton obligeance.
@++ Eric C
 
T

Ti

Guest
voici une fonction qui fait cela, et qui peut être appelée directement dans une feuille de calcul.

Function NOMPrenom$(ByVal NP$)
'Ti
Dim Tabl
If NP = "" Then Exit Function
Tabl = Split(StrConv(NP, vbProperCase))
Tabl(0) = UCase(Tabl(0))
NOMPrenom = Join(Tabl)
End Function

Noter que j'utilise ici Split qui, pour une fois (n'est ce pas @Thierry) me permet de rendre l'écriture de ma fonction plus concise.


Attention Michel, la procédure que tu indiques dans ton lien renvoie une erreur si une des chaines "NOM Prénom" ne comporte pas d'espace (faute de frappe ou autre) ou si c'est une chaîne vide, parce que tu ne testes pas si ta valeur SP est supérieure ou non à 0

D'autre part, tu utilises le mauvais type pour déclarer ta variable SP dans la procédure : tu donnes à SP un type String, alors que Instr renvoie une valeur numérique et pas une chaîne. VB s'accommode de cette imprécision, mais il vaut mieux garder le bon type.

Sub PrenomNOM()
Dim Val As Variant
Dim SP As String

For Each Val In Range("A1:A" & Range("A65536").End(xlUp).Row)
SP = InStr(1, Val, " ")
Range(Val.Address) = UCase(Left(Val, 1)) & LCase(Mid(Val, 2, SP - 1)) & UCase(Right(Val, Len(Val) - SP))
Next

End Sub
 
T

Ti

Guest
Tiens, dans la foulée : une deuxième fonction PrenomNOM pour faire l'inverse.

Function NOMPrenom$(ByVal NP$)
'Ti
Dim Tabl
Tabl = Split(StrConv(NP, vbProperCase))
If UBound(Tabl) >= 0 Then Tabl(0) = UCase(Tabl(0))
NOMPrenom = Join(Tabl)
End Function

Function PrenomNOM$(ByVal NP$)
'Ti
Dim Tabl
Tabl = Split(StrConv(NP, vbProperCase))
If UBound(Tabl) >= 1 Then Tabl(1) = UCase(Tabl(1))
PrenomNOM = Join(Tabl)
End Function
 
E

Eric C

Guest
Re le forum
Re bonjour Djay, Robert & Michel
Bonjour Ti

Je te remercie vivement et garde bien au chaud tes fonctions.
Néanmoins mon problème est que je me sert uniquement de TextBoxs pour l'affichage de mon nom & prénom. Y a t'il possibilité de transposer le code de tes fonctions pour arriver à mes fins. Personnellement, je n'y parviendrai pas.
Mon code était celui de Michel mais je désirerais le contraire Nom Prénom
j'avais donc remplacer Val par TextBox1.Value. Vous remerciant par avance.
 

Statistiques des forums

Discussions
312 785
Messages
2 092 091
Membres
105 194
dernier inscrit
Ateups