XL 2019 Enlever des espaces et séparer des NOM Prénom

cyrikou

XLDnaute Occasionnel
Bonjour,
j'ai un soucis sur un gros fichier avec beaucoup de données.
Les utilisateurs ont utilisés des espaces pour séparer des NOM Prenom et en ont mis 3 ou 4 par cellule.

J'aimerais supprimer les espaces (facile avec Remplacer) mais par la suite séparer les noms et les prénoms mis à la suite.
Franchement je bloque, j'ai essayé des macros, etc...

Merci pour votre aide
 

Pièces jointes

  • exemple.xlsx
    8.4 KB · Affichages: 18

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir cyrikou,
Comme exemple, c'est minimalisme !
Il en faut plus que vous ne pas revenir X fois dessus.
Par exemple des valeurs du type"Benoit Jean de la Tour Jean François Dupont" : Que Fait-on ?
Les noms sont ils toujours en majuscule et les prénoms en minuscule.
Bref donnez nous du grain à moudre...
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Pour le prog de notre ami Boisgontier
Il "encaisse" en l'état comme ceci :

1592585624261.png


Bonne soirée
@+Thierry
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour MaPomme, Thierry, Cyrikou,
Ça me rappelle un post qui fut interminable et n'a jamais trouvé de solution parfaite. Par ex :
Jean Charles de la Heunaudière
Valery Giscard d'Estaing
Pierre Jean
Jean Pierre
Il y a des noms qui sont des prénoms, comme pour votre humble serviteur.
C'est totalement inextricable si certaines règles ne sont pas fixées et respectées ( Majuscules par ex )
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re-bonsoir à tous,

Avec une fonction personnalisée : NomPrenom(x) où x est la cellule avec le texte à décomposer.
1592589444559.png


Le code :
VB:
Function NomPrenom(x) As String
Dim s, i, indiv

   s = Split(Application.Trim(x)): i = 0
   Do
      If estNom(s(i)) Then
         indiv = indiv & ";" & s(i)
         i = i + 1
         If i > UBound(s) Then Exit Do
         Do While estNom(s(i))
            indiv = indiv & " " & s(i)
            i = i + 1
            If i > UBound(s) Then Exit Do
         Loop
         Do While estPrenom(s(i))
            indiv = indiv & " " & s(i)
            i = i + 1
            If i > UBound(s) Then Exit Do
         Loop
         If i > UBound(s) Then Exit Do
         indiv = indiv & " "
      Else
         indiv = indiv & ";" & s(i)
         i = i + 1
         If i > UBound(s) Then Exit Do
         Do While estPrenom(s(i))
            indiv = indiv & " " & s(i)
            i = i + 1
            If i > UBound(s) Then Exit Do
         Loop
         Do While estNom(s(i))
            indiv = indiv & " " & s(i)
            i = i + 1
            If i > UBound(s) Then Exit Do
         Loop
         If i > UBound(s) Then Exit Do
         indiv = indiv & " "
      End If
   Loop
   indiv = Application.Trim(indiv)
   If Len(indiv) > 0 Then indiv = Mid(indiv, 2)
   NomPrenom = Replace(indiv, " ;", ";")
End Function
 

Pièces jointes

  • cyrikou- NomPrénom- v1.xlsm
    17.8 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 133
Membres
103 128
dernier inscrit
pmordel@parisbrestconsult