Microsoft 365 Séparer NOM et Prénom d'une ListBox dans 2 Textbox

NONO14

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Dans un formulaire, j'ai une ListBox qui s'affiche à son ouverture. Dans cette liste ("Lbx_Enregist") il y a 2 colonnes une qui contient un code et l'autre le Nom et Prénom.
Je souhaiterais que lorsque je clique sur une ligne de la liste, le NOM s'affiche dans la TextBox1 et le Prénom dans la TextBox2, en fait séparer le Nom du Prénom.
Les Noms et Prénoms sont également présent dans la feuille "Liste_agents" TS "t_Noms" colonne "Salarié".
J'ai cherché un peu partout, mais je n'ai pas trouvé pour cette situation.
Comment puis-je procéder et surtout est-ce possible ?
Je sais que cela va se compliquer s'il y a un Nom du style "De La Bouche en biais Marie-Thérèse".
Merci par avance pour votre aide.
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Sub test()
    x = Nom_Prenom("DE LA VILLARDIERE Jean Edhourd")
    MsgBox x(1) & vbCrLf & x(2)
End Sub
Function Nom_Prenom(chaine)
    Dim t(1 To 2),tx,i&
    tx = Split(chaine, " ")
    For i = 0 To UBound(t)
        If UCase(tx(i)) = tx(i) Then t(1) = Trim(t(1)) & " " & tx(i) Else Exit For
    Next
    t(2) = Trim(Replace(chaine, t(1), ""))
    Nom_Prenom = t
End Function
en formule
pour le nom
=Nom_Prenom(A1)

pour le prenom
=INDEX(Nom_Prenom(A1);2)

la condition pour le lastname étant le ucase bien sur et sans dérogation
 

TooFatBoy

XLDnaute Barbatruc
Le problème est l'espace, non les majuscules,.
Il sera impossible de trouver avec DUPONT Marie Thérèse sauf à mettre DUPONT Marie thérèse.
Le seul moyen de vous en sortir est le tiret : DUPONT Marie-Thérèse.
Cela me semble pourtant simple à comprendre. Utiliser juste l'espace comme séparateur ne permettra jamais de couvrir 100% des cas.
Une possibilité est d'utiliser des espaces insécables dans les noms et les prénoms, en lieu et place des espaces normales. ;)
 

NONO14

XLDnaute Occasionnel
re-,
et en cherchant la première minuscule, comme l'avait fait Job75 dans ce post?
Bonsoir Jeannette
Merci pour votre contribution. Je suis allé voir ce post de Job75 et il est très intéressant.
Reste à savoir si je peux l'adapter à mon cas.
J'ai également trouvé ce post sur internet


Il n'est pas mal non plus.
 

NONO14

XLDnaute Occasionnel
re
VB:
Sub test()
    x = Nom_Prenom("DE LA VILLARDIERE Jean Edhourd")
    MsgBox x(1) & vbCrLf & x(2)
End Sub
Function Nom_Prenom(chaine)
    Dim t(1 To 2),tx,i&
    tx = Split(chaine, " ")
    For i = 0 To UBound(t)
        If UCase(tx(i)) = tx(i) Then t(1) = Trim(t(1)) & " " & tx(i) Else Exit For
    Next
    t(2) = Trim(Replace(chaine, t(1), ""))
    Nom_Prenom = t
End Function
en formule
pour le nom
=Nom_Prenom(A1)

pour le prenom
=INDEX(Nom_Prenom(A1);2)

la condition pour le lastname étant le ucase bien sur et sans dérogation
J'ai mis cette condition dans le TextBox, l'écriture en majuscule y est obligatoire et pour le Prénom, seule la première lettre est en majuscule
 

TooFatBoy

XLDnaute Barbatruc
Je viens d'aller voir ton classeur.
C'est le UserForm ufGestTemps qui est concerné ?

Pour moi tu as deux solutions :
- soit tu sépares nom et prénom dans ton TS (c'est une colonne à ajouter et du code à modifier),
- soit tu remplaces les éventuelles espaces "normales" par des espaces insécables lors de l'écriture dans le TS, et le tour est joué. ;)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 143
Messages
2 106 302
Membres
109 556
dernier inscrit
epablo