Code VBA création tableau avec jours du mois en cours

Bonjour à tous,

Je suis à la recherche d'un code vba pouvant me permettre de créer un tableau ayant pour en-tête tous les jours ouvrés du mois en cours. Avez vous quelque chose à me proposer?

Bien cordialement.

Bonsoir,

En pièce jointe, un exemple pour illustrer ma demande. Dans le tableau, tous les jours ouvrés de Juin sont placés en en-tête. A noter que cette procédure aura pour but de créer des rapports d'activité automatiques c'est donc pour cela que je souhaite passer par vba.

Merci par avance!

34planning.xlsx (9.43 Ko)

Bonjour,

Sub J_Ouvres()
    Dim mois As Long, annee As Long, date1 As Date
    Dim fini As Boolean, i As Long, j As Long

    mois = 6: annee = 2014
    [A1:W1].ClearContents
    [A1] = CDate("1/" & mois & "/" & annee)
    Do
        i = i + 1
        date1 = (Application.WorkDay_Intl(CDate([A1]), i))
        If Month(date1) = mois Then
            [A1].Offset(, i) = date1
        Else
            fini = True
        End If
    Loop Until fini
End Sub

Le fait que tu aies mis la plage en tableau amène des bizarreries.

Comme j'utilise la fonction SERIE.JOUR.OUVRE.INTL, tu peux facilement ajouter une liste des fériés et y faire référence.

eric

Merci Eric pour la réponse. Petite coqueterie cependant. Tu mentionnes que A1 sera toujours 01/XX/XX or le 1er du mois n'est pas toujours un jour ouvré comme c'est le cas aujourd'hui d'ailleurs. Comment y remédier? Je me suis également trompé dans mon énoncé, je cherche en effet à énumérer tous les jours OUVRABLES et non OUVRES ce qui change la donne... Toutes mes excuses!

Bonjour,

ce n'est pas une coquetterie, c'est une grossière erreur de ma part.

Qu'entends-tu exactement par ouvrable ? Là tu as du lundi au vendredi.

eric

Bonjour eric,

J'entends par jours ouvrables, du lundi au samedi puisque j'ai une rotation d'effectif. Une equipe tourne du lundi au vendredi et une autre du mardi au samedi.

Cordialement

Voilà :

Sub test()
    J_Ouvrables 6, 2014
End Sub

Sub J_Ouvrables(mois As Long, annee As Long)
    Dim date1 As Date, fini As Boolean, i As Long

    [A1:AA1].ClearContents
    [A1] = (Application.WorkDay_Intl(CDate("1/" & mois & "/" & annee) - 1, 1, 11))
    Do
        i = i + 1
        date1 = Application.WorkDay_Intl(CDate([A1]), i, 11)
        If Month(date1) = mois Then
            [A1].Offset(, i) = date1
        Else
            fini = True
        End If
    Loop Until fini
End Sub

Une précision que j'avais oubliée : ne fonctionne que sur excel 2010 et supérieur.

eric

Salut à tous,

une autre approche sur la base du code précédent de Eriic, que je salut:

Sub J_Ouvrable()
    Dim mois As Long, annee As Long, jour1 As Byte, madate As Date
    Dim fini As Boolean, i As Long, j As Long

    mois = 6: annee = 2014
    [A1:W1].ClearContents

    madate = CDate("1/" & mois & "/" & annee)

    'je récupère le num du jour pour une semaine de Lundi à Dimanche
    jour1 = (Application.WorksheetFunction.Weekday(madate, 2))

    i = 1

    Do

        'si le num du jour est différent de 7 soit dimanche
        If jour1 <> 7 Then
            If Month(madate) = mois Then
                Cells(1, i) = madate
                madate = madate + 1
                jour1 = (Application.WorksheetFunction.Weekday(madate, 2))
                i = i + 1

            Else
            fini = True

            End If
        Else
         madate = madate + 1
         jour1 = (Application.WorksheetFunction.Weekday(madate, 2))

        End If
    Loop Until fini
End Sub

Bonjour rvtoulon,

une autre approche...

Pas sûr que ce soit ok s'il désire ajouter la gestion des fériés.

eric

Bonjour Eric,rVtoulon,

La solution d'Eric est parfaite. Merci beaucoup!

Cordialement

Salut Eriic oupssss

j'ai trop fait la fête avec la victoire de Toulon Samedi

j'y ai pas pensé très juste

faut dire que je travail dans un secteur ou les fériés nous nous les travaillons nous sommes ouverts 7/7 365 jours par an donc....

Rechercher des sujets similaires à "code vba creation tableau jours mois cours"