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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😂
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

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
 
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 😂
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
299
Réponses
5
Affichages
419
Réponses
12
Affichages
544
Retour