extraction de dates

jlm38070

XLDnaute Nouveau
Bonjour,
Je fais partie d'une association qui rédige des biographies de personnes mortes en France durant la seconde guerre mondiale, le Maitron des fusillés.
Il est possible de récupérer des données au format txt.
J'utilise Excel pour récupérer les données et les"saucissonner". J'utilise pour cela les différents séparateurs : point-virgule, virgule...
La première finalité est de récupérer les lieux de décès afin de réaliser des cartes. Jusque là, je m'en sors à peu près.
Voici par exemple une carte que j'ai réalisée ces derniers jours. La chronologie a été faite "à la main". https://fr.batchgeo.com/map/98f88d384fa879421441b9814c9fbb5a
Mais je voudrais pouvoir extraire les dates de naissance et les dates de décès. Pour les premières, afin d'établir des statistiques relatives à l'âge au moment du décès, pour les secondes pour établir des chronologies.

Les dates sont au format jj mois aaaa, le mois étant écrit en toutes lettres. C'est une convention de rédaction et il y a déjà plus de 30000 notices biographiques.

Je joins un fichier pour exemple, avec quelques lignes, mais le traitement est susceptible de s'appliquer à des tableaux de plusieurs centaines, voire milliers de lignes !

Je vous remercie de votre aide car, sans être un néophyte (j'ai commencé avec Works et Windows 95 !), je suis laaaaaargement dépassé.
 

Pièces jointes

  • Demo jlm38070.xlsx
    10.3 KB · Affichages: 10

chris

XLDnaute Barbatruc
Bonjour

Tu peux joindre un ou deux txt d'origine

Avec PowerQuery on a cela en quelques clics (il traite bien les dates si pas d'accent manquant)
1669755503678.png

on remet la date en texte car Excel ne sait pas traiter les dates en deça de 1900 mais on ourrait calculer l'âge dans PQ

Quelle version Excel as-tu ?
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir @sylvanu
vba reconnaît très bien les dates avec mois en lettres si c'est bien orthographié

que ce soit avec cdate ou datevalue

VB:
Sub test()
MsgBox ExtraitDate("né le 7 décembre 1969 a paris ")
End Sub

Function ExtraitDate(N)
tablo = Split(N, " ")
    For i = 0 To UBound(tablo)
        If IsNumeric(tablo(i)) Then Exit For
    Next i

ExtraitDate = CDate(tablo(i) & " " & tablo(i + 1) & " " & tablo(i + 2))
'ou
'MsgBox DateValue(tablo(i) & " " & tablo(i + 1) & " " & tablo(i + 2))
End Function

pour la fonction age ( va jusqu'a 1800)
 

jlm38070

XLDnaute Nouveau
Bonjour et merci à tous de votre aide,

Je réponds avant d'avoir essayé les solutions que vous proposez.
J'ai la dernière version Excel (ordi neuf avec Office 365), ce qui ne va pas sans me poser quelques problèmes.
Je suis, par exemple incapable de changer le suffixe d'un fichier.
Le fichier que je joins est un fichier txt mais le suffixe qui est imposé est .xls
Il est sans aucune modification.

Pardonnez mon ignorance mais si j'ai une idée de ce qu'est VBA, je ne sais pas ce qu'est PowerQuery.
 

Pièces jointes

  • export_veille_301122_10 24 43.xls
    1.7 KB · Affichages: 9

TooFatBoy

XLDnaute Barbatruc
Bonjour,

comme tu peux le voir on a un soucis là ;)
Il a dit que c'était un .txt, donc forcément si tu l'ouvres en tant que .xls, ça doit poser problème.
Commence par remettre la bonne extension avant d'ouvrir le fichier. 😉


je me demande bien pourquoi avec office 365 on t'impose l'extension ("xls" version anterieur à 2007)
Il n'a jamais dit qu'Office 365 lui imposait du .xls.
Enfin... je n'ai pas vu ça en tout cas. 😉
 
Dernière édition:

jlm38070

XLDnaute Nouveau
Bonjour Patricktoulon et Chris,

Je sais bien, et ça m'énerve.
Je viens d'essayer la solution de Chris, ça fonctionne super bien !
Il a fallu déjouer les diverses sécurités pour pouvoir utiliser les macros.

Merci vraiment, vraiment.

Je vais pouvoir analyser aisément les données du point de vue de l'âge, et les trier en fonction des dates de décès.
C'est exactement ce que je voulais.
 

jlm38070

XLDnaute Nouveau
Tu as bien dit que le fichier joint était .txt ?

C'est normal que le fichier comporte plein de noms de gens et des liens internet ???
Oui, c'est un .txt, ça marche aussi avec .csv
Le fichier contient à chaque ligne :
N° de notice biographique, Nom, prénom, pseudonyme le cas échéant, date et lieu de naissance, mode de mort date et lieu de décès, profession, engagement (ou pas), URL vers la notice en ligne
Ce sont des données qui viennent du site Maitron des fusillés, dont je suis un des rédacteurs.
 

chris

XLDnaute Barbatruc
Bonjour
Je suis, par exemple incapable de changer le suffixe d'un fichier.
Le fichier que je joins est un fichier txt mais le suffixe qui est imposé est .xls
Il est sans aucune modification.

Pardonnez mon ignorance mais si j'ai une idée de ce qu'est VBA, je ne sais pas ce qu'est PowerQuery.
Pour joindre des txt ici, il faut les zipper et joindre le zip

Powerquery n'est pas du VBA ni des macros

Ci-joint exemple fait directement depuis ton fichier txt
Modifie le chemin en jaune sur Feuil1 puis Données, Actualiser Tout
Tu peux ensuite tester avec un autre fichier

En cas de message d'erreur
Lancer PowerQuery, Fichier, Options et paramètres, Options de requête, partie GLOBAL : Confidentialité, Toujours ignorer les paramètres de niveau de confidentialité

Cela supprimera le message d'erreur
Cette option par défaut de niveau de confidentialité ne sert à rien dans 99% des cas sauf à créer des problèmes

EDIT : j'ai laissé les dates de naissance en dates mais si tu veux les garder dans Excel, on peut mettre en texte sinon cela affichera des erreurs pour les dates antérieures à 1900
 

Pièces jointes

  • Demo_jlm38070_PQ.xlsx
    22.1 KB · Affichages: 2
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
oui on avait compris
avant tout il faut remasteriser tes fichier(txt ou csv)
car chaque ligne n'a pas le meme nombre de colonne
il faut donc corriger tout cela

sinon ca va être une torture a travailler
alors faire des replace "Né le " par "; Né le"
"mort " par ";mort "
"https"par ";https"
ect..ect...
ainsi tu pourra les exploiter en tant que csv

si joint un fichier dans le quel tu a des fonctions et une sub test

  1. lance la sub test
  2. le dialog s'ouvre et choisi le fichier txt ou csv (j'ai prevu les deux)
  3. ensuite tu a un message te demandant si tu veux voir le fichier remasterisé )
  4. si tu repond oui le fichier s'ouvrira en tant que csv
les colonnes seront bien distinctes
tu constatera aussi que les dates sont au format "jj/mm/aaaa"
on pourra ajouter aussi des expressions que je n'ai pas eu a gérer avec l'exemple de fichier que tu a donné

il te sera plus facile de retravailler sur des fichier csv en bon et due forme
on pourrait si tu veux ajouter la possibilité de remastériser tout tes fichier à la volée
c'est quasi instantané
ton csv au depart ouvert dans blocknote
1669813156486.png
on est d'accords que c'est compliqué il manque des séparateur et sur certaines ligne des hero de histoire il manque des données
voici après être passer par mes fonctions ouvert dans excel
comme tu peux le voir chaque colonne a un type de donnée
demo.gif
 

Pièces jointes

  • fich 3945.xlsm
    22.2 KB · Affichages: 2

jlm38070

XLDnaute Nouveau
Je viens de faire un essai avec un fichier de plus de 100 lignes.
Il y a effectivement des erreurs pour les dates antérieures à 1900.
Du coup, j'hésite entre ta première solution et la suivante.
re
oui on avait compris
avant tout il faut remasteriser tes fichier(txt ou csv)
car chaque ligne n'a pas le meme nombre de colonne
il faut donc corriger tout cela

sinon ca va être une torture a travailler
alors faire des replace "Né le " par "; Né le"
"mort " par ";mort "
"https"par ";https"
ect..ect...
ainsi tu pourra les exploiter en tant que csv

si joint un fichier dans le quel tu a des fonctions et une sub test

  1. lance la sub test
  2. le dialog s'ouvre et choisi le fichier txt ou csv (j'ai prevu les deux)
  3. ensuite tu a un message te demandant si tu veux voir le fichier remasterisé )
  4. si tu repond oui le fichier s'ouvrira en tant que csv
les colonnes seront bien distinctes
tu constatera aussi que les dates sont au format "jj/mm/aaaa"
on pourra ajouter aussi des expressions que je n'ai pas eu a gérer avec l'exemple de fichier que tu a donné

il te sera plus facile de retravailler sur des fichier csv en bon et due forme
on pourrait si tu veux ajouter la possibilité de remastériser tout tes fichier à la volée
c'est quasi instantané
ton csv au depart ouvert dans blocknote
Regarde la pièce jointe 1156872on est d'accords que c'est compliqué il manque des séparateur et sur certaines ligne des hero de histoire il manque des données
voici après être passer par mes fonctions ouvert dans excel
comme tu peux le voir chaque colonne a un type de donnée
Regarde la pièce jointe 1156873
Hélas oui, nos notices ne sont pas assez rigoureusement rédigées. Nous le savons et essayons d'y remédier.
J'ai pensé à utiliser les espaces comme séparateurs pour créer des colonnes.
Je vais tester ta solution.
 

Discussions similaires