Formule SOMMPROD

Bonjour à tous.

Nouvelle sur ce forum, j'espère pouvoir trouver réponse à mes questions.

Je voulais savoir s'il était possible de réduite ces deux formules (SOMMEPROD), l'une en RECAP-JRS et l'autre en INTERV-MOIS, sachant que pour la formule se trouvant dans INTERV-MOIS, je n'arrive pas à la formuler, je voudrais faire un récap par mois et par noms ex: mois d'octobre puis mois de novembre.........

Merci à vous en espérant que cela soit possible.

Cordialement


Ci_joint le fichier, pardon

Apparemment cela n'a pas marché.


Je crois que j'y suis arrivée.

Désolée, la nouveauté

Bonjour MD38

Peut-être avec 2 fonctions personnalisées (plus simple à comprendre)

Function Totalheure(sNom As String, vDate As Date)
  Dim Lig As Long, DLig As Long
  Dim TotH As Double, TotH2 As Double
  ' Permettre à la fonction de se recalculer à tout moment
  Application.Volatile
  ' Initialiser les variables
  TotH = 0: TotH2 = 0
  ' Avec la feuille planning
  With Sheets("Planning")
    ' Avec la dernière ligne
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Vérifier si la date correspond
      If .Range("A" & Lig).Value = vDate Then
        ' Vérifier si le nom correspond
        If .Range("D" & Lig).Value = sNom Then
          TotH = TotH + .Range("E" & Lig).Value
          TotH2 = TotH2 + .Range("F" & Lig).Value
        End If
        If .Range("J" & Lig).Value = sNom Then
          TotH = TotH + .Range("K" & Lig).Value
          TotH2 = TotH2 + .Range("L" & Lig).Value
        End If
      End If
    Next Lig
  End With
  Totalheure = TotH + TotH2
End Function

Function TotalheureSup(sNom As String, vDate As Date)
  Dim Lig As Long, DLig As Long, TotHSup As Double
  ' Permettre à la fonction de se recalculer à tout moment
  Application.Volatile
  ' Initialiser les variables
  TotHSup = 0
  ' Avec la feuille planning
  With Sheets("Planning")
    ' Avec la dernière ligne
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 2 To DLig
      ' Vérifier si la date correspond
      If .Range("A" & Lig).Value = vDate Then
        ' Vérifier si le nom correspond
        If .Range("D" & Lig).Value = sNom Then
          TotHSup = TotHSup + .Range("G" & Lig).Value
        End If
        If .Range("J" & Lig).Value = sNom Then
          TotHSup = TotHSup + .Range("M" & Lig).Value
        End If
      End If
    Next Lig
  End With
  TotalheureSup = TotHSup
End Function

A+

Bonjour, et merci de votre réponse.

Je suis désolée, mais surtout pas de macro.

Je préfère une autre solution, si cela est possible.

Merci beaucoup

Re,

Je suis désolé, mais alors surtout pas de simplification de formule

Bonjour et merci à vous d'avoir pris le temps de me répondre.

Cordialement

Rechercher des sujets similaires à "formule sommprod"