Calendrier avec N° de semaine

hajorinette

XLDnaute Occasionnel
Bonjour le forum

Je remets au goût du jour un petit calendrier sympathique qui donne en fonction du mois (saisi en A1) et de l'année (saisie en A2) :
Les dates du 1er au dernier jour du mois (colonne B)
Les jours correspondants (colonne C)
J'aimerai compléter cette macro calendrier en rajoutant à la colonne D en cellules fusionnées le N° des semaines correspondantes ( la 1ère semaine de Janvier étant la première semaine de l'année)

Ci dessous le code que je vais reprendre
Code:
  Dim datedebut As Date, datefin As Date
    Dim MoisNum As Integer, DateEnCours As Date
    Dim i As Integer
    
    Select Case Cells(1, 1).Value ' cellule A1
        Case "Janvier"
            MoisNum = 1
        Case "Février"
            MoisNum = 2
        Case "Mars"
            MoisNum = 3
        '...
        Case "Novembre"
            MoisNum = 11
        Case "Décembre"
            MoisNum = 12
    End Select
    
    datedebut = DateSerial(Cells(2, 1), MoisNum, 1)
    datefin = DateSerial(Cells(2, 1), MoisNum + 1, 1) - 1
    i = 0 ' utilisé pour le décalage de ligne
    For DateEnCours = datedebut To datefin
        Cells(2 + i, 2).Value = Day(DateEnCours) 'colonne B
        Cells(2 + i, 3).Value = Format(DateEnCours, "dddd") 'colonne C
        i = i + 1
    Next DateEnCours

Un grand merci par avance à ceux ou celles qui voudront bien m'aider
 

jeanpierre

Nous a quitté
Repose en paix
Re : Calendrier avec N° de semaine

Bonjour hajorinette, Salut Pirrot,

Pas top le multi-postage, sans le préciser et surtout sans suite.....

Pourquoi utiliser une macro, longue à l'exécution, plutôt qu'une formule instantanée.... Mystère...

De plus, vouloir indiquer les numéros de semaine dans des cellules fusionnées n'est pas une très bonne idée. Les cellules dites fusionnées vont changer tous les mois. Bonjour le code...

Mais c'était plus pour saluer Pierrot.

Bon après-midi et réflexion.

Jean-Pierre
 

ROGER2327

XLDnaute Barbatruc
Re : Calendrier avec N° de semaine

Bonjour hajorinette
Ce genre de problème donne généralement lieu à des discussions interminables faute que l'on s'entende sur le sens des mots. Lorsque vous dites :
la 1ère semaine de Janvier étant la première semaine de l'année
que doit-on comprendre ?
  1. la première semaine de l'année conforme à la norme internationale ISO 8601.
    C'est la semaine de sept jours débutant un lundi et qui comporte le premier jeudi de l'année.
    En 2008, du lundi 31 décembre 2007 au dimanche 6 janvier 2008.
    En 2009, du lundi 29 décembre 2008 au dimanche 4 janvier.
    En 2010, du lundi 4 au dimanche 10 janvier.
  2. la semaine de longueur variable commençant le premier janvier pour se terminer le premier dimanche de l'année.
    En 2009, du jeudi premier janvier au dimanche 4 janvier.
  3. la semaine de longueur variable commençant le premier janvier pour se terminer le premier samedi de l'année.
    En 2009, du jeudi premier janvier au samedi 3 janvier.
  4. les sept premiers jours de l'année.
    En 2009, du jeudi premier janvier au mercredi 7 janvier.
  5. la semaine de sept jours commençant par un lundi dans laquelle on trouve le premier janvier.
    En 2009, du lundi 29 décembre 2008 au dimanche 4 janvier 2009.
  6. la semaine de sept jours commençant par un dimanche dans laquelle on trouve le premier janvier.
    En 2009, du dimanche 28 décembre 2008 au samedi 3 janvier 2009.
  7. Autre chose...
Dès lors que l'on sait ce qu'on cherche, il est temps de se lancer dans des calculs.​
ROGER2327
 
Dernière édition:

hajorinette

XLDnaute Occasionnel
Re : Calendrier avec N° de semaine

  1. la première semaine de l'année conforme à la norme internationale ISO 8601.
    C'est la semaine de sept jours débutant un lundi et qui comporte le premier jeudi de l'année.
    En 2008, du lundi 31 décembre 2007 au dimanche 6 janvier 2008.
    En 2009, du lundi 29 décembre 2008 au dimanche 4 janvier.
    En 2010, du lundi 4 au dimanche 10 janvier.


  1. OUI c'est tout à fait cela! merci ROGER2327 :)
 

ROGER2327

XLDnaute Barbatruc
Re : Calendrier avec N° de semaine

Re...
OUI c'est tout à fait cela! merci ROGER2327 :)
Une solution qui ne donnera pas toujours les mêmes résultats que ceux obtenus avec la fonction NO.SEMAINE() :
Code:
[COLOR="DarkSlateGray"]Sub toto()
   [COLOR="SeaGreen"]' Le nom du mois est en A1 ; le rang de l'année est en A2.[/COLOR]
   Dim datedebut As Date, datefin As Date
   Dim MoisNum As Integer, DateEnCours As Date
   Dim i As Integer
   MoisNum = Month("1-" & Cells(1, 1).Value & "-" & Cells(2, 1).Value)
   datedebut = DateSerial(Cells(2, 1), MoisNum, 1)
   datefin = DateSerial(Cells(2, 1), MoisNum + 1, 1) - 1
   i = 2 [COLOR="SeaGreen"]' Utilisé pour le décalage de ligne : début en ligne i.[/COLOR]
   For DateEnCours = datedebut To datefin
      Cells(i, 2).Value = Day(DateEnCours) ' Colonne B.
      Cells(i, 3).Value = Format(DateEnCours, "dddd")  ' Colonne C.
      Cells(i, 4).Value = "W-" & NOSEM(DateEnCours) & "-" & _
         Weekday(DateEnCours, vbMonday)  ' Colonne D.
      i = i + 1
   Next DateEnCours
End Sub

Function NOSEM(D As Date) As Long
[COLOR="SeaGreen"]'
' Fonction ajoutée le 14 Prairial CCXII (2/06/2004) par ROGER
' N° de la semaine dans l'année de la date D conforme à la norme ISO 8601.
'[/COLOR]
   D = Int(D)
   NOSEM = DateSerial(Year(D + (8 - Weekday(D, vbSunday)) Mod 7 - 3), 1, 1)
   NOSEM = ((D - NOSEM - 3 + (Weekday(NOSEM, vbSunday) + 1) Mod 7)) \ 7 + 1
End Function[/COLOR]
Je n'utilise pas de cellules fusionnées.​
ROGER2327
 

hajorinette

XLDnaute Occasionnel
Re : Calendrier avec N° de semaine

Bonjour le forum

Merci pour ta réponse qui va m'aider pour avoir le code final que je cherche, dans l'idéal je choisirais l'année et la semaine et j'aurais les dates et jours associés .
Je tiendrai au courant au fur et à mesure que ça avance

Merci
 

Discussions similaires

Réponses
5
Affichages
246

Statistiques des forums

Discussions
312 520
Messages
2 089 297
Membres
104 092
dernier inscrit
karbone57