Séparer des NOMS COMPOSES texte

  • Initiateur de la discussion Initiateur de la discussion hlo
  • 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 !

hlo

XLDnaute Nouveau
Bjr,

Je suis à la recherche d'une astuce ou d'une macro pour séparer en 2 colonnes un listing de NOMS et PRENOMS COMPOSES fournis en une seule colonne.

Exemple:
DUPONT MICHEL
LE CROUHEN JULIEN
LE RIOU MARIE ISABELLE
ALLAIN CHANTAL MARIE

Merci d'avance pour tout tuyau...
🙂 hlo
hlo51702@yahoo.fr
 
Re : Séparer des NOMS COMPOSES texte

Bonjour,

Le problème c'est qu'il n'y a pas vraiment de règle donc ce n'est pas facile à gérer. Une solution est de faire une conversion de données / champ délimité par espace. Ca permet de détecter tous les cas "simples" (nom et prénom non composés).
On peut ensuite utiliser une formule du genre :
=SI(CHERCHE(" ";A1;1)<3;GAUCHE(A1;CHERCHE(" ";A1;1));GAUCHE(A1;CHERCHE(" ";A1;4)))
qui permet de traiter les noms de famille du modèle "LE ***" ou "DE ***"... Après.. "Patience et longueur de temps font plus que force ni que rage..."
Bon courage
 
Re : Séparer des NOMS COMPOSES texte

Bonjour hlo, bienvenue sur XLD,

Une fonction macro sera le mieux..

La solution la meilleure semble être de se constituer une bibliothèque (liste) des prénoms possibles. Elle sera assez longue car il n'y a pas que ceux du calendrier...

Le 1er prénom trouvé permettra de séparer nom (à gauche) et prénoms.

Mais il y a des noms qui sont des prénoms... Le résultat ne sera pas toujours garanti 😉

A+
 
Re : Séparer des NOMS COMPOSES texte

Re, salut 2passage,

Voici ce que l'on peut faire avec une liste de prénoms.

La fonction macro :

Code:
Function SEPAR$(txt$, n As Byte)
Dim ici As Byte, pos As Integer, nom$, prenom$
For i = 0 To UBound(Split(txt, " "))
  ici = Application.CountIf(Sheets("Liste prénoms").Columns(1), Split(txt, " ")(i))
  If ici Then
    pos = InStr(txt, Split(txt, " ")(i))
    If i Then nom = Left(txt, pos - 2)
    prenom = Mid(txt, pos, 999)
    Exit For
  Else: nom = txt: End If
Next
SEPAR = IIf(n = 1, nom, prenom)
End Function

Fichier joint.

A+
 

Pièces jointes

Re : Séparer des NOMS COMPOSES texte

Re,

Bon, si l'on suppose que le 1er mot fait forcément partie du nom, il faut commencer la boucle For à 1 :

Code:
Function SEPAR$(txt$, n As Byte)
Dim ici As Byte, pos As Integer, nom$, prenom$
For i = [COLOR="red"]1[/COLOR] To UBound(Split(txt, " "))
  ici = Application.CountIf(Sheets("Liste prénoms").Columns(1), Split(txt, " ")(i))
  If ici Then
    pos = InStr(txt, Split(txt, " ")(i))
    nom = Left(txt, pos - 2)
    prenom = Mid(txt, pos, 999)
    Exit For
  End If
Next
If prenom = "" Then nom = txt
SEPAR = IIf(n = 1, nom, prenom)
End Function

A+
 

Pièces jointes

- 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
Retour