Sub Couleur()
Application.ScreenUpdating = False
xDerLig = Range("A65000").End(xlUp).Row 'On détermine la dernière ligne saisie Colonne A (ICI = 9)
Range("I5:Z" & xDerLig).Interior.Color = xlNone 'On met aucun remlissage sur plage I5:Z (dernière ligne)
For Each xCell In Range("I5:Z" & xDerLig) 'On boucle (Cellule) sur toutes les cellules de la plage I5:Z (dernière ligne)
xLig = xCell.Row 'On récupère dans la variable xLig le numéro de ligne de la cellule lue
If IsNumeric(xCell) = False Then GoTo SiNonNum 'Si cellule non numérique on va à SiNonNum (plus bas) pour passer à la cellule suivante
For Each xCoul In Range("D" & xLig & ":H" & xLig) 'On boucle (Couleur) sur toutes les cellules de la plage D à H (en fonction du n° de ligne)
If IsError(xCoul.Value) Then GoTo SiErreur 'A cause des #N/A, on va à SiErreur (plus bas) pour passer à la cellule suivante lue
xCol = xCoul.Column 'On récupère dans la variable xCol le numéro de colonne de la cellule lue (D à H)
xCoulSeuil = Cells(4, xCol).Interior.Color 'On récupère dans la variable xCoulSeuil la couleur de fond de la cellule (ligne4)
xR = Int(xCoulSeuil Mod 256) 'On récupère dans la variable xR (ROUGE)
xV = Int((xCoulSeuil Mod 65536) / 256) 'On récupère dans la variable xV (VERT)
xB = Int(xCoulSeuil / 65536) 'On récupère dans la variable xB (BLEU)
If xCell <= xCoul Then 'On teste si la cellule (I à Z) <= cellule (D à H)
xCell.Interior.Color = RGB(xR, xV, xB) 'Si c'est la cas, on colorie la cellule (I à Z) avec les couleurs RVB.
Exit For 'On sort de la boucle
End If 'Fin du Si
SiErreur: 'Etiquette SiErreur
Next xCoul 'Fin boucle Couleur
xCell.Interior.Color = RGB(xR, xV, xB) 'On colorie la cellule (I à Z) avec les couleurs RVB
SiNonNum: 'Etiquette SiNonNum
Next xCell 'Fin boucle Cellule
Application.ScreenUpdating = True
End Sub