VBA dans Excel lundi au vendredi
Ci-dessous, nous examinerons un programme dans Excel VBA qui calcule le nombre de jours de la semaine entre les deux dates.
Sont lundi au vendredi: lundi, mardi, mercredi, jeudi et vendredi.
Situation:
Note: Les dates sont au format US. Mois premiers, Jours deuxième. Ce type de format dépend de vos fenêtres de paramètres régionaux.
-
Tout d’abord, nous déclarons cinq variables. date1 de type Date, date2 de type Date, dateToCheck de type Date, daysBetween de type entier, en semaine de type entier et i de type entier.
Dim date1 As Date, date2 As Date, dateToCheck As Date Dim daysBetween As Integer, weekdays As Integer, i As Integer
-
Nous initialisons quatre variables. Nous utilisons la fonction DateDiff pour initialiser la daysBetween variable. Cette fonction a trois arguments.
Nous remplissons « d » pour le premier argument puisque nous voulons que le nombre de jours entre date1 et date2.
weekdays = 0 date1 = Range("B2") date2 = Range("B3") daysBetween = DateDiff("d", date1, date2)
-
Nous devons vérifier pour chaque date entre date1 et date2 (y compris date1 et date2) si la date est un jour ouvrable ou non. Si oui, on incrémente semaine par 1. Nous utiliserons une boucle For Next.
For i = 0 To daysBetween
-
Nous utilisons la fonction DateAdd pour obtenir chaque jour, nous devons vérifier. Cette fonction a trois arguments. Nous remplissons « d » pour le premier argument puisque nous voulons ajouter des jours, i pour le second argument, et date1 pour le troisième argument puisque nous voulons ajouter i jours à date1. De cette façon, Excel VBA peut vérifier chaque date entre date1 et date2 commençant par date1. Ajoutez la ligne de code suivant:
dateToCheck = DateAdd("d", i, date1)
Exemple: pour i = 3, Excel VBA vérifie date1 + 3 jours.
-
Ensuite, nous utilisons la fonction Weekday (build en fonction) pour vérifier si dateToCheck est un jour ouvrable ou non. La fonction retourne Weekday 1 pour un dimanche et 7 pour un samedi. Par conséquent, nous ne les incrémentons semaine variables si Weekday (dateToCheck) n’est pas égal à 1 et non égal à 7 (<> signifie pas égal à). Les lignes de code suivantes faire le travail.
If (Weekday(dateToCheck) <> 1 And Weekday(dateToCheck) <> 7) Then weekdays = weekdays + 1 End If
-
Ne pas oublier de fermer la boucle.
Next i
-
Enfin, nous affichons le nombre de jours de la semaine en utilisant un MsgBox. Nous utilisons l’opérateur & pour concaténer (joindre) deux chaînes. Bien que la semaine n’est pas une chaîne cela fonctionne ici.
MsgBox weekdays & " weekdays between these two dates"
-
Placez votre macro dans un bouton de commande et de le tester.
Résultat: