Comprendre une fonction VBA

Bonjour,

J'ai une fonction en VBA que j'utilise pour calculer le nombre de jours ouvrés entre deux dates et j'aurais aimé comprendre l'algorithme. Pourriez-vous me l'expliquer svp ?

Function Minutes(Début, Fin, PlageFériés)
If Fin = "" Then Fin = Now
For i = Début * 1 To Fin * 1 Step TimeValue("0:10")
    If Hour(i) >= 8 And Hour(i) < 18 And Day(i) = Day(i + TimeValue("0:10")) _
        And Application.CountIf([PlageFériés], CDate(Int(i)) * 1) = 0 _
        And Weekday(CDate(Int(i)) * 1, 2) < 6 Then x = x + 10
    Next
    HeureOuvrées = x / 1440
    Minutes = HeureOuvrées * 60
End Function

Normalement, cette fonction doit calculer les jours ouvrés donc hors weekend et hors jours fériés, dans les plages d'heures ouvrées entre 7h et 12h. Le retour doit être en minutes.
A ce que je comprends :
- Weekday prend une date et renvoi le numéro du jour de la semaine
- CDate converti une date en date ?
- TimeValue, je n'ai pas compris...
- Pourquoi diviser par 60*24=1440 à la fin svp ?

Merci de votre aide :)

Bonjour

Function Minutes(Début, Fin, PlageFériés)
If Fin = "" Then Fin = Now
For i = Début * 1 To Fin * 1 Step TimeValue("0:10")
    If Hour(i) >= 8 And Hour(i) < 18 And Day(i) = Day(i + TimeValue("0:10")) _
        And Application.CountIf([PlageFériés], CDate(Int(i)) * 1) = 0 _
        And Weekday(CDate(Int(i)) * 1, 2) < 6 Then x = x + 10
    Next
    HeureOuvrées = x / 1440
    Minutes = HeureOuvrées * 60
End Function

Normalement, cette fonction doit calculer les jours ouvrés donc hors weekend et hors jours fériés, dans les plages d'heures ouvrées entre 7h et 12h. Le retour doit être en minutes.
A ce que je comprends :
- Weekday prend une date et renvoi le numéro du jour de la semaine
- CDate converti une date en date ?
- TimeValue, je n'ai pas compris...
- Pourquoi diviser par 60*24=1440 à la fin svp ?

Merci de votre aide :)

A priori

  • ta date est en date/heure ce pourquoi il faut convertir pour ne traiter que la partie date
  • il semble y avoir un calcul par 10 minutes d'où TimeValue de "0:10" sous format texte
  • pour Excel 1 jour vaut 1, une heure 1/24ème, 1 minute 1/24/60 soit 1/1440

Merci beaucoup de ton aide Chris

Rechercher des sujets similaires à "comprendre fonction vba"