Majuscule et Nompropre en VB

  • Initiateur de la discussion Olivier
  • Date de début
O

Olivier

Guest
Bonjour à toutes et à tous,

J'ai récupéré deux valeurs à partir d'une TextBox et j'aimerais les placer dans une cellulle donc je fais:
ActiveCell.Value = Prénom & ' ' & Nom
mais j'aimerais que Prénom s'inscrive en Nompropre et Nom en majuscule, c'est quoi qu'il faut que je rajoute ?
en formule je sais que c'est = majuscule(Nom) ou = nompropre(prénom) mais en VB ???

Merci beaucoup
@+
Olivier
 

dg62

XLDnaute Barbatruc
Bonjour Olovier, Bertrand


un code qui te transforme une saisie du type


dupont louis en DUPONT Louis

et cela automatiquement.

Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
' Nom en majuscule et première lettre du prénom en maj le reste en min
Dim pos As Integer
Dim nom, prenom As String
    
If Not Intersect(Range('A3:A20'), Target) Is Nothing Then

    cel = Target.Value
    If cel > '' Then
        pos = InStr(1, cel, ' ', 1)
        nom = Left$(cel, pos)
        prenomMaj = Right$(cel, Len(cel) - pos)
        prenomMin = Right$(cel, Len(cel) - pos - 1)
        cel = UCase(nom) & UCase(Left$(prenomMaj, 1)) & prenomMin
        Application.EnableEvents = False
        Target = cel
        Application.EnableEvents = True
        
    End If
End If
       
End Sub

Si tu veux plus simple pour mettre en majuscule la fonction VBA est Ucase(texte)
 
B

bertrand

Guest
salut dg92 et olivier,

je suis dsl, je t'ai induit tout plein de l'erreur. j'ai confondu calcul interne et coller une fonction dans la feuille.

pour traduire une chaine texte dans VBA il s'agit bien de Ucase.

Encore dsl, la fin de journée devient difficile.

@+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Didier, Olivier, Bertrand, le Forum

Moi aussi fut un temps j'ai construit une usine à gaz pour faire ceci, et si je ne m'abuse c'est Jean-Marie (Mac) qui m'avait montré cette astuce :

Sub ProperName()
Dim TextBoxString As String

TextBoxString = InputBox('Tapez n'importe quoi')

MsgBox Application.WorksheetFunction.Proper(TextBoxString)
End Sub


Donc en fait Bertrand n'était pas loin de la solution !

Bonne Fin d'après midi.
@+Thierry
 
O

Olivier

Guest
ben voilà au final la formule qui marche nickel (en précisant que Nom et Prénom sont deux variables que j'ai récupéré d'un userform):

ActiveCell.Value = Application.WorksheetFunction.Proper(Prénom) & ' ' & UCase(Nom)

Merci à tous les 3

@+
Olivier
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour ou plutôt Bonsoir à tous

Alors heureux pour toi Olivier, comme quoi l'Union fait la Force.

Et oui Jean-Marie c'est bien toi le 'papa' de la divulgation de cette astuce sur XLD, voici le Fil pour un moment de nostalgie, plus de 20 mois déjà :

Lien supprimé

D'ailleurs en relisant ce fil on peut apparemment encore plus réduire le code comme ceci :

ActiveCell.Value = Application.Proper(Prenom) & ' ' & UCase(Nom)

(WorksheetFunction devenant un 'tacite sous entendu')

Bonne soirée
@+Thierry

PS on notera que j'écris Prenom sans accent, car bien que VBA laisse passer, les caractères spéciaux font parfois bien des misères dans les codes lors de la circulation du programme sur différentes machines non FR, et compression/décompression crytptage/décryptage etc.... Donc perso, je ne nomme jamais quoique ce soit avec des accents...
 

Discussions similaires

  • Question
XL pour MAC mise en forme
Réponses
2
Affichages
87
Réponses
5
Affichages
95