XL 2013 VBA faire somme de cellules entre 2 lignes vides

juj781

XLDnaute Nouveau
Bonjour les ami-e-s,

je viens vers vous car je débute dans l'apprentissage de VBA (d'ailleurs si vous avez des suggestions d'ouvrages/site pour bien débuter et poser les bases, je suis preneuse)
Je voudrais rajouter à ma macro existante, qui ajoute des lignes à chaque nouvelle date (merci à la communauté pour votre aide sur ça), une somme par colonne et par bloc. Par exemple dans mon fichier pour la journée du 4 juillet calculer le total pour la bouilloire/Cooker1....
(svp pouvez vous mettre des commentaires pour que je comprennes les instructions )
Merci pour votre aide et votre disponibilité !
 

Pièces jointes

  • ConsoEau.xlsm
    31.8 KB · Affichages: 19

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Juj,
A vous lire on pourrait traduire par :
" Je veux ajouter n'importe quoi à n'importe quoi pour un jour donné"
Donc j'opterais pour un truc générique. Comme une fonction perso :
VB:
Function Som(Datation, Nom)
On Error GoTo FinSom                                                ' En cas d'erreur, on sort ( par ex appreil non trouvé )
Dim C As Integer, L As Integer
Application.Volatile                                                ' Sera recalculé à chaque recalcul XL
C = Application.Match(Nom, Range("1:1"), 0)                         ' Où se trouve Nom dans la ligne 1
L = Application.Match(CLng(CDate(Datation)), Range("A:A"), 0)       ' Où se trouve la date dans la colonne A
Som = Cells(L, C)                                                   ' Récupère la valeur à l'intersection
If Cells(L + 1, C) <> "" Then Som = Som + Cells(L + 1, C)           ' Si la ligne du dessous n'est pas vide, on l'ajoute ( cas Nuit/Soir )
If Cells(L + 2, C) <> "" Then Som = Som + Cells(L + 2, C)           ' Si la ligne du dessous n'est pas vide, on l'ajoute ( cas Nuit/Soir/Jour )
FinSom:
End Function
Cette fonction fait la somme à une certaine date pour un certain produit de 1,2 ou 3 valeurs suivant le tableau ( par ex Jour/Soir/Nuit )
Elle peut être utilisée en VBA comme dans TestSomme :
Code:
Valeur = Som(Jour, Ap1) + Som(Jour, Ap2) + Som(Jour, Ap3)           ' Somme de Som pour avoir les valeurs.
ou directement dans une feuille comme l'ex donné en PJ.

En espérant avoir répondu à votre attente.
 

Pièces jointes

  • ConsoEau (V1).xlsm
    28.3 KB · Affichages: 8

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour,

Pour les sous-totaux par jour, on peut utiliser une formule en C4 :
VB:
=SOMME(DECALER(C3;0;0;-NB.SI($A$1:$A3;$A3);1))

Cette formule est à recopier vers les autres cellules de sous-total.

edit : ou une formule encore plus courte :
VB:
=SOMME.SI($A$1:$A3;$A3;C$1:C3)
 

Pièces jointes

  • juj781- ConsoEau- v1.xlsx
    13.4 KB · Affichages: 4
Dernière édition:

juj781

XLDnaute Nouveau
Merci pour vos réponses, mais en fait il s'agit d'un base de données qui va être mise à jour toute l'années, je souhaite donc calculer le total par jour. J'ai mis en jaune dans le fichier en p.j, ce que je voudrais faire, mais je ne sais pas si c'est possible de le faire.
Merci
 

Pièces jointes

  • ConsoEau.xlsm
    29.8 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 181
Membres
102 808
dernier inscrit
guo