Somme avec condition

chemist

XLDnaute Junior
Bonjour

j'ai une colonne avec environ 50 000 ligne

je dois faire la somme de D13 à D39 ensuite je dois faire la somme de D39 à D67 et ce pour les 50000 ligne en suivant le "pattern" suivant

somme a partir de la dernière ligne de la somme précédente + les 26 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 28 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 26 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 27 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 26 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 28 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 26 ligne suivantes
somme a partir de la dernière ligne de la somme précédente + les 27 ligne suivantes

En résumé

somme de D13-D39
somme de D39-D67
somme de D67-D93
somme de D93-d120
etc...

une petite idée car j'ai 20 fichiers avec plus de 50000 ligne chaques et en plus le pattern est différent.

merci de votre aide
 

chemist

XLDnaute Junior
Re : Somme avec condition

Une autre possibilité serait d'utiliser la colonne A

On pourrait faire la somme de la colonne C tant que les nombre dans la colonne A augmente et ensuite faire la somme tant que les nombre descende ainsi de suite.

est-ce que c'est quelque chose de possible.
 

chemist

XLDnaute Junior
Re : Somme avec condition

Re :),
Est-ce la peine que je cherche en macro vu que je n'ai eu aucune réponse de Chemist depuis le départ :eek:... ?
Bonne soirée :cool:

vraiment désolé, j'avais essayé la macro et ca faisait gelé excel et comme il y avait d'autre solution par formule je n'ai pas poussé plus loin......affectivement j'aurais du te répondre et j'en suis désolé...

je ne suis pas contre une macro si ça peut résoudre mon problème
 

chemist

XLDnaute Junior
Re : Somme avec condition

Re :),Dans ce cas là, teste ce fichier :rolleyes:.
Bizarre que la première ai "gelé" Excel :confused:.
Bonne soirée :cool:

Ca fonctionne très bien, mais j'aimerais savoir comment je peux faire si mes données commencent à une autre ligne que 13. Si j'ai bien compris, je peux modifier les valeur i j k de la macro mais est-ce qu'il y a un moyen d'utiliser une case pour identifier le point de départ.

merci encore
 

JNP

XLDnaute Barbatruc
Re : Somme avec condition

Re :),
En admettant que ta valeur soit en A1
Code:
Sub Bouton7_Clic()
Dim I As Long, J As Long, K As Long, Positive As Boolean
I = Range("A1")
J = Range("A1") + 1
K = Range("A1")
While Cells(J + 1, 2) <> ""
While Cells(J, 2) * Cells(J + 1, 2) > 0
J = J + 1
Wend
If Positive = False Then
Cells(K, 7) = "=sum(D" & I & ":D" & J & ")"
Positive = True
Else
Cells(K, 8) = "=sum(D" & I & ":D" & J & ")"
K = K + 1
Positive = False
End If
I = J
J = I + 1
Wend
End Sub
Bon dimanche :cool:
 

chemist

XLDnaute Junior
Re : Somme avec condition

Re :),
En admettant que ta valeur soit en A1
Code:
Sub Bouton7_Clic()
Dim I As Long, J As Long, K As Long, Positive As Boolean
I = Range("A1")
J = Range("A1") + 1
K = Range("A1")
While Cells(J + 1, 2) <> ""
While Cells(J, 2) * Cells(J + 1, 2) > 0
J = J + 1
Wend
If Positive = False Then
Cells(K, 7) = "=sum(D" & I & ":D" & J & ")"
Positive = True
Else
Cells(K, 8) = "=sum(D" & I & ":D" & J & ")"
K = K + 1
Positive = False
End If
I = J
J = I + 1
Wend
End Sub
Bon dimanche :cool:

Bonjour je crois que je me suis mal exprimé ou je comprend mal l'ajoue de ta macro.

quand j'utilise ta nouvelle macro j'obtiens un error "incompatibilité de type et ça arrête sur cette ligne While Cells(J, 2) * Cells(J + 1, 2) > 0


Tous mes fichiers on les mêmes colonne avec des valeurs dans A, B ert D mais cetainne comme à la ligne 12 d'autre à la ligne 13 d'Autre à 14 etc...

J'aimerais donc pouvoir commencer la somme à la ligne que je veux mais que les résultats soit toujours au même endroit car je fait toujours les même graphique.

En résumé je voulais utilisé le fichier contenant ta macro comme template et toujours copié mes nouvelles donnée dedans....
 

chemist

XLDnaute Junior
Re : Somme avec condition

voici 2 fichiers exemple

exemple 1 fonctionne bien car débute à la ligne 13
exemple 2 ne fonctionne pas car ne débute pas à la ligne 13 (ma solution pour l'instant je coupe mes données et je les remontent à la ligne 13)

mes données viennent d'un autre logiciel et j'utilise copié coller pour les envoyer dans excel mais pour une raison qui m'échappe les données ne commencent pas toujours à la même ligne
 

Pièces jointes

  • exemple1.zip
    46.8 KB · Affichages: 23
  • exemple2.zip
    47.2 KB · Affichages: 19
  • exemple1.zip
    46.8 KB · Affichages: 27
  • exemple2.zip
    47.2 KB · Affichages: 23
  • exemple1.zip
    46.8 KB · Affichages: 24
  • exemple2.zip
    47.2 KB · Affichages: 23
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Somme avec condition

Re :),
mais est-ce qu'il y a un moyen d'utiliser une case pour identifier le point de départ.
Oui, A1 comme indiqué dans ma macro.
Si par contre tu veux la sélectionner automatiquement
VB:
Sub Bouton7_Clic()
Dim I As Long, J As Long, K As Long, Positive As Boolean
I = 1
While Cells(J, 2) = ""
I = I + 1
Wend
J = I + 1
K = I
While Cells(J + 1, 2) <> ""
While Cells(J, 2) * Cells(J + 1, 2) > 0
J = J + 1
Wend
If Positive = False Then
Cells(K, 7) = "=sum(D" & I & ":D" & J & ")"
Positive = True
Else
Cells(K, 8) = "=sum(D" & I & ":D" & J & ")"
K = K + 1
Positive = False
End If
I = J
J = I + 1
Wend
End Sub
devrait fonctionner.
A + :cool:
 
Dernière édition:

chemist

XLDnaute Junior
Re : Somme avec condition

Re :),Oui, A1 comme indiqué dans ma macro.
Si par contre tu veux la sélectionner automatiquement
VB:
Sub Bouton7_Clic()
Dim I As Long, J As Long, K As Long, Positive As Boolean
I = 1
While Cells(J, 2) = ""
I = I + 1
Wend
J = I + 1
K = I
While Cells(J + 1, 2) <> ""
While Cells(J, 2) * Cells(J + 1, 2) > 0
J = J + 1
Wend
If Positive = False Then
Cells(K, 7) = "=sum(D" & I & ":D" & J & ")"
Positive = True
Else
Cells(K, 8) = "=sum(D" & I & ":D" & J & ")"
K = K + 1
Positive = False
End If
I = J
J = I + 1
Wend
End Sub
devrait fonctionner.
A + :cool:

Ca bloque à Dim I As Long, J As Long, K As Long, Positive As Boolean
While Cells(J, 2) = ""

mais avec l'autre en A1 ca fonctionne bien, j'avais juste pas compris qu'il faut que j'écrive 13 dans A1.... C'est donc sufisant pour moi

merci beacoup
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 952
Membres
103 989
dernier inscrit
jralonso