Sub Resultat()
Dim Dico As Object 'déclaration d'un objet
Set Dico = CreateObject("scripting.dictionary") 'création de l'objet "dictionnaire'
With ActiveSheet.ListObjects("t_Data") 'avec la Table structurée "t_Data"
For i = 1 To .ListRows.Count 'pour chaque ligne
client = .DataBodyRange(i, 1) 'nom du client
If Not Dico.exists(client) Then 'si la clé n'existe pas
Dico.Add client, .DataBodyRange(i, 2) & "," & .DataBodyRange(i, 3) & ",1" 'on l'ajoute avec en valeur la concaténation du montant,département,nb de commande
Else 'une entrée existe déjà ==> on met donc à jour la valeur
Data = Split(Dico(client), ",") 'on sépare la valeur dans un tableau "Dat"
Data(0) = Data(0) + .DataBodyRange(i, 2) 'mise à jour du montant total
Data(2) = Data(2) + 1 'incrémentation du nombre de commande
Dico(client) = CStr(Data(0) & "," & Data(1) & "," & Data(2)) ' on met la valeur à jour
End If
Next i
End With
Range("M5").Resize(Dico.Count) = Application.Transpose(Dico.keys) ' on inscrit la liste des clients
Range("N5").Resize(Dico.Count) = Application.Transpose(Dico.items) ' on inscrit les valeurs associées
Range("N5").Resize(Dico.Count).Select 'on utilise la conversion pour séparer selon la virgule utilisée pour créer les éléments de la valeur du client
Selection.TextToColumns Destination:=Range("N5"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Set Dico = Nothing
End Sub