Dans cet article, nous allons créer une macro pour extraire les jours de la semaine entre deux dates.

Dans cet exemple, nous devons spécifier la date de début et la date de fin avant d’exécuter la macro. La macro sélectionne la valeur de date de début dans la cellule J8 et la valeur de date de fin dans la cellule J9. Après avoir spécifié la date de début et de fin, la macro peut être exécutée en appuyant sur le bouton «Soumettre» ou en appuyant sur les touches de raccourci Alt + F8.

ArrowMainSheet

Lors de l’exécution de la macro, elle retournera les jours de la semaine entre deux dates sur une nouvelle feuille. La feuille de calcul nouvellement insérée contient les jours de la semaine dans la colonne A, suivis de la date respective dans la colonne B. La date de sortie dans la colonne B sera au format jj.mm.aa.

Chaque semaine sera suivie d’une ligne vide pour différencier deux semaines consécutives.

ArrowAfterRunningMacro

Explication logique

Dans la macro, nous avons utilisé la fonction Jour de la semaine pour différencier les jours de la semaine et les week-ends. La fonction Format est utilisée pour afficher la date dans le format requis.

Fonction jour de la semaine

La fonction Weekday renvoie une valeur entière qui représente le jour de la semaine.

Syntaxe

Jour de la semaine (Date_Value, [First_Day_Of_Week])

Date_Value spécifie la valeur de date pour laquelle vous souhaitez rechercher le jour de la semaine.

First_Day_Of_Week spécifie quel jour de la semaine doit être considéré comme le premier jour de la semaine. Il prend une valeur entière ou la valeur choisie dans l’énumération FirstDayOfWeek comme entrée. Si aucune valeur n’est spécifiée, FirstDayOfWeek.Sunday est utilisé comme valeur par défaut.

Enumeration value

Integer value

Remarks

FirstDayOfWeek.System

0

First day of week specified in system

settings

FirstDayOfWeek.Sunday

1

Sunday (default)

FirstDayOfWeek.Monday

2

Monday

FirstDayOfWeek.Tuesday

3

Tuesday

FirstDayOfWeek.Wednesday

4

Wednesday

FirstDayOfWeek.Thursday

5

Thursday

FirstDayOfWeek.Friday

6

Friday

FirstDayOfWeek.Saturday

7

Saturday

Comme le montre le code de la macro, nous avons utilisé Weekday (i, 2) pour spécifier lundi comme premier jour de la semaine.

Fonction de format

La fonction Format prend une expression de date en entrée et la renvoie sous forme de chaîne formatée.

Syntaxe de la fonction Format

Format (valeur_date, format)

Date_Value spécifie la valeur du type de données date.

Le format utilise une valeur de chaîne pour spécifier le type de format de date requis.

Le tableau suivant définit quelques caractères populaires que l’on peut utiliser pour créer les formats de date / heure requis:

Character

Description

d

displays the day as a number without a leading zero (1–31)

dd

displays the day as a number with a leading zero (01–31)

ddd

displays the day as an abbreviation (Sun–Sat)

dddd

displays the day as a full name (Sunday–Saturday)

w

displays the day of the week as a number (1 for Sunday through 7 for

Saturday)

ww

displays the week of the year as a number (1–54)

m

displays the month as a number without a leading zero (1–12)

mm

displays the month as a number with a leading zero (01–12)

mmm

displays the month as an abbreviation (Jan–dec)

mmmm

displays the month as a full month name (January–december)

q

displays the quarter of the year as a number (1–4)

y

displays the day of the year as a number (1–366)

yy

displays the year as a 2-digit number (00–99)

yyyy

displays the year as a 4-digit number (100–9999)

h

displays the hour as a number without leading zeros (0–23)

hh

displays the hour as a number with leading zeros (00–23)

n

displays the minute as a number without leading zeros (0–59)

nn

displays the minute as a number with leading zeros (00–59)

s

displays the second as a number without leading zeros (0–59)

ss

displays the second as a number with leading zeros (00–59)

Pour laisser une ligne vide à la fin de chaque semaine, nous avons vérifié les dimanches à l’aide de la fonction jour de la semaine et incrémenté la valeur de la variable «StartingRow» de 1 afin que la ligne suivante reste vide.

Comme on le voit dans le code de la macro, nous avons utilisé la fonction Format deux fois de différentes manières. Premièrement, nous avons utilisé Format (i, « jjj ») pour obtenir le jour de la semaine et deuxièmement, nous avons utilisé Format (i, « jj.mm.aa ») pour obtenir la date au format jj.mm.aaaa.

Explication du code

Dim NewWorksheet As Worksheet Set NewWorksheet = Worksheets.Add Le code ci-dessus est utilisé pour déclarer le nom de l’objet Worksheet comme «NewWorksheet».

La méthode Worksheets.Add est utilisée pour ajouter la nouvelle feuille de calcul dans la collection Worksheets. L’instruction Set est utilisée pour initialiser l’objet déclaré avec la feuille nouvellement insérée.

For i = StartDate To EndDate La boucle FOR est utilisée pour boucler de la date de début à la date de fin.

Si Weekday (i, 2) <6 Alors l’instruction IF est utilisée pour vérifier la condition et exécuter le code en fonction de la condition. La condition ci-dessus vérifiera la valeur renvoyée par la fonction Jour de la semaine. S’il est inférieur à 6, la condition IF renvoie vrai et le code à l’intérieur de l’instruction IF s’exécutera. Sinon, il sera ignoré.

StartingRow = 1 StartingRow = StartingRow + 1 La variable StartingRow est utilisée pour parcourir les lignes de la feuille de calcul. Au début, la variable est initialisée à la première ligne. À chaque exécution réussie de l’instruction IF, la valeur de la variable est incrémentée de 1, passant à la ligne suivante de la feuille.

Cellules (StartingRow, 1)

La propriété Cells est utilisée pour référencer une cellule particulière de la feuille de calcul.

Les cellules (row_number, column_number) peuvent être utilisées pour référencer n’importe quelle cellule de la feuille de calcul en entrant un numéro de ligne et un numéro de colonne en tant que paramètres. Dans le code Cells (StartingRow, 1), 1 spécifie la première colonne et la variable «StartingRow» définit le numéro de ligne.

On peut facilement comprendre les codes car j’ai inclus des commentaires ainsi que des codes dans la macro.

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub ExtractWeekdays()

'Declaring two variables of Date data type

Dim StartDate As Date, EndDate As Date

'Declaring worksheet variable

Dim NewWorksheet As Worksheet

Dim StartingRow, i As Long



'Getting start date and end date values from worksheet

StartDate = Sheets("Macro").Range("J8").Value

EndDate = Sheets("Macro").Range("J9").Value

'Initializing the starting row number for output

StartingRow = 1

'Inserting new worksheet

Set NewWorksheet = Worksheets.Add

For i = StartDate To EndDate



'Using Weekday method to check whether it is Weekday or weekand

If Weekday(i, 2) < 6 Then



'Inserting value on newly inserted worksheet

'Format method is used for formatting the date value

NewWorksheet.Cells(StartingRow, 2) = Format(i, "dd.mm.yy")

NewWorksheet.Cells(StartingRow, 1) = Format(i, "ddd")



'Updating StartingRow variable value for moving to next row

StartingRow = StartingRow + 1

End If



'Inserting blank row for weekend

If Weekday(i, 2) = 7 Then

StartingRow = StartingRow + 1

End If

Next i

Set NewWorksheet = Nothing

End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]