Excel - Mises en forme conditionnelles illimitées

Octobre 2017


Mises en Forme Conditionnelles Illimitées



Introduction

La Mise en Forme Conditionelle (ou MFC) permet d'appliquer, à une cellule ou à plusieurs cellules sélectionnées, différents formats qui changeront automatiquement en fonction de la valeur (ou du résultat obtenu par la formule) qu'elles contiennent.


Pour les versions d'Excel antérieures à 2007, le nombre de MFC est limité à 3, ce qui est peu. Ayant vu beaucoup de demandes pour repousser cette limite, je me suis amusé à écrire une Macro qui permet de le faire, sans avoir besoin de la modifier. Elle fonctionne donc à la demande selon les besoins.

Principe

La macro va récupérer les formats à appliquer dans une Feuille nommée MFC, la cellule A1 de cette même feuille est utilisée pour appliquer le format par défaut.
La macro est déclenchée par la saisie d'une cellule, elle applique la MFC sur cette cellule. Mais pour qu'elle applique les formats sur les cellules voulues et, pour ne pas à avoir à modifier la macro pour définir les différentes plages, on programme une MFC dans la cellule avec une Formule : =Ma_MFC.
Cette macro permet aussi d'effectuer des Formats selon des paliers de valeurs.

Code

Voici le code à placer dans le module ThisWorkbook.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim i As Integer, j As Long, Mfc As FormatCondition, c As Range, Ws1 As Worksheet
On Error GoTo fin ' en cas de mauvaise manipulation, ça plante sur l'ordre suivant
Application.EnableEvents = False
Set Ws1 = Sheets("MFC")
For i = 1 To Target.FormatConditions.Count
Set Mfc = Target.FormatConditions(i)
If UCase(Left(Mfc.Formula1, 7)) = "=MA_MFC" Then
Ws1.Range("A1").Value = Target.Value
Set c = Nothing
For j = 2 To Ws1.Range("A65536").End(xlUp).Row
If Ws1.Range("A" & j) = True Then
Set c = Ws1.Range("A" & j)
Exit For
End If
Next j
If c Is Nothing Then Set c = Ws1.Range("A1")
c.Copy
Target.PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
End If
Next i
Application.EnableEvents = True
fin:
On Error GoTo 0
End Sub

A voir également


Publié par wilfried_42.
Ce document intitulé «  Excel - Mises en forme conditionnelles illimitées  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.