Autres (RESOLU)Restituer la première lettre de chaque mot dans une chaine(Formule)

chaelie2015

XLDnaute Accro
Bonjour FORUM
Je souhaite afficher la premier lettre d'un mot, c'est fait par la formule =STXT(A2;1;1)
mais si j'ai une chaine des mots, je souhaite afficher toutes les premières lettres des mots :
Exemple
Dans la cellule A1 : "Créer une discussion" ==>dans B1=CUD
MERCI
 
Dernière édition:
Solution
Bonjour Phil,
Dans ce cas , autant optimisé et ne faire le UCase une seule fois :
VB:
Function PremLettres(C$)
    Dim T, i%
    T = VBA.Split(C, " "): PremLettres = ""
    For i = LBound(T) To UBound(T)
        PremLettres = PremLettres & Left(T(i), 1)
    Next i
    PremLettres = UCase(PremLettres)
End Function

Mais là aussi, je chipotes 😂

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chaelie,
Peut être avec une fonction perso :
VB:
Function PremLettres(C$)
    Dim T, i%
    T = VBA.Split(C, " "): PremLettres = ""
    For i = LBound(T) To UBound(T)
        PremLettres = PremLettres & Left(T(i), 1)
    Next i
End Function
 

Pièces jointes

  • Classeur1.xlsm
    13.4 KB · Affichages: 11

Phil69970

XLDnaute Barbatruc
Bonjour à tous

Juste en complément de la fonction de Sylvain
VB:
Function PremLettres(C$)
     Dim T, i%
     T = VBA.Split(C, " "): PremLettres = ""
     For i = LBound(T) To UBound(T)
           PremLettres = PremLettres & Left(T(i), 1)
     Next i
End Function


Et vu que Chaelie à mis son exemple en majuscule
Exemple
Dans la cellule A1 : "Créer une discussion" ==>dans B1=CUD

Je rajouterais une ligne

VB:
Function PremLettres(C$)
    Dim T, i%
    T = VBA.Split(C, " "): PremLettres = ""
    For i = LBound(T) To UBound(T)
        PremLettres = PremLettres & Left(T(i), 1)
        PremLettres = UCase(PremLettres)
    Next i
End Function

Mais je chipotes ;)

@Phil69970
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Phil,
Dans ce cas , autant optimisé et ne faire le UCase une seule fois :
VB:
Function PremLettres(C$)
    Dim T, i%
    T = VBA.Split(C, " "): PremLettres = ""
    For i = LBound(T) To UBound(T)
        PremLettres = PremLettres & Left(T(i), 1)
    Next i
    PremLettres = UCase(PremLettres)
End Function

Mais là aussi, je chipotes 😂
 

job75

XLDnaute Barbatruc
Bonjour chaelie2015, sylvanu, Phil69970,

A partir d'Excel 2016 il existe la fonction JOINDRE.TEXTE, formule matricielle en B2 :
Code:
=JOINDRE.TEXTE("";VRAI;MAJUSCULE(STXT(A2;SI(STXT(" "&A2;LIGNE(INDIRECT("1:"&NBCAR(A2)+1));1)=" ";LIGNE(INDIRECT("1:"&NBCAR(A2)+1));9^9);1)))
A+
 

Pièces jointes

  • Joindre(1).xlsx
    10.1 KB · Affichages: 11

Discussions similaires

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

Statistiques des forums

Discussions
314 862
Messages
2 113 631
Membres
111 926
dernier inscrit
vec440