Recherche
Les mémos
-
Tables
- · Annuler la suppression
- · Attacher feuilles Excel
- · Cacher une table
- · Concaténer une colonne
- · Créer une table
- · Dernière modification
- · Index composé
- · Limiter les enregistrements
- · Liste des champs
- · Modifier valeur de champ
- · Où est la table
- · Peupler une table de Logs
- · Renuméroter un champ
- · Réattacher les liens
- · Réattacher les liens locaux
- · Scinder un champ
- · Supprimer les tables liées
- · Trouver la différence
-
Formulaires
- · Afficher les derniers
- · Ajout à liste modifiable
- · Ajouter enregistrement
- · Barre de progression
- · Click ou double-click
- · Confirmer l'enregistrement
- · Copier - Coller
- · Défilement de la roulette
- · Exporter un graphique
- · Filtres personnalisés
- · Identifiants d'un Form continu
- · Importer les formulaires
- · Langue utilisateur
- · Limiter la saisie
- · Mémoriser une valeur
- · No enregistrement
- · Ouvert en normal
- · Position des formulaires
- · Recopier dernière valeur
- · Scroll automatique
- · Switch Modal
- · Tri manuel dans form
- · Tri personnalisé
- · Verrouillage de formulaire
- · Vérifier les saisies
-
Automation
-
Administration
- · Chemin de la base
- · Déconnecter utilisateur
- · Désactiver le Shift
- · Désactiver le Shift(2)
- · Liste des références
- · Liste des utilisateurs
- · Lister les applications
- · Mode exclusif
- · Nom d'utilisateur
- · Nom de l'ordinateur
- · Paramètres régionaux
- · Propriétés de la base
- · Sauvegarde journalière
- · Sauvegarde mensuelle
- · Shell and Wait
- · Version de Windows
-
Envoyer un mail
-
Outlook
- · Ajouter des contacts
- · Déplacer les messages
- · Enregistrer pièces jointes
- · Est ouvert ?
- · Exporter les contacts
- · Exporter les rendez-vous
- · Importer les messages
- · Integrer un état
- · Lire les contacts
- · Lire les rendez-vous
- · Lister les dossiers
- · Lister les tâches
- · SendMail (MAPI)
- · SendMail Automation
-
Dates - Heures
-
Fichiers
- · Compter les dossiers
- · Créer un dossier
- · Générer fichier TXT
- · Importer fichier TXT
- · Le dossier existe ?
- · Le fichier existe ?
- · Lister les fichiers
- · Lister les fichiers (2007)
- · Lister les sous-dossiers
- · Rechercher un répertoire
- · Répertoire dans table
- · Supprimer ReadOnly
- · Sélection de dossier
- · Sélection de dossier (API)
- · Sélection de fichiers
- · Sélection fichier (MOL)
-
Références
Je débute...
-
La normalisation
-
VBA
Visites
1263822 visiteurs
3 visiteurs en ligne
Nous contacter
Contact
Jours ouvrés entre deux dates
Nombre de jours ouvrés entre deux dates
Cette fonction retourne le nombre de jours ouvrés entre deux dates renseignées.
Dans l'état, elle retourne les jours ouvrés pour la France, mais peut être facilement adapté - voir fnHolidays() - à d'autres pays ou conditions.
=> Vous avez également besoin des fonctions fnHolidays() et fnEaster() ci-dessous.
Utilisation :
X = fnWorkDays("1/1/2019", "31/12/2019")
ou plus souvent :
x = fnWorkDays([champ1], [champ2])
Public Function fnWorkDays(Date1, Date2) As Integer ' Renvoi le nombre de jours ouvrés ' Utilise la fonction fnHolidays() et fnEaster() Dim StartDate As Date, EndDate As Date, TestDate As Date Dim DayCounter As Integer If Not (IsDate(Date1) And IsDate(Date2)) Then Exit Function Else StartDate = Date1: EndDate = Date2 End If TestDate = StartDate DayCounter = 0 Do Until TestDate > EndDate If (Weekday(TestDate) <> 6) And (Weekday(TestDate) <> 7) _ And (fnHolidays(TestDate) = False) Then DayCounter = DayCounter + 1 End If TestDate = DateAdd("d", 1, TestDate) Loop fnWorkDays = DayCounter End Function
Public Function fnHolidays(CurDate As Date) As Boolean Dim dPaques As Date, dLPaques As Date dPaques = fnEaster(Year(CurDate)) dLPaques = DateAdd("d", 1, dPaques) Select Case CurDate Case CDate("01/01/" & Year(CurDate)) 'Jour de l'an fnHolidays = True Case dLPaques 'Lundi de Pâques fnHolidays = True Case CDate("01/05/" & Year(CurDate)) 'Fête du travail fnHolidays = True Case CDate("08/05/" & Year(CurDate)) 'Victoire de 1945 fnHolidays = True Case CDate("30/05/" & Year(CurDate)) 'Ascension fnHolidays = True Case dPaques + 50 'Lundi de pentcôte fnHolidays = True Case CDate("14/07/" & Year(CurDate)) 'Fête nationale fnHolidays = True Case CDate("15/08/" & Year(CurDate)) 'Assomption fnHolidays = True Case CDate("01/11/" & Year(CurDate)) 'Toussaint fnHolidays = True Case CDate("11/11/" & Year(CurDate)) 'Armistie 1918 fnHolidays = True Case CDate("25/12/" & Year(CurDate)) 'Noël fnHolidays = True '/ Vous pouvez adapter selon vos besoins '/ - soit en ajoutant 2 lignes selon le modèle '/ - soit en commentant les 2 lignes non utiles Case Else fnHolidays = False End Select End Function
Public Function fnEaster(wAn%) As Date 'Pâques est le dimanche qui suit le quatorzième jour de la 'Lune qui tombe le 21 mars ou immédiatement après Dim wA%, wB%, wC%, wD%, wE%, wF%, wG%, wH% Dim wI%, wJ%, wK%, wL%, wM%, wN%, wP% wA = wAn Mod 19 'Calcul du rang de l'année dans le cycle lunaire qui a 19 ans wB = wAn / 100 'Calcul du siècle wC = wAn Mod 100 'Calcul du rang de l'année dans le siècle wD = wB / 4 wE = wB Mod 4 wF = (wB + 8) / 25 wG = (wB - wF + 1) / 3 wH = (19 * wA + wB - wD - wG + 15) Mod 30 wI = wC / 4 wK = wC Mod 4 wL = (32 + 2 * wE + 2 * wI - wH - wK) Mod 7 wM = (wA + 11 * wH + 22 * wL) / 451 wN = (wH + wL - 7 * wM + 114) / 31 'détermine le mois wP = (wH + wL - 7 * wM + 114) Mod 31 'détermine le jour fnEaster = DateSerial(wAn, wN, wP + 1) End Function
Catégorie : Les mémos - Dates - Heures
Page lue 1901 fois
Page lue 1901 fois