Additions selon conditions

shenmicke

XLDnaute Junior
Bonjour le forum,

je pensais avoir fais quelque progrès en Excel et vba mais apparrament pas assez !
Je vous explique mon soucis.

J'ai un fichier excel (ci-joint) et je veux additionner sur certaines lignes
( 16 38 50 89 109 143 155 190 205 255 262 285 301 306 311 315 317 320 323
330 334 337 339 342 346 352 365 377 381 385 395 406 466 486 525 556 635
714 732 762 780 :mad:)

Sur chacune de ces lignes il y aura déjà un nombre qu'il faudra écraser par la somme des cellules de dessus (jusqu'à qu'on rencontre la dernière ligne où on a calculé une somme auparavant).

Exemple 1: pour la première somme à calculer en N16, je veux faire la somme des cellules N11 à N15.

Exemple 2: pour la somme à la cellule N50 je veux faire la somme des cellules N49 à N39.

PS : j'ai coupé une grosse partie du fichier excel afin de l'alléger

Je suppose qu'il faut stocker les lignes qu'on va utiliser comme ceci:

sub macro2()

Dim Tableau(41) As String
Dim is As Integer

Tableau(0)=16
Tableau(1)=38
Tableau(2)=50
Tableau(3)=89
Tableau(4)=109
Tableau(5)=143
Tableau(6)=155
Tableau(7)=190
Tableau(8)=205
Tableau(9)=255
Tableau(10)=262
Tableau(11)=285
...

mais j'arrive pas à faire la boucle ainsi que la condition d'arrêt pour faire la somme :(

Merci de m'aider
 

Pièces jointes

  • Copie de ALLEMAGNE.xls
    292.5 KB · Affichages: 81
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Additions selon conditions

Bonjour,

essaye peut être ainsi, mais attention, pas top tes cellules fusionnées pour vba...
Code:
Option Explicit
Sub test()
Dim t() As Variant, i As Integer
t = Array(10, 16, 38, 50, 89, 109, 143, 155, 190, 205, 255, 262, 285, 301, 306, 311, _
    315, 317, 320, 323, 330, 334, 337, 339, 342, 346, 352, 365, 377, 381, 385, 395, _
    406, 466, 486, 525, 556, 635, 714, 732, 762, 780)
For i = 1 To UBound(t)
    Cells(t(i), 14).Value = Application.Sum(Range(Cells(t(i - 1) + 1, 14), Cells(t(i) - 1, 14)))
Next i
End Sub

bonne soirée
@+
 

shenmicke

XLDnaute Junior
Re : Additions selon conditions

Re,

J'espère que quelqu'un repassera par là. J'avais pensé pour régler ce problème de cellules fusionnées faire ainsi :

'17-> 24 + 26->33 = 38

Cells(38, 14).Value = Application.Sum(Range(Cells(17, 14), Cells(24, 14)), Range(Cells(26, 14), Cells(33, 14)))

'51->52 + 55->88 = 89
Cells(89, 14).Value = Application.Sum(Range(Cells(51, 14), Cells(52, 14)), Range(Cells(55, 14), Cells(88, 14)))

ça ne me remplit que la première cellule. J'ai tenté de réecrire avec une boucle en passant par ton code mais je n'y suis pas arrivé avec un :

tab2 = Array(17, 24, 26, 33, 38)


EDIT : C'est bon, j'ai compris pourquoi ça fonctionnait pas !
Merci
 
Dernière édition:

Membres actuellement en ligne

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33