Private Sub Worksheet_Change(ByVal Target As Range)
Dim TV As Variant 'déclare la variable TV (Tavleu des valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim TD() As Variant 'déclare la variable TD (Tableau des Différences)
Dim TA() As Variant 'déclare la variable TA (Tableau des Adresses)
Dim K As Integer 'déclare la variable I (Incrément)
If Target.Address <> "$A$10" Then Exit Sub 'si le changement a lieu ailleurs qu'en A10, sort de la procédure
Cells.Interior.ColorIndex = xlNone 'enleve les éventuelles couleurs
If Target.Value = "" Then Exit Sub 'si A10 est effacée, sort de la procédure
TV = Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
For J = 2 To UBound(TV, 2) 'boucle 2 : sur toutes les colonnes J du tableau des valeurs TV (en partant de la seconde)
ReDim Preserve TD(K) 'redimensionne le tableau des différences TD (à une entrée)
ReDim Preserve TA(1, K) 'redimensionne le tableau des adresses TA (a deux entrées)
TD(K) = Abs(Target - TV(I, J)) 'recupère la valeur absolue de la différence entre A10 et la valeur ligne I colonne J du tableau des valeurs TV
TA(0, K) = I 'récupère la ligne du tableau des valeurs TV
TA(1, K) = J 'récupère la colonne du tableau des valeurs TV
K = K + 1 'incrémente K
Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
For I = 0 To UBound(TD, 1) 'boucle sur toutes les différences u tableau TD
'si la valeur TD(I) est égale à la valeur minimale des valeurs de ce tableau, colore la cellule correspondante de rouge
If TD(I) = Application.WorksheetFunction.Min(TD) Then Cells(TA(0, I), TA(1, I)).Interior.ColorIndex = 3
Next I 'prochaine différence de la boucle
End Sub