Ucase & Lcase

Bonjour à tous,

Depuis quelques temps je recherche une formule VBA qui pourrait me résolver ma recherche.

Dans un textbox je saisie le nom et le prénom. J'aimerai que le nom même composé soit en majuscule et le prénom la première lettre en majuscule et la suite en minucule.

Si quelqu'un pouvait m'apporter la solution se serait très gentil de sa part.

Merci d'avance de toute aide ou suggestion.

Bien sure j'ai essayé la saisie en 2 parties et de réunir les 2 textbox dans un seul cela me donne le résultat escompté exp

Textbox1 "LE NOM"

Textbox2 "Le Prénom"

Textbox3 = Textbox1&" "&Textbox2 ici j'ai le résultat escompté mais j'ai pas envie de passer par là.

Amicalement

Noel

Utilise les fonctions = "=UPPER()" et = "=PROPER()"

Re Steelson,

J'ai mis le code comme ça :TextBoxNom = upper(TextBoxNom) & " " & Proper(TextBoxNom)

Je suis désolé ça ne fonctionne pas peut-être que j'ai mal compris.

Si tu pouvais rectifier mon erreur?

Merci d'avance

Amicalement

Noel

Bonjour,

utiliser la fonction VBA UCase pour tout en majuscules et Application.Proper pour seulement la première lettre …

Bonjour,

tout le problème de ta demande est de pouvoir identifier quels caractères font partie du nom et quels caractères font partie du prénom.

Il n'existe pas à ma connaissance d'algorithme sans faille qui fasse cette opération. A moins d'avoir une information qui permette cette distinction.

On pourrait imaginer, qu'à la saisie tu introduises une virgule pour séparer nom et prénom et appliquer une macro événementielle pour formater le nom et le prénom comme souhaité.

voici à quoi pourrait ressembler cette macro

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    s1 = InStr(Target, ",")
    If s1 = 0 Then Exit Sub
    nom = UCase(Left(Target, s1 - 1))
    prénom = Application.WorksheetFunction.Proper(mid(target,s1+1))
    nom = nom & " " & prénom
    Application.EnableEvents = False
    Target = nom
    Application.EnableEvents = True
End Sub

edit: je viens de voir que tu parlais de textbox. il faudrait donc ignorer cette procédure événementielle.

voici une version modifiée en fonction

Public Function formnomprénom(n As String)

    s1 = InStr(n, ",")
    If s1 = 0 Then Exit Function
    nom = UCase(Left(n, s1 - 1))
    prénom = application.worksheetfunction.proper(mid(n,s1+1))
    formnomprénom = nom & " " & prénom
End Function

fonction que tu pourrais utiliser ainsi

nomprénom=formnomprénom(textbox1)

edit : suppression de la partie de code inutile car comprise dans la fonction proper.

cfn3cfn a écrit :

Re Steelson,

J'ai mis le code comme ça :TextBoxNom = upper(TextBoxNom) & " " & Proper(TextBoxNom)

Je suis désolé ça ne fonctionne pas peut-être que j'ai mal compris.

Si tu pouvais rectifier mon erreur?

Merci d'avance

Amicalement

Noel

désolé, en effet, les fonctions UPPER et PROPER sont utilisées dans un autre contexte = il s'agit d'écrire dans une cellule les formules MAJUSCULE et NOMPROPRE

en même temps, fortuitement, je découvre Application.Proper qui est très pratique

Bonjour à vous intervenant,

Là cela devient compliqué pour moi.

Le plus simplement possible

exp :

Dans un textbox je saisie le nom d'une personne exp : DURAND-LE-ROY Jean-Paul voilà ce que je voudrai même si je suis en majuscule ou minuscule j'aimerai que la saisie donnée soit ainsi.

@+

Amicalement

Noel

Essaie ceci

Private Sub TextBox1_Change()
TextBox1.Value = UCase(TextBox1.Value)
End Sub

Private Sub TextBox2_Change()
TextBox2.Value = Application.Proper(TextBox2.Value)
End Sub
cfn3cfn a écrit :

Dans un textbox je saisie le nom d'une personne exp : DURAND-LE-ROY Jean-Paul voilà ce que je voudrai même si je suis en majuscule ou minuscule j'aimerai que la saisie donnée soit ainsi.

bonjour,

comment déterminer où finit le nom et où commence le prénom ? dans le cas ci-dessus, c'est l'espace qui permet de le savoir, mais il existe beaucoup de noms contenant des blancs : exemple "du fond de mont pentalon jean-sébastien" ?

soit tu fais 2 textbox, un pour le nom et un pour le prénom et tu appliques la solution proposée par Steelson, soit tu tiens absolument à garder un seul textbox et il te faudra un moyen d'indiquer quelle partie correspond au nom et quelle partie correspond au prénom, (ma proposition est de séparer les 2 parties par une virgule à la saisie, appeler la fonction que je t'ai fournie pour avoir le nom et le prénom formatés comme tu le souhaites).

Pour revenir à la demande, j'ai bien pris 2 boxes comme demandé :

Textbox1 "LE NOM"

Textbox2 "Le Prénom"

J'ai moi-même été surpris par le résultat des macros que je te propose.

Bonjour à tous

Bonjour H2so4,

Je suis d'accord avec toi quand tu dis que tu ne sais pas où fini le nom et où commence le Prénom. C'est bien le "blanc de l'espace qui détermine. Pour cela il faut absolument avec les noms composés au lieu de laisser un blanc de mettre le tiret du 6.

Bonjour Steelson,

Le choix de deux textbox je l'ai déjà fait et bien entendu de mettre le résultat dans un 3ème textbox cela donne le résultat escompté.

Voulant utilisé le moins de textbox possible c'est à dire 1 textbox au lieu de 3, je pensais que c'était possible.

A ce que je vois c'est impossible de le faire.

Pour le moment j'utiliserai 3 tetxtbox en attendant que quelqu'un me donne une solution. De mon côté je me mettre à rechercher la solution.

Merci de votre aide à tous les deux

Amicalement

Noel

pourquoi faut-il la 3ème TextBox ?

45nom-prenom.xlsm (14.23 Ko)

Re Steelson,

Actuellement j'ai besoin d'une 3ème textbox pour associer les deux autres.

Car je n'ai pas besoin qu'il me recopie dans la feuille mais l'USF que j'utilise parce que je n'ai pas encore trouver la solution d'écrire directement dans u textbox le Nom et le Prénom dans le même textbox au format désiré.

Amicalement

Noel

ok

comme ceci alors

85nom-prenom.xlsm (14.33 Ko)
Rechercher des sujets similaires à "ucase lcase"