Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.FormatConditions.Count = 0 Then Exit Sub ' Controle si la cellule contient des Formatages conditionnels
Dim fc As FormatCondition, ws As Worksheet
Dim i As Integer, fmt As Range
Set ws = Sheets("MFC")
For Each fc In Target.FormatConditions ' Je passe en revue toutes les MFC
If UCase(Left(fc.Formula1, 6)) = "=MAMFC" Then ' Je teste en Majuscule si c'est la mienne
Set fmt = ws.Range("A1") ' Mise en place du Format par défaut
Application.EnableEvents = False ' Je deconnecte l'interception d'évennement (pour ne pas relancer cette macro)
fmt.Value = Target.Value ' Mise en place de la valeur en A1 de la feuille MFC
ws.Calculate ' Force le calcul de la feuille MFC (Le paramétrage de calcul peut être en manuel)
Application.EnableEvents = True ' Je reconnecte l'interception d'évennement
For i = 2 To ws.Range("A65536").End(xlUp).Row ' Boucle de A2 à Axxx (xxx trouvé en partant de la fin)
If ws.Range("A" & i).Value = True Then
Set fmt = ws.Range("A" & i) ' La valeur étant trouvée ....
Exit For ' je sors de la boucle, inutile de continuer
End If
Next i
Target.Interior.ColorIndex = fmt.Interior.ColorIndex ' Couleur de fond
Target.Font.ColorIndex = fmt.Font.ColorIndex ' Couleur de texte
Target.Font.Bold = fmt.Font.Bold ' Gras
Target.Font.Italic = fmt.Font.Italic ' Italique
Target.Font.Size = fmt.Font.Size ' Taille de caractère
Target.Font.Underline = fmt.Font.Underline ' Sousligné
Target.NumberFormat = fmt.NumberFormat ' Format de la cellule
Target.HorizontalAlignment = fmt.HorizontalAlignment ' Alignement
Target.VerticalAlignment = fmt.VerticalAlignment ' Alignement
End If
Next ' Prochaine MFC
End Sub