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

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.
 

patricktoulon

XLDnaute Barbatruc
ben en fait je n'est pas essayé une requete
j'ai regardé dans une page il y a x sous pages

et vu que l'analyse se ferait par la librairie IE qui est devenue quasiment obsolete sur w 10 et 11 ca risque d'etre chaud

et faire un simple query en utilisant une feuille temporaire rendrait la chose interminable
 

Etoto

XLDnaute Barbatruc
Hello,

Désolé de polluer le fil @jlm38070.
et vu que l'analyse se ferait par la librairie IE qui est devenue quasiment obsolete sur w 10 et 11 ca risque d'etre chaud
Tu veux dire que sur W11, une requête WEB pourrait rencontrer des problèmes ? En tout cas, cela expliquerait plusieurs de mes soucis, notamment sur les pages web qui sont sur plusieurs pages ou sur pages rétractables.
 

jlm38070

XLDnaute Nouveau
Ce sont des listes établies à partir de la recherche avancée (vous pouvez le faire mais vous ne pourrez pas exporter les données, c'est réservé aux auteurs.) ou d'une requête SQL (Je ne savais pas faire ça il y a un mois !).
Pour faire simple, le Maitron des fusillés ( https://fusilles-40-44.maitron.fr/) est un dictionnaire en ligne des personnes mortes entre 1940 et 1945, victimes de la répression de Vichy ou des Allemands, mortes au combat, disparues, massacrées... C'est une partie d'un dictionnaire plus vaste, le Maitron (https://maitron.fr/).
Pour pouvoir établir des cartes, des statistiques, de regroupements... les notices sont complétées de balises, du genre profession, pays d'origine, organisation d'appartenance, de décès, département de décès, période de décès.... Ce sont ces mots clés qui servent aux requêtes SQL.
Je me suis lancé là-dedans car nous n'avons plus de personne susceptible d'exploiter cette grosse base de données qui s'étoffe chaque jour. Or, si la partie mémorielle est importante, l'aspect scientifique est vital.

Pour TooFatBoy : C'est bien comme cela que je faisais avec mon vieil ordi. Mais il semble que cela ne soit pas possible avec W11. L'Explorateur indique le nom du fichier, mais sans le suffixe, et si tu veux le modifier, tu obtiens quelque chose du genre fichier.csv.xls.

Je joins trois fichiers txt.
 

Pièces jointes

  • Fichiers txt.zip
    5.5 KB · Affichages: 2
  • Fichiers txt.zip
    5.5 KB · Affichages: 0

patricktoulon

XLDnaute Barbatruc
Hello,

Désolé de polluer le fil @jlm38070.

Tu veux dire que sur W11, une requête WEB pourrait rencontrer des problèmes ? En tout cas, cela expliquerait plusieurs de mes soucis, notamment sur les pages web qui sont sur plusieurs pages ou sur pages rétractables.
re
ben oui d'ailleurs je crois que tout les W10 et 11 bien sur ont vu leur librairie IE supprimées par une mise a jour en tout cas si c'est pas encore fait chez certains ça ne va pas tarder
 

patricktoulon

XLDnaute Barbatruc
bon je viens de regarder un de tes 3 fichiers du premier zip
et la fonction de scindage déjà a pris du volume et encore il en manque !!!!!
VB:
Function remasterFich(txt$)
    Dim i&, col
    txt = Replace(txt, "Né le ", ";Né le;")
    txt = Replace(txt, "Née le ", ";Née le;")
    
    txt = Replace(txt, "Né à ", ";Né /;Non connue;à ")
    txt = Replace(txt, "Né en ", "Né en;")
    txt = Replace(txt, "et en un lieu non connu", "lieu de naisance inconnue;")
    txt = Replace(txt, ", mort ", ";mort ")
    txt = Replace(txt, " à ", ";à ")
    txt = Replace(txt, "tué le ", ";tué le;")
    txt = Replace(txt, "tuée le ", ";tuée le;")
    'txt = Replace(txt, "tué ", ";tué ")
    txt = Replace(txt, "sommairement exécuté en représailles le ", ";sommairement exécuté en représailles le ;")
     txt = Replace(txt, "sommairement exécuté le ", ";sommairement exécuté le;")
   txt = Replace(txt, "massacré par un soldat allemand le ", ";massacré par un soldat allemand le;")
'massacré par un soldat allemand le
    txt = Replace(txt, "combat le ", "combat le;")
    txt = Replace(txt, "mortellement blessé le ", ";mortellement blessé le;")
    'mortellement blessé le

    txt = Replace(txt, "exécuté sommairement le", ";exécuté sommairement le;")
    txt = Replace(txt, "massacré le", ";massacré le;")
    txt = Replace(txt, "massacré par des Allemands le ", ";massacré par des Allemands le;")
    'massacré par des Allemands le
    txt = Replace(txt, "https", ";https")
    tbl = Split(txt, Chr(10))
    For i = 0 To UBound(tbl)
        tbl(i) = Replace(tbl(i), Val(tbl(i)), Val(tbl(i)) & ";")
        col = Split(tbl(i), ";")

        If UBound(col) >= 8 Then If InStr(1, col(8), "résistant") Then tbl(i) = Replace(tbl(i), "résistant", "proffession inconnue;résistant")
        If UBound(col) >= 3 Then If IsDate(col(3)) Then tbl(i) = Replace(tbl(i), col(3), DateValue(col(3)))
        If UBound(col) >= 6 Then If IsDate(col(6)) Then tbl(i) = Replace(tbl(i), col(6), DateValue(col(6)))
    Next
    txt = Join(tbl, vbCrLf)
    remasterFich = txt
End Function
je pense que je vais opter pour une methode plus radicale
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji