Code Vb Sur Excel problème de somme

Résolu
Iloon Messages postés 22 Statut Membre -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
J'ai un soucis avec un code vb sur excel,
j'ai besoin de calculer la somme de plusieurs cellules, en fonction de la cellule précédente...

En gros, je voudrais que le code mette dans la colonne C la somme de toutes les cellules B qui ont la meme valeur en cellule A...

A B C
E6 3 4
E6 1
E7 4 4
E8 3 3
E9 2 2

Il m'est possible de fusionner les cellules identiques dans la colonne A si le code est plus facile a créer comme cela.

Je vous remercie beaucoup par avance car là, je suis vraiment bloquée

4 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Je suppose que tu veux faire ça avec une macro.

    Sub Calcul()
    Dim str As Variant
    Dim i As Long
    Dim cal As Long
    Dim j As Long
    
        i = 1
    
        While Worksheets(1).Range("A" & i).Value <> ""
            str = Worksheets(1).Range("A" & i).Value
            cal = 0
            j = 0
            While Worksheets(1).Range("A" & i + j).Value = str
                cal = cal + Worksheets(1).Range("B" & i + j).Value
                j = j + 1
            Wend
            Worksheets(1).Range("C" & i).Value = cal
            i = i + j
        Wend
        
    End Sub
    


    bon courage

    ;o)

    polux
    0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Il m'est possible de fusionner les cellules identiques dans la colonne A

    Si tu veux faire du code VBA évite de fusionner car les cellules fusionnées sont considérées comme des cellules vides.

    Pour faire tes cumuls en VBA, si ta colonne A est triée tu peux utiliser :
    Sub regroupe()
    Dim i As Long, l As Long
    i = 1      'valeur à changer si les cumuls ne commencent pas en ligne 1
    Cells(i, 3).Resize(Cells(65536, 1).End(xlUp).Row, 1) = ""
    For i = i To Cells(65536, 1).End(xlUp).Row
        Cells(i, 3) = 0
        For l = i To Cells(65536, 1).End(xlUp).Row
            If Cells(i, 1) = Cells(l, 1) Then
                Cells(i, 3) = Cells(i, 3) + Cells(l, 2)
            Else
                i = l - 1
                Exit For
            End If
        Next l
    Next i
    End Sub
    0
  3. Iloon Messages postés 22 Statut Membre 2
     
    Merci beaucoup Polux31, ta solution fonctionne et ça m'enleve vraiment une grosse épine du pied !
    Merci aussi à toi gbinforme pour ta solution et tes conseils, en effet, mes cellules fusionnées empêchaient le fonctionnement du code.
    Je n'ai pas essayé ta version car celle de polux31 fonctionnait, mais merci quand meme !

    Bonne journée à vous,

    Iloon, très contente !

    PS : Je risque fort de vous demander à nouveau conseil, je suis sur un sujet difficile pour mon niveau !
    0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Content pour toi ...

    Bon courage pour la suite, et n'hésite pas à poser tes questions sur le forum.

    ;o)

    polux
    0