XL 2016 Extraite lettre de cellule - RESOLU

gigiwin

XLDnaute Occasionnel
Bonjour,

Dans mon tableau j'ai en colonne G une liste de NOM Prénom.
Il me faut extraire les 3 premières lettres du PRÉNOM et du NOM, et mettre le tout en majuscule.
Par exemple DUBOIS Marie--->MARDUB.

J'ai bien trouvé la formule qui me fais cela:
=(MAJUSCULE(STXT(G2;TROUVE(" ";G2)+1;3))&(GAUCHE(G2;3)))
mais si j'ai une cellule avec NOM NOM Prénom; cela ne fonctionne pas. Et là, je sèche...
Que dois-je modifier au cas ou il y a 2 espace dans la cellule, mais que ça fonctionne aussi si il n'y en a qu'un?

Merci de votre aide.
 

Pièces jointes

  • 6 lettres.xlsx
    10.6 KB · Affichages: 23

Dugenou

XLDnaute Barbatruc
Re,
On pourrait faire un calcul qui donne l'emplacement du dernier espace, mais vous allez certainement avoir des cas avec deux prénoms séparés par un espace..
Je suggère d'avoir une colonne avec l'emplacement de l'espace que vous corrigez à la main pour les cas particuliers.
Cordialement
 

gigiwin

XLDnaute Occasionnel
Re,
On pourrait faire un calcul qui donne l'emplacement du dernier espace, mais vous allez certainement avoir des cas avec deux prénoms séparés par un espace..
Je suggère d'avoir une colonne avec l'emplacement de l'espace que vous corrigez à la main pour les cas particuliers.
Cordialement
Merci de t'intéressé à mon problème.
j'aurais du spécifier dans ma demande que je ne peux pas ajouter de colonne.
je n'ai accès qu'à une seule colonne; celle où je dois mettre la formule recherchée.
 

Victor21

XLDnaute Barbatruc
Bonjour à tous.

Essayez en AJ1 :
VB:
=SI(NBCAR(G3)-NBCAR(SUBSTITUE(G3;" ";""))=1;MAJUSCULE(STXT(G3;TROUVE(" ";G3)+1;3))&(GAUCHE(G3;3));
SI(NBCAR(G3)-NBCAR(SUBSTITUE(G3;" ";""))=2;MAJUSCULE(STXT(G3;TROUVE(" ";G3)+TROUVE(" ";G3);3)&(GAUCHE(G3;3)));"Traitement manuel"))
Fonctionne pour concaténer les trois premières lettres du premier terme, et les trois premières lettres du deuxième terme s'il y en a deux, (JULLAM pour Lambert Julien )ou du troisième terme s'il y en a trois (MARFOR pour Fortin Piret Marie).

Pour Charles Henri De La Rochefoucault, il faudra trouver un magicien ;)
 

laurent950

XLDnaute Barbatruc
Bonjour,
Voici la Formule :
Ecrire en G2 : DUBOIS Marie / Prénom Nom / --->MARDUB
Ou
Ecrire en G2 : Lambert DUBOIS Marie / Prénom Nom Nom / ----> MARLAMDUB

Formule en G2 à recopier vers le bas ci dessous.
* Sans gestion des espaces entre les noms = pour
VB:
(DUBOIS Marie) ou (Lambert DUBOIS Marie)
* Avec gestion des espaces entre les noms = pour
VB:
(DUBOIS     Marie) ou (Lambert    DUBOIS                   Marie)

Formule : si il y a des 1 seul espace entre les noms et le prénom.
VB:
En G2 pour Test : (AA1rrrrrrr BB2rrrrrrrrrr CC3rrrrrr)  ------>>>>   CC3AA1BB2
Formule a recopier en H2 : =SI(SOMMEPROD((NBCAR(G2)-NBCAR(SUBSTITUE(G2;" ";""))))=1;MAJUSCULE(STXT(DROITE(G2;NBCAR(G2)-TROUVE(" ";G2;1));1;3)&STXT(GAUCHE(G2;TROUVE(" ";G2;1));1;3));MAJUSCULE(STXT(DROITE(G2;NBCAR(G2)-TROUVE(" ";G2;TROUVE(" ";G2;1)+1));1;3)&STXT(GAUCHE(G2;TROUVE(" ";G2;1));1;3)&GAUCHE(SUPPRESPACE(STXT(G2;TROUVE(" ";G2;1);TROUVE(" ";G2;TROUVE(" ";G2;1)+1)-TROUVE(" ";G2;1)));3)))

Formule Bonus : si il y a des beaucoup d'espaces entre les nom et prénom soit 2 ou 3 ou 4 ou 5 etc.
VB:
En G2 pour Test : (AA1rrrrrrr         BB2rrrrrrrrrr           CC3rrrrrr)  ------>>>>   CC3AA1BB2
ormule a recopier en H2 : =SI(SOMMEPROD((NBCAR(SUPPRESPACE(G2))-NBCAR(SUBSTITUE(SUPPRESPACE(G2);" ";""))))=1;MAJUSCULE(STXT(DROITE(SUPPRESPACE(G2);NBCAR(SUPPRESPACE(G2))-TROUVE(" ";SUPPRESPACE(G2);1));1;3)&STXT(GAUCHE(SUPPRESPACE(G2);TROUVE(" ";SUPPRESPACE(G2);1));1;3));MAJUSCULE(STXT(DROITE(SUPPRESPACE(G2);NBCAR(SUPPRESPACE(G2))-TROUVE(" ";SUPPRESPACE(G2);TROUVE(" ";SUPPRESPACE(G2);1)+1));1;3)&STXT(GAUCHE(SUPPRESPACE(G2);TROUVE(" ";SUPPRESPACE(G2);1));1;3)&GAUCHE(SUPPRESPACE(STXT(SUPPRESPACE(G2);TROUVE(" ";SUPPRESPACE(G2);1);TROUVE(" ";SUPPRESPACE(G2);TROUVE(" ";SUPPRESPACE(G2);1)+1)-TROUVE(" ";SUPPRESPACE(G2);1)));3)))
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
@laurent950 !!!!t'aurais pas un peu plus compliqué ???:D
Lambert DUBOIS Marie
pour ce cas il veut : MARLAM et pas MARLAMDUB c'est ce que j'avais trouvé mais si on etend ma formule avec juste 1 espace ...ça va plus
vous avez bien une solution ..non ???? à mon avis il n'y a que celle de Patrick !!! mais prendre abonnement avec décodeur Excel + !!!!:);)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Pour le fun, une formule matricielle.

Deux hypothèses :
  1. les noms sont entièrement en majuscule
  2. les prénoms sont entièrement en minuscule sauf la première lettre qui est en majuscule

Formule matricielle en H2 à tirer vers le bas :
VB:
=MAJUSCULE(GAUCHE(GAUCHE(G2;CHERCHE(" ";G2))&"   ";3) & STXT(G2&"   ";MIN(SI(EXACT(MINUSCULE(STXT(SUBSTITUE(G2&"aaa";" ";"A");LIGNE($2:$99);3));STXT(SUBSTITUE(G2&"aaa";" ";"A");LIGNE($2:$99);3));LIGNE($2:$99)-1;""));3))

1601095910243.png
 

Pièces jointes

  • gigiwin- 6 lettres- v1.xlsx
    14.3 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour le forum,

Moi j'attends qu'un XLDnaute courageux me fournisse la liste des 33000 prénoms recensés en France.

Cela devrait pouvoir se trouver sur le web.

Et cela sera utile pour choisir les prénoms de mes futurs arrières-petits-enfants qui ne vont pas tarder à arriver.

Bon week-end.
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
797

Statistiques des forums

Discussions
315 059
Messages
2 115 807
Membres
112 588
dernier inscrit
sealy