Code Vb Sur Excel problème de somme

Résolu/Fermé
Iloon
Messages postés
22
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 mars 2008
- 17 janv. 2008 à 09:43
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
- 17 janv. 2008 à 13:26
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

Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 194
17 janv. 2008 à 10:14
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
gbinforme
Messages postés
14935
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 622
17 janv. 2008 à 10:18
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
Iloon
Messages postés
22
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 mars 2008
2
17 janv. 2008 à 10:41
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
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 194
17 janv. 2008 à 13:26
Content pour toi ...

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

;o)

polux
0