Detecter les Week end

Bonjour a tous,

J'ai un tableau, dans lequel je mets les numéro des jours d'un mois (qui change tout le temps) et il faudrait que je trouve un système qui noircit les colonnes des jours qui sont en Week End.

J'ai ajouté le fichier.

Ce que je n'arrive pas à faire, c'est le test pour savoir si le numéro du jour est dans un WE ou pas.

Si vous avez une idée, je suis preneur.

Il y a un essai de code vba enregistré dans le fichier en module 4

Bonjour,

un essai par MFC voir si cela te conviens.

Cordialement.

bonjour

un essai sans vba

je t'ai laissé tes cel fusionnées

83francois07.xlsm (28.52 Ko)

cordialement

J'ai fini par trouver la solution, je la donne si ca peut servir à quelqu'un

Sub EstWeekEnd()
Dim debut As Date
Dim n As Integer
debut = Worksheets("caché").Range("D4").Value
Nb_lig = Worksheets("caché").Range("D7").Value
Nb_col = Worksheets("caché").Range("E2").Value

For m = 0 To Nb_col
n = 2
LastDayInMonth = DateSerial(Year(debut), Month(debut) + 1, 0)
x = Day(LastDayInMonth)
        For n = 2 To x * 2 step 2
                If Weekday(debut, vbMonday) > 5 Then
                Range(Cells(6 + m * (Nb_lig + 5), n + 1), Cells(6 + m * (Nb_lig + 5) + Nb_lig - 1, n + 2)).Interior.Color = RGB(0, 0, 0)
         End if
        debut = DateAdd("d", 1, debut)
        Next
Next

End Sub

voici comment ca marche: comme le montre le fichier joint, j'ai des cases numérotées de 1 à 31 que je dois noircir si le numéro de jour est un week end dans le mois indiqué

je créé deux boucles l'une qui tourne avec m et l'autre avec n.

La boucle n va tester les jours du mois en cours la boucle m va remettre le compteur de jour a son état initial et passer au mois suivant

Le fichier ne le montre pas mais j'ai plusieurs tableaux, un pour chaque mois, a traiter. Ils sont de tailles variables mais uniformes entre eux, je me sers donc de la variable m pour faire passer le curseur d'un tableau à l'autre. C'est pour cette raison que les adresses cells sont complexes, vous pouvez faire plus simple sur ce point.

Dans la première boucle je créé une variable x qui va sortir le numéro du dernier jour du mois en cours et qui va être la limite de la boucle suivante pour prendre en compte les mois à 30 ou 31 jours et l'affreux février.

Dans la seconde boucle la limite du compteur est x*2 car chaque numéro de jour est sur deux cellules fusionnées, ils faut donc que le compteur avance par step 2 pour suivre le changement d'adresse des cellules. La aussi ca peut être plus simple chez vous

la ligne If Weekday(debut, vbMonday) > 5 teste l'écart entre le jour en cours et le lundi. S'il est supérieur à 5 c'est que le jour est un samedi ou un dimanche et dans ce cas on noircit les cellules sous le numéro de jour étudié.

Après le if, on incrémente la date avec debut = DateAdd("d", 1, debut), debut étant la date de départ de la période étudiée.

Puis la boucle reprend pour tester le jour suivant.

Lorsque le compteur atteint sa limite basée sur les nombre de jours dans le mois, on reboucle sur la première boucle m qui va faire passer au mois suivant et on resteste chaque jour jusqu'à ce que m atteigne la valeur de Nb_Col (le nombre de mois dans la période étudiée)

J'espère que l'explication sera suffisamment compréhensible

Rechercher des sujets similaires à "detecter week end"