Séparer nom et prénoms

Bonjour à tous,

Nous avons un souci actuellement, en fait nous avons reçus un fichier client à intégrer sur un de nos sites.
Dans fichier reçus, les noms et prénoms ne sont pas séparés mais mis dans une seule colonne.
Les noms sont en majuscule et les prénoms en minuscule.

Exemple :

BERNARD Tibourin,
Juliette DUPONT MILES
NICO RIO Madeleine R.
Marie Liliane DUPONT

Avec un seul nom et un seul prénom, ça se passe bien quand je le sépare.
Mais il y a parfois 2 noms, et plusieurs prénoms
J'ai essayé de prendre le nom et le prénom mais ce qui se trouve entre le premier prénom et le nom, je n'arrive pas à l'avoir.
// Par exemple, dans Marie Liliane DUPONT, j'ai réussi juste à prendre :
Marie (prénom)
et
DUPONT (nom)

Est ce que vous avez des conseils ou a déjà rencontré ce genre de problème s'il vous plaît?

Cordialement,

Hello,

Je t'invite à mettre ta version d'Excel à jour.

En attendant je te propose une requête PowerQuery. Tu alimentes le tableau de gauche et ensuite tu cliques droit sur le tableau de droite puis actualiser. A condition que tu sois sur Excel 2016 ou plus

Je suis parti du principe que le/les noms de famille étaient en majuscule

@+

30nom-prenom.xlsx (17.29 Ko)

Bonjour à tous !

Une approche Power Query qui traite les initiales isolées (longueur à adapter) :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    AjtNoms = Table.AddColumn(Source, "Noms", each let
                a=Text.Split([Nom prénom]," "),
                b=List.Select (a, each Text.Upper(_)=_ and Text.Length(_)>2)
                in 
                Text.Combine(b," ")),
    AjtPrénoms = Table.AddColumn(AjtNoms, "Prénoms", each let
                a=Text.Split([Nom prénom]," "),
                b=List.Select (a, each Text.Upper(_)<>_ or Text.Length(_)<3)
                in 
                Text.Combine(b," "))
in
    AjtPrénoms

Bonjour tout le monde,

Une petite macro devrait faire l'affaire. Exemple. Probablement une petite erreur dans l'énoncé, le prénom Tibourin n'étant pas très connu

31nomprenom.xlsm (23.83 Ko)

Bonjour Rutchy et bienvenue sur XLP, bonjour à tous les autres ,

Comme il ne fait pas beau, une autre macro qui tente de traiter des noms avec particules, points et apostrophes. On s'amuse comme on peut !

La fonction personnalisée est : NomPrenom(Texte, prenom)

  • texte est le texte pour qu'on doit séparer entre le nom et le prénom
  • prenom est n'importe quoi et il est optionnel : S'il est absent alors on retourne le nom. S'il est présent alors on retourne le prénom.

Voir formule en colonne B et C.

Le code est dans module1 :

Function NomPrenom(ByVal x As String, Optional prenom) As String
Dim s, i&, premU&, DerU&, res$
   premU = -1: DerU = -1
   x = Replace(Replace(x, ".", ". "), "'", "' ")
   s = Split(Application.Trim(x))
   For i = 0 To UBound(s)
      If InStr(s(i), ".") = 0 Then
         If StrComp(s(i), LCase(s(i)), vbBinaryCompare) = 0 Then premU = i: Exit For
         If StrComp(s(i), UCase(s(i)), vbBinaryCompare) = 0 Then premU = i: Exit For
      End If
   Next i
   For i = UBound(s) To 0 Step -1
      If InStr(s(i), ".") = 0 Then
         If StrComp(s(i), UCase(s(i)), vbBinaryCompare) = 0 Then DerU = i: Exit For
      End If
   Next i
   If premU = -1 Then
      If IsMissing(prenom) Then NomPrenom = "" Else NomPrenom = x
      Exit Function
   End If
   If IsMissing(prenom) Then
      For i = premU To DerU: res = res & " " & s(i): Next
   Else
      For i = 0 To UBound(s): res = res & IIf(i < premU Or i > DerU, " " & s(i), ""): Next
   End If
   NomPrenom = Application.Trim(Replace(Replace(Mid(res, 2), ". ", "."), "' ", "'"))
End Function

Bonjour à tous,

Une solution alternative avec le pack de fonctions du site ou avec Google Sheets

Le nom :

=REGEX_EXTRACT(A1;"[A-Z]{2,}(?: [A-Z]{2,})?")

Le prénom :

=REGEX_EXTRACT(A1;"[A-Z][a-z]+(?: [A-Z][a-z.]+)?")
image

Pour Google Sheets, il suffit de remplacer le nom de la fonction REGEX_EXTRACT par REGEXEXTRACT :

image

Cordialement,

Rechercher des sujets similaires à "separer nom prenoms"