je voudrais calculer le numero de semain en fonction d'une date, est-ce possible ? Sachant que je veux pas le faire directement dans excel avec la formule --> =NO.SEMAINE(I454)-1 (par exemple) mais par le code VB.
je voudrais calculer le numero de semain en fonction d'une date, est-ce possible ? Sachant que je veux pas le faire directement dans excel avec la formule --> =NO.SEMAINE(I454)-1 (par exemple) mais par le code VB.
Pour ceux que ç a intéresse j'ai trouvé :
Salut les gens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim NumSem As Integer NumSem = Val(Format$(Votre Date, "ww"))
Pour ceux que ça intéresse, je me suis amusé à réécrire (surement moins bien que la solution de Mugette, mais bon) une fonction qui fait la même chose, histoire de me mettre en appétit avant de partir déjeuner:
Et j'ai l'impression qu'elle marche, en plus...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Function numeroSemaine(ByVal DateDuJour As Date) Dim DateDebut As Date Dim NbJour As Integer 'Recherche du premier lundi de l'année, qui commence la semaine 1 DateDebut = DateSerial(Year(DateDuJour), 1, 1) While Weekday(DateDebut) <> 2 DateDebut = DateAdd("d", 1, DateDebut) Wend NbJour = DateDiff("d", DateDebut, DateDuJour) numeroSemaine = Int(NbJour / 7) + 1 End Function Sub test() Dim MaDate As Date MaDate = DateSerial(2005, 1, 16) MsgBox ("Numero de semaine : " & numeroSemaine(MaDate)) End Sub
![]()
Franchement, t'aurais pas plus compliqué ???Envoyé par Megaxel
Pour toi, j'ai une maxime parfaite :
Pourquoi faire simple quand on peut faire compliqué ?![]()
Théo
C'est bizarre, ta solution, Mugette...
Si je la teste sur le 16 janvier 2005, elle me répond "semaine 4"...
Hummm.
Remarque, je ne sais pas si la semaine 1 commence au premier lundi de l'année, comme je l'ai codé, ou au dernier lundi de l'année précédente...
Bonjour,
Si ça peut aider ?
'******************************************************************
' Calcul des dates d'une année par numéro de semaine
'
' Recommandations de l'Organisation Internationale de Standardisation
' Norme ISO 8601
' - Le lundi est considéré comme le premier jour de la semaine.
' - Les semaines d'une même année sont numérotées de 01 à 52
' (parfois 53).
' - La semaine qui porte le numéro 01 est celle qui contient le
' premier jeudi de janvier.
' - Il peut exister une semaine n°53 (années communes finissant
' un jeudi, bissextiles finissant un jeudi ou un vendredi).
'******************************************************************
oui exacte Megaxel je me suis planté on dois faire -1 sur ma formule... mais j'optimise le code quand même par rapport à toi...lol
Merci de vous êtes penché sur le problème.
A la prochaine.
Bon ap megaxel...
C'est vrai qu'en ce moment, je me lache pas mal sur le code. Je fais des gammes, en quelque sorte...![]()
Mais sinon, j'ai quand même une remarque, Mugette. Si on reprend le cas du 16 janvier 2005, qui se trouve en semaine 2, ta formule, en y ajoutant le -1, le place en semaine 3 ...
Alors.... Hmmmmm....
![]()
sachant que le 1 est un samedi, ma formule donne donc la semaine 3 pour le 16 janvier sachant que la semaine va du lundi au dimanche, non??
Oui, le 1er janvier est un samedi, donc, avec la règle du jeudi qui détermine la semaine 1 donnée par PC75:
Semaine 1:
du lundi 3 janvier au dimanche 9 janvier
Semaine 2:
du lundi 10 janvier au dimanche 16 janvier
Dans ta solution, la semaine commence au dimanche. Attention...
![]()
![]()
en fait, dans l'application que je fais de cette formule ça marche nickel, donc je vais suivre MA règle n°1 : ne pas changer quelque chose qui marche.
Mais je regarderais plus précisement à l'occasion.
Ok. C'est vrai qu'on regarde rarement le numéro de la semaine pour un dimanche, et c'est le seul cas où tu risques une erreur. Tu as raison, ce code en 1 seule ligne marche très bien, garde le.
Partager