Dans VBA, j'ai créé la macro suivante :
Sub comparaison()
Application.ScreenUpdating = False
For i = 7 To 3000
If Worksheets("Fichier").Range("D" & i) <> Worksheets("Fiche Référence").Range("D" & i) Then
Worksheets("Fichier").Range("D" & i).Select
With Selection.Interior
.Color = 255
End With
Else
Worksheets("Fichier").Range("D" & i).Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next i
Application.ScreenUpdating = True
End Sub
Pour que tu comprennes la macro, je vais t'expliquer les différents termes utilisés:
1- Application.ScreenUpdating : c'est pour ne pas voir l’exécution de la macro au début de la macro on met
2- For i = 7 To 3000 --> ça veut dire pour i de 7 à 3000
3- If Worksheets("Fichier").Range("D" & i) <> Worksheets("Fiche Référence").Range("D" & i) Then --> ça signifie si la cellule Di de la feuille "fichier" est différente de la cellule Di de ton fichier de référence alors...
Tu viens maintenant de voir qu'on à attribué à i un certain nombre de valeur qui vont aller de 7 à 3000. Dans la ligne 3- tu peux voir Di donc quand tu exécuteras la macro tu obtiendras D7, D8, D9..... D3000. En gros ça fixe ta plage à analyser.
4- Worksheets("Fichier").Range("D" & i).Select --> sélectionner la cellule Di de la feuille "Fichier"
5- With Selection.Interior --> Avec le format intérieur de la cellule selectionner
6- .Color = 255 --> colorer en rouge
7- End With --> fin de Avec
8- Else --> sinon, ça veut dire l'inverse du point 2- si la cellule Di de la feuille "fichier" est égale à la cellule Di de ton fichier de référence alors...
9- Worksheets("Fichier").Range("D" & i).Select --> idem que 4-
10- With Selection.Interior --> idem que 5-
11- .Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0 --> enlever la couleur de la cellule (cette ligne n'est pas obligatoire dans ton cas mais elle permet si il y a déjà des couleurs sur les différentes cellules de les enlever)
12- End With --> idem 7-
13- End if --> fin de la formule si
14- Next i --> i suivant. Comme tu l'as vu on a commencé par i = 7 donc le suivant est i=8 etc... jusqu'à 3000. Cette ligne permet de refaire toutes les étapes précédentes pour tous les i jusqu'à 3000.
15- End sub --> fin de la macro