[Excel]Somme conditionnelle vba

Résolu/Fermé
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007 - 20 août 2007 à 10:43
 tyuiop - 3 mai 2008 à 10:28
Bonjour,
je chercher à faire une somme conditionnelle en prenant en compte un interval de dates, je m'explique :

mon tableau est tout simple: 1ere colonne des dates, 2nd colonne des valeurs associées aux dates.

Je dois faire en sorte que sur la Feuil1, en entrant deux dates (ex:01/01/2006 et 31/01/2006, en gros le mois de janvier), on puisse avoir la somme des valeurs correspondantes au mois de janvier.

pour ce faire j'ai une macro qui ressemble à ca :

Sub Rectangle1_QuandClic()

Dim test As Variant
Dim i As Integer

test = 0

For i = 1 To ThisWorkbook.Worksheets.Count

test = test + Worksheets(i).[SUMIF(A:A,Feuil1!E2,B:B)]

Next
Worksheets(1).Range("E10") = test

End Sub


Pour l'instant je teste seulement avec une seule valeur (ex:si en colonne 1 j'ai "3" alors je somme les valeurs de la colonne 2 correspondante). La valeur "3" est entrée dans la cellule E2.

J'ai pas mal parcouru les forums et j'ai rien trouvé pour faire cette somme conditionnelle. J'ai essayé SUMIF mais ca prend pas en compte les intervalles on dirait. Je viens d'essayer SOMMEPROD mais je ne comprends pas trop l'intéret. Et j'ai également essayé des trucs comme ca :
'If Cells(e, 4).Value <= Range("A:A").Value Then
'If Range("A:A").Value <= Cells(f, 4).Value Then

mais aucun succès.


C'est pourquoi je vous demande un petit coup de pouce.

Merci d'avance.

P.S/si je n'ai pas été assez clair n'hésitez pas à me demander d'éclairsir...
A voir également:

14 réponses

Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 10:47
Correspond à la fonction SOmme.Si de Excel
1
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 10:55
oui SUMIF c'est le SOMME.SI de excel mais en anglais pr le langage vba.
mais apres je n'arrive pas à prendre en compte l'interval.
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 11:22
Voila j'arrive à faire ça mais comment intégrer l'autre date?

SUMIF(A:A,">12/01/2006",B:B)
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 11:33
Dans ton SUMiF, la date sera toujours codée en dur ?
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 11:51
je ne sais pas trop ce que "codé en dur " veut dire...en revanche je sais que la date sera toujours prise pour une date et non une chaine de caractères
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 13:07
Un petit coup de pouce...
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 14:04
La date 12/01/2006 est une constante ou une variable ?
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 14:13
pour l'instant c'est une constante pour faire les essais, mais apres ca sera une variable.
je m'explique : en fait c'est pour faire un récapitulatif d'apres des dates. Et donc on sera amené à le faire sur le mois d'aout, celui de février et ainsi de suite.
J'ai essayé auparanvant de créer une varible :

Dim date as variant

date = "12/01/2006"

mais quand dans la formule avec le SUMIF j'essaye de mettre la variable date :
SUMIF(A:A,">date",B:B)
ca marche pas. Je pense qu'il faut l'écrire autrement mais j'ai beau chercher sur le net je ne trouve pas.
Par ailleurs si à la place de ">date" je mets ">E2" (pour prendre comme condition une date dans la cellule E2) ca ne marche pas non plus...
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 14:17
Le critère est a priori uniqument une constante; la varaible ne parait pas possible.

Est ce que c'est une somme par mois que tu veux faire.

Dans ce cas on crée une cellule interméiaire qui serait égale au mois de la cellule à tester, puis tu fais un somme.si pour le mois concerné

Je reconnais, c'est moyen.

L'usage du tableau croisé dynamqiue ne te conviendrait pas ?
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 14:25
oui c'est une somme par mois que je veux faire.
le problème c'est que je dois faire ca sur une centaine de feuilles et que sur chaque feuille il n'y a pas un nombre identique de valeurs à sommer par mois, exemple :

feuille 1:
12/06/2006
20/07/2006
03/08/2006
14/08/2006
24/08/2006
05/09/2006
05/10/2006
10/10/2006
20/10/2006
10/11/2006
17/11/2006
05/12/2006
15/12/2006
02/02/2007
15/02/2007
09/03/2007
03/04/2007
19/04/2007
18/05/2007
07/06/2007



feuille 2 :
12/07/2006
04/09/2006
22/12/2006
28/12/2006
07/05/2007
16/08/2007
24/12/2007
31/12/2007
02/01/2007

Je sais déjà comment faire la boucle pour prendre en compte les feuilles.

Apres je ne sais pas ce qu'est un tableau croisé dynamqiue :S désolé je suis novice.

qu'en penses tu?
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 14:29
Ton développement sert juste à faire les sommes par mois ?
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 14:31
oui et les feuilles représentent plusieurs fournisseurs.
c'est tout simple en fait
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 14:34
Quelle est ton adresse email ?
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 14:37
bobjul7456@msn.com
0
spass_pa Messages postés 17 Date d'inscription mercredi 8 août 2007 Statut Membre Dernière intervention 20 août 2007
20 août 2007 à 15:33
juste pour connaitre l'état d'avancement et savoir si ce que je voulais faire est finalement concrétisable
0
Claude Claude Messages postés 1756 Date d'inscription vendredi 17 août 2007 Statut Membre Dernière intervention 29 août 2009 584
20 août 2007 à 15:45
Je t'ai fait un retour par messagerie !
0
jerome_lehoux
30 avril 2008 à 22:33
Salut,

je cherche à faire la même chose: je voudrais faire la somme des "heures", par mois, pour chaque "item"

item date heures
A 01/02/07 24
A 02/02/07 24
A 03/02/07 24
A 21/02/07 24
A 22/02/07 24
A 23/02/07 19
A 24/02/07 13,67
A 25/02/07 24
B 17/05/07 24
B 18/05/07 24
B 19/05/07 24

J'ai essayé un truc du genre:

For i = 4 To row_max

Do While (Month(Cells(i, 2)) = Month(Cells(i + 1, 2)))
Cells(i, 4) = Cells(i, 3) + Cells(i - 1, 4)
i = i + 1
Loop

Next i

mais ça ne marche pas très bien car il me manque le calcul pour le dernier jour de chaque mois... Pourriez-vous me donner un coup de main?

Merci!
J.
0
tyuiop > jerome_lehoux
3 mai 2008 à 10:28
Tu ne pourrais pas ajouter une colonne a droite ou a gauche.

Calculer le mois avec la formule mois()* recopie vers le bas .

Et faire un tableau croisé dynamique*, somme de heures croisée par item et par mois ?

* il y a une aide en ligne
0