Premier caractère de chaque mot d'ne cellule

Sinistrus

XLDnaute Junior
Bonjour à tous,

Comme le nom du sujet l'indique, j'ai essayé ce code :
=GAUCHE(D2;1) & STXT(D2;CHERCHE(" ";D2)+1;1)

Il me donne juste celui des 2 premiers mots.
Pouvez-vous m'aider à aller au delà de 2 mots ?

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re à tous

Retrouvée dans mes archives, une fonction VBA personnalisée
Code:
Function ACRONYME(rng As Range) As String
Dim t, x&
t = Split(rng)
If IsArray(t) Then
For x = LBound(t) To UBound(t)
ACRONYME = ACRONYME & Left(t(x), 1)
Next x
Else
ACRONYME = Left(t, 1)
End If
End Function
A copier dans un module standard.

Et sur la feuille Excel, ecrire en B1: =ACRONYME(A1)
 

Staple1600

XLDnaute Barbatruc
Re

En cherchant encore plus avant dans mes archives poussiéreuses
Une autre fonction paramétrable (on peut choisir le nombre de mots pour lesquels il faut extraire le 1er caractère)
VB:
Function INITIALES(rng As Range, Optional NBMots As Long = -1) As String
Dim t, x&, cpt&
t = Split(rng)
For x = LBound(t) To UBound(t)
INITIALES = UCase(INITIALES & Left(t(x), 1))
cpt = cpt + 1
If NBMots > 0 And cpt >= NBMots Then Exit For
Next x
End Function
Exemple avec en A1 : plastic surgery disasters
En B1=INITIALES(A1) donnera PSD et =INITIALES(A1;2) donnera PS
 

job75

XLDnaute Barbatruc
Bonjour Sinistrus, Jean-Marie,

Une autre solution par fonction VBA :
Code:
Function Init(t$)
Dim i%
t = " " & Application.Trim(t) 'SUPPRESPACE
For i = 1 To Len(t)
  If Mid(t, i, 1) = " " Then Init = Init & Mid(t, i + 1, 1)
Next
End Function
Pour ceux qui sont allergiques au VBA une solution par formule matricielle (à valider par Ctrl+Maj+Entrée) :
Code:
=MCONCAT(REPT(STXT(" "&SUPPRESPACE(A1);LIGNE(INDIRECT("2:"&NBCAR(" "&SUPPRESPACE(A1))));1);STXT(" "&SUPPRESPACE(A1);LIGNE(INDIRECT("2:"&NBCAR(" "&SUPPRESPACE(A1))))-1;1)=" "))
MCONCAT est l'une des 67 fonctions de la macro complémentaire Morefunc de Laurent Longre.

A télécharger sur le web si vous ne l'avez pas encore installée, c'est gratuit.

A+
 
Dernière édition:

Sinistrus

XLDnaute Junior
Merci beaucoup,

J'ai essayé toutes les solutions mais je rencontre des erreur #NOM?

- J'ai ouvert un fichier excel, mis ma liste de 20116 lignes, enregistré avec prise en charge de macro
- J'ai ensuite fait Alt+F11 et ajouté les codes VBA que vous m'avez donné
- #NOM?

J'ai essayé le code par formule, idem, #NOM?

Le problème doit venir de chez moi ou du code ?
Cordialement
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir job75 ;)

Sinistrus
Normalement cela doit fonctionner
(les codes VBA sont à mettre dans un module standard)
Et faut enregister le classeur soit en *.xls ou *.xlsm ou *.xlsb
(mais pas en *.xlsx)
Initiales.jpg
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Un essai via une formule matricielle dans le fichier joint :
VB:
=GAUCHE(STXT(" " & $D2 & " ";PETITE.VALEUR(SI(STXT(" " & $D2 & " ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " ")));1)=" ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " "))));E$1)+1;PETITE.VALEUR(SI(STXT(" " & $D2 & " ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " ")));1)=" ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " "))));E$1+1)-PETITE.VALEUR(SI(STXT(" " & $D2 & " ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " ")));1)=" ";LIGNE(INDIRECT("$1:" &  NBCAR(" " & $D2 & " "))));E$1)-1))
 

Pièces jointes

  • Sinistrus- Première lettre de chaque mot- v1.xlsx
    12.7 KB · Affichages: 39

Discussions similaires

Statistiques des forums

Discussions
312 447
Messages
2 088 497
Membres
103 871
dernier inscrit
julienleburton