Somme de plusieurs cellules suivant un critère

Fermé
XIII - 2 juin 2021 à 21:01
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 - 3 juin 2021 à 14:15
Bonjour la communauté,

J’ai un souci avec une macro depuis 3 jours et je souhaite vous le soumettre pour vos éventuelles contributions qui seront les bienvenues.

J’ai un tableau de 3 colonnes ordonnées comme suit : Code-Libellés-Montant. A l’aide d’un formulaire, je rentre les données de dépenses avec 3 textbox dans les colonnes respectives. Il peut arriver qu’un même code se répète sur plusieurs lignes de suite avec des libellés et des montants correspondants dans leurs colonnes respectives. Les codes représentent des lignes budgétaires pour lesquelles je dois faire un suivi.

Code Libellés Montant
A1 Dépense1 3 500​
A1 Dépense2 5 000​
A1 Dépense3 2 000​
B1 Dépense4 10 000​
B1 Dépense5 7 200​
C1 Dépense6 15 000​
C1 Dépense7 6 300​
C1 Dépense8 3 100​
C1 Dépense9 2 000​

A cet effet grâce à un combobox, je fais appel avec trie sans doublon des codes de la première colonne. Ce que je souhaite, c’est d’obtenir dans un textbox4, la somme des montants correspondants à ce code qu’on retrouve dans la colonne 3.

J’ai fouillé sur internet à la recherche de macros similaires pour adaptation, mais hélas ! En fait je suis débutant en vba.

Merci d'avance!

2 réponses

DjiDji59430 Messages postés 4035 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 24 avril 2024 645
3 juin 2021 à 13:41
Bonjour à tous,

Un
=somme.si(montant;code;"a1")
suffit amplement

Crdlmt
0
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
3 juin 2021 à 14:15
Bonjour à vous deux

Primo rectification DjiDji la formule SOMME.SI a pour syntaxe :
=SOMME.SI(plage codes;code;plage montants)

Deuzio XIII tu dois appliquer cette formule en VBA ce qui donnerait quelque chose comme
montant-total= WorksheetFunction.SumIf(Sheets("Feuil1").Range("A:A"), code, Sheets("Feuil1").Range("C:C"))

en ayant au préalable récupéré dans une variable code le code recherché

Impossible d'affiner plus sans avoir ton fichier que tu aurais du joindre à ta demande pour être sûr d'avoir la solution adéquate

Cdlmnt
Via
0