XL 2016 VBA - FirstDayOfWeek & FirstWeekOfYear applicables en France

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Solution
Re
Voir le test avec IsoWeekNum
VB:
Sub exemple()
    exempleDate_1 = CDate("30/12/2019") 'Date pour exemple
    exempleDate_2 = CDate("31/12/2019") 'Date pour exemple
   
    MsgBox Application.IsoWeekNum(exempleDate_1) & vbCrLf & Application.IsoWeekNum(exempleDate_2) 'Numéro de semaine ISO

End Sub
Jean marie
Bonsoir Dudu2
Bonsoir le Fil
Apparemment tu traites le 1/01/2023 qui est le dimanche de la dernière semaine de l'année 2022
Donc Normal que tu ais 52 ! NON ?
Si tu traites le 2 tu auras bien semaine 1
ou alors je n'ai pas saisi lol
jean marie
 
D'autant plus que j'ai des résultats différents sur ces 2 fonctions:
VB:
Sub a()
    MsgBox DatePart("ww", CDate("01/01/2023"), vbMonday, vbFirstFourDays)
    MsgBox WorksheetFunction.WeekNum(CDate("01/01/2023"), vbMonday)
End Sub
La première retourne 52, l'autre 1.
 
Et comment expliquer que
VB:
Sub b()
    MsgBox DatePart("ww", CDate("30/12/2019"), vbMonday, vbFirstFourDays)   '--> 53
    MsgBox DatePart("ww", CDate("31/12/2019"), vbMonday, vbFirstFourDays)   '--> 1
End Sub
Alors que c'est le Lundi et le Mardi de la même semaine 1 de 2020 ?
Là je suis paumé.
 
Re
Voir le test avec IsoWeekNum
VB:
Sub exemple()
    exempleDate_1 = CDate("30/12/2019") 'Date pour exemple
    exempleDate_2 = CDate("31/12/2019") 'Date pour exemple
   
    MsgBox Application.IsoWeekNum(exempleDate_1) & vbCrLf & Application.IsoWeekNum(exempleDate_2) 'Numéro de semaine ISO

End Sub
Jean marie
 
Je me demande si les Anglosaxons ne considèrent pas les derniers jours de l'année comme faisant toujours partie de ladite année...
Les anglo-saxons considèrent que le 1er jour de la semaine est le dimanche.
Mais ça c'est corrigé par la présence du vbMonday comme FirstDayOfWeek.
Je ne sais pas comment ils considèrent la 1ère semaine de l'année.
Mais là je l'ai forcée à vbFirstFourDays pour matcher l'ISO 8601.
 
Re
Y'a ca aussi qui fonctionne !
Code:
Sub test()
    exempleDate_1 = CDate("30/12/2019") 'Date pour exemple
    exempleDate_2 = CDate("31/12/2019") 'Date pour exemple
 MsgBox Format(exempleDate_1, "ww", , vbFirstFourDays) & vbCrLf & _
         Format(exempleDate_2, "ww", , vbFirstFourDays)
  End Sub
Jean marie
 
re
salut @Dudu2 c'est bien connu que les fonctions date avant la isoweeknum ne savent pas faire la différence
office est en anglais a la base 😉
c'est bien pour cela que tu a les deux fonctions dispos sur les versions office a partir de 2013
savoir no.semaine et no.semaine.iso
pour ceux qui sont encore sur 2007😉

VB:
'le 01/01/2023 =dimanche 01 janvier 2023
'c'est un dimanche donc le 7 eme jour de la semaine pour nous
'ca ne peux donc pas etre  le debut d'une semaine
'c'est donc bien le dimanche de la semaine 52 de l'année précédente
'sachant que pour que ca soit une semaine il faut que le jour soit au minimum le 4 eme a savoir un jeudi (vbfirstfourday)

Sub a() 'on est bon pour le francais
    Debug.Print DatePart("ww", CDate("01/01/2023"), vbMonday, vbFirstFourDays)
End Sub

Sub a2()    'pour 2007 ' on est bon
    Debug.Print ISOWEEK2007(CDate("01/01/2023"))
End Sub

Sub a3() 'equivalent à no.semaine   inutile  et à proscrire on est pas bon!!!!!!!!!
    Debug.Print WorksheetFunction.WeekNum(CLng(CDate("01/01/2023")), vbFirstFourDays)
End Sub

Sub a4() 'equivalent à no.semaine.iso   là oui on a bien la semaine identifiée
    Debug.Print WorksheetFunction.IsoWeekNum(CLng(CDate("01/01/2023")))
End Sub

'fonction perso
Function ISOWEEK2007(dat As Date)
    Dim X&:    X = CLng(dat)
    ISOWEEK2007 = Evaluate("= TRUNC((" & X & "-WEEKDAY(" & X & ",2)+11-DATE(YEAR(" & X & "-WEEKDAY(" & X & " ,2)+4),1,1))/7)")
End Function
a +
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
0
Affichages
302
Réponses
0
Affichages
427
Réponses
4
Affichages
727
Réponses
8
Affichages
593
Réponses
12
Affichages
1 K
Retour