XL 2013 VBA faire somme de cellules entre 2 lignes vides

  • Initiateur de la discussion Initiateur de la discussion juj781
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
413
Réponses
32
Affichages
975
Retour