Je cherche depuis plusieurs heures comment configurer mon tableur pour qu'entre deux dates, il détermine le total de jours entre deux dates, dans la limite de 5 jours max par semaine.
En gros, je ne veux pas qu'il comprenne"Ah c'est un dimanche ou un samedi donc je le prends pas en compte" mais qu'il comprenne que par semaine je ne retiens que 5 jours au maximum
Min ne convient pas dans mon cas, en exemple j'aimerais que sur une période, le resultat est égal au nombre de jours compris dans cette periode, en ne prennant en compte que 5 jours maximum par semaine civile, par exemple.
Je souhaite qu'entre
- le 02/01/2018 et le 04/02/2018 le résultat affiché doit être 24 jours,
- le 03/01/2018 et le 10/01/2018 le résultat affiché doit être 8 jours
Malheureusement dans mon cas cette fonction ne corresponds pas, car mon résultat n'est pas en fonction des jours ouvrés mais réellement d'un montant maximum de jours par semaine.
Je ne veux pas en resultat le nombre de jours ouvrés mais le nombre de jour dans la limite de 5 jours par semaine.
J'essaie d'expliquer mieux:
Mon salarié peut travailler entre le lundi et le dimanche, mais ne peut faire que 5 jours maximum par semaine civile, il me dit qu'il a travaillé du 02/01/18 au 04/02/18 et j'aimerai la formule qui me calcul le nombre total de jours entre ces deux dates et en ne prennant en compte que 5 jours maximum par semaine.
L'ennuie avec la fonction NB.JOURS.OUVRES c'est qu'elle m'oblige de définir les jours de la semaines qui ne sont pas pris en compte. Si il travail du Mercredi au Mercredi suivant, ça doit m'afficher 8 jours, en revanche, peut importe la configuration de la fonction, elle ne m'affichera jamais ce résultât la
Si j'ai bien compris voyez le fichier joint et cette fonction VBA, à placer dans un module standard :
Code:
Function NbJours(deb As Date, fin As Date, maxi As Byte)
Dim dat As Date, sem As Byte
For dat = deb To fin
If Weekday(dat) = 2 Then sem = 0
sem = sem + 1
NbJours = NbJours - (sem <= maxi)
Next
End Function
Si j'ai bien compris voyez le fichier joint et cette fonction VBA, à placer dans un module standard :
Code:
Function NbJours(deb As Date, fin As Date, maxi As Byte)
Dim dat As Date, sem As Byte
For dat = deb To fin
If Weekday(dat) = 2 Then sem = 0
sem = sem + 1
NbJours = NbJours - (sem <= maxi)
Next
End Function