Compter les mots dans Excel VBA - Macros Excel faciles

Table des matières

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

Situation:

1. Tout d'abord, nous déclarons deux objets Range et trois variables. Nous appelons les objets Range rng et cell. Une variable entière que nous appelons cellWords, une variable entière que nous appelons totalWords et une variable chaîne que nous appelons contenu.

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

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

Définir rng = Sélection
CellMots = 0
totalMots = 0

3. Nous voulons vérifier chaque cellule dans une plage sélectionnée au hasard (cette plage peut être de n'importe quelle taille). Dans Excel VBA, vous pouvez utiliser la boucle For Each Next pour cela. Ajoutez les lignes de code suivantes :

Pour chaque cellule dans rng
Cellule suivante

Remarque : rng et cell 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 qui contient une formule, ajoutez la ligne de code suivante entre For Each et Next (uniquement si cell.HasFormula est false, nous continuons).

Si ce n'est pas la cellule.HasFormula Alors
Fin si

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

contenu = cellule.Valeur
contenu = Trim(contenu)

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

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

Si contenu = "" Alors
CellMots = 0
Autre
CellMots = 1
Fin si

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

7. Nous utiliserons la structure Do While Loop. Le code placé entre ces mots (à l'étape 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(content, " ") > 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(contenu, " ") > 0
Boucle

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

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

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

9. Nous coupons à nouveau la ficelle.

contenu = Trim(contenu)

Résultat : "vba"

10. Nous incrémentons cellWords de 1.

CellWords = CellWords + 1

Cette boucle Do While sera répétée tant que le contenu contiendra 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 vérifié 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 msgbox. Cette ligne de code doit être placée en dehors de la boucle For Each Next.

MsgBox totalWords & " mots trouvés dans la plage sélectionnée."

13. Testez le programme.

Résultat:

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave