récupération de mots dans un texte

bonjour

je voudrait sélectionner des noms et prénoms dans un texte de plusieurs pages sous Writer

ex:  DUPONT Pierre est un enfant blond

dans cette phrase je voudrait que DUPONT Pierre

ce n'ai jamais le même nom et prénom que je veux sélectionner

cordialement

Bonsoir,

Problème délicat : un programme n'a pas de notion de sémantique, il ne sait pas ce que sont un nom et un prénom, il ne reconnaît que les caractères.
Tout ce qu'on peut lui dire, par exemple, c'est de prendre tout ce qui est avant "est"..
Donc : les phrases ont-elles toujours la même structure ? Les nom et prénoms sont-ils toujours avant "est" ? ou un autre mot ?.. à la rigueur on peut travailler quelques alternatives sans que ça devienne trop lourd.

Si oui, la solution passe par une macro ou, a priori, une expression régulière ( mais je ne sais pas si les expression régulières Writer ont les mêmes possibilités que celles du shell Bash Linux, par exemple ... )

Bref, d'abord : les phrases ont-elle toujours "est" ou autre chose après les nom prénom ?
Ensuite on pourra chercher une solution

Christian F

bonsoir

c'est vrai un ordinateur ne connaît pas si c'est un nom ou un prénom

mais sait il s'il y a une suite de plusieurs majuscule suivie d'un espace une autre majuscule suivie de plusieurs minuscule avant un nouvel espace

avant le nom il peut y avoir Mrs ou Mme ou Mr mais pas toujours on peut le mettre si nécessaire

cordialement

Bonsoir,
On peut essayer de faire cela avec des expressions régulières, mais ça peut être compliqué. Voici l'idée : on fait un chercher-remplacer avec expressions régulières activées.
Le motif de recherche pourrait être :
([Mr|Mrs|Mme]*)\s([A-Z\-]+)\s([A-Z][a-z]+).*$
et le motif de remplacement serait simplement
$2\t$3
ça aurait l'effet suivant :
- extraire les noms en supposant qu'ils se distinguent par le fait d'être entièrement en majuscules ou trait d'union (pas d'espaces !)
- extraire un prénom en supposant qu'il commence par une majuscule et est suivi par des minuscules (pas de prénom composé, mais ça peut s'arranger au besoin)
- ignorer tout ce qui suit
- remplacer par le nom suivi d'une tabulation, suivi par le prénom
La tabulation c'est fort commode car si on sélectionne tout on peut recoller dans le tableur (collage spécial non formaté), et ça se dispose au mieux.
Si la suggestion convient à peu près, on pourra l'améliorer (cas des noms doubles ou des prénoms composés).
RC

bonjour

le résultat est mitigé

1) j'ai appliqué la formule

([Mr|Mrs|Mme]*)\s([A-Z\-]+)\s([A-Z][a-z]+).*$ dans recherche et

$2\t$3 dans déplacement

beaucoup de texte sont sélectionner avec les majuscules

tout les noms en majuscules ne sont pas tous sélectionné la 1ère fois

mais vérification à la main est possible

2) j'ai appliquer la formule

([A-Z\-]+)\s([A-Z][a-z]+).*$

toujours avec $2\t$3 dans déplacement

beaucoup de texte sont sélectionner avec les majuscules

tout les noms en majuscules ne sont pas tous sélectionné la 1ère fois

mais vérification à la main est possible

3) copie de cette sélection dans nouveau fichier Writer

j'ai appliquer la formule

([A-Z\-]+)\s([A-Z][a-z]+).*$

toujours avec $2\t$3 dans déplacement

(je ne sais pas a quoi sert cette formule $2\t$3 ?

comment l'utiliser?qu'en faire? ou est elle?)

je copie dans un nouveau fichier Writer

reste que les en majuscule avec les mots dont la 1ère lettre est majuscule le reste du texte autour est disparu il est  un texte continue

ça avance

4) j'ai copier de cette nouvelle sélection dans CALC

j’obtiens une ligne de tout les noms propres et prénom  dans une seul cellule

comment en faire une colonne

5) j'ai essayer la table dynamique mais sans succès

certainement mauvaise utilisation

6) j'ai aussi essayer avec enregistrement en CSV

chaque noms et prénoms sont dans une colonne mais sur une seul ligne

or je voudrai une colonne noms et prénoms ou une colonne noms et une colonne prénoms

je doit être un peu compliqué

cordialement

Oui, en effet, le retour est un peu compliqué. Il faut de la méthode ...

1) j'ai appliqué la formule

([Mr|Mrs|Mme]*)\s([A-Z\-]+)\s([A-Z][a-z]+).*$ dans recherche et

$2\t$3 dans déplacement

beaucoup de texte sont sélectionner avec les majuscules

tout les noms en majuscules ne sont pas tous sélectionné la 1ère fois

mais vérification à la main est possible

Bon, ceci n'est déjà pas clair. Que signifie "pas tous sélectionnés la première fois" ? Normalement, après avoir tapé Control-H et une fois que les motifs de recherche et de remplacement ont été introduits, on peut soit rechercher la coïncidence qui suit, et y faire le remplacement, ou bien tout remplacer.

Ça serait bien d'avoir un exemple avec trois ou quatre ligne de votre texte de départ.

2) j'ai appliquer la formule

([A-Z\-]+)\s([A-Z][a-z]+).*$

toujours avec $2\t$3 dans déplacement

beaucoup de texte sont sélectionner avec les majuscules

tout les noms en majuscules ne sont pas tous sélectionné la 1ère fois

mais vérification à la main est possible

La différence c'est que cette fois les éventuels préfixes (Mr, Mrs, Mme) sont complètement ignorés car non intégralement en majuscules.

3) copie de cette sélection dans nouveau fichier Writer

(je ne sais pas a quoi sert cette formule $2\t$3 ?

Cette expression régulière doit être introduite dans la zone "Remplacer: ".

comment l'utiliser?qu'en faire? ou est elle?)

Elle signifie : insérer le contenu de la deuxième sous-chaine repérée (désignée dans l'expression régulière par la deuxième paire de parenthèses), puis une tabulation, puis le contenu de la troisième sous-chaine.

4) j'ai copier de cette nouvelle sélection dans CALC

j’obtiens une ligne de tout les noms propres et prénom  dans une seul cellule

comment en faire une colonne

Quand on sélectionne dans Writer un texte avec des tabulations, on peut le coller dans Calc selon la méthode de "collage spécial" (Control-Maj-V) qui permet de choisir le séparateur de champs (tabulation dans ce cas) ; dès lors, le texte se répartit dans autant de colonnes qu'il y a de tabulations par ligne + 1.

5) j'ai essayer la table dynamique mais sans succès

certainement mauvaise utilisation

aucun rapport

Essayons de procéder avec ordre et méthode (Hercule Poirot). Le mieux serait d'envoyer un extrait de vos données ; les pièces jointes ne passant pas sur la liste, je suggère de sélectionner quatre lignes de votre texte source et de les coller dans un mail destiné à la liste.

RC

bonsoir

voici un extrait du  texte

l’aménagement et la fermeture seront à la charge de la société

Mr THIBAULT Lucien se chargera de la garde du garage sans autre rétribution que le prix du loyer

Mr RIQUIEZ fera l’avance des frais divers occasionnés par la construction des bateaux acceptant

représentant RIQUIEZ Maurice, CHAMPY René, THIBAULT Lucien

gardien matériel MENNIG Jacques

Bonsoir,

Pour ca :

>6) j'ai aussi essayer avec enregistrement en CSV
>chaque noms et prénoms sont dans une colonne mais sur une seul ligne
>or je voudrai une colonne noms et prénoms ou une colonne noms et une colonne prénoms

Si NOM Prénom dans colonne A

Nom seul dans colonne B -> =GAUCHE(A1;CHERCHE(" ";A1))

Prénom seul dans colonne C -> =DROITE(A1;NBCAR(A1)-CHERCHE( " " ;A1))

Nicolas Paour

Ah ! Cela devient plus clair. Les patronymes sont des suites de majuscules (au moins deux) suivies d'une espace. Derrière un patronyme vient un prénom constitué d'une majuscule et d'une suite de minuscules, suivie d'une espace.
Est-ce bien ainsi ?
Questions :
1) en appliquant cette règle, la troisième ligne ne va rien fournir car si "RIQUIEZ" est bien un patronyme aucun prénom ne fait suite. OK ?
2) y a-t-il des patronymes contenant des espaces (du genre : CARTIER BRESSON) ?
3) y a-t-il des prénoms composés (du genre Jean-Michel) ?
4) y a-t-il des lettres accentuées dans les prénoms (André, Françoise etc.) ?
Selon les 4 réponses, je verrai quoi proposer.
RC

essaie avec
([A-Z]+\b) ([A-Z]+[^ ,$\n]+)\b

$1\t$2 car je ne reprend pas l'expression Mr/Mme, etc...

Yves

bonjour

la réponse est pour les 4 questions

oui

est aussi possible : CARTIER-BRESSON tiret entre nom majuscule

CARTIER-BRÉSON accentuation sur nom majuscule et tiret

merci encore de votre attention

bonjour

sur le sujet 6 je me suis peut être mal expliqué

chaque noms et prénoms sont dans une colonne mais sur une seul ligne

j'aurai du dire dans une seul cellule 'A1'

ou un mot par colonne mais sur une seul ligne(1)

merci

Ah ! Ça devient plus subtil.
Est-ce que
DUPONT LA JOIE Jean Philippe
doit donner "DUPONT LA JOIE" comme patronyme et "Jean Philippe" comme prénom ?
Ou s'agit-il d'une hypothèse qui ne va pas se rencontrer ?

([:upper:][:upper:]+[ \-]*[:upper:][:upper:]*) *([A-Z]+[^ ,$\n]+)\b

Yves

bonjour

je n'ose y penser mais pourquoi pas

dans l'absurde si cela est possible il peut y avoir aussi

DUPONT LA JOIE Jean-Philippe-André

mais une sélection à la main peut être faite pour ces cas il ne faut pas exagérer

un simple Ctrl c d'un fichier  Ctrl v d'un autre fichier peut être fait sur des exceptions

Bonjour,
On sort du domaine Libreoffice, mais voila une solution en VBscript
1. créer un fichier C:\vb\lire.vbs et copier le script ci-dessous
2. créer un fichier C:\vb\texte.txt et coller le texte à traiter
3. exécuter lire.vbs pour créer la réponse texteout.txt

Bonjour,

Je crois avoir une solution qui marche, mais avec une limite cependant.

1. Ouvrir le texte, et afficher le dialogue de recherche-remplacement
    (Control-H).
2. Dans la zone "rechercher", mettre l'expression régulière suivante
    (faire un copier-coller) :
    .*[\s^]([:upper:][\-\s[:upper:]]+)\s+([:upper:][:lower:]+(\-[:upper:][:lower:]+)*)\b.*$
3. Cocher la case "Respecter la casse".
4.

    Dans la zone "remplacer", mettre l'expression de remplacement suivante :
    #$1\t$2

5. Cocher la case "expressions régulières".
6. Cliquer sur le bouton "tout remplacer".
7. Sauvegarder le document obtenu sous un nouveau nom (on ne sait jamais !)
8. Supprimer toutes les lignes ne commençant pas par # (Control-H encore)
9. Remplacer tous les # par "rien du tout" (Control-H encore)
10. Tout sélectionner, et copier.
11. Créer un nouveau document Calc.
12. Faire un collage spécial (Control-Maj-V).
13. Dans le dialogue, choisir "non formaté"
14. Dans l'écran suivant, cocher "tabulation" comme séparateur et aucun
    autre.

La limite : ça ne marchera pas sur les lignes contenant les noms de plusieurs personnes (seule la dernière sera interceptée) !

Je ne vois pas de moyen simple et automatique pour traiter de telles lignes et les restructurer sur plusieurs lignes.

Bon courage !

Enfin si, à la rigueur : on pourrait procéder en plusieurs étapes ; d'abord repérer les noms-prénoms et tous les remplacer avec des sauts de ligne devant et derrière, et une tabulation au milieu, et ensuite vider toutes les lignes ne contenant pas (ou plus) de noms-prénoms.

Ce qui ne peut pas marcher avec l'implémentation des expressions régulières de Libreoffice c'est de supprimer des lignes, parce que le caractère de saut de ligne (\n) ne peut pas être absorbé par une expression régulière (ça ne fonctionne pas).

Qu'en dites-vous ?

bonjour

ce que j'en dit

c'est d'abord merci très grand merci (je n'ose crier ce mot par politesse) à tous ceux qui on participer à trouver une solution à un problème qui de prime abord me paraissait simple et qui est pourtant très utile pour utilisation d'un texte

peut être un jour ceci deviendra banal dans LO

en attendant je vais bidouillé mais merci encore de vos propositions à tous

je vais essayé toutes les solutions proposées même si elle me paraissent bien compliquées pour moi

mais la vie est une suite d’apprentissage quelque soit l'age

je vais donc réaliser la proposition de Bob

je vous en rendrai compte ultérieurement

merci encore

bonjour me revoila

pas compris comment utilisé

8) Supprimer toutes les lignes ne commençant pas par # (Control-H encore)

et par conséquence

9) Remplacer tous les # par "rien du tout" (Control-H encore)

principalement Control-H oui mais mettre quoi où ?

b a ba certainement mais je suis un petit oiseau qui attend sa béqué

cordialement