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 FunctionA+
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
Bonjour et merci à vous d'avoir pris le temps de me répondre.
Cordialement