OVH Cloud OVH Cloud

Formule sur les dates

6 réponses
Avatar
BigMama
Bonjour,

C'est la première fois que je viens poser une question sur les news; par
conséquent, je ne connais pas tous les usages.

J'aimerais savoir s'il existe une formule permettant de calculer une
différence entre 2 dates mais en tenant compte des jours fériés et des
diamnches (comme en compta pour les congés payés).
Exemple : Du lundi 05/12/05 au Dimanche 11/12/05 = 6 jours (et non 7 dans
l'absolu)
Du Lundi 11/07/05 au Dimanche 17/07/05 = 5 jours (-1 pour le
dimanche et -1 pour le jours férié)

Merci de votre aide

BigMama

6 réponses

Avatar
JB
Bonjour,

PJ http://cjoint.com/?mFkYLY7CDd

=NB.JOURS.OUVRES(B1;B2_fin;férié)

-B1 contient la date de début, B2 la date de fin
-Férié est un champ nommé qui contient la liste des jours fériés


Il faut cocher Outils/Macro complémentaire/Util analyse pour accéder
à cette fonction

Cordialement JB
Avatar
AV
| Mais une autre question me vient : les jours ouvrés sont au nombre de 5
| pour Excel, mais si les salariés travaillent tous les jours de la
| semaine (6 ou même 7 jours comme dans le tourisme par exemple), comment
| peut-on automatiser le calcul tout de même ?

Ne pas utiliser la fonction de l'utilitaire d'analyse mais l'une des ces
formules matricielles (validation par ctrl+maj+entrée)
Avec plages nommées "Début", "Fin" et "Jrf"

Les jours travaillés sans les samedis, dimanches et fériés :
=SOMME((JOURSEM(LIGNE(INDIRECT(Début&":"&Fin));2)<6)*ESTNA(EQUIV(LIGNE(INDIRECT(Début&":"&Fin));jrf;0)))

Les jours travaillés sans les dimanches et fériés :
=SOMME((JOURSEM(LIGNE(INDIRECT(Début&":"&Fin)))>1)*ESTNA(EQUIV(LIGNE(INDIRECT(Début&":"&Fin));jrf;0)))

Les jours travaillés sans les jours fériés fériés :
=SOMME(ESTNA(EQUIV(LIGNE(INDIRECT(Début&":"&Fin));jrf;0))*1)

Les jours travaillés
=Fin-Début

AV
Avatar
BigMama
Bonsoir,
Si Miniminou comprend tout c'est une pro! POur ma part mes connaissances
sont trop limités et j'aimerais plus de détail sur le fonctionnement de la
formule.
Par avance Merci et pardon pour ma nullité
BIgMama


Miniminou est tout fraîchement reformaté et boosté et je lis AV qui nous
dit :

Ne pas utiliser la fonction de l'utilitaire d'analyse mais l'une des ces
formules matricielles (validation par ctrl+maj+entrée)


Je vais étudier ça, merci beaucoup.
--
/____/
/ /
- > O O < -
- o -
v < Cath :-)




Avatar
JB
Bonjour,

A B
1 Date début Date fin
2 01/01/2006 29/01/2006

PJ http://cjoint.com/?bekWGba7yC

-Une date est un nb de jours / 1er janv 1900 (38718 pour 1er janv
2006)
-NB.SI(champ;condition) permet de compter le nb de cellules du champ
qui vérifient la condition
-Joursem(date;2) donne le jour de la semaine (1,2,3,4,5,6,7)

Formule finale:

=SOMMEPROD((JOURSEM(LIGNE(INDIRECT(A2&":"&B2));2)<6)*(NB.SI(férié;LIG NE(INDIRECT(A2&":"&B2)))=0))

¢&":"&B2 représente une adresse de champ: 38718:38746

=INDIRECT(A2&":"&B2) représente un champ de 29 cellules

=LIGNE(INDIRECT(A2&":"&B2) donne un VECTEUR avec les numéros de lignes
de ce champ, i.e. les dates entre 1er janv et 29 janv

=JOURSEM(LIGNE(INDIRECT(A2&":"&B2));2)<6 représente un VECTEUR avec
Vrai si les dates ne sont pas un samedi ni un dimanche

=NB.SI(férié;LIGNE(INDIRECT(A2&":"&B2)))=0 représente un VECTEUR
avec Faux si les jours ont étés trouvés dans la table nommée
Férié

=(JOURSEM(LIGNE(INDIRECT(A2&":"&B2));2)<6)*(NB.SI(férié;LIGNE(INDIREC T(A2&":"&B2)))=0)
est la multiplication (cellule à cellule) des 2 vecteurs: On obtient 0
1 1 1 1 1 0 0 1 1 1 ...

Il ne reste plus qu'à additionner les cellules du vecteur avec
Sommeprod (ou Somme en validant avec Maj+Ctrl+entrée)

Cordialement JB
Avatar
JB
Solution avec fonction perso: http://cjoint.com/?bewsbzNc0B

PJ http://cjoint.com/?bewveL5jgQ

Dans le tableur: =nbJoursOuvres(A2;B2;F7:F17)

Function NbJoursOuvres(date1, date2, fériés As Range)
If date1 > date2 Then
NbJoursOuvres = 0
Else
NbJoursOuvres = 0
Do While date1 <= date2
témoin = False
For Each j In fériés
If date1 = j Then témoin = True
Next j
If Weekday(date1) <> 1 And Not témoin Then
NbJoursOuvres = NbJoursOuvres + 1
End If
date1 = date1 + 1
Loop
End If
End Function

JB
Avatar
BigMama
Bonsoir,
Merci à JB et AV pour leur aide ainsi qu'a Cath pour la traduction de toutes
ces formules complexes. Je me met ç l'oeuvre pour vérifier si tout
fonctionne comme je le souhaite. Ce site des news est SUPER !!
Encore merci à tous
BigMama

"BigMama" a écrit dans le message de news:
%
Bonsoir,
Si Miniminou comprend tout c'est une pro! POur ma part mes connaissances
sont trop limités et j'aimerais plus de détail sur le fonctionnement de la
formule.
Par avance Merci et pardon pour ma nullité
BIgMama


Miniminou est tout fraîchement reformaté et boosté et je lis AV qui nous
dit :

Ne pas utiliser la fonction de l'utilitaire d'analyse mais l'une des ces
formules matricielles (validation par ctrl+maj+entrée)


Je vais étudier ça, merci beaucoup.
--
/____/
/ /
- > O O < -
- o -
v < Cath :-)