Macro somme par mois de résultat journaliers

  • Initiateur de la discussion Initiateur de la discussion Alex52
  • 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 !

Alex52

XLDnaute Nouveau
Bonjour a tous et bonjour le forum !

Je me permet de vous solliciter car j'ai un problème que je n'arrive pas a résoudre :
-j'ai une feuille avec des données pour chaque jour (Feuil1)
-une autre feuille avec des données pour chaque mois (Feuil2)
-la feuille des données par jour est mise a jour tous les jours


J'aurais aimer faire une macro qui me fasse la somme de mes données de la feuille de données par jour pour mettre cette somme dans ma feuille de données par mois en mettant bien les données dans le bon mois par rapport a la date de mes données de la feuille par jour.

J'ai déjà essayé plusieurs solution (faire des boucles for, utilisé la fonction month...) mais sans succès je reste bloqué 😕

Je vous joint un fichier a titre d'exemple pour une meilleure compréhension de mon problème.

Pourriez vous m'aider s'il vous plaît ?
Je vous remercie d'avance.
 

Pièces jointes

Dernière édition:
Re : Macro somme par mois de résultat journaliers

Bonsoir Alex,

Je réponds peut-être à coté de la plaque puisque tu cherches des macros, alors que là je te propose des formules... mais bon, au cas où ...
voici ton fichier en PJ ou j'ai usé et abusé des SOMMEPROD().

Bonne soirée/nuit,

mth
 

Pièces jointes

Re : Macro somme par mois de résultat journaliers

Suite...
Un code :
Code:
[COLOR="DarkSlateGray"][B]Sub toto()
Dim i&, j&, datR&, oDat, oXct
   With Feuil1: oDat = .Range(.Cells(4, 5), .Cells(.Rows.Count, 1).End(xlUp)).Value: End With
   With Feuil2
      oXct = .Range(.Cells(4, 5), .Cells(.Rows.Count, 1).End(xlUp)).Value
      For i = 2 To UBound(oXct, 1)
         For j = 2 To 5
            oXct(i, j) = Empty
         Next j
         If IsDate(oXct(i, 1)) Then
            datR = DateSerial(Year(oXct(i, 1)), Month(oXct(i, 1)), 1)
            For j = 2 To UBound(oDat, 1)
               If datR = DateSerial(Year(oDat(j, 1)), Month(oDat(j, 1)), 1) Then
                  oXct(i, 2) = oXct(i, 2) + oDat(j, 2)
                  oXct(i, 3) = oXct(i, 3) + oDat(j, 2) * oDat(j, 3)
                  oXct(i, 4) = oXct(i, 4) + oDat(j, 2) * oDat(j, 4)
                  oXct(i, 5) = oXct(i, 5) + oDat(j, 5)
               End If
            Next j
            If oXct(i, 2) Then
               oXct(i, 3) = oXct(i, 3) / oXct(i, 2) / 86400
               oXct(i, 4) = oXct(i, 4) / oXct(i, 2) / 1440
               oXct(i, 5) = oXct(i, 5) / 1440
            Else
               oXct(i, 2) = 0
               oXct(i, 3) = "-"
               oXct(i, 4) = "-"
               oXct(i, 5) = "-"
            End If
         End If
      Next i
      .Range(.Cells(4, 5), .Cells(.Rows.Count, 1).End(xlUp)).Value = oXct
   End With
End Sub[/B][/COLOR]
ROGER2327
#3337
 

Pièces jointes

Dernière édition:
- 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
15
Affichages
570
  • Question Question
Réponses
12
Affichages
328
Retour