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)

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: 10

Discussions similaires

  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
314
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…