Option Explicit
Sub Macro1()
Dim dico As Object 'déclare la variable dico (dictionary)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim col As Byte 'déclare la variable col (COLonne)
Dim pl As Range 'déclare la variable dico (PLage)
Dim plc As Range 'déclare la variable pl1 (PLage Colonne)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim temp As Variant 'déclare la variable temp (TEMPoraire)
Dim temp1 As Variant 'déclare la variable temp (TEMPoraire1)
Dim no As Integer 'déclare la variable no (Nombre d'Occurrences)
Dim nomax As Integer 'déclare la variable nomax (Nombre d'Occurrences MAXimum)
Dim nm As Integer 'déclare la variable nm (Nombre Maximum)
Dim x As Byte 'déclare la variable x (incrément de colonne)
Dim i As Integer 'déclare la variable i
Dim j As Integer 'déclare la variable j
Set dico = CreateObject("Scripting.Dictionary") 'déclare la variable dico
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne dl
Set pl = Range(Cells(2, 1), Cells(dl, 1)) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
dico(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la la boucle
temp = dico.keys 'récupère les valeurs sans dooublons
Set dico = CreateObject("Scripting.Dictionary") 'redéfinit la variabole dico
For x = 2 To 4 'boucle 1 : sur les colonne B à D
Set plc = Range(Cells(2, x), Cells(dl, x)) 'définit la plage plc
For Each cel In plc 'boucle sur toutes les cellules cel de la plage plc
dico(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la la boucle
temp1 = dico.keys 'récupère les valeurs de la colonne x sans dooublons
For i = 0 To UBound(temp) 'boucle 2 : sur tous les identifiants
nomax = 0 'initialise la variable nomax
For j = 0 To UBound(temp1) 'boucle 3 : sur toutes les valeurs de la colonne
no = 0 'initialise no
For Each cel In pl 'boucle 4 : sur toutes les cellules de la plage pl
'si la valeur de la cellule est égale à l'identifiant de la boucle 2 et
'si la valeur de la cellule correspondante colonne x est égale à la valeur de la boucle 3
'le nombre d'occurrence no s'incrément de +1
If cel.Value = temp(i) And cel.Offset(0, x - 1).Value = temp1(j) Then no = no + 1
Next cel 'prochaine cellule de la boucle 4
If no > nomax Then 'condition : si no est supérieur à nomax
nomax = no 'définit nomaxo
nm = temp1(j) 'définit nm
End If 'fin de la condition
Next j 'prochaine valeur de la colonne de la boucle 3
'place la valeur x-1 la plus récurente de l'identifiant
Cells(Application.Rows.Count, x).End(xlUp).Offset(1, 0).Value = "V" & x - 1 & "/" & temp(i) & " : " & nm
Next i 'prochain identifiant'de la boucle 2
Next x 'prochaine colonne de la boucle 1
End Sub