Code pour macro Somme de plages.

Cocktail -  
lermite222 Messages postés 9042 Statut Contributeur -
Bonjour,

J'ai une colonne A dans laquelle mes cellules contiennent des chiffres (d'affaires).
Ces cellules de chiffres sont parfois séparées par des cellules vides que je veux conserver.
Ca donne ça :

12455,36
4587,84
547785,36
4587,25

4587,63
145258,65

45874,69
5821,31
689,54
457896,25
6589,30

Je voudrais savoir si l'un d'entre vous aurait l'idée d'une macro permettant de faire la somme de chaque "paquet" de cellules et décalant cette somme.
Je m'explique.
J'ai donc mes chifres dans les cellules allant de A1 à A4, une cellule vide en A5, des chiffres de A6 à A8, une cellule vide en A9 etc. Je voudrais donc la somme de A1;A4 en B5, celle de A6;A8 en B9 etc.

Merci d'avance à ceux et celles qui se casseront la tête là dessus par pur altruisme.

C
A voir également:

3 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
une macro ?
Sub SumPartiel()
Dim i As Long
Dim T As Double, TT As Double
    For i = 1 To 14
        If Cells(i, 1) = "" Then
            Cells(i, 2) = T: TT = TT + T: T = 0
        Else
            T = T + Cells(i, 1)
        End If
    Next i
    Cells(i + 1, 1) = "Totaux"
    Cells(i + 1, 2) = TT
End Sub

A+
0
Cocktail
 
Pas mal, lermite222, mais y'a un os
Volà ce que ça donne en pratique

10 989,78
27 078,55
28 623,74
66 692,07
8 152,08
4 619,93
847,23
22 642,10
6 200,51
22 847,85
2 971,25
10 269,22
3 011,44
5 458,07
160,09
Totaux 66 692,07
11 879,47
27 221,48
2 246,90
4 310,73
3 501,79
23 828,32
6 902,63
3 260,41
10 400,11
4 171,41
1 624,09
2 444,07
6 179,21
6 786,83
4 087,15

3 115,17
3 814,31
2 100,77
18 071,58
18 454,17
3 947,06
8 587,19
10 898,64
8 528,79
17 912,43
6 433,65
4 510,64
7 236,58
26 566,93

J'obtiens bien la somme de mon 1er "paquet" de chiffre, cette somme est ensuite reportée à la place de ce qu'aurait du être la somme du 2ème "paquet" de chiffres et ensuite les autres "paquets ne sont pas traités.

Au fait, j'aimerais que ce truc marche sur une colonne donnée. Mes chiffres sont en fait dans la colonne D, sur mon tableau, et commencent en D3

Merci
C
0
Mike-31 Messages postés 19571 Date d'inscription   Statut Contributeur Dernière intervention   5 139
 
Salut,

Il faut adapter la macro à tes besoins,
Sub Sous_Total()
Dim i As Long
Dim T As Double, TT As Double
For i = 1 To 30 ' plage de cellule à balayerde A1 à A xxxxx !
If Cells(i, 1) = "" Then
Cells(i, 1) = T: TT = TT + T: T = 0
Else
T = T + Cells(i, 1)
End If
Next i
Cells(i + 1, 2) = TT
End Sub

A+
0
Cocktail
 
Ca marche, merci, j'aurais du comprendre tout seul la plage à balayer. Chuis vraiment un boulet.
Maintenant, j'aimerais bien ne pas avoir à spécifier une plage à balayer vu qu'elle ne sera pas toujours la même.
J'aimerais que la macro s'arrête quand par exemple elle trouve 2 cellules vides consécutives.
Et enfin, j'aimerais que cette macro puisse se réaliser sur une colonne donnée, ici en l'occurence, la colonne D, première cellule à traiter =D3

Merci déjà pour ce que vous avez fait, et merci d'avance pour le reste.
C
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
'Mettre le curseur n'importe où dans la colonne à calculer...
'Tout le reste est automatique.
Sub SumPartiel()
Dim i As Long
Dim T As Double, TT As Double
Dim Col As Integer
    Col = ActiveCell.Column
    For i = 1 To 65000
        If Cells(i, Col) = "" And Cells(i + 1, Col) = "" Then
            Exit For
        ElseIf Cells(i, Col) = "" Then
            Cells(i, Col + 1) = T: TT = TT + T: T = 0
        Else
            T = T + Cells(i, Col)
        End If
    Next i
    Cells(i + 1, Col) = "Totaux"
    Cells(i + 1, Col + 1) = TT
End Sub

A+
0