Robin demande s’il existe un moyen d’utiliser les capacités de mise en forme conditionnelle d’Excel pour modifier la police utilisée dans une cellule ou pour modifier la taille de la police dans une cellule. La réponse courte est non, cela ne peut pas être fait – du moins pas avec une mise en forme conditionnelle. (Les commandes qui vous permettent de spécifier le nom et la taille de la police sont grisées dans la boîte de dialogue de mise en forme utilisée avec la mise en forme conditionnelle.)

Vous pouvez cependant utiliser une macro pour examiner le contenu d’une cellule et apporter des modifications à l’apparence d’une cellule. Considérez la macro suivante qui examine toutes les cellules que vous avez sélectionnées lorsque vous exécutez la macro. Si l’une des cellules a une longueur de plus de deux caractères ou une valeur supérieure à 10, la police de la cellule est modifiée.

Sub DoReformat()

Dim rCell As Range

For Each rCell In Selection.Cells         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

Pour utiliser la macro, sélectionnez simplement les cellules que vous souhaitez modifier, puis exécutez la macro. Si vous souhaitez que la mise en forme change plus automatiquement, vous pouvez demander à la macro de vérifier si une modification a été effectuée dans une certaine plage de cellules:

Private Sub Worksheet_Calculate()

Dim rng As Range     Dim rCell As Range

Set rng = Range("A1:A10")



For Each rCell In rng         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

Cette macro, lorsqu’elle est ajoutée à l’objet de feuille de calcul, s’exécute chaque fois que la feuille de calcul est recalculée. Il vérifie la plage A1: A10, en appliquant les mêmes tests que dans la macro précédente. Le résultat est que la mise en forme des cellules est vérifiée et modifiée en permanence. Pour que la macro vérifie une plage différente, changez simplement les adresses affectées à la variable rng vers le début de la macro.

Un inconvénient de cette macro est qu’elle peut devenir lente si vous avez une très grande plage de contrôle. Cela ira très rapidement si vous vérifiez A1: A10 (dix cellules), mais peut aller beaucoup plus lentement si vous vérifiez continuellement B2: N465 (plus de 6000 cellules). Dans ce cas, vous souhaiterez peut-être concevoir la macro pour qu’elle s’exécute chaque fois que la feuille de calcul est modifiée, mais n’agit que si la modification a été apportée à une cellule de votre plage cible. La version suivante est également ajoutée à l’objet de feuille de calcul:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rCell As Range

If Union(Target, Range("A1:A10")).Address = _       Range("A1:A10").Address Then         Application.EnableEvents = False         For Each rCell In Target             If Len(rCell.Text) > 2 Or _               Val(rCell.Value) > 10 Then                 rCell.Font.Name = "Arial"

rCell.Font.Size = 16             Else                 rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12             End If         Next         Application.EnableEvents = True     End If End Sub

La macro utilise la fonction Union pour vérifier si les cellules modifiées (transmises au gestionnaire d’événements dans la variable Target) se chevauchent avec la plage que vous souhaitez vérifier. Si c’est le cas, la vérification est effectuée sur les cellules de la plage cible.

Une chose à garder à l’esprit avec les macros qui affectent la mise en forme est que si vous avez une mise en forme conditionnelle appliquée à une cellule qui est également vérifiée par une macro, la mise en forme dans la mise en forme conditionnelle est prioritaire sur la mise en forme dans la macro. Si votre macro change le nom et la taille de la police, ce n’est pas un gros problème car la mise en forme conditionnelle n’affectera pas ces attributs. Cependant, si vous modifiez votre macro pour modifier également un attribut de format différent, tel que la couleur de cellule, et que cet attribut est également modifié par le format conditionnel, il ne semblera pas que la macro ait fait quoi que ce soit car Excel utilise de préférence la mise en forme conditionnelle à ce que fait la macro.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13236) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Changing_Font_Face_and_Size_Conditionally [Modification conditionnelle de la face et de la taille de la police].