Probleme avec numeros de la semaine

Probleme avec numeros de la semaine - VB/VBA/VBS - Programmation

Marsh Posté le 03-02-2007 à 15:13:33    

Bonjour à tous,

 

je suis en train  de faire un petit programme sous excel et j'avais besoin de recuperer le numros de la semaine.
Pour cela j ai utilisé la fonction datepart qui me semblait bien marché jusqu'au moment ou...
surprise lorsque je fais datepart("ww",dateserial(2007,12,31),vbMonday) j ai 53 semaine!!!!!!!!!!! au lieu de 52...
alors ma question est simple es ce que windobe à encore fait de la  m... avec des fonctions qui ne marchent pas??  [:atog]

 

si quelqu un connait un moyen  de recup le num de la semaine en passant une date ba je suis preneur.

 

merci d avance


Message édité par zit_zit le 03-02-2007 à 15:20:28
Reply

Marsh Posté le 03-02-2007 à 15:13:33   

Reply

Marsh Posté le 03-02-2007 à 15:39:47    

Bonjour,
 
Il va falloir vous excuser auprès de Windobe, parce que je crains qu'Excel ait raison. Comptez vous-même, et vous verrez que le lundi 31 décembre 2007 est au début de la 53e semaine. 52x7=364, donc il y a toujours 1 ou 2 jours par an en 53e semaine.

Reply

Marsh Posté le 03-02-2007 à 16:20:32    

je veux bien m'excuser aupres de windobe cependant la semaine 53 n existe pas pour 2007 et que le lundi 31 2007 correspond bien à la premiere semaine de 2008

Reply

Marsh Posté le 03-02-2007 à 17:35:23    

Bonsoir,
si cela peut être utile?:
http://forum.hardware.fr/hfr/Windo [...] 9269_1.htm
il y a un lien vers wikipedia
Cordialement

Reply

Marsh Posté le 03-02-2007 à 17:53:33    

merci bcp  

Reply

Marsh Posté le 04-02-2007 à 06:06:11    


Option Explicit
 
Function NumSem(ddate As Date) As Integer
Dim t As Long
  t = DateSerial(Year(ddate + (8 - Weekday(ddate)) Mod 7 - 3), 1, 1)
  NumSem = ((ddate - t - 3 + (Weekday(t) + 1) Mod 7)) \ 7 + 1
End Function
 
Sub Tst()
  Debug.Print NumSem(CDate("31/12/2007" ))
End Sub


Message édité par kiki29 le 04-02-2007 à 06:55:51
Reply

Marsh Posté le 05-02-2007 à 15:54:30    

Bonjour,
 
Dans excel, il existe une fonction NO.SEMAINE, mais il faut au préalable:
Outils
 Macro complémentaires
   Utilitaire d'analyse
 
 

Reply

Marsh Posté le 07-02-2007 à 17:32:46    

A savoir qu'il y a 3 modes de calcul du numéro de semaine. Le plus répandu, donc celui à utiliser base la semaine 1 sur la première semaine de l'année qui a 4 jours ou + -> Il est donc possible d'avoir une semaine "0" parfois
 
Si un autre mode de calcul est utilisé, il est très probable d'avoir la semaine 53 qui tombe

Reply

Marsh Posté le 07-02-2007 à 17:38:28    

Par exemple pour afficher la semaine en cours :
 
 
 

Citation :

Dim datNow As Date
Dim strDate1 As String
 
    datNow = Now
    strDate1 = "[Sem " & Format(Format(datNow, "ww", vbMonday, vbFirstFourDays), "00" ) & "]"
    Call Debug.Print(strDate1)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed