Rajeev a besoin d’une formule qui extraira les premières lettres d’une série de mots. Par exemple, si une cellule contient le texte «Rajeev Kumar Pandey», il aimerait extraire, dans une autre cellule, les lettres «RKP».

Le nombre de mots en série peut varier d’une cellule à l’autre.

Cette tâche peut être abordée de plusieurs manières. On suppose, pour commencer, que vous ne souhaitez pas modifier la structure de votre feuille de calcul en ajoutant des colonnes intermédiaires. Cette hypothèse exclut également l’utilisation de la fonction Texte en colonnes pour diviser la chaîne d’origine en mots individuels.

La clé du problème est de s’assurer que votre formule peut déterminer où se trouvent les espaces dans la chaîne d’origine. Vous pourriez penser qu’une formule telle que la suivante fera l’affaire:

=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)

Cette formule fonctionne partiellement. Cela fonctionne très bien si la chaîne d’origine a deux espaces séparant trois mots. S’il y a moins de mots, la formule renvoie une erreur. S’il y a plus de mots, alors il ne renvoie que les premières lettres des trois premiers mots (il ignore tout ce qui se trouve après le troisième mot).

Cela signifie que la formule doit non seulement vérifier les espaces, mais également gérer les erreurs s’il n’y a pas d’espaces ou s’il y a trop peu d’espaces. La vérification des erreurs signifie que la formule devient beaucoup plus longue:

=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1, SEARCH(" ",A1)+1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1))

Cette formule gérera, correctement, n’importe quoi de 0 à 4 mots dans une chaîne. Il suppose également que la chaîne ne commence ni ne se termine par un espace et qu’elle ne contient pas plusieurs nombres d’espaces entre les mots. Si vous souhaitez gérer un plus grand nombre de mots ou d’autres complications potentielles (telles que le nombre d’espaces entre les mots), il est préférable d’utiliser une fonction définie par l’utilisateur.

Une fonction définie par l’utilisateur peut extraire les premiers caractères des mots d’une chaîne de plusieurs manières. En fait, j’ai reçu pas mal de variantes qui accomplissent la même chose. L’exemple suivant, cependant, est peut-être le code le plus concis que j’ai rencontré:

Function Initials1(Raw As String) As String     Dim Temp As Variant     Dim J As Integer

Application.Volatile     Temp = Split(Trim(Raw))



For J = 0 To UBound(Temp)

Initials1 = Initials1 & Left(Temp(J), 1)

Next J End Function

Ce code fonctionnera dans n’importe quelle version de VBA à partir d’Excel 2000. La fonction Split «déchire» une chaîne en fonction de l’emplacement des espaces. Les mots individuels de la chaîne sont placés dans un tableau (dans ce cas, Temp) où vous pouvez ensuite accéder à des mots individuels. Pour utiliser la fonction dans votre feuille de calcul, utilisez simplement quelque chose comme ceci:

=Initials1(A1)

Si vous utilisez une version d’Excel qui ne prend pas en charge la fonction Split, le code suivant fonctionnera également très bien:

Function Initials2(Raw As String)

Dim p As Integer

Application.Volatile     Initials2 = ""

p = 0     Do         Initials2 = Trim(Initials2) & Mid(Raw, p + 1, 1)

p = InStr(p + 1, Raw, " ")

Loop Until p = 0 End Function

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (8661) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Pulling_Initial_Letters_from_a_String [Extraire les lettres initiales d’une chaîne].