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 !
Si tu essaies de calculer le nombre de la semaine, puis lui ôter 4, tu vas être obliger d'établir une formule à rallonge (pour tenir compte des 4 première semaine)
Une plus simple, c'est de soustraire 28 (4×7 jours) à la date et de calculer sa semaine : Format(X - 28, "ww")
Ce qui nous donne un truc du style
[COLOR=DarkSlateGray][B]Function ISO(r, Optional x As Boolean = False) [COLOR=DarkOrange]'Transcription ISO d'une date grégorienne.[/COLOR]
Application.Volatile
Dim d2&, d3&, d4&
r = CDate(r)
d2 = r + 1 - Weekday(r, vbMonday)
d3 = DateSerial(Year(d2 + 3), 1, 1)
d4 = d3 + 1 - Weekday(d3, vbMonday) - (Weekday(d3, vbMonday) > 4) * 7
ISO = Year(d3) & "-W" & Format((d2 - d4) \ 7 + 1, "00") & IIf(x, "", "-" & Weekday(r, vbMonday))
End Function[/B][/COLOR]
Avec 17/11/2010 en A1 : =ISO(A1) renvoie 2010-W46-3 (date ISO complète) =ISO(A1;1) renvoie 2010-W46 (semaine ISO) =ISO(A1-28;1) renvoie 2010-W42 (semaine ISO décalée de 28 (4x7) jours vers le passé)
ROGER2327 #4552
Dimanche 15 As 138 (Navigation du Dr Faustroll, SPs) 27 Brumaire An CCXIX 2010-W46-3T17:06:31Z
Salut EDfun et le forum
J'avoue ne pas avoir testé ta solution, mais "Ceci pour avoir le numéro de la semaine en cours. Il ne reste plus qu'à rajouter -4". Donc, si maintenant() (perso, dans ce cas, je préfère aujourdhui()) tombe le 2 janvier, j'ai...
A+
Nota : je me moque, mais c'est gentiment, ne jamais hésiter à me faire pareil 😉
Les formules ISOspec et cw que propose MJ13 dans son classeur de démonstration et qu'il semble m'attribuer en indiquant Roger en tête de colonnes n'ont rien à voir avec celles que j'ai proposées plus haut.
Je donne les résultats que j'obtiens réellement dans le classeur joint.
Quant à sa solution "avec un petite fonction et 1formule simple", je m'en méfie un peu : j'ai du mal à croire que le jeudi 10 décembre 2009 (28 jours avant le jeudi 7 janvier 2010) appartienne à la semaine -3 de l'année 2010…
Même la formule =ANNEE(A5)&"-W"&numsem(A5) est bizarre : le lundi 31 décembre 2007 ne peut appartenir à la semaine 53 de 2007, laquelle semaine n'a jamais existé.
ROGER2327 #4555
Lundi 16 As 138 (Saint Cap, captain, SQ) 28 Brumaire An CCXIX 2010-W46-4T21:54:20Z
Je commence à m'y perdre un peu, avec tous ces postes.
En synthétisant : on semble tous d'accord (j'espère) sur le fait que calculer le numéro de la semaine, 4 semaines avant une date donnée n'est pas des plus simple.
Alors que calculer le numéro de la semaine 28 jours avant est plus facile.
Calculer un numéro de semaine à partir d'une date demande 2 paramètres :
- Le jour où débute la semaine (pour faire simple, dimanche ou lundi)
- Comment on détermine la semaine numéro 1 : 3 possibilités
-- La semaine contenant le premier janvier
-- La première semaine qui contient 4 jours dans l'année
-- La première semaine totalement dans l'année
Personnellement, je ne m'embête pas : l'instruction Format exploite ces paramètres et me suffit.
Mais je vais au plus simple : lundi premier jour de la semaine et la première semaine qui a 4 jours dans l'année est la n°1 (parce que j'ai un agenda qui fonctionne comme ça). Ce qui me donne en VBA
Code:
Dim X As Integer
X = Format(Date, "ww", vbMonday, vbFirstFourDays)
Mais je ne suis pas puriste, juste pragmatique, et le n°de semaine retourné et celui que je retrouve dans mon agenda.
A+
Edit : dans les possibilités, j'ai omis la première semaine que détermine mon système d'exploitation, et idem pour le premier jour de la semaine
Votre formule (a priori valable) renvoie 52 aussi bien pour le 1/01/2011 que pour le 31/12/2011. Notre ami aimerait récupérer 2010-W52 dans le premier cas et 2011-W52 dans le second, ce qui complique un peu la chose…
ROGER2327 #4556
Mardi 17 As 138 (Saint Pangloss, humoriste passif, SQ) 29 Brumaire An CCXIX 2010-W46-5T00:27:42Z
Salut ROGER2327 et le forum
Ce n'est que de l'habillage, et je ne pense pas que ça puisse poser problème : Si on admet que X soit la date, et Y le résultat, on aura :
Avec X et Y pouvant être des range (cellule). Après, ce n'est que du détails, que lui seul peut régler, en prenant des cas extrêmes Lundi ou dimanche de la 3ème ou 4ème semaine, calculés à la main sur un calendrier, en vérifiant laquelle de nos formules lui convient le mieux.
Mais c'est pareil, j'enlève 28 jours, mais suivant comment on considère le jour de départ, ça ne peut être que 27 jours ou 29, à enlever. Mais ça n'a rien avoir avec la difficulté du calcul, plutôt avec la manière de calculer, et surtout, le but réel à atteindre.
- 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