formateur informatique

Formater une partie des cellules sélectionnées

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Formater une partie des cellules sélectionnées
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 :


Mise en valeur partielle

Pour des traitements automatisés sur des bases de données denses, nous allons démontrer comment réaliser simplement la mise en forme d'une partie d'un texte dans une plage de cellules présélectionnée.

Formater une portion de texte dans les cellules Excel sélectionnées

Sur l'exemple illustré par la capture, l'utilisateur sélectionne toutes les cellules de la première colonne du tableau. S'il clique sur le bouton Avant Parenthèses, dans chaque cellule, ce sont les informations placées avant les parenthèses qui sont automatiquement formatées en gras. S'il clique sur le bouton Entre Parenthèses, après avoir cliqué sur le bouton Réinitialiser, ce sont les données à l'intérieur des parenthèses qui sont formatées.

Classeur Excel à télécharger
Pour la mise en place de cette solution, nous suggérons d'appuyer le développement sur une feuille offrant ces séquences remarquables. Nous découvrons le tableau de la présentation avec ses spécificités d'écriture en première colonne. Il est accompagné de trois boutons sur la droite.

Parcourir les cellules de la sélection
Seul l'un de ces trois boutons est déjà fonctionnel. Il s'agit du deuxième intitulé Réinitialiser.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
Trois procédures de code existent. Elles sont construites dans un module attaché au projet, comme le confirme l'explorateur de projet sur la gauche de l'écran. La première et la troisième sont vides. Elles sont respectivement attachées au premier et troisième boutons. La deuxième en revanche est implémentée. Elle est attachée au deuxième bouton.

Sub avtP() 'Avant la parenthèse

End Sub

Sub rInit()
Dim cellule As Range
For Each cellule In Selection
cellule.Font.Bold = False
Next cellule
End Sub


Sub entreP() 'Entre les parenthèses

End Sub


Grâce à une boucle For Each, elle parcourt toutes les cellules sélectionnées par l'utilisateur. Et pour chacune d'entre elles, elle réinitialise le style gras à False pour retrouver un formatage sans attribut.

Formater avant les parenthèses
Pour débuter, nous souhaitons développer le code du premier bouton qui doit passer en gras le texte situé avant les parenthèses et ce, pour toutes les cellules sélectionnées.
  • Dans les bornes de la procédure avtP, ajouter tout d'abord les deux déclarations suivantes :
Sub avtP() 'Avant la parenthèse
Dim cellule As Range
Dim position As Byte


End Sub


Nous déclarons la variable cellule comme un objet de type Range. Elle représente une plage ou à défaut une cellule seule. Et précisément, c'est elle que nous allons utiliser dans une boucle, pour passer en revue toutes les cellules de la sélection. Nous déclarons la variable position comme un entier court. Pour chaque cellule, son rôle sera de mémoriser la position de la parenthèse ouvrante. Cet indicateur nous permettra d'entreprendre le formatage sur une longueur bien déterminée.

Ensuite, pour parcourir toutes les cellules de la sélection, il suffit de répliquer la boucle For Each de la procédure rInit.
  • A la suite du code, ajouter la boucle For Each suivante :
...
For Each cellule In Selection

Next cellule
...


A chaque passage dans cette boucle, donc pour chaque cellule scrutée tour à tour, nous devons prélever la position de la parenthèse. Puis, nous devons exploiter cette valeur pour formater en gras tous les caractères situés entre le premier et cette position.
  • Dans la boucle For Each, ajouter les deux lignes VBA suivantes :
...
position = InStr(1, cellule.Value, "(")
cellule.Characters(1, position - 1).Font.Bold = True
...


La fonction InStr est une fonction de recherche. Nous débutons la recherche à partir du premier caractère (1) sur le contenu de la cellule (cellule.Value) passé en deuxième paramètre. En troisième argument, nous lui passons l'occurrence à trouver, soit la parenthèse ouvrante. La fonction InStr répond par la position trouvée pour cette occurrence. Et cette position, nous la stockons dans la variable position.

Characters représente la collection de tous les caractères contenus dans la cellule. Mais en spécifiant ses paramètres, nous pouvons les cibler précisément. Nous partons du premier et nous poursuivons jusqu'à la position de la parenthèse. Nous retranchons une unité car cette longueur associée au premier caractère inclus, engloberait cette parenthèse. Ensuite et classiquement, nous descendons dans la hiérarchie des propriétés (Font.Bold) pour passer en gras (True) tous les caractères sur la longueur ainsi déterminée.

Nous pouvons d'ores et déjà tester le code VBA.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • Sélectionner les cellules de la première colonne du tableau, soit la plage C4:C14,
  • Puis, cliquer sur le bouton Avant Parenthèses,
Instantanément et comme vous pouvez l'apprécier, les textes placés avant les parenthèses ouvrantes, sont formatés en gras et ce, pour toutes les cellules désignées.

Formater en gras les textes avant les parenthèses dans les cellules Excel

Il s'agit d'un procédé intéressant et fort productif quand il est question d'engager ce type de traitements sur des bases de données volumineuses, faites de plusieurs centaines, voire de plusieurs milliers de lignes. De plus, le code est très simple à remonter, voire très rapide à répliquer et à utiliser pourquoi pas dans le modèle Excel, le personal.xlsb.

Formater dans les parenthèses
Maintenant et en quelques sortes, il est question de réaliser l'opération inverse. Au clic sur le troisième bouton, l'objectif est de passer en gras, seulement les informations placées entre les parenthèses. Le code est très similaire. Mais forcément, nous avons besoin d'une variable supplémentaire pour prélever la position de la parenthèse fermante. En faisant la différence avec la position de la parenthèse ouvrante, nous obtiendrons la longueur à formater en partant de la première parenthèse.
  • Copier (CTRL + C) tout le code situé entre les bornes de la procédure avtP,
  • Puis le coller (CTRL + V) dans les bornes de la procédure entreP,
  • Dès lors, l'adapter comme suit :
Sub entreP() 'Entre les parenthèses
Dim cellule As Range
Dim position1 As Byte: Dim position2 As Byte
For Each cellule In Selection
position1 = InStr(1, cellule.Value, "(")
position2 = InStr(1, cellule.Value, ")")
cellule.Characters(position1 + 1, position2 - (position1 + 1)).Font.Bold = True
Next cellule
End Sub


Nous renommons la variable position en position1. Nous déclarons la variable position2. Nous adaptons l'affectation de la première variable sur le nom position1. Nous prélevons ensuite la position de la parenthèse fermante dans la variable position2, toujours grâce à la fonction InStr. Puis, grâce à la collection Characters, nous partons du caractère placé après la première parenthèse (position1 + 1) pour considérer toutes les données situées avant la parenthèse fermante (position2 - (position1+ 1)). Cette différence donne la longueur précise pour procéder à la mise en valeur en gras comme nous l'avons fait précédemment.
  • Enregistrer les modifications et basculer sur la feuille Excel,
  • Cliquer sur le bouton Réinitialiser pour retrouver des cellules sans attribut,
  • Puis, cliquer sur le bouton Entre Parenthèses,
Formater en gras les textes entre parenthèses en VBA Excel

Là encore et comme vous pouvez le constater, ce sont seulement les informations encadrées de parenthèses qui sont mises en valeur.

 
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