1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| Function genererJoursOuvres(mois As Byte, annee As Integer)
'déclarations des variables
Dim moisCourant As Byte, semPremierJourMois As Byte, cptJour As Byte
Dim premierJourMois As Date, dernierJourMois As Date
Dim nbJour As Integer
Dim premierJourMoisString As String
'construction d'une date à partir des paramètres mois et annee
'ici mois +1 pour ensuite l'utiliser pour connaitre le dernier jour du mois:
'on prend le premier jour du mois précédent puis on enlève un jour
premierJourMoisString = "01/" & mois + 1 & "/" & annee
'détermination du dernier jour du mois à partir de la date précédente
dernierJourMois = Format(DateAdd("d", -1, premierJourMoisString), "dd/mm/yyyy")
'détermination de la date du premier jour du mois
premierJourMoisString = "01/" & mois & "/" & annee
'conversion de la date premierJourMoisString en format date
premierJourMois = Format(CDbl(CDate(premierJourMoisString)), "dd/mm/yyyy")
'vérification qu'il s'agit bien d'une date
'If (IsDate(premierJourMois) = False) Then
' MsgBox "C'est pas une date. La conversion a échoué."
'End If
'Variable contenant le nombre de jours dans le mois courrant.
nbJourMois = (dernierJourMois - premierJourMois) + 1
'Vérification visuelle des informations
MsgBox "Premier jour du mois: " & premierJourMois & " Dernier jour du mois: " & dernierJourMois
'Compte le nombre de jours ouvrés (lundi => vendredi) sur le mois
'NE FONCTIONNE PAS, testé avec Formula, avec Application.WorksheetFunction.NB.JOURS.OUVRES()
NBJoursOuvres = Range("A5").Formula = "=NB.JOURS.OUVRES(" & premierJourMois & "; " & dernierJourMois & ")"
'déclaration d'un compteur
cptJour = 0
'Boucle servant à déterminer quels jours sont ouvrés;
'Doit ensuite inscrire ces dates dans un tableau déterminé // pas encore construit
For i = 1 To Format(dernierJourMois, "dd")
'conversion de la date incrémentée (1er au dernier jour du mois) en numéro série
'afin de faciliter l'utilisation de JOURSEM et savoir quel jour de la semaine est le jour en cours
NbJourSem = DateSerial(annee, mois, i)
'tentative d'utilisation de JSEM
jourSemaine = Application.WorksheetFunctions.JOURSEM(NbJourSem)
'Affichage de jourSemaine dans un but vérificatif durant débuggage
MsgBox jourSemaine
'switch, voir lorsque le jour en cours est un jour ouvrable
Select Case jourSemaine
'vérification du jour
Case 1, 2, 3, 4, 5
'incrémentation de cptJour, qui détermine le nombre de jours ouvrables traités
'à la fin, cptJour doit être égal à nbJoursOuvres
cptJour = cptJour + 1
'à terme le code pour insérer la date dans les cases se fera ici
Case Else
End Select
'affichage dans un but de débuggage
MsgBox i
Next
'affichage dans un but de débuggage
MsgBox cptJour
End Function |
Partager