Sub Macro1()
Dim O As Worksheet 'déclare la variable O (onglet)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim NC As Long 'déclare la variable NC (Nombre de Code)
Dim NCU As Long 'déclare la variable NCU (Nombre de Codes Uniques)
Dim NCD As Long 'déclare la variable NCD (Nombre de Codes en Doublon)
Set O = Worksheets("Feuil1") 'définit l'onglet O
O.Cells.Interior.ColorIndex = xlNone 'supprime les couleurs dans l'onglet
Set D = CreateObject("Scripting.Dictionary") 'de'finit le dictionnaire D
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
DC = O.Cells(1, Application.Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée de la ligne 1 de l'onglet O
TV = O.Range(O.Cells(1, 1), O.Cells(DL, DC)) 'définit le tableau des valeurs TV
For I = 1 To DL 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV
For J = 1 To DC 'boucle 2 : sur toutes les Colonne J du tableau des valeurs TV
'si la donnée ligne I colonne J de TV n'existe pas dans le dictionnaire D, alimente le dictionanire D avec la donnée, sinon, colore la cellule en vert
If TV(I, J) <> "" Then If Not D.exists(TV(I, J)) Then D(TV(I, J)) = "" Else O.Cells(I, J).Interior.ColorIndex = 4
Next J 'prochaine colonne de la boucle 2
Next I 'prochaine ligne de la boucle 1
NC = Application.WorksheetFunction.CountA(O.Range(O.Cells(1, 1), O.Cells(DL, DC))) 'définit le nombre de codes NC
NCU = D.Count 'définit el nombre de code uniques NCU
NCD = NC - NCU 'définit le nombre de codes en doublon NCD
MsgBox "Il a " & NC & " codes au total. Dont " & NCD & "doublon(s), repéré(s) en vert" 'message
End Sub