Séparer des noms prénoms composés sans tiret

Bonjour,

j'ai une liste de noms prénoms que je souhaite séparer. Ma difficulté c'est j'ai des noms composés avec espace et sans tirets (en majuscules), et des prénoms composés avec espace sans tirets (1ere lettre majuscule puis le reste en minuscule). Je canne depuis hier soir... Auriez-vous une idée de comment procéder?

un petit exemple, j'ai :

A1 DOS SANTOS Maria De Lurdes

Je souhaite obtenir :

B1 DOS SANTOS

C1 Maria De Lurdes

Merci pour votre aide précieuse.

bonjour,

2 propositions, fonction personnalisée et macro

44nomprenom.xlsm (16.98 Ko)

Bonjour le fil, bonjour le forum,


Peut-être comme ça mais attention les accents ne sont pas pris en compte :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim T As String 'déclare la variable T (Texte)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
For I = 1 To DL 'boucle 1 : sur toutes les lignes de 1 à DL
    T = O.Cells(I, "A").Value 'définit le texte T
    For J = 1 To Len(T) - 1 'boucle 2 : sur toutes les lettres du texte T (sauf la derniere)
        'Si la lettre de la boucle est une majuscule et la lettre suivante est une minuscule, sort de la boucle
        If Asc(Mid(T, J, 1)) < 91 And Asc(Mid(T, J + 1, 1)) > 96 Then Exit For
    Next J 'prochaine lettre de la boucle 2
    O.Cells(I, "B").Value = Mid(T, 1, J - 2) 'renvoie le nom (lettres de 1 à J-2 du texte T) dans la colonne B
    O.Cells(I, "C").Value = Mid(T, J)  'renvoie le prénom (lettres à partir de J du texte T) dans la colonne C
Next I 'prochaine ligne de la boucle 2
End Sub

Les données le la colonne A son séparées avec le nom en colonne B et le prénom en colonne C.

bonjour

un essai ..........................................

cordialement

37dinou.xlsx (8.94 Ko)

@tulipe_4

très joli !

@tulipe_4

Concis et efficace

En partant d'un raisonnement similaire j'avais trouvé une formule de 25 kms de long !

Chapeau bas

Merci beaucoup pour vos retours, je m'aperçois que cela ne fonctionne pas pour tous les noms de ma liste.. Pour être plus claire, je vous envoie un exemple sur fichier :

J'ai une colonne NOM Prénom que je souhaite modifier en Prénom Nom.

Merci encore pour votre aide.

Sonia

17classeur3.xlsx (9.10 Ko)

Re

Nous on s'aperçoit que la demande a changé !

En matriciel en utilisant la formule de Tulipe4

=STXT(A2;EQUIV(1;SI((CODE(STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)));1))*1&CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))*1)*1>9764;1;0);0);20)&" "&GAUCHE(A2;NBCAR(A2)-NBCAR(STXT(A2;EQUIV(1;SI((CODE(STXT(A2;LIGNE(INDIRECT("2:"&NBCAR(A2)));1))*1&CODE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))*1)*1>9764;1;0);0);20))-1)

Il faut cependant adapter car les majuscules accentuées nétaient pas prévues

Rechercher des sujets similaires à "separer noms prenoms composes tiret"