Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Extraction de lettre

blancolie

XLDnaute Impliqué
Bonjour le forum,

Dans le fichier ci-dessous, j'aimerais obtenir ce résultat F-AGAUKUAM dans la cellule B4 à partir de ces mots AGASTACHE AURANTIACA KUDOS AMBROSIA et Fanfelle.

J'ai essaye avec cette formule :

Code:
GAUCHE(A1;1) & STXT(A1;CHERCHE(" ";A1)+1;1)

mais j'arrive pas à avoir le résultat escompté.

Cordialement
 

Pièces jointes

  • Classeur212.xlsx
    8.6 KB · Affichages: 25

surchat

XLDnaute Occasionnel
Bonjour,
Questions:
a. le texte contient minimum et maximum combien de mots
b. dans votre texte, il y a
> 2 espaces entre le premier et deuxième mot
> 2 espaces entre le 2ième et le 3ième mot
> 1 espace entre le 3ième et 4 dème mot

Très risqué!
 

surchat

XLDnaute Occasionnel
=+LEFT(D4,1)&"-"&+LEFT(C4,2)&+MID($C$4,F4+1,2)&+MID($C$4,G4+1,2)&MID($C$4,H4+1,2)

Formule à adapter en fonction des réponses aux message #2
 

Pièces jointes

  • Classeur212 v1.xlsx
    9.2 KB · Affichages: 10

Modeste geedee

XLDnaute Barbatruc
Bonsour®
avec une fonction personnalisée (split)
 

Pièces jointes

  • blancolie.xlsm
    22.4 KB · Affichages: 17
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonjour
je rejoins Modeste geedee

dans un module
VB:
Function RefCode(valeur As String)
Dim t, I&,x$
t = Split(Application.Trim(valeur), " ")
For I = 0 To UBound(t): x = x & Left(t(I), 2): Next
RefCode = x
End Function
et dans la cellule B4 tu met
=SI(C4<>"";RefCode(C4);"")

et tu étends la formule vers le bas autant que besoins est


la particularité de cette fonction c'est que j'utilise application.trim pour régulariser le nombre d'espace a 1 entre chaque mots et supprime bien entendu les éventuels espace devant et après la chaîne complète
parti de là le left(part,2) de chaque item du split est concaténé dans la boucle sur "x"
et voila c'est plus simple

et si tu veux la "D4" avec
=SI(C4<>"";RefCode(C4&" " &D4);"")
 

patricktoulon

XLDnaute Barbatruc
j'oubliais
si tu veux tout en allcaps (majuscule)
VB:
Function RefCode(valeur As String)
Dim t, I&
t = Split(Application.Trim(valeur), " ")
For I = 0 To UBound(t): x = x & Left(t(I), 2): Next
RefCode = UCase(x)
End Function
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

On prend les deux premiers caractères de chaque mot. On est limité à 4 mots. Il est aisé de de l'étendre à 5 mots voire plus.

Une formule matricielle en B4 à tirer vers le bas:
VB:
=MAJUSCULE("F-"
&  SIERREUR(STXT(SUPPRESPACE($C4);PETITE.VALEUR(SI(STXT(" "&SUPPRESPACE($C4);LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));"");1);2);"")
& SIERREUR(STXT(SUPPRESPACE($C4);PETITE.VALEUR(SI(STXT(" "&SUPPRESPACE($C4);LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));"");2);2);"")
& SIERREUR(STXT(SUPPRESPACE($C4);PETITE.VALEUR(SI(STXT(" "&SUPPRESPACE($C4);LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));"");3);2);"")
& SIERREUR(STXT(SUPPRESPACE($C4);PETITE.VALEUR(SI(STXT(" "&SUPPRESPACE($C4);LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(SUPPRESPACE($C4))+1));"");4);2);""))

 

Pièces jointes

  • blancolie- codes- v1.xlsx
    12.2 KB · Affichages: 9

blancolie

XLDnaute Impliqué
Bonjour Surchat,

au maximum, il y a 5 mots, cela dépends des plantes. il y a juste un tiret entre F(Fanfelle) F qui va nous indiqué le fournisseur et pour les autres mots, pas d'espaces du tout.

J'ai vu que ta solution nécessité plusieurs étapes pour arriver au résultat final.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…