Premier lundi d'une année VBA

Résolu/Fermé
Clemzd Messages postés 177 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 7 avril 2013 - 14 mars 2011 à 14:44
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 - 6 mai 2011 à 09:17
Bonjour,

Je souhaites afficher le premier lundi d'une année.

J'ai trouvé comment afficher le jour d'une date :

Sub simple1()
    maDate = "3/1/11"
    MsgBox Format(Weekday(maDate), "dddd")
    
End Sub


Mais je ne parviens pas à afficher le premier lundi de l'année.

Merci de votre aide.

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
14 mars 2011 à 15:09
bonjour

fonction avec AN_0=variable année

Function Lundi1_Janv(an_0 As Integer) As String
Lundi1_Janv = Format([DATE(B1,1,8)-WEEKDAY(DATE(B1,1,6))], "dddd dd/mm/yy")
End Function
0
Clemzd Messages postés 177 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 7 avril 2013 18
14 mars 2011 à 18:13
Merci, mais je suis désolé je ne comprend pas.

Qu'apporte Format ?
Qu'est-ce que B1 ? 1 ? 8 ? 6 ?
Pourquoi on soustrait avec weekday etc ?


Merci d'avance de votre réponse.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 14/03/2011 à 18:31
Oui mauvaise recopie de mon grenier, excuses moi
Format([DATE(An_0,1,8)-WEEKDAY(DATE(An_0,1,6))], "dddd dd/mm/yy")

DATE(annee, mois, jour) renvoie le numéro de série du jour donné par date
Le 8 janvier est le 1° jour ou il y aura eu 2 jours identiques donc soustrait du n° de jour du 6 janvier (lundi=2 en joursem)==> n° de série du 1° lundi donc...

pour format tu fais F1 pour connaitre cette fonction....
Michel
0
Clemzd Messages postés 177 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 7 avril 2013 18
6 mai 2011 à 00:36
Désolé, mais je n'ai pas compris ceci :

"Le 8 janvier est le 1° jour ou il y aura eu 2 jours identiques donc soustrait du n° de jour du 6 janvier (lundi=2 en joursem)==> n° de série du 1° lundi donc... "
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 mai 2011 à 09:14
Tous les 3 mois, tu te poses des questions ?
Le 8 du mois, il y a forcément 2 jours de la semaine identiques...

a consulter
http://xcell05.free.fr/pages/form/dateheure.htm#Op%C3%A9rations

Abandon du suivi
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
6 mai 2011 à 09:17
Salut Michel,

le raisonnement de michel est bon

Comme ça est plus clair?

Function Lundi1_Janv(an_0 As Integer) As String
    date1 = DateSerial(an_0, 1, 8)
    DATE2 = DateSerial(an_0, 1, 6)
    Lundi1_Janv = Format(date1 - Weekday(DATE2), "dddd dd/mm/yy")
End Function


dans une semaine il y a 7 jours ...lundi, mardi,....
le 8 janvier on aura vu soit 2 lundi soit 2 mardi......
en informatique le lundi est le 2 ème jour lundi =2
pour 2011
donc le 8 - (le N) du jour du 6/1/201) = 8-5=3
le lundi était le 3 janvier.

merci Michel.
0