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

NONO14

XLDnaute Impliqué
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.
 

NONO14

XLDnaute Impliqué
Bonjour,
Juste pour une éventuelle remarque
Les noms sont-ils toujours écrits à l'identique, tel qu'inscrits dans l'onglet "Liste_agents"?
A savoir NOM Prénom (Majuscules pour les noms, Nom propre pour les prénoms)?
Si c'est le cas, ça ne devrait pas être difficile...
Le NOM sera toujours en majuscules et le Prénom, uniquement la première lettre. Les TextBoxs ont été codées dans ce sens.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

NONO14

XLDnaute Impliqué
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.
J'ai bien compris, pas de soucis sur ça. Mais ce n'est pas moi qui vais utiliser l'application et je ne sais pas comment ils vont saisir les données, je ne serais pas derrière leur épaule à surveiller, c'est pour cette raison que je cherche une parade, mais si ce n'est pas possible, ce n'est pas grave, je vais modifier la façon de faire en dehors de l'UF.
Merci pour vos commentaires à tous et vos codes.
 

NONO14

XLDnaute Impliqué
Ce code fonctionne à présent, je récupère bien mes données dans les TextBoxs.
Exit toujours le problème des Noms mais ce n'est pas important, je vais régler ça.

VB:
Private Sub Lbx_Enregist_Click()
Dim FullName$, FirstName$, LastName$, CodeT, TempsTravail
Application.ScreenUpdating = False

On Error GoTo NonTrouvé

'On identifie FullName
    FullName = Me.Lbx_Enregist.Value
    
'On extrait le Nom de famille avant l'espace
    LastName = Séparation(FullName, 1)
    
'On extrait le Prénom
    FirstName = Séparation(FullName, 0)
    
' 'On affiche les résultats dans des TextBoxs
    With Sheets("Liste_agents")
        Ligne = .Application.Match(FullName, [C:C], 0)  ' N° de ligne
        Me.TextBox1.Value = Séparation(FullName, 1)     ' Nom
        Me.TextBox2.Value = Séparation(FullName, 0)     ' Prénom
    End With
        
        Me.TextBox3 = Me.Lbx_Enregist.List(, 1)       ' Code
        Me.TextBox5 = Me.Lbx_Enregist.List(, 2)       ' Tps travail

Exit Sub

NonTrouvé:
MsgBox " Les nom et prénoms " & FullName & " n'ont pas été trouvés."
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour patricktoulon,
Je sais que vous aviez développé quelque chose à ce sujet mais je ne l'ai pas retrouvé.
Il est vrai que c'est un problème assez récurrent.
Merci pour votre participation à ce post
non je suis un peu dingo je le reconnais mais pas jusqu’à aller chasser le DAHU quand même
j'ai peut être participer une fois ou deux a une discussion simillaire pour ne pas dire la même mais je n'ai rien coder comme fonction sur ce point
par ce que ta question n'a définitivement pas de réponse valable à 100%
sauf si effectivement les noms sont en majuscule( ce qui est la norme typographique aujourd'hui)
alors là la question serait simplement separer les mots majuscule des mots minuscule
et je dis bien mot pas nom ou prénom
et encore !!!!! c'est donner une certaine faculté a excel(qu'il n'a pas bien entendu)de faire la différence entre une patate et un concombre
donc pour être précis séparer la chaine de caractères majuscule/minuscule
c'est tout ce que faire excel
il se marièrent et eurent beaucoup analphabète 🥳 🥳 🥳
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

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 ?
Il est plus facile de merger que de splitter...

Comprendre que, comme l'a dit Sylvanu, on n'est jamais vraiment sûr de splitter au bon endroit, alors que, au contraire, on peut difficilement se tromper en mergeant.


Bonne soirée
🥀 🌞 🥨
 

TooFatBoy

XLDnaute Barbatruc
Split = couper
"DE LA BOUCLE DE MON CEINTURON Tugdual" donne "DE LA BOUCLE DE MON CEINTURON" pour le nom et "Tugdual" pour le prénom... si tu as réussi à trouver le bon endroit pour la découpe !
Sinon ça peut te donner "DE LA BOUCLE DE" pour le nom et "MON CEINTURON Tugdual" pour le prénom...
Ou autres...

Merge = fusionner
Nom = "DE LA BOUCLE DE MON CEINTURON" et prénom = "Tugdual" donne "DE LA BOUCLE DE MON CEINTURON Tugdual" à tous les coups.


Autrement dit :
Quand tu sais que tu auras besoin de traiter séparément le nom et le prénom, tu prévois une BDD (Base De Données) qui comprend deux champs différents (un pour le nom et un pour le prénom).
En revanche, quand tu sais que tu traiteras toujours le nom et le prénom ensemble, tu peux te contenter d'un seul champ dans ta BDD pour le nom et le prénom.
 
Dernière édition:

NONO14

XLDnaute Impliqué
Split = couper
"DE LA BOUCLE DE MON CEINTURON Tugdual" donne "DE LA BOUCLE DE MON CEINTURON" pour le nom et "Tugdual" pour le prénom... si tu as réussi à trouver le bon endroit pour la découpe !
Sinon ça peut te donner "DE LA BOUCLE DE" pour le nom et "MON CEINTURON Tugdual" pour le prénom...
Ou autres...

Merge = fusionner
Nom = "DE LA BOUCLE DE MON CEINTURON" et prénom = "Tugdual" donne "DE LA BOUCLE DE MON CEINTURON Tugdual" à tous les coups.


Autrement dit :
Quand tu sais que tu auras besoin de traiter séparément le nom et le prénom, tu prévois une BDD (Base De Données) qui comprend deux champs différents (un pour le nom et un pour le prénom).
En revanche, quand tu sais que tu traiteras toujours le nom et le prénom ensemble, tu peux te contenter d'un seul champ dans ta BDD pour le nom et le prénom.
Oui tu as raison, j'aurais du y penser.
 

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. ;)
 

Discussions similaires

Statistiques des forums

Discussions
314 664
Messages
2 111 675
Membres
111 256
dernier inscrit
cvwvoizhjf