Sub Macro1()
Dim O1 As Worksheet 'déclare la variable O1 (Onglet 1)
Dim O2 As Worksheet 'déclare la variable O2 (Onglet 2)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim J As Byte 'déclare la variable J (incrément)
Dim I As Integer 'déclare la variable I (Incrément)
Dim T(1 To 4) As Integer 'déclare le tableau de 4 variables T (Total)
Dim R As Range 'déclare la variable R (Recherche)
Dim K As Byte 'déclare la variable K (incrément)
Set O1 = Worksheets("1") 'définit l'onglet O1
Set O2 = Worksheets("2") 'définit l'onglet O2
TV = O1.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
For J = 1 To 5 'boucle 1 : sur les 5 colonnes J ( colonnes A, B, C, D et E)
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 1) = "bleu" Then 'condition : si la donnée ligne I colonne 1 de TV est égale à "bleu"
T(1) = T(1) + IIf(TV(I, J + 1) = 1, 1, 0) 'définit le total T1 (des 1)
T(2) = T(2) + IIf(TV(I, J + 1) = 2, 1, 0) 'définit le total T2 (des 2)
T(3) = T(3) + IIf(TV(I, J + 1) = 3, 1, 0) 'définit le total T3 (des 3)
T(4) = T(4) + IIf(TV(I, J + 1) = 4, 1, 0) 'définit le total T4 (des 4)
End If 'fin de la condition
Next I 'prochaine ligne de la boucle 2
'définit la recherche R (recherche dans la ligne 1 de l'onglet O2 la valeur de la cellule ligne 1 colonne J+1 de l'onglet O1)
Set R = O2.Rows(1).Find(O1.Cells(1, J + 1), , xlValues, xlWhole)
For K = 1 To 4 'boucle 3 : sur les 4 totaux du tableau T
R.Offset(K, 0) = T(K) 'renvoie le total T(K) dans la cellule R décalée de K lignes vers le bas
Next K 'prochain total de la boucle 3
Erase T 'vide le tableau T
Next J 'prchaine colonne de la boucle 1
End Sub