Extraire differentes données

Poulpevert

XLDnaute Nouveau
Bonjour,

J'ai un tableau excel avec des centaines de lignes mais elle sont toutes en une seule colonne. Je voudrais s
extraire les données dans des colonnes différentes. Est-ce possible ?

SFERT, Christopher 1853-1944
DUPUIS, Aangela 1853-1944
ANDESON, Catherina 1940-2002
ABATIE, Napoleon 1982-2001
ABATIE, Teresa 1899-1993
NAPOLEON, Carolina (Tremblay) 1886-1980
NAPOLEON, Isabella 1923-1973
BASTA, Pasqualine 1881-1957
HOULERT, Rosita 1914-1918
ZVEREV, Calvin 1875-?
ZVEREV, Calvina ?-?
ISNER, Hodson G

Donc, je voudrais avoir
colonne 1: NOM soit SFERT
colonne 2: Prenom soit Christopher
colonne 3 : Nom de jeune fille () soit Tremblay pour NAPOLEON Carolina
colonne 4: Date de naissance soit 1853
colonne 5: date de deces soit 1944

Parfois je n'ai pas de date de naissance ni de décès.

J'ai essayé d'extraire le nom avec cette formule:
=GAUCHE(A1;TROUVE(",";A1)-1)
Cela fonctionne

mais après j'ai du mal a extraire les autres données, notamment les dates et le prénom.

Je joins un fichier d'exemples.

Merci
 

Pièces jointes

  • Classeur2.xlsx
    10.9 KB · Affichages: 28

laurent950

XLDnaute Accro
Bonsoir,
Voici le code :

Sub extraction()

For i = 2 To Cells(65536, 1).End(xlUp).Row
' Colonne B
Cells(i, 2) = Split(Cells(i, 1), ",")(0)
' Colonne C
Cells(i, 3) = Split((Split(Cells(i, 1), ",")(1)), " ")(1)
' Colone D
Cells(i, 4) = Split((Split(Cells(i, 1), ",")(1)), " ")(2)
Next i
End Sub

Laurent
 

Poulpevert

XLDnaute Nouveau
Merci à vous deux !!

laurent pour ce qui est de la macro, est-il possible de rajouter une colonne avec le nom de jeune fille (tremblay) dans le fichier exemple. En effet sinon pour cette ligne je me trouve avec le NJF dans la colonne Date et par consequent cela tronque les dates dans le fichier final. Merci
 

laurent950

XLDnaute Accro
sur certaine ligne dont celle-ci par exemple :
NAPOLEON, Carolina (Tremblay) 1886-1980

il y a 1 espace devant la ligne et 3 espaces à la fin représenté par des *
*NAPOLEON, Carolina (Tremblay) 1886-1980***

Normalement trim supprime les espaces en trop avant et après
trim(*NAPOLEON, Carolina (Tremblay) 1886-1980***," ") // ici les espaces sont des *

Le resultat attendu doit être
NAPOLEON, Carolina (Tremblay) 1886-1980
alors que le résultat est toujours
*NAPOLEON, Carolina (Tremblay) 1886-1980***

Sub extraction()
For i = 2 To Cells(65536, 1).End(xlUp).Row
' Nettoyage espace trim
Cells(i, 1) = Trim(Cells(i, 1))
' Colonne B = Nom
Cells(i, 2) = Split(Cells(i, 1), ",")(0)
' Colonne C = Prénom
Cells(i, 3) = Split((Split(Cells(i, 1), ",")(1)), " ")(1)
' Colonne D = Nom jeune fille
If Split(Cells(i, 1), ",")(1) Like "*" & "(" & "*" Then
Cells(i, 4) = Split(Split(Split(Cells(i, 1), ",")(1), "(")(1), ")")(0)
End If
' Colone E = DDN et Colone F = DDD
If Split(Cells(i, 1), " ")(UBound(Split(Cells(i, 1), " "))) Like "*" & "-" & "*" Then
Cells(i, 5) = Split(Split(Cells(i, 1), " ")(UBound(Split(Cells(i, 1), " "))), "-")(0)
Cells(i, 6) = Split(Split(Cells(i, 1), " ")(UBound(Split(Cells(i, 1), " "))), "-")(1)
Else
Cells(i, 5) = Split(Cells(i, 1), " ")(UBound(Split(Cells(i, 1), " ")))
End If
Next i
End Sub
 

Pièces jointes

  • extration suite.xlsm
    18.9 KB · Affichages: 22
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Un essai en n'utilisant que des formules.
  • La feuille Feuil1 utilise une colonne auxiliaire (colonne B) qui permet de simplifier les formules des colonnes suivantes. On peut masquer cette colonne. Copier les formules de B2 à G2 vers le bas
  • La feuille Feuil2 n'utilise pas de colonne intermédiaire. Les formules sont plus longues. Copier les formules de B2 à F2 vers le bas
 

Pièces jointes

  • Poulpevert- extraction chaines-v1.xlsx
    14.3 KB · Affichages: 26

Poulpevert

XLDnaute Nouveau
Bonjour mapomme,

C'est extraordinaire ces formules !!!C'est exactement ce que j'essayais de faire au démarrage, avec beaucoup beaucoup moins de réussite...

Je viens de tester et cela fonctionne à merveille. Par-contre je remarque que dans mon fichier original le nom est parfois isolé c'est a dire sans prénom qui le suive. Ce nom est alors seul et non suivi de virgule. comme Dupuy dans votre exemple. A ce moment là, le nom n'est pas repris dans la colonne D...
Dupuy Dupuy #VALEUR! #VALEUR!

Comment peut-on corriger cela ?

Merci encore du temps que vous prenez pour m'aider.

Bonne journée.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re Poulpevert,

Par-contre je remarque que dans mon fichier original le nom est parfois isolé c'est a dire sans prénom qui le suive. Ce nom est alors seul et non suivi de virgule. comme Dupuy dans votre exemple. A ce moment là, le nom n'est pas repris dans la colonne D...
Dupuy Dupuy #VALEUR! #VALEUR!

Comment peut-on corriger cela ?

En ajoutant une virgule le cas échéant ? Voir le fichier joint...
 

Pièces jointes

  • Poulpevert- extraction chaines-v2.xlsx
    15 KB · Affichages: 16

Statistiques des forums

Discussions
311 729
Messages
2 081 971
Membres
101 852
dernier inscrit
dthi16088