Extraire les deux premières lettres d'une chaîne de mots

Résolu
Claire -  
danielc0 Messages postés 2009 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai besoin d'aide car je bute sur la dernière étape de ma formule excel.
Je vous explique, je cherche a créer une référence produit en automatique. La désignation possède de 1 à 4 mots. Lorsqu'il n'y a qu'un seul mot dans la désignation, la formule doit donner les 4 premières lettre du mot unique. Lorsque la désignation possède 2 mots et plus, elle doit donner les 2 premières lettres de chaque mot qui compose la désignation.

Exemple (au pif)
Désignation 1 : Moissonneuse => Ref : MOIS
Désignation 2 : Moissonneuse Batteuse => Ref : MOBA
Désignation 3 : Moissonneuse Batteuse Faucheuse => Ref : MOBAFA

Voici ma formule :

Pour les désignations avec un seul mot (formule ok)
=SI((NBCAR(D2)-NBCAR(SUBSTITUE(D2;" ";""))+1)=1;(GAUCHE(D2;4));)

Formule à la suite de la première => pour les désignations avec 2 mots (formule ok)
&(SI((NBCAR(D2)-NBCAR(SUBSTITUE(D2;" ";""))+1)=2;(GAUCHE(D2;2)&STXT(D2;CHERCHE(" ";2)+1;2));))

Formule à la suite de la seconde => pour les désignations avec 3 mots (formule ok)
&(SI((NBCAR(D8526)-NBCAR(SUBSTITUE(D8526;" ";""))+1)=3;(GAUCHE(D2;2)&STXT(D2;CHERCHE(" ";D2)+1;2)&STXT(D2;(CHERCHE(" ";D2;CHERCHE(" ";D2;1)+1))+1;2));))

La formule que j'ai pour les désignations à 4 mots ne fonctionne pas, quelqu'un aurait une idée pour m'aider?

Merci d'avance, c'est très important pour moi



A voir également:

8 réponses

Résumé de la discussion

La problématique consiste à générer une référence produit automatiquement à partir d'une désignation de 1 à 4 mots : pour un seul mot, on prend les 4 premières lettres ; pour deux mots ou plus, on prend les 2 premières lettres de chaque mot. Avec Excel 365, une solution proposée utilise LET et FRACTIONNER.TEXTE pour découper les mots, puis CONCAT et CHOISIR pour obtenir soit les 4 lettres du premier mot (1 mot), soit les 2 lettres de chaque mot (2 mots ou plus), par exemple: =LET(tbl;FRACTIONNER.TEXTE(A1;" ");CONCAT(CHOISIR(MIN(NBVAL(tbl);2);GAUCHE(A1;4);GAUCHE(tbl;2)))) . Une autre approche plus légère extrait les lettres par mot en remplaçant les espaces par un séparateur et en utilisant STXT/TROUVE, par exemple MAJUSCULE(GAUCHE(A1;2)&SIERREUR(STXT(A1;TROUVE("/";SUBSTITUE(A1;" ";"/";1))+1;2);"")&SIERREUR(STXT(A1;TROUVE("/";SUBSTITUE(A1;" ";"/";2))+1;2);"")&SIERREUR(STXT(A1;TROUVE("/";SUBSTITUE(A1;" ";"/";3))+1;2);"")), ce qui gère jusqu’à quatre mots. Enfin, il est possible d’employer une fonction personnalisée en VBA, nommée référence, qui renvoie la chaîne en majuscules et s’utilise comme =reference(A1).

Généré automatiquement par IA
sur la base des meilleures réponses
DjiDji59430 Messages postés 4335 Date d'inscription   Statut Membre Dernière intervention   704
 
Bonjour,

Un essai

https://www.cjoint.com/c/GBvsThyRzpi

Crdmt
1
AudreyDreyo Messages postés 1 Statut Membre
 

Bonjour DjiDji59430,

Comment puis-je adapter votre formule si j'ajoute du texte à votre cellule D3?

Merci.

0
via55 Messages postés 14730 Date d'inscription   Statut Membre Dernière intervention   2 750 > AudreyDreyo Messages postés 1 Statut Membre
 

Bonjour Audrey

Il est préférable d'utiliser une fonction personnalisée qui fait l'extraction des premières lettres quelque soit le nombre de mots

Voir le code de cette fonction donnée dans mon post 7 précédent

Cdlmnt

Via

0