Déterminer si date = premier jour ouvré du mois

Bonjour à tous,

Il me faudrait un moyen de vérifier si la valeur de A1 (type Date) est le premier jour ouvré du mois en cours.

Je n'ai pas réussi à trouver un moyen de détecter cela via VBA...

Algo :

SI A1 = premier jour ouvré du mois

ALORS

SINON

Merci par avance à ceux qui se penchent sur le sujet.

Bonjour à tous,

Il me faudrait un moyen de vérifier si la valeur de A1 (type Date) est le premier jour ouvré du mois en cours.

Je n'ai pas réussi à trouver un moyen de détecter cela via VBA...

Algo :

SI A1 = premier jour ouvré du mois

ALORS

SINON

Merci par avance à ceux qui se penchent sur le sujet.

Bonjour,

Excel dispose d'une fonction NB.JOURS.OUVRES() qui pourrait vous être utile...

En procédant en 2 étapes :

1. NB.JOURS.OUVRES(A1;A1) = 1 si la date est bien un jour ouvré

2. NB.JOURS.OUVRES(DATE(ANNEE(A1);MOIS(A1);1);A1) = 1 si la date est le 1er jour ouvré du mois

En adaptant un peu la syntaxe, il est tout à fait possible d'utiliser cette formule via VBA.

La documentation de la formule :

https://support.office.com/fr-fr/article/nb-jours-ouvres-nb-jours-ouvres-fonction-48e717bf-a7a3-495f-969e-5005e3eb18e7

Une proposition via VBA (non testée) utilisant une fonction personnalisée :

Function PremierJourOuvré(Jour As Date, Optional Fériés As Range) As Boolean

If Not Fériés Is Nothing Then
    PremierJourOuvré = (Application.NetWorkDays(Jour,Jour,Fériés) = 1) * (Application.NetWorkDays(DateSerial(Year(Jour),Month(Jour),1),Jour,Fériés) = 1)
Else
    PremierJourOuvré = (Application.NetWorkDays(Jour,Jour) = 1) * (Application.NetWorkDays(DateSerial(Year(Jour),Month(Jour),1),Jour) = 1)
End If

End Function

Dans votre code, il est ensuite possible d'écrire :

'...
If PremierJourOuvré(Range("A1")) Then
   '...
Else
   '...
End If
'...

Bonjour Kh0uby, mes salutation à Pedro

Pour reprendre la formule de Pedro, en ajoutant les jours fériés (France sauf Alsace), et sans macro ...

471er-jour-ouvre.xlsx (10.18 Ko)

Bonjour,

Sans vba il y a la formule :

=SI(SERIE.JOUR.OUVRE(FIN.MOIS(A1;-1);1;FERIESLISTE)=A1;"Oui premier jour";"non")

je ne sais pas si elle a un équivalent en vba ?

Une illustration de la proposition de Pedro avec les jours fériés

581er-jour-ouvre.xlsm (19.45 Ko)

Bonjour,

Un grand merci à vous, la réactivité et la qualité des réponses sont exceptionnelles !

Cela correspond parfaitement à mon besoin.

Rechercher des sujets similaires à "determiner date premier jour ouvre mois"