Effectuer une vérification orthographique, Excel VBA
Voici le même code détaillé en VBA pour effectuer une vérification orthographique dans Excel, avec une explication.
Objectif :
L’objectif est d’utiliser VBA dans Excel pour vérifier l’orthographe dans une plage spécifique de cellules ou dans tout le document. Le code ci-dessous montre comment appliquer la fonction de vérification orthographique d’Excel de manière programmatique.
Code avec explication détaillée :
Sub SpellCheckRange() Dim rng As Range Dim cell As Range ' Définir la plage des cellules à vérifier ' Dans cet exemple, nous vérifions les cellules de la colonne A, de A1 à A100 Set rng = ThisWorkbook.Sheets("Feuil1").Range("A1:A100") ' Parcourir chaque cellule dans la plage définie For Each cell In rng ' Vérifier si la cellule contient du texte (éviter de vérifier les cellules vides ou numériques) If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then ' Effectuer la vérification orthographique sur la cellule actuelle ' La méthode CheckSpelling retourne False si un mot est mal orthographié If Application.CheckSpelling(cell.Value) = False Then MsgBox "Mot mal orthographié trouvé dans la cellule " & cell.Address & ": " & cell.Value, vbExclamation End If End If Next cell End Sub
Explication détaillée de chaque partie :
1. Sub SpellCheckRange :
Il s’agit du nom de la sous-routine (macro). Lorsque vous exécutez cette macro, Excel va exécuter le code à l’intérieur de cette sous-routine.
2. Dim rng As Range, Dim cell As Range :
- rng : Cette variable représente la plage de cellules que nous voulons vérifier. Dans cet exemple, la plage est de A1 à A100 sur la Feuil1.
- cell : Cette variable représente chaque cellule individuelle dans la plage rng sur laquelle nous allons itérer.
3. Set rng = ThisWorkbook.Sheets(« Feuil1 »).Range(« A1:A100 ») :
- Cette ligne définit la plage rng comme étant les cellules de A1 à A100 sur la Feuil1 du classeur actuel (ThisWorkbook fait référence au classeur contenant le code VBA).
- Vous pouvez modifier cette ligne pour pointer vers n’importe quelle plage que vous souhaitez vérifier (par exemple, une colonne ou une ligne spécifique, ou même la feuille entière).
4. For Each cell In rng :
Cette ligne commence une boucle For Each. La boucle va passer en revue chaque cellule individuelle dans la plage rng. cell représente la cellule actuelle à chaque itération de la boucle.
5. If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then :
Avant de faire la vérification orthographique, cette ligne vérifie si la cellule contient une valeur et si la valeur est du texte (une chaîne de caractères).
- IsEmpty(cell.Value) : Vérifie si la cellule est vide.
- VarType(cell.Value) = vbString : S’assure que la cellule contient du texte. De cette manière, les valeurs numériques ou autres types (comme les dates) ne seront pas vérifiées pour l’orthographe.
6. If Application.CheckSpelling(cell.Value) = False Then :
- Application.CheckSpelling : C’est une méthode intégrée d’Excel qui vérifie l’orthographe d’un mot. Elle retourne False si le mot est mal orthographié.
- Nous utilisons cette méthode pour vérifier la valeur de chaque cellule. Si l’orthographe est incorrecte (c’est-à-dire que la méthode retourne False), le code à l’intérieur du bloc If sera exécuté.
7. MsgBox « Mot mal orthographié trouvé dans la cellule » & cell.Address & « : » & cell.Value, vbExclamation :
Si la vérification orthographique échoue (c’est-à-dire si le mot est mal orthographié), cette ligne affiche une boîte de message avec l’adresse de la cellule et le mot incorrect.
- cell.Address : Affiche l’adresse de la cellule (par exemple, A1, A2, etc.).
- cell.Value : Affiche le contenu de la cellule (c’est-à-dire le mot mal orthographié).
- vbExclamation : Spécifie que la boîte de message doit afficher une icône d’exclamation pour indiquer un avertissement.
8. Next cell :
Cela termine la boucle et le macro passe à la cellule suivante dans la plage.
Personnalisation :
- Plage des cellules : Si vous voulez vérifier une autre plage, vous pouvez modifier la ligne Set rng = ThisWorkbook.Sheets(« Feuil1 »).Range(« A1:A100 ») en ajustant les références des cellules. Par exemple, pour vérifier une colonne entière, vous pouvez utiliser Range(« A:A« ).
- Classeur ou Feuille : Vous pouvez modifier Sheets(« Feuil1 ») si vous travaillez avec une autre feuille ou un autre classeur.
- Gestion des mots mal orthographiés : Actuellement, le code affiche uniquement un message lorsque le mot est mal orthographié. Vous pouvez étendre cette fonctionnalité pour proposer des options comme corriger le mot ou afficher une liste de suggestions. Cela pourrait impliquer l’utilisation de la méthode Application.SpellCheck ou d’autres fonctions de vérification orthographique en VBA.
Variante : Vérification orthographique pour l’ensemble du Classeur
Si vous souhaitez effectuer la vérification orthographique pour l’ensemble du classeur (et non seulement une plage spécifique), vous pouvez modifier le code comme suit :
Sub SpellCheckWorkbook() Dim ws As Worksheet Dim cell As Range ' Boucle à travers chaque feuille du classeur For Each ws In ThisWorkbook.Sheets ' Boucle à travers chaque cellule de la feuille For Each cell In ws.UsedRange ' Vérifier si la cellule contient du texte If Not IsEmpty(cell.Value) And VarType(cell.Value) = vbString Then ' Effectuer la vérification orthographique sur la cellule actuelle If Application.CheckSpelling(cell.Value) = False Then MsgBox "Mot mal orthographié trouvé dans la cellule " & cell.Address & " sur la feuille " & ws.Name & ": " & cell.Value, vbExclamation End If End If Next cell Next ws End Sub
Ce code va parcourir toutes les feuilles et toutes les cellules utilisées dans le classeur. Il vérifiera l’orthographe de chaque cellule comme précédemment, mais pour l’ensemble du classeur.
Conclusion :
Ce code VBA fournit une méthode simple mais efficace pour effectuer une vérification orthographique sur une plage spécifique ou sur l’ensemble d’un classeur. Il est important de noter que la fonction de vérification orthographique d’Excel est assez basique et se contente d’identifier les mots mal orthographiés sans les corriger automatiquement, à moins d’ajouter du code supplémentaire ou d’interagir avec l’utilisateur. Cela vous donne une base pour créer des fonctionnalités de vérification orthographique plus avancées selon vos besoins.