Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim F1 As String, F2 As String, L1 As String, L2 As String 'Définitions des variables
Dim C1 As Integer, C2 As Integer
Dim V1 As Long, V2 As Long
F1 = Worksheets("Feuil1").Name 'Nom de la première feuille
F2 = Worksheets("Feuil2").Name 'Nom de la deuxième feuille
L1 = "A" 'Cellule de la première feuille
C1 = 1 'Cellule de la première feuille
L2 = "A" 'Cellule de la deuxième feuille
C2 = 1 'Cellule de la deuxième feuille
V1 = 2 'Premier intervalle pour le jeu d'icônes
V2 = 4 'Deuxième intervalle pour le jeu d'icônes
If IsNumeric(Target.Value) Then
If (Sh.Name = F1 And Target.Address = "$" & L1 & "$" & C1) Or (Sh.Name = F2 And Target.Address = "$" & L2 & "$" & C2) Then
Cells.FormatConditions.Delete 'Supprime les mises en formes conditionnelles
Sheets(F1).Select 'Nomme une nouvelle plage
Range("" & L1 & "" & C1).Select
ActiveWorkbook.Names.Add Name:="Plage1", RefersToR1C1:=ActiveCell
Sheets(F2).Select 'Mise en forme conditionnelle
Range("" & L2 & "" & C2).Select
Selection.FormatConditions.AddIconSetCondition
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.ReverseOrder = True
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3Flags)
End With
If Abs(Sheets(F1).Range("" & L1 & "" & C1) - Sheets(F2).Range("" & L2 & "" & C2)) <= 2 Then
With Selection.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueFormula
.Value = "=Plage1+" & V1
.Operator = 5
End With
End If
If Abs(Sheets(F1).Range("" & L1 & "" & C1) - Sheets(F2).Range("" & L2 & "" & C2)) <= 4 Then
With Selection.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueFormula
.Value = "=Plage1+" & V2
.Operator = 5
End With
End If
Range("" & L2 & "" & C2).Select 'Pour se positionner proprement
MsgBox "Vous venez de modifier la cellule " & Target.Address & " d'une valeur de " & Target.Value & " de la feuille " & Sh.Name
End If
End If
End Sub