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

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

Jojo973

XLDnaute Occasionnel
Supporter XLD
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

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...
 
Pour le prog de notre ami Boisgontier
Il "encaisse" en l'état comme ceci :

1592585624261.png


Bonne soirée
@+Thierry
 
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 )
 
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

- 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
11
Affichages
449
Réponses
7
Affichages
699
Retour