Premier lundi d'une année VBA

Résolu
Clemzd Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   -  
Bidouilleu_R Messages postés 1209 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Clemzd Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   18
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. Clemzd Messages postés 177 Date d'inscription   Statut Membre Dernière intervention   18
       
      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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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