Somme sur un champ pour un même individu (VBA)

Bonjour à tous et bonne année

Le titre du sujet n'est pas forcément explicite alors je vais joindre un petit exemple pour compléter mon propos.

Dans ce fichier, je cherche à afficher dans la colonne C (voir exemple), le montant total sur chaque ligne pour un individu. J'ai bien réussi à faire ce que je voulais, mais au prix d'embriquement de boucle et de compteur. Grosso modo, j'ai déterminé dans un premier à quel moment je changeais d'individus en créant une variable compteur dans une colonne et ensuite j'ai fais une boucle pour sommer.

Ce code est trop tordu, je cherche donc une solution plus simple. Avez-vous déjà fait ce genre de chose, si oui comment? Sinon pouvez-vous me donner d'autres pistes? Une commande VBA que j’ignore et qui sélectionnerai ma plage pour un individu et me ferait la somme d'une autre colonne un peu comme un somme.si() .

Je suis ouvert à toutes propositions bien entendu,

Bonne journée,

18exemple.zip (7.78 Ko)

Salut,

Une simple fonction SOMME.SI résoudrait ton problème =SOMME.SI($A$2:$A$7;A2;$B$2:$B$7).

Pourquoi veux-tu passer par un code VBA ?

Cordialement.

20exemple-v1.zip (6.41 Ko)

Bonjour,

Un simple tableau croisé dynamique ...

14exemple.zip (6.98 Ko)

Bonjour

Autre solution complémentaire à celle que Yvouille te donne est l'utilisation de cette formule à mettre en C2 :

--> =SOMMEPROD(($A$2:$A7=$A2)*1;$B$2:$B7)

Ensuite étirer la formule vers le bas

De base donne ta préférence à la formule d'Yvouille qui est non matricielle

Amicalement

Bonjour à vous,

Merci pour vos réponses, effectivement la fonction SOMME.SI fonctionne très bien. J'ai donc transposé ça en vba en regardant sur les forums car l'enregistreur de macro me renvoyait un truc indigeste. Du coup, j'ai fais ça et ça marche plutôt bien. 8)

Sub Macro1()

Dim DerLigne, i As Integer
Dim T As Double

 With Worksheets("Global")
        DerLigne = .Range("A" & Rows.Count).End(xlUp).Row
 End With

    For i = 2 To DerLigne

        T = Application.WorksheetFunction.SumIf(Range("A2:A" & DerLigne), Cells(i, 1).Value, Range("B2:B" & DerLigne))

        Cells(i, 4).Value = T
    Next i

End Sub

Merci,

26exemple-fin.xlsm (17.41 Ko)
Rechercher des sujets similaires à "somme champ meme individu vba"