Si vous rencontrez une situation dans laquelle vous n’avez besoin que du premier mot dans chaque ligne d’une cellule plutôt que de tous les caractères, vous devez lire cet article. Le tutoriel suivant vous aidera à récupérer uniquement le premier mot via le code VBA dans Excel.

Dans cet article, nous allons nous concentrer sur la façon de conserver le premier mot uniquement dans chaque ligne d’une cellule séparée par un point-virgule via des codes macro.

Question: Les données sur lesquelles je travaille comportent parfois plusieurs lignes dans chacune des cellules et je souhaite extraire uniquement le premier mot.

Voici un aperçu du texte d’entrée (avant la feuille)

img1

===

Voici un instantané du texte d’entrée (après la feuille) dans la colonne A et nécessite une sortie dans la colonne B; voir ci-dessous un instantané:

===

img2

===

Pour obtenir le code; nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic

img3

  • Copiez le code ci-dessous dans le module standard

Function FirstWordOnly(rng As Range)

Dim Arr() As Variant

Dim Count As Integer

Dim i As Integer



Count = Len(rng) - Len(Replace(rng, Chr(10), ""))



If Count > 0 Then

ReDim Arr(0 To Count)

For i = 0 To Count

If i = 0 Then

Arr(i) = Left(rng, InStr(1, rng, " ") - 1)

ElseIf j = 0 Then

j = InStr(1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

Else

j = InStr(j + 1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

End If

Next



FirstWordOnly = Join(Arr, "; ")

Else

If InStr(1, rng, " ") > 0 Then

FirstWordOnly = Left(rng, InStr(1, rng, " "))

Else

FirstWordOnly = rng

End If



End If



End Function

img4

===

Maintenant, le code VBA est prêt à être utilisé; nous utiliserons la fonction définie par l’utilisateur nouvellement créée, c’est-à-dire « FirstWordOnly » dans Before Sheet.

Pour obtenir la sortie en utilisant UDF dans la cellule B2, la formule sera = FirstWordOnly (A2)

img5

Explication du code:

Dans le code ci-dessus, nous avons utilisé les fonctions COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.

«Len (rng)»; cela vérifiera la longueur de la cellule à laquelle nous nous référons ‘Replace (rng, Chr (10), » « )’; Le code vérifie le Chr (10), c’est-à-dire le saut de ligne dans chaque ligne, puis le remplace par des guillemets doubles (rien)

«Count = Len (rng) – Len (Replace (rng, Chr (10), » « ))»; Count stockera la différence de longueur de chaque ligne après avoir remplacé le saut de ligne Si Count> 0; cela vérifiera si la longueur de Count est supérieure à zéro et si elle est trouvée égale à zéro, c’est-à-dire que la cellule est vide, la condition IF n’exécutera pas le code. Pour vérifier cela, vous pouvez utiliser = FirstWordOnly (A5) dans la cellule B5 et il renverra 0

img6

Si la cellule n’est pas vide, la boucle For sera utilisée avec la condition IF et, avec la fonction LEFT, nous récupérerons le premier mot La fonction JOIN ajoutera un point-virgule à la fin s’il y a plusieurs lignes dans chaque cellule Conclusion: En utilisant UDF, nous pouvons tout supprimer dans chaque ligne de cellule sauf le premier mot via VBA. Cette fonction fonctionnera dans toutes les versions de l’ancienne à la nouvelle, à savoir Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.

image 48

Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]