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

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
469
Réponses
5
Affichages
472
Réponses
12
Affichages
579
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…