Jour ouvrés mois en cours

Bonjour le forum,

Je recherche une formule ou un code VBA pouvant me mettre dans une case spécifique la date du premier jour ouvré du mois en cours et également dans une autre case la date du premier Lundi du mois en cours, si c'est un férié alors mettre la date du premier jour ouvré suivant.

Ci joint un exemple de fichier qui je l'espère sera assez explicite

Merci pour votre précieuse aide

Bonjour

10dates-jo.xlsx (9.29 Ko)

Bonjour,

Merci pour votre retour, cela fonctionne effectivement.

Toutefois en mettant fériés le 02/11 cela fausse le résultat, ci joint le fichier avec mise à jour

3dates-jo.xlsx (8.85 Ko)

Bonjour le fil, bonjour le forum,

Une proposition VBA :

Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim M As Byte 'déclare la variable M (Mois)
Dim D1 As Date 'déclare la variable D1 (Date 1)
Dim D2 As Date 'déclare la variable D2 (Date 2)
Dim I As Date 'déclare la variable I (Incrément)
Dim LI As Integer 'déclare la variable LI (LIgne)

Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "J").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne J de l'onglet O
M = Month(Date) 'définit le mois e cours M
D1 = DateSerial(Year(Date), M, 1) 'définit la date D1 (premier jour du mois en cours)
D2 = D1 + 7 'définit la date D2 (D1 plus 7 jours)
If Weekday(D1) = 1 Then D1 = D1 + 1 'si le jour de la semaine de D1 est un dimanche, D1 devient D1 plus un jour
If Weekday(D1) = 7 Then D1 = D1 + 2 'si le jour de la semaine de D1 est un samedi, D1 devient D1 plus deux jours
Range("B2").Value = Format(D1, "dddd dd/mm/yyyy")
For I = D1 To D1 + 7 'boucle sur 7 jours de D1 à D1 plus 7
    If Weekday(I) = 2 Then 'condition 1 : si le jour de la semaine de la date I est un lundi
        For LI = 4 To DL 'boucle 2 : sur toutes les lignes LI des jours fériés en colonne J
            'condition 2 : si la date I est fériée
            If DateSerial(Year(O.Cells(LI, "J")), Month(O.Cells(LI, "J")), Day(O.Cells(LI, "J"))) = I Then
                I = I + 1 'I devient I plus un jour
            End If 'fin de la condition 2
        Next LI 'prochaine  ligne de la boucle 2
        Range("B3") = Format(I, "dddd dd/mm/yyyy") 'renvoie en B3 la date I au format JJJJ JJ/MM/AAAA
        Exit For 'sort de la boucle 2
    End If 'fin de la condition 1
Next I 'prochain jour de la boucle 1
For I = D2 To D2 + 7 'boucle sur 7 jours de D2 à D2 plus 7
    If Weekday(I) = 2 Then 'condition 1 : si le jour de la semaine de la date I est un lundi
        For LI = 4 To DL 'boucle 2 : sur toutes les lignes LI des jours fériés en colonne J
            'condition 2 : si la date I est fériée
            If DateSerial(Year(O.Cells(LI, "J")), Month(O.Cells(LI, "J")), Day(O.Cells(LI, "J"))) = I Then
                I = I + 1 'I devient I plus un jour
            End If 'fin de la condition 2
        Next LI 'prochaine  ligne de la boucle 2
        Range("B4") = Format(I, "dddd dd/mm/yyyy") 'renvoie en B3 la date I au format JJJJ JJ/MM/AAAA
        Exit For 'sort de la boucle 2
    End If 'fin de la condition 1
Next I 'prochain jour de la boucle 1
End Sub

Bonjour à tous

Je n'avais pas bien compris ton énoncé

Un autre essai

5dates-jo2.xlsx (10.44 Ko)

Merci beaucoup pour votre aide

Bonjour ThauThème,

En faisant tourner la macro il y a un pb avec cette ligne, incompatibilité de type ?

image

Re,

Pas de soucis chez moi ?!...

14cdb-ep-v01.xlsm (14.21 Ko)
Rechercher des sujets similaires à "jour ouvres mois cours"