Extraire des initiales de prénom

Bonjour,

J'ai une liste avec (beaucoup) de noms d'auteurs mais avec des formats hétérogènes (J. Dupont, Jacques Dupont, Bernard MARTIN, Y.-F. Pierre...). J'ai besoin d'homogénéiser cela avec un format "J. Dupont" dans une nouvelle colonne. Existe-t-il une formule pour cela ?

Merci d'avance pour votre aide !

Déborah

Bonjour,

On peut essayer avec des expressions régulières. Pourrais-tu mettre un lien vers un fichier simplifié ? https://www.sheets-pratique.com/fr/cours/partage

Bonjour,

En attendant le partage !!!!

si la liste est en B2:B voir cette formule ;-)))))

=SIERREUR(ArrayFormula(SUBSTITUE(SUPPRESPACE(GAUCHE(SUBSTITUE(B2:B;"-";" "))&" "&STXT(SUBSTITUE(B2:B;"-";" ")&"     ";TROUVE("µ";SUBSTITUE(SUBSTITUE(B2:B;"-";" ")&"     ";" ";"µ";1))+1;1)&" "&STXT(SUBSTITUE(B2:B;"-";" ")&"     ";TROUVE("µ";SUBSTITUE(SUBSTITUE(B2:B;"-";" ")&"     ";" ";"µ";2))+1;1)&" "&STXT(SUBSTITUE(B2:B;"-";" ")&"     ";TROUVE("µ";SUBSTITUE(SUBSTITUE(B2:B;"-";" ")&"     ";" ";"µ";3))+1;1)&" "&STXT(SUBSTITUE(B2:B;"-";" ")&"     ";TROUVE("µ";SUBSTITUE(SUBSTITUE(B2:B;"-";" ")&"     ";" ";"µ";4))+1;1)&" "&STXT(SUBSTITUE(B2:B;"-";" ")&"     ";TROUVE("µ";SUBSTITUE(SUBSTITUE(B2:B;"-";" ")&"     ";" ";"µ";5))+1;1));" ";".")&" ");"")

je propose

=arrayformula(if(A1:A="";"";LEFT(regexextract(A1:A;".*[ ]");1)&". "&SUBSTITUTE(A1:A;regexextract(A1:A;".*[ ]");"")))

mais je pense qu'avec cela il y aura des homonymes !!

https://docs.google.com/spreadsheets/d/1qRq-D50-NFD9cZJBo0i3QJTznS9ht2byWLY-kvRN0EI/edit?usp=sharing

Bonjour,

=JOIN(". ";GAUCHE(A1;1);MAJUSCULE(GAUCHE(REGEXEXTRACT(A1;"[^ ]*$");1))&MINUSCULE(DROITE(REGEXEXTRACT(A1;"[^ ]*$");NBCAR(A1)-CHERCHE(GAUCHE(REGEXEXTRACT(A1;"[^ ]*$");1);A1))))

Bonne Journée

Bonjour,

Merci à tous les 3 pour vos propositions ! J'ai tout testé et voici mes retours :

- Gilbert_RGI : la formule ne donne que les deux premières lettres du prénom et du nom ("J. P." par ex)

- Mikhail : la formule fonctionne bien, sauf quand, dans ma colonne source, il n'y a pas de prénom ("DUPONT" par ex), ce qui donne une erreur #N/A

- Imoka : la formule fonctionne bien, avec la casse qui s'adapte, c'est super. Mais, là aussi, quand il n'y a pas de prénom dans la colonne source, ça donne "D. Dupont" pour "DUPONT", ou "M. Martin" pour "MARTIN". (et je n'ai pas réussi à ce que la formule s'applique automatiquement à toute la colonne, j'ai donc dû la tirer sur mes 5000 lignes ;-)).

Si vous avez une astuce pour gérer cette situation, je suis preneuse, sachant que je peux maintenant isoler ces cas de figure si c'est plus simple.

Merci encore pour votre aide

Déborah

https://docs.google.com/spreadsheets/d/1qRq-D50-NFD9cZJBo0i3QJTznS9ht2byWLY-kvRN0EI/edit?usp=sharing

complément

=arrayformula(iferror(if(A1:A="";"";LEFT(regexextract(A1:A;".*[ ]");1)&". "&SUBSTITUTE(A1:A;regexextract(A1:A;".*[ ]");""));A1:A))

Merci pour votre rapidité !

Ce complément permet bien de récupérer les noms sans prénom au départ.

J'ai encore 2 questions :

- serait-il possible d'inclure l'harmonisation de la casse (F. Dupont) ? Je ne sais pas comment, ni même si c'est possible, fusionner avec la formule proposée par Imoka.

- Y a-t-il possibilité de récupérer les initiales des doubles prénoms (Eric-Emmanuel => E.E. ) ?

Merci

Encore une question : en manipulant un peu le fichier, je me rends qu'il n'est pas possible de trier par ordre alphabétique la colonne créée grâce à la formule : dès que je clique sur Trier de A à Z, toutes les lignes s'effacent, sauf la première. J'ai copié/collé les valeurs dans une autre colonne mais cela fait la même chose... En revanche, ça marche avec ma colonne d'origine, ou même avec celle issue de la formule d'Imoka.

Auriez-vous une explication à cette bizarrerie ?

Merci

Auriez-vous une explication à cette bizarrerie ?

J'ai proposé une formule globale (arrayformula) qui se propage à toutes les lignes,

Si tu veux trier, il faudrait plutôt avoir une formule "simple" et répétée. Voir ne colonne C de mon fichier. Mais c'est moins élégant et d'autre part c'est trié sur l'initiale du prénom !!

- serait-il possible d'inclure l'harmonisation de la casse (F. Dupont) ?

=iferror(if(A1="";"";LEFT(regexextract(A1;".*[ ]");1)&". "&proper(SUBSTITUTE(A1;regexextract(A1;".*[ ]");"")));proper(A1))

ou avec arrayformula

=arrayformula(iferror(if(A1:A="";"";LEFT(regexextract(A1:A;".*[ ]");1)&". "&PROPER(SUBSTITUTE(A1:A;regexextract(A1:A;".*[ ]");"")));PROPER(A1:A)))

je trouve la formule globale plus élégante, après tout il suffit de trier la colonne A ... mais si tu veux vraiment trier, mieux vaut alors séparer initiale prénom et nom dans 2 colonnes

toujours dans le fichier que j'ai posté

- Y a-t-il possibilité de récupérer les initiales des doubles prénoms (Eric-Emmanuel => E.E. ) ?

Probable que tu ne couvres quand même pas 100% des cas, mais on s'y approche !

=iferror(LEFT(regexextract(A1;".*[ ]");1)&".")&iferror(regexextract(A1;"(-[A-Z])")&".")&iferror(regexextract(proper(A1);" .*");proper(A1))

Bonjour,

Cette dernière formule permet bien de récupérer les initiales des prénoms doubles mais, du coup, elle considère aussi comme une initiale de prénom quand il y a un nom double...

ex : Pierre ROGER MARTIN => P. M. Roger Martin

D'autre part, je n'arrive toujours pas à trier sur la base de cette colonne (c'est ce qui me permettra de repérer des doublons), tout disparait de l'affichage, même si j'ai fait un collage spécial avec les valeurs uniquement.

Merci de votre aide !

Déborah

mets un fichier, je regarderai, pour le moment il n'y a jamais eu que le mien

Cette dernière formule permet bien de récupérer les initiales des prénoms doubles mais, du coup, elle considère aussi comme une initiale de prénom quand il y a un nom double...

ex : Pierre ROGER MARTIN => P. M. Roger Martin

non, cela donne bien P. Roger Martin

et en plus c'est bien trié

image

Voici un tout petit extrait du fichier :
https://docs.google.com/spreadsheets/d/1T3vdcBAm7st3NsTHML6aPKjwN_YhSSttRsXB0ttryZs/edit#gid=1170818...

j'ai mis en orange les cas où cela ne fonctionne pas.

Pour le tri, cela marche bien dans cette configuration mais pas sur mon fichier complet : peut-être est-ce dû au fait qu'il contient plus de 5000 lignes ?

Ah, merci, oui cela permettra d'affiner, même si on n'est pas sûr d'englober 100% des cas.

image

pour partager https://www.sheets-pratique.com/fr/cours/partage (je t'ai fait une demande de partage au nom de mike steelson)

pour le tri, regarde si toutes les lignes sont bien renseignées, il y a peut-être une rupture

J'ai autorisé le partage ;-)

Pour le tri, cela fonctionne très bien si je trie ma colonne initiale mais pas celle avec les formules (ou même la copie des valeurs issues de ces formules)... Il n'y a pas de cases vides. J'ai supprimé les quelques cases où il y avait un "-" au début de la cellule mais cela ne fonctionne toujours pas.

Enfin un fichier ... qui montre pas mal de choses !


Pour ce qui est du tri, comme je disais plus haut

mais si tu veux vraiment trier, mieux vaut alors séparer initiale prénom et nom dans 2 colonnes

sinon, c'est trié et normalement tu peux voir les doublons !

Donc regarde sur l'onglet Feuille 1, trie sur le nom puis les initiales des prénoms

image

Pour les façons dont sont écrits les noms et prénoms, ce n'est pas du tout ce que tu mettais plus haut :

ce sont les noms que TU as donnés comme tests :
Pierre ROGER MARTIN
J. Dupont
Jacques Dupont
Bernard MARTIN
Y.-F. Pierre
Eric-Emmanuel XXXXXXX

et maintenant, on ne voit plus du tout de tiret entre les prénoms, mais entre les noms composés !!

A. Abou-Kas
A. Badie-Cassagnet
A. J. Engineer
A. AMILLAC
A. Abdelgader
A. A. GUNTZ

j'ai donc repris l'écriture initiale que tu avais proposée.

Rechercher des sujets similaires à "extraire initiales prenom"