Bonjour
J'ai créé une série de fonctions. Mais ça ralentit terriblement mon système. Dans la cellule de calcul je fais HTS_Lun+HTS_Mar+HTS_Mer+HTS_Jeu+HTS_Ven pour calculer les heures cumulées de la semaine
Puis-je simplifier, ne faire qu'une fonction pour les 5 ?
"ZoneFerm" est la liste des fériés et fermetures, DateDéb et DateFin sont les dates de début et fin des activités.
Désolé, je n'arrive pas à joindre mon fichier trop lourd, j'ai mis les codes en-dessous.
Merci de votre aide.
Bert69
Option Explicit
Function HTS_Lun(DateDéb As Date, DateFin As Date, Datejour1 As Date) As Integer
'Calcule les HTS par lundi inclus dans l'offre, si pas férié ou fermé
Application.Volatile
If Application.CountIf(Range("ZoneFerm"), Datejour1) = 0 Then
If Datejour1 >= DateDéb And Datejour1 <= DateFin Then
HTS_Lun = 7
Else: HTS_Lun = 0
End If
End If
End Function
Function HTS_Mar(DateDéb As Date, DateFin As Date, Datejour2 As Date) As Integer
'Calcule les HTS par mardi inclus dans l'offre, si pas férié ou fermé
Application.Volatile
If Application.CountIf(Range("ZoneFerm"), Datejour2) = 0 Then
If Datejour2 >= DateDéb And Datejour2 <= DateFin Then
HTS_Mar = 8
Else: HTS_Mar = 0
End If
End If
End Function
Function HTS_Mer(DateDéb As Date, DateFin As Date, Datejour3 As Date) As Integer
'Calcule les HTS par mercredi inclus dans l'offre, si pas férié ou fermé
Application.Volatile
If Application.CountIf(Range("ZoneFerm"), Datejour3) = 0 Then
If Datejour3 >= DateDéb And Datejour3 <= DateFin Then
HTS_Mer = 8
Else: HTS_Mer = 0
End If
End If
End Function
Function HTS_Jeu(DateDéb As Date, DateFin As Date, Datejour4 As Date) As Integer
'Calcule les HTS par jeudi inclus dans l'offre, si pas férié ou fermé
Application.Volatile
If Application.CountIf(Range("ZoneFerm"), Datejour4) = 0 Then
If Datejour4 >= DateDéb And Datejour4 <= DateFin Then
HTS_Jeu = 8
Else: HTS_Jeu = 0
End If
End If
End Function
Function HTS_Ven(DateDéb As Date, DateFin As Date, Datejour5 As Date) As Integer
'Calcule les HTS par jeudi inclus dans l'offre, si pas férié ou fermé
Application.Volatile
If Application.CountIf(Range("ZoneFerm"), Datejour5) = 0 Then
If Datejour5 >= DateDéb And Datejour5 <= DateFin Then
HTS_Ven = 4
Else: HTS_Ven = 0
End If
End If
End Function