Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

  • Initiateur de la discussion Initiateur de la discussion NONO14
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
Je vais regarder demain pour ajouter une colonne, mais je crois que cela risque d'affecter d'autres codes.
Remplacer les éventuelles espaces 32 par des espaces 160 serait sûrement beaucoup plus simple au niveau des modifications (quasiment aucune). 😉


Explication :

Au moment de la validation de la saisie du nom, je suppose que c'est la que tu passes le nom en majuscules, donc tu ajoutes une ligne dans laquelle tu REPLACE les éventuelles espaces 32 par des espaces 160.

Au moment de la validation de la saisie du prénom, je suppose que c'est la que tu passes l'initiale du prénom en majuscules et le reste en minuscules, donc tu ajoutes une ligne dans laquelle tu REPLACE les éventuelles espaces 32 par des espaces 160.

Ensuite quand tu écris le nom et le prénom dans ton TS, je suppose que tu concatènes le nom, une espace 32, et le prénom, donc là tu ne changes rien.

Pour retrouver le nom et le prénom, il suffit de splitter au niveau de la seule espace 32.
Et le tour est joué. 😉


Verstanden ? 🥸


ps : 32 et 160 sont les codes ASCII des deux caractères.
 
Dernière édition:
Avec le remplacement des espaces 32 par des espaces 160, normalement tu n'as que les trois macros suivantes à modifier, tu n'as plus besoin de la macro Séparation, et ça marche à tous les coups. 😉

VB:
Private Sub TextBox1_Change()
' Validation de la saisie du nom

    Me.TextBox1.Text = Replace(UCase(Me.TextBox1), Chr(32), Chr(160))

End Sub

VB:
Private Sub TextBox2_Change()
' Validation de la saisie du prénom

    Me.TextBox2.Text = Replace(WorksheetFunction.Proper(Me.TextBox2.Value), Chr(32), Chr(160))

End Sub

VB:
Private Sub Lbx_Enregist_Click()
'
Dim FullName$, FirstName$, LastName$, Code, TempsTravail

    ' On identifie FullName
    FullName = Me.Lbx_Enregist.Value

    ' On extrait le nom de famille avant l'espace
'    LastName = Séparation(FullName, 1)
    LastName = Split(FullName, Chr(32))(0)

    ' On extrait le prénom après l'espace
'    FirstName = Séparation(FullName, 0)
    FirstName = Split(FullName, Chr(32))(1)

    ' Récupération ligne si Name en colonne A
    Ligne = Application.Match(FullName, [A:A], 0)

    ' Récupération Code si en colonne B
    Code = Cells(Ligne, "B")

    ' Récupération temps travail si en colonne D
    TempsTravail = Cells(Ligne, "D")

    ' On affiche les résultats dans des TextBoxs
    Me.TextBox1.Value = LastName
    Me.TextBox2.Value = FirstName
    Me.TextBox3.Value = Code
    Me.TextBox5.Value = TempsTravail

' Rajouter rangement Code et TempsTravail

End Sub
 
Dernière édition:
Bonsoir,
Ce code VBA permet de diviser une chaîne de texte contenant un nom complet en un prénom et un nom de famille. Il utilise une structure personnalisée (NpN) pour stocker ces deux éléments. La fonction DiviseNpN détermine si elle doit retourner le prénom ou le nom en se basant sur des données stockées dans un fichier Excel, identifiant ainsi les prénoms et les particules. La séparation est effectuée par la fonction CynderNomPn, qui gère les particules et vérifie les prénoms à l'aide de requêtes.
 

Pièces jointes

Bonjour dysorthographie,
Merci pour votre participation et cet exemple. N'est-ce pas trop de code pour ma petite application ?
Cependant j'apprécie le travail que vous avez réalisé.
je vais tester la proposition de TootFatBoy et je verrais cque cela donne.
Encore merci pour votre participation
 
Bonjour TootFatBoy,
J'ai recopié ton code et fais les modifications nécessaires, mais j'ai une incompatibilité de type au niveau du code et du temps de travail.
 

Pièces jointes

J'ai recopié ton code et fais les modifications nécessaires, mais j'ai une incompatibilité de type au niveau du code et du temps de travail.
Aucun rapport puisque, comme je l'ai expliqué et comme tu peux le voir dans le code, je n'ai modifié que les nom et prénom.

Quelles modifications ?
Une fois que tu as remplacé les trois macros, il n'y a rien à modifier.
 
J'ai mis le code en place en remplaçant la colonne des Noms et Prénom qui est en C c'est tout et bien sûr les TextBox avec Replace.
Désolé, je ne comprends pas. 😞

Comme dit en #54, tu as juste à mettre les trois macros de #49 à la place des trois macros déjà présentes dans ton classeur.

Sauf si je me suis trompé cette nuit, je n'ai normalement modifié que le nom et le prénom, donc il ne devrait y avoir aucune incidence sur le reste.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
995
Réponses
3
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…