XL 2010 Aide pour calcul nombre de jour

Snoyerz

XLDnaute Nouveau
Bonjour,

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

D'avance je vous remercie de votre aide :)
 
Dernière édition:

Snoyerz

XLDnaute Nouveau
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
 

Snoyerz

XLDnaute Nouveau
Cf fonction NB.JOURS.OUVRES =>
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
 

job75

XLDnaute Barbatruc
Bonjour Snoyerz, Chris401, Pierre,

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
A+
 

Pièces jointes

  • NbJours(1).xlsm
    21.1 KB · Affichages: 19

Snoyerz

XLDnaute Nouveau
Bonjour Snoyerz, Chris401, Pierre,

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
A+

Merci énormément ça fonctionne d'une simplicité exemplaire !
 

job75

XLDnaute Barbatruc
Bonjour Snoyerz, le forum,

Dans le fichier joint voici une solution sans VBA avec cette formule en C2 :
Code:
=SI(A2+7-MOD(A2-1;7)>B2;MIN(B2-A2+1;5);5*(B2-MOD(B2-1;7)-A2-7+MOD(A2-1;7))/7+MIN(8+MOD(A2-1;7);5)+MIN(MOD(B2-1;7);5))
Le recalcul est plus rapide qu'en VBA car il est indépendant de la période étudiée.

Sur la période du 02/01/2018 au 02/01/2020 (2 ans) :

- avec VBA => 0,55 milliseconde

- sans VBA => 0,19 milliseconde.

Bonne journée.
 

Pièces jointes

  • NbJours sans VBA(1).xlsx
    15.5 KB · Affichages: 13
Dernière édition:

Discussions similaires

Réponses
8
Affichages
420

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 864
dernier inscrit
abderrashmaen