formateur informatique

Couleur de certains mots dans les cellules, fonction VBA

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Couleur de certains mots dans les cellules, fonction VBA
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Mots clés choisis en couleur

Avec ce nouveau chapitre sur les astuces VBA Excel, nous proposons de développer une fonction pour le moins originale. Sa vocation est de faire ressortir automatiquement des mots clés en couleur dans des phrases écrites dans des cellules.

Classeur Excel à télécharger
Pour appuyer ce nouveau développement, nous suggérons de baser l'étude sur une feuille Excel abritant des phrases ainsi qu'une liste de mots clés à considérer.
  • Télécharger le classeur mots-en-couleur-dans-cellules.xlsm en cliquant sur ce lien,
  • Cliquer droit sur le fichier réceptionné,
  • En bas du menu contextuel, choisir la commande Propriétés,
  • En bas de la boîte de dialogue qui suit, cocher la case Débloquer et valider par Ok,
  • Puis, double cliquer sur le fichier pour l'ouvrir dans Excel,
Classeur Excel avec des mots clés à faire ressortir dans des cellules en VBA

Nous découvrons une feuille constituée de deux colonnes. Celle de gauche héberge quelques phrases dans lesquelles, les mots importants sont à faire ressortir automatiquement. Celle de droite abrite les mots clés à débusquer dans chacune de ces phrases pour les passer en couleur.

La fonction que nous devons construire ne doit rien inscrire là où elle est écrite. Elle doit agir sur les cellules sur lesquelles elle est appliquée. Ici, nous l'appliquerons en colonne D pour agir en colonne B.

Bien sûr et idéalement, cette fonction devrait être enregistrée dans le personal.xlsb (modèle Excel) pour un usage déployé dans tous les classeurs. Ici et pour la formation, nous choisissons de la coder en local.

Créer la fonction
La fonction à créer doit être signée avec deux paramètres. Le premier doit concerner la cellule de la première phrase à analyser. Elles seront ainsi toutes passées en revue par le jeu de la réplication. Le second doit impliquer la plage des mots clés à mettre en valeur dans ces phrases. Nous le comprendrons, elle devra être figée lors de la construction, pour permettre la réplication sur les cellules du dessous.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Module1,
Ainsi, nous affichons sa feuille de code au centre de l'écran.
  • Dans cette feuille de code, créer la fonction motsCouleur comme suit :
Function motsCouleur(texte As Range,liste As Range) As String

End Function


Son premier paramètre attend la cellule de la phrase dans laquelle il est question de déceler la présence des mots clés à mettre en valeur. Son second argument attend la liste des mots clés à rechercher dans ces phrases.

Les variables
Trois variables sont ensuite nécessaires pour les traitements à entreprendre.
  • Dans les bornes de la fonction, ajouter les déclarations suivantes :
...
Dim longueur As Byte: Dim position As Byte
Dim mot As Variant
...


Nous typons la première variable comme un entier court (As Byte). Elle doit détecter la longueur du mot clé en cours d'analyse dans la chaîne. La deuxième est aussi typée comme un entier court. Elle doit trouver la position du mot clé dans la chaîne pour influer sur sa couleur. La dernière est typée comme un Variant. Rien ne dit en effet que les occurrences à parcourir sont des textes. Nous utiliserons cette variable pour passer en revue toutes les valeurs de la plage des mots clés.

Parcourir chaque mot clé
Pour rechercher chaque mot de la liste dans chaque phrase, dont la première est passée en premier paramètre de la fonction, nous devons les parcourir tous. Pour cela et nous en avons l'habitude, l'arme fatale est une boucle For Each.
  • Après les variables, créer la boucle For Each suivante :
...
For Each mot In liste.Value

Next mot
...


Nous enclenchons cette variable mot dans une boucle destinée à parcourir tous les mots clés. C'est à ce moment-là qu'elle prend son type en fonction de la nature de l'occurrence à analyser.

Chercher chaque mot
Grâce à cette boucle, nous allons pouvoir chercher chaque mot clé dans la phrase passée en premier paramètre. C'est la fonction InStr qui répond par une position quand le terme est trouvé.
  • Dans la boucle, ajouter les instructions VBA suivantes :
...
For Each mot In liste.Value
position = InStr(texte, mot)
If position > 0 Then
longueur = Len(mot)
Exit For
End If

Next mot
...


Nous stockons la position de la recherche du mot dans la phrase (texte), dans la variable position. Si la fonction InStr répond par une valeur positive (If position > 0 Then), nous savons que le mot clé en cours d'analyse par la boucle a été trouvé. Nous prélevons sa longueur grâce à la fonction VBA Len. Grâce à cette information, nous pourrons ensuite le formater sur l'ensemble de ses caractères dans la phrase. Puis, nous mettons fin à la boucle (Exit For) puisque l'un des mots clés a été trouvé. En effet, dans cette solution, il n'est pas possible de faire ressortir plusieurs mots clés par phrase.

Formater en couleur le mot trouvé
Nous pouvons maintenant exploiter les renseignements récoltés par les variables position et longueur pour isoler le mot trouvé dans la chaîne.
  • Après la boucle, créer l'instruction conditionnelle suivante :
...
If position > 0 Then
texte.Characters(position, longueur).Font.ThemeColor = xlThemeColorAccent6
End If
...


Nous agissons directement sur la cellule passée en paramètre (texte). Nous exploitons sa propriété Characters. Elle représente la collection des caractères que renferme son texte. Nous isolons le mot clé en partant de la position trouvée et sur la longueur du mot pour influer sur sa couleur. Le thème vient du fait que l'on choisit cette couleur dans les propositions par défaut de l'outil Couleur de police.

Pour terminer la construction de cette fonction très spéciale par rapport à celles que nous avons bâties jusqu'alors, nous devons simuler le fait qu'elle retourne un résultat. Ce n'est pas le cas bien sûr, puisque c'est contre nature qu'elle n'agisse pas sur la plage où elle est exercée.
  • A la fin du code, ajouter la dernière ligne VBA suivante :
...
motsCouleur = ""
...


Avec une chaîne vide en retour, rien n'apparaîtra dans la cellule de la formule. En revanche, la fonction influera bien sur les cellules qui lui sont passées en premier paramètre. Pour en avoir le coeur net, il suffit de tester cette fonction.
  • Enregistrer les modifications (CTRL + S) et revenir sur la feuille Excel (ALT + Tab),
  • Cliquer sur la première cellule de la colonne voisine au premier tableau, soit : D6,
  • Taper le symbole égal (=) pour initier la syntaxe de la formule,
  • Inscrire la nouvelle fonction par son nom suivi d'une parenthèse, soit : motsCouleur(,
  • Désigner la première chaîne à traiter en cliquant sur sa cellule B6,
  • Taper un point-virgule (;) pour passer dans l'argument de la liste des mots clés,
  • Désigner cette liste en sélectionnant la plage de cellules G6:G10,
  • Puis, la figer en enfonçant la touche F4 du clavier, ce qui donne : $G$6:$G$10,
En effet, nous allons répliquer la logique sur les lignes du dessous et la liste de ces mots clés ne doit pas bouger.
  • Fermer la parenthèse de la fonction motsCouleur,
  • Puis, valider la formule par le raccourci CTRL + Entrée,
Ainsi, nous gardons active la cellule du résultat. Comme vous pouvez l'apprécier, le mot clé Paris ressort automatiquement en vert dans cette première phrase. Il fait effectivement parti de la liste. Notre fonction l'a repéré et l'a formaté. Et ça aussi vous l'avez remarqué, rien ne s'inscrit dans la case où la formule est construite, comme nous l'avions annoncé.

Faire ressortir les mots clés en couleur dans les cellules Excel en VBA

Maintenant, si vous double cliquez sur la poignée du résultat pour répandre la logique sur la hauteur du tableau, vous constatez que ce sont tous les mots clés décelés dans chacune des phrases qui ressortent automatiquement en couleur. Cette fonction peut donc s'avérer très intéressante lorsqu'il s'agit d'automatiser les opérations de mise en forme dans des tableaux volumineux.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn