Scinder une chaine de caractuère

Bonjour,

Dans le fichier joint, j'ai dans la colonne C une liste de nom et prénom.

Je souhaiterais créer 2 colonnes séparées.

Entre le nom et le prénom, il n'y a qu'un espace (à quelques exceptions près).

Y aurait-il une formule pour me faciliter la tâche ?

D'avance merci pour votre aide.

Bonne journée.

Bonjour,

Attention, le classeur contient des données personnelles (Noms, N° Téléphone, adresse Mail)

Classeur à supprimer ou à anonymiser ...

A+

Bonjour,

à coté de ta colonne C, tu crées 2 autres colonne.

Dans la colonne prénom tu entres la formule suivante en D2 et tu étends vers le bas :

=GAUCHE(C2;CHERCHE(" ";C2)-1)

Dans la colonne nom tu entres la formule suivante en E2 et tu étends vers le bas :

=DROITE(C2;NBCAR(C2)-CHERCHE(" ";C2))

bonjour

un essai au plus simple

je te laisse finir de dupliquer ces 2 colonnes

cordialement

Bonjour le fil, bonjour le forum,

Très bonne remarque d'AlgoPlus !...

Sinon, une proposition VBA avec le code ci-dessous :

[Édition] Ooops j'ai oublié d'insérer une colonne dans mon code !... Correction dans prochain Post...

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim PN() As Variant 'déclare la variable O (Prénom Nom)

Set O = Worksheets("Feuil2 (2)") 'définit l'onglet O
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeures TV
ReDim PN(1 To NL, 1 To 2) 'redimensionne le tableau Prénom Nom (NL lignes , 2 colonnes)
PN(1, 1) = "Prénom" 'ligne 1  colonne 1 vaut Prénom
PN(1, 2) = "Nom" 'ligne 1 colonne 2 vaut "Nom"
For I = 2 To NL 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If UBound(Split(TV(I, 3), " ")) > 0 Then 'condition : si la donnée de la boucle (nom/prénom) contient au moins un espace
        PN(I, 1) = Split(TV(I, 3), " ")(0) 'récupère le prénom de la donnée de la boucle
        PN(I, 2) = Split(TV(I, 3), " ")(1) 'récupère le nom de la donnée de la boucle
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("C1").Resize(NL, 2).Value = PN 'renvoie le tableau PN dans la cellule C1 redimensionnée
End Sub

Re,

Voilì voilà :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim NL As Integer 'déclare la variable NL (Nombre de Lignes)
Dim PN() As Variant 'déclare la variable O (Prénom Nom)

Set O = Worksheets("Feuil2 (2)") 'définit l'onglet O
O.Columns(4).Insert Shift:=xlToRight 'ajoute une colonne
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
NL = UBound(TV, 1) 'définit le nombre de lignes NL du tableau des valeures TV
ReDim PN(1 To NL, 1 To 2) 'redimensionne le tableau Prénom Nom (NL lignes , 2 colonnes)
PN(1, 1) = "Prénom" 'ligne 1  colonne 1 vaut Prénom
PN(1, 2) = "Nom" 'ligne 1 colonne 2 vaut "Nom"
For I = 2 To NL 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If UBound(Split(TV(I, 3), " ")) > 0 Then 'condition : si la donnée de la boucle (nom/prénom) contient au moins un espace
        PN(I, 1) = Split(TV(I, 3), " ")(0) 'récupère le prénom de la donnée de la boucle
        PN(I, 2) = Split(TV(I, 3), " ")(1) 'récupère le nom de la donnée de la boucle
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
O.Range("C1").Resize(NL, 2).Value = PN 'renvoie le tableau PN dans la cellule C1 redimensionnée
End Sub
Rechercher des sujets similaires à "scinder chaine caractuere"