Probablement pas le plus court, mais ça fonctionne.
Pour les totaux de lignes et de colonnes, de simples formules Excel suffiront.
Sub forumexcel()
'Remettre le tableau à zéro
Range("D18:K27").Select
Selection.ClearContents
'Commencer à la cellule B4
Worksheets("Stocks").Select
Range("B4").Select
'Une boucle qui tourne tant qu'on ne tombe pas sur une cellule vide
While IsEmpty(ActiveCell.Value) = False
' Créer une variable Site avec les 3 premières lettres de colonne E
Site = Left(ActiveCell.Offset(0, 3), 3)
' Créer une variable Code avec les 3 premières lettres de la colonne B
Code = Left(ActiveCell, 3)
'Attribuer chaque Site à un numéro de ligne
If Left(Site, 1) = "S" Then
NumLigne = 18
ElseIf Site = "ECR" Then
NumLigne = 19
ElseIf Site = "ECM" Then
NumLigne = 20
ElseIf Site = "EC1" Then
NumLigne = 21
ElseIf Site = "EC2" Then
NumLigne = 22
ElseIf Site = "EP1" Then
NumLigne = 23
ElseIf Site = "EP2" Then
NumLigne = 24
ElseIf Site = "EP3" Then
NumLigne = 25
ElseIf Site = "EP4" Then
NumLigne = 26
Else
NumLigne = 27
End If
' Pareil avec les Codes en numéros de colonnes
If Code = "CH0" Then
NumCol = 4
ElseIf Code = "CH2" Then
NumCol = 6
ElseIf Code = "BBC" Then
NumCol = 8
Else
NumCol = 10
End If
' Augmenter de 1 la valeur de la bonne case du tableau Récap
Worksheets("Recap").Cells(NumLigne, NumCol).Value = Worksheets("Recap").Cells(NumLigne, NumCol).Value + 1
'Passer à la ligne suivante
ActiveCell.Offset(1, 0).Select
Wend
End Sub