Pour qu'un fonction retourne les 2 réponses, on fait comme ceci :
Personnellement, c'est que l'on doit saisir la fonction dans la feuille
de calcul comme une fonction matricielle.
Exemple : A1 = Une date
B2 = la formule : =PremierJourDuMois(A1)
Maintenant, sélectionne les cellules B1:B2 tout en ayant la cellule B1
comme cellule active, et tu valides par Ctrl+ Maj + Enter
Dans la déclaration de la fonction, j'ai ajouté "As Variant" afin de
pouvoir affecter le contenu du tableau T à la fonction.
Dans la procédure "PremierJourDuMois", j'ai déclaré T(1 To 2) comme un
tableau (array) pour contenir les 2 réponses attendues.
Voilà!
P.S. Je ne peux pas tester, je ne sais pas le résultat que tu veux obtenir!
'----------------------------------------
Function PremierJourDuMois(D As Date) As Variant
Dim T(1 To 2)
T(1) = NumSemaine(DateSerial(Year(D), Month(D), 1))
Select Case Month(D)
Case 1, 3, 5, 7, 8, 10, 12
j = 31
Case 2
j = IIf(Bissextile(Range("Année")), 29, 28)
Case 4, 6, 9, 11
j = 30
End Select
PremierJourDuMois = j
T(2) = NumSemaine(DateSerial(Year(D), Month(D), j))
PremierJourDuMois = T
End Function
'----------------------------------------
Function NumSemaine(D As Date) As Long
D = Int(D)
NumSemaine = DateSerial(Year(D + (8 - Weekday(D)) Mod 7 - 3), 1, 1)
NumSemaine = ((D - NumSemaine - 3 + (Weekday(NumSemaine) + 1) Mod
7)) \ 7 + 1
End Function
'----------------------------------------
Ce que je n'ai pas compris :
Est-ce possible que le premier jour du mois peut-être différent de 1 ?
Pour trouver le dernier jour du mois, on peut l'obtenir par cette ligne
de code. (La variable "D" est une date reconnue par Excel.
Msgbox DateSerial(Year(D), Month(D) + 1, 0)
Si tu veux trouver le lundi (début de semaine) d'une date donnée :
En A4 : une date
La formule : =SI(JOURSEM(A4;2)=1;A4;(A4-JOURSEM(A4-2)+7)-7)
Si la date saisie en A4 est un lundi, la date de A4 est retournée
Pour obtenir le vendredi de cette date en A4 dans laquelle se trouve
cette date :
=SI(JOURSEM(A4;2)=1;A4;(A4-JOURSEM(A4-2)+7)-3)
Cela en tenant compte du fait que la première journée de la semaine est
un lundi.
MichD
MichD