Somme montants ayant même nom

Bonjour,

Le problème a peut-être déjà été traité mais c'est compliqué à chercher, pas vraiment de mot clé. L'idée est que chaque mois, je reçois une feuille excel avec les dépenses par compte. Un fournisseur peut se retrouver dans différents comptes. Je désirerai avoir la somme des dépenses par fournisseur en automatisant la tâche. C'est facile à comprendre via l'exemple dans le fichier excel ci-joint.

En gros il faudrait macromiser la fonction SOMME.SI et créer un nouveau tableau.

322ep.xlsm (14.87 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

1'004ep-v1.xlsm (24.44 Ko)

Top! Merci beaucoup, c'est très sympa

Bonjour le fil, bonjour le forum,

Grillé par GMB (il est trop fort mais un jour j'exigerai un contrôle anti dopage !...). C'est pratiquement le même code mais comme je l'ai commenté, j'envoie quand même :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)

Set O = Worksheets("Feuil1") 'définit l'onglet O
O.Range("F3:G" & Application.Rows.Count).ClearContents 'efface d'eventuelles anciennes données
TV = O.Range("A3").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionanire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 2)) = D(TV(I, 2)) + TV(I, 3) 'alimente le dictionnaire D avec les données en colonne 2 de TV (et somme les données en colonne 3 d'un même fournisseur)
Next I 'prochaine ligne de la boucle
O.Range("F3").Resize(D.Count, 1) = Application.Transpose(D.Keys) 'renvoie en F3 la liste des éléments du dictionnaire D sans doublon
O.Range("G3").Resize(D.Count, 1) = Application.Transpose(D.Items) 'renvoie en G3 la somme de chaque fornisseur de la liste sans doublons
Set PL = O.Range("G4:G" & O.Cells(Application.Rows.Count, "G").End(xlUp).Row) 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
    CEL.Value = CEL.Value * 1 'multiplie la valeur par 1 (transforme un nombre considéré comme texte en nombre)
Next CEL 'prochaine cellule de la boucle
PL.NumberFormat = "$ #,##0.00" 'mise au format spécifique de la plage PL
End Sub

Merci beaucoup, les commentaires vont m'être très utiles pour progresser

Rechercher des sujets similaires à "somme montants ayant meme nom"