/ / Compter les mots dans Excel VBA

Compter les mots dans Excel VBA

Ci-dessous, nous examinerons un programme en Excel VBA cette compte le nombre de mots dans une plage sélectionnée. Un ou plusieurs espaces sont supposés séparer les mots.

Situation:

Compter les mots dans Excel VBA

1. Tout d'abord, nous déclarons deux objets Range et trois variables. Nous appelons les objets Range rng et cell. Une variable Integer appelée cellWords, une variable Integer appelée totalWords et une variable String appelée contenu.

Dim rng As Range, cell As Range
Dim cellWords, totalWords As Integer, content As String

2. Nous initialisons l'objet Range rng avec la plage sélectionnée et les deux variables de type Integer de valeur 0.

Set rng = Selection
cellWords = 0
totalWords = 0

3. Nous voulons vérifier chaque cellule dans une plage sélectionnée de manière aléatoire (cette plage peut être de toute taille). Dans Excel VBA, vous pouvez utiliser la boucle For Each Next pour cela. Ajoutez les lignes de code suivantes:

For Each cell In rng

Next cell

Remarque: le rng et la cellule sont choisis au hasard ici, vous pouvez utiliser n'importe quel nom. N'oubliez pas de faire référence à ces noms dans le reste de votre code.

4 Ensuite, nous déterminons pour chaque cellule de cette plage le nombre de mots qu’elle contient. Pour ignorer une cellule contenant une formule, ajoutez la ligne de code suivante entre For Each et Next (uniquement si cell.HasFormula est défini sur false, nous continuons).

If Not cell.HasFormula Then

End If

5 Tout d'abord, nous écrivons le contenu de la cellule dans le contenu variable. Ensuite, nous supprimons les espaces au début et à la fin (s’il en existe). Dans Excel VBA, vous pouvez utiliser la fonction Rogner pour cela. Par exemple, "excel vba" sera converti en "excel vba". Ajoutez les lignes de code suivantes dans votre instruction If.

content = cell.Value
content = Trim(content)

Remarque: la fonction de rognage dans Excel VBA ne supprime pas les espaces supplémentaires entre les mots, mais c’est acceptable dans cet exemple.

6. À ce stade, une cellule peut toujours être vide. Si la cellule est vide, nous affectons la valeur 0 à la variable cellWords. Sinon, il contient au moins un mot et nous affectons la valeur 1 à la variable cellWords. Ajoutez les lignes de code suivantes dans votre instruction If.

If content = "" Then
    cellWords = 0
Else
    cellWords = 1
End If

Une cellule peut contenir plus d'un mot bien sûr. C’est exactement ce que nous voulons savoir maintenant. A titre d’exemple, prenons: "excel vba". Si une cellule contient au moins un espace à ce stade, elle contient au moins un mot supplémentaire. Vous pouvez utiliser la fonction Instr dans Excel VBA pour rechercher un espace. Instr (contenu, "") recherche la position du premier espace dans le contenu.

7. Nous utiliserons la structure Do While Loop. Le code placé entre ces mots (aux étapes 8, 9 et 10) sera répété tant que la partie après Do While est vraie. Nous voulons répéter ces étapes tant que Instr (contenu, "")> 0 est vrai (tant que le contenu contient un espace et donc plus de mots). Ajoutez la boucle Do While dans votre instruction If.

Do While InStr(content, " ") > 0

Loop

8. Ensuite, nous prenons la partie du contenu commençant à la position du premier espace. Nous utilisons la fonction Mid pour cela.

content = Mid(content, InStr(content, " "))

Par exemple: Mid ("excel vba", InStr ("excel vba", "")) donnera "vba".

9. Nous coupons à nouveau la corde.

content = Trim(content)

Résultat: "vba"

10. Nous incrémentons cellWords de 1.

cellWords = cellWords + 1

Cette boucle Do While sera répétée tant quele contenu contient un espace et donc plus de mots. Dans notre exemple, nous sortons de la boucle Do While puisque "vba" ne contient plus d'espace! Résultat: cette cellule contient 2 mots.

11. Après avoir coché une cellule, nous ajoutons cellWords à la variable totalWords. Cette ligne de code doit être placée en dehors de la boucle Do While mais dans l'instruction If.

totalWords = totalWords + cellWords

L'ensemble du processus recommence pour la cellule suivante jusqu'à ce que toutes les cellules aient été vérifiées.

12. Enfin, nous affichons la valeur de totalWords à l’aide d’une boîte de dialogue. Cette ligne de code doit être placée en dehors de la boucle For Each Next.

MsgBox totalWords & " words found in the selected range."

13. Testez le programme.

Résultat:

Résultat Count Words

Lisez aussi: