Tom a une feuille de calcul qui contient pas mal de texte. Il a besoin d’un moyen d’extraire, à partir du texte d’une cellule donnée, la première lettre de chaque mot entre parenthèses. Par exemple, si une cellule contient « Il y a une mauvaise herbe (au printemps) qui doit être éradiquée », alors Tom doit tirer « dts »

à partir de ce texte. Il soupçonne que cela doit être fait avec une macro mais ne sait pas par où commencer.

Si vous souhaitez effectuer cette tâche manuellement, ce n’est pas si difficile à accomplir. Je vais parcourir les étapes rapidement et généralement.

Supposons que votre texte se trouve dans la colonne A et que chaque cellule ne contient qu’un seul jeu de parenthèses. Dans ce cas, vous pouvez mettre ce qui suit dans la colonne B:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

Même si j’ai divisé la formule en deux lignes ici, rappelez-vous qu’il s’agit d’une formule unique et qu’elle doit être saisie comme telle. Copiez-le autant de cellules que nécessaire. Ce que vous vous retrouvez dans la colonne B est le texte contenu avec le premier jeu de parenthèses (le cas échéant) si la cellule.

Ensuite, sélectionnez toutes les cellules de la colonne B, appuyez sur Ctrl + C, puis utilisez Collage spécial pour coller les valeurs dans ces cellules. Cela supprime les formules mais laisse le texte extrait entre parenthèses.

Maintenant, les cellules de la colonne B doivent toujours être sélectionnées. Vous souhaitez utiliser l’assistant Texte en colonnes (à partir de l’onglet Données du ruban) pour diviser les mots en cellules individuelles. C’est facile à faire en utilisant un espace comme délimiteur dans l’assistant. Après cela, vous vous retrouvez avec un seul mot dans chaque colonne commençant par la colonne C.

Maintenant, dans la première colonne qui ne contient aucun mot (disons que c’est la colonne J), ​​vous devez entrer la formule suivante:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

Encore une fois, il s’agit d’une formule unique même si elle est représentée ici sur trois lignes. Cela donne les premières lettres souhaitées dans la colonne J.

De toute évidence, ce processus est « faisable » si vous avez seulement besoin de tirer les lettres de temps en temps. Si vous devez le faire plus souvent, vous feriez mieux de vous fier à une fonction définie par l’utilisateur pour faire le travail à votre place. Ce qui suit est simple qui fonctionnera très bien:

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

Pour utiliser la fonction, tout ce que vous avez à faire est d’utiliser ce qui suit dans une cellule:

=PickInitials(A1)

La fonction fonctionnera très bien s’il n’y a pas de texte entre parenthèses dans la cellule, s’il n’y a qu’une parenthèse ouvrante, et elle ne sera pas renvoyée par plusieurs espaces entre les mots. La fonction conserve la capitalisation des lettres initiales. Si vous voulez qu’il renvoie toutes les lettres en minuscules, vous pouvez changer la dernière ligne de la macro en ceci:

PickInitials = LCase(sTemp)

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13622) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.