Premier caractère de chaque mot d'ne cellule

  • Initiateur de la discussion Initiateur de la discussion Sinistrus
  • Date de début Date de début

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 !

S

Sinistrus

Guest
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
 
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)
 
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
 
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:
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
 
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
 
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

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
951
Réponses
11
Affichages
671
R
Réponses
10
Affichages
2 K
V
Réponses
11
Affichages
2 K
VegetaRIEN
V
Retour