Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Repérer les fautes d'orthographe
Avec cette nouvelle
astuce VBA Excel , nous poursuivons les découvertes de techniques permettant d'engager des traitements de masse automatisés sur les cellules de la feuille. Ici, le sujet est plutôt original concernant le
tableau Excel . Il est question d'identifier en couleur toutes les cellules hébergeant des
fautes d'orthographe à corriger.
Sur l'exemple illustré par la capture, nous travaillons à partir d'un tableau garni de fautes. Mais il n'est pas toujours évident de les repérer toutes d'un seul coup d'oeil, à plus forte raison lorsque la base de données est dense. De fait, l'utilisateur clique sur un bouton placé sur la droite du tableau. Instantanément,
toutes les cellules avec des fautes surgissent en couleur. Il ne reste plus qu'à les corriger et à repasser le traitement du bouton pour que tout rentre dans l'ordre. Il s'agit donc d'un mécanisme précieux et fort productif à exercer sur les tableaux longs à contrôler.
Classeur Excel à télécharger
Pour la mise en place de la solution, nous proposons de récupérer un classeur hébergeant ces fautes à déceler.
Nous retrouvons bien le petit tableau avec les nombreuses fautes qui le jalonnent. Par exemple, dès la première cellule de la première colonne, on peut noter la lettre
t manquante dans le mot Carottes. Mais sans repères visuels, difficile d'être précis et rapide dans les corrections à entreprendre, surtout si les lignes du tableau se multiplient.
La variable de cellule
Comme il s'agit d'un traitement global, nous souhaitons influer sur
toutes les cellules utilisées dans la
feuille Excel . De cette manière, l'utilisateur n'aura pas à sélectionner préalablement une plage à examiner.
Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel ,
Nous découvrons ainsi une procédure de code existante, certes encore vierge à ce stade.
Sub repererFautes()
End Sub
Mais elle est d'ores et déjà attachée au bouton. Nous n'avons plus qu'à l'implémenter. D'ailleurs, pour une telle fonctionnalité, il aurait été intéressant de coder cette macro dans le
modèle Excel (Personal.xlsb). Ainsi, un clic sur un bouton associé dans un ruban personnalisé aurait permis d'engager la
correction orthographique sur n'importe quelle feuille de n'importe quel classeur. Mais ici, c'est le développement de la solution qui nous intéresse.
Sub repererFautes()
Dim cellule As Range
End Sub
Un
objet de type Range désigne une plage de cellules ou à défaut, une seule cellule.
Parcourir les cellules de la feuille
Et précisément, c'est cette
variable cellule que nous allons exploiter pour
parcourir les cellules utilisées sur la
feuille Excel . Et pour cela, le
VBA Excel offre une propriété de feuille fort intéressante. Elle se nomme
UsedRange . Elle porte bien son nom. Elle permet de considérer toutes les cellules qui portent un texte ou au moins une mise en forme.
A la suite du code, créer la boucle For Each suivante :
...
For Each cellule In ActiveSheet.UsedRange
Next cellule
...
ActiveSheet est un objet qui désigne la
feuille active . Grâce à sa
propriété UsedRange et à l'
objet cellule à gauche de l'instruction, nous allons pouvoir analyser toutes les cellules utiles.
Ignorer les cellules de la première ligne
Mais avant de poursuivre, nous devons gérer une petite exception. Les cellules de la première ligne ne sont pas à considérer. Il s'agit de liens hypertextes qui seraient détectés comme de mots non reconnus. Pour cela, rien de plus simple, à chaque passage dans la
boucle For Each , il suffit de vérifier que la ligne de la cellule en cours d'analyse n'est pas la première.
Dans les bornes de la boucle , ajouter l'instruction conditionnelle suivante :
...
If cellule.Row > 1 Then
End If
...
Très simplement, nous exploitons la
propriété Row de l'
objet cellule pour vérifier que l'indice de ligne de la cellule en cours d'analyse est bien supérieur à 1.
Vérifier les fautes d'orthographe
L'
objet VBA Application offre une méthode tout à fait remarquable. Elle se nomme
CheckSpelling . Elle permet de
vérifier l'orthographe du texte qui lui est passé en paramètre. Dans notre cas, il s'agit du contenu de la cellule en cours d'analyse. Lorsqu'aucune faute n'est décelée, elle répond par True. Nous devons donc émettre un nouveau test, sur l'orthographe de la cellule cette fois.
Dans les bornes de l'instruction conditionnelle, créer la nouvelle condition suivante :
...
If Application.CheckSpelling(cellule.Value) Then
Else
End If
...
Nous prévoyons deux branches dans cette nouvelle
instruction conditionnelle . La première est destinée à rétablir la mise en forme d'origine des cellules si d'aventure les anciennes fautes d'orthographes avaient été corrigées dans le laps de temps. Dans le cas contraire (else), la seconde branche intervient. Elle est destinée à appliquer des attributs de format spécifiques pour faire ressortir les cellules incriminées.
Passer les fautes en couleur
Il ne nous reste donc plus qu'à opérer ces réglages de mise en forme.
Dans la première branche de l'instruction conditionnelle, ajouter le bloc With suivant :
...
With cellule
.Interior.ThemeColor = xlThemeColorDark2
.Font.Bold = False
End With
...
Nous exploitons l'
objet cellule à deux reprises. Plutôt que de répéter son nom, nous optimisons le code avec un
bloc with pour lister ses propriétés à affecter. La
propriété enfant ThemeColor de la
propriété Interior pour l'
objet cellule , permet de modifier la couleur de fond avec des attributs évolués issus de la palette du ruban Accueil. Avec la valeur xlThemeColorDark2, nous appliquons un gris clair au fond de la cellule. Une macro automatique fournirait ce code. Ensuite, nous enlevons le style gras (.Font.Bold = False), si d'aventure la faute avait été corrigée entre temps.
Dans le cas contraire, les attributs de format ne doivent pas être annulés mais forcés pour faire ressortir les cellules des fautes d'orthographe. La technique est identique. Seules les valeurs des attributs changent.
Dans la branche Else de l'instruction conditionnelle, créer le bloc With suivant :
...
With cellule
.Interior.ThemeColor = xlThemeColorAccent4
.Font.Bold = True
End With
...
Cette fois, c'est un jaune orangé que nous appliquons au fond de la cellule avec un style gras pour le texte.
Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
Puis, cliquer sur le bouton Trouver Fautes ,
Instantanément et comme vous pouvez l'apprécier, toutes les cellules des
fautes d'orthographe apparaissent dans des mises en valeur explicitement différentes. Si vous corrigez certaines de ces
erreurs orthographiques et que vous cliquez de nouveau sur le
bouton Trouver Fautes , vous constatez que les couleurs disparaissent, validant les corrections apportées.
Le
code complet de la
procédure VBA que nous avons accomplie est le suivant :
Sub repererFautes()
Dim cellule As Range
For Each cellule In ActiveSheet.UsedRange
If cellule.Row > 1 Then
If Application.CheckSpelling(cellule.Value) Then
With cellule
.Interior.ThemeColor = xlThemeColorDark2
.Font.Bold = False
End With
Else
With cellule
.Interior.ThemeColor = xlThemeColorAccent4
.Font.Bold = True
End With
End If
End If
Next cellule
End Sub