calcul entre deux date

  • Initiateur de la discussion Titi
  • Date de début
T

Titi

Guest
Bonjour a tous et a toutes
Je voudrais calculer le nombres de jours entre deux dates sans les samedi ,les jours feries, et les dimanche
S vous avez une petite formule merci
Titi
 
Y

Yeahou

Guest
Salut

une fonction + une macro devraient résoudre ton problème.
Tu peux définir tes propres jour fériés ou rajouter toute date qui te serait utile. initialiser date_deb avec la date de début et date_fin avec la date de fin.
Il y a peut être plus simple
En espérant t'avoir aidé.

A+

Option Explicit
Function Jours_Feries(Date_Reference) As Boolean
Dim Annee_Reference As Integer, Dimanche_Paques As Date
Annee_Reference = Year(Date_Reference)
If Annee_Reference < 1900 Or Annee_Reference > 2078 Then
Jours_Feries = False
Else
If ((((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30)) + 5) Mod 7)) + 9 <= 0 Then Dimanche_Paques = DateSerial(Annee_Reference, 3, (22 + (((19 * (Annee_Reference Mod 19)) + 24) Mod 30)) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + 5)) Mod 7)) Else Dimanche_Paques = DateSerial(Annee_Reference, 4, ((((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + (((2 * (Annee_Reference Mod 4)) + (4 * (Annee_Reference Mod 7)) + (6 * (((19 * (Annee_Reference Mod 19)) + 24) Mod 30) + 5)) Mod 7))) - 9
Select Case Left(DateValue(Date_Reference), 5)
Case Is = "01/01"
Jours_Feries = True
Case Is = "01/05"
Jours_Feries = True
Case Is = "08/05"
Jours_Feries = True
Case Is = "14/07"
Jours_Feries = True
Case Is = "15/08"
Jours_Feries = True
Case Is = "01/11"
Jours_Feries = True
Case Is = "11/11"
Jours_Feries = True
Case Is = "25/12"
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 1, 5)
'lundi de paques
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 39, 5)
'jeudi de l'ascencion
Jours_Feries = True
Case Is = Left(DateValue(Dimanche_Paques) + 50, 5)
'lundi de pentecote
Jours_Feries = True
Case Else
Jours_Feries = False
End Select
End If
End Function

Sub essai()
Dim Date_Deb As Date, Date_Fin As Date, Compteur As Integer, Compteur2 As Integer
Compteur2 = 0
Date_Deb = "01/01/2004"
Date_Fin = "31/12/2004"
For Compteur = 1 To (DateValue(Date_Fin) - DateValue(Date_Deb)) + 1
If Weekday(DateValue(Date_Deb) + (Compteur - 1)) = 7 Or Weekday(DateValue(Date_Deb) + (Compteur - 1)) = 1 Or Jours_Feries(DateValue(Date_Deb) + (Compteur - 1)) = True Then
Else
Compteur2 = Compteur2 + 1
End If
Next Compteur
MsgBox Compteur2 & " jours"
End Sub
 
E

Emmanuel

Guest
Bonjour,

Il existe une méthode beaucoup plus simple que les macros :

Il faut utiliser la fonction jour ouvré dans les formules...

C'est plus rapide que ce code macro cité plus haut.

@+
 
M

Monique

Guest
Bonjour,

=NB.JOURS.OUVRES(A1;A2)
te donne le nb de jours entre A1 (début) et A2 (fin) sauf le samedi et le dimanche

Dans la plage de cellules G1:G15, tu entres les fériés
=NB.JOURS.OUVRES(A1;A2;$G$1:$G$15)
te donne le nb de jours sauf le samedi, le dimanche et les fériés

Si tu donnes le nom "Feries" à la plage G1:G15, ça te donne :
=NB.JOURS.OUVRES(A1;A2;Feries)
 

Discussions similaires

Réponses
9
Affichages
589

Statistiques des forums

Discussions
312 504
Messages
2 089 072
Membres
104 018
dernier inscrit
Mzghal