Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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.
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.
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 ,
Là encore et comme vous pouvez le constater, ce sont seulement les informations encadrées de parenthèses qui sont mises en valeur.