Sub test()
'Déclarations =====================================================
Dim Cel As Range, X As Long, Flag As Boolean, St_Msg As String
Dim Tab_Var() 'tableau vide
'Initialisation de tableau
ReDim Tab_Var(2, 0)
'tableau = Tab_Var(0, 0) / Tab_Var(1, 0) / Tab_Var(2, 0)
'Programme ========================================================
For Each Cel In Range(Cells(2, "A"), Cells(Rows.Count, "A").End(xlUp))
' pour chaque cellule de A2 à dernière non vide en A
If Cel <> "" Then
'si elle n'est pas vide
Flag = True
'Flag à Vrai
For X = 0 To UBound(Tab_Var, 2)
'Pour x=0 à limite supérieure du 2me indice
If Tab_Var(1, X) = Cel Then
'si le tableau = cellule, alors (la structure existe)
Flag = False
'Flag à Faux
Exit For
'Sortir de la boucle
End If
Next X
If Flag Then
'si Flag = vrai alors (la structure n'existe pas)
ReDim Preserve Tab_Var(2, X)
'redimensionner le tableau en conservant ses valeurs, à l'indice limite + 1
Tab_Var(1, X) = Cel
'la structure est mise dans l'indice X du du 1er indice
End If
Tab_Var(2, X) = Tab_Var(2, X) + Cel.Offset(0, 2)
'additionner le 2me indiceavec la cellule située à 2 colonne,0 ligne de la cellule
End If
Next Cel
For X = 1 To UBound(Tab_Var, 2)
'Pour x=1 à limite supérieure du 2me indice
St_Msg = St_Msg & Chr(13) & Tab_Var(1, X) & " = " & Tab_Var(2, X)
'st_msg= valeur précédente + retour ligne + structure + " = " + total de la structure
Next X
MsgBox St_Msg
'afficher le message
End Sub