Accueil > Forum > > > > trouver numéro de semaine
trouver numéro de semaine
mardi 1 juillet 2008 à 14:50:51 |
trouver numéro de semaine

Clashme
|
Public Function TrouverNuméroSemaine(ByVal Dte As Date) As Integer
bonjour tout le monde !!
voilà j'utilise depuis un mois une petite fonction pour trouver mon numéro de semaine ! avec la condition de la semaine 53
j'ai trouvé cette fonction sur ce site qui correspondé trés bien a ma demande
mais j'ai remarqué que pour mes dates de 2008 et 2009 tout allé bien!
mais à partir du 03/01/2010 mes semaines étaient décaller d'une semaine + 1 dans le temps par rapport à mon calendrier que j'ai sous mes yeux...
voici la fonction :
TrouverNuméroSemaine = Format(Dte - 2, "ww", vbSaturday)
If TrouverNuméroSemaine > 52 Then
TrouverNuméroSemaine = 52
If Format(Dte + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
TrouverNuméroSemaine = 1
End If
End If
End Function
si quelqu'un pouvait m'éclairer sur mon probleme xD
merci d'avance
|
|
mardi 1 juillet 2008 à 15:24:09 |
Re : trouver numéro de semaine

jmfmarques
|
Bonjour, et si tu t'intéressais (voir celà dans ton aide en ligne, sur ta machine) à la fonction Datepart, tout simplement ? 
|
|
mardi 1 juillet 2008 à 16:16:41 |
Re : trouver numéro de semaine

Clashme
|
bonjour jmfmarques !
tout simplement le meme probleme....
DateFin = "28/07/2010"
semainetest = DatePart("ww", DateFin) 'me donne 31
semainef = Format(DateFin - 2, "ww", vbSaturday) ' me donne 31
alors que normalement le 28 juillet 2010 tombe en semaine 30 !
|
|
mardi 1 juillet 2008 à 16:39:49 |
Re : trouver numéro de semaine

jrivet
|
Salut, Une recherche rapide sur google et tu aurais trouvé ceci. Private Sub Form_Load() MsgBox Week(#7/28/2010#) End Sub
Private Function Week(dteValue As Date) As Integer 'Monday is set as first day of week Dim lngDate As Long Dim intWeek As Integer 'If january 1. is later then thursday, january 1. is not in week 1 If Not Weekday("01/01/" & Year(dteValue), vbMonday) > 4 Then intWeek = 1 Else intWeek = 0 End If 'Sets long-value for january 1. lngDate = CLng(CDate("01/01/" & Year(dteValue))) 'Finds the first monday of year lngDate = lngDate + (8 - Weekday("01/01/" & Year(dteValue), vbMonday)) 'Increases week by week until set date is passed While Not lngDate > CLng(CDate(dteValue)) intWeek = intWeek + 1 lngDate = lngDate + 7 Wend 'If the date set is not in week 1, this finds latest week previous year If intWeek = 0 Then intWeek = Week("31/12/" & Year(dteValue) - 1) End If Week = intWeek End Function | | By Renfield | @+: Ju£i¤n Pensez: Réponse acceptée
|
|
mardi 1 juillet 2008 à 16:57:34 |
Re : trouver numéro de semaine
|
mardi 1 juillet 2008 à 17:00:51 |
Re : trouver numéro de semaine

Clashme
|
écoute j'ai recherché/testé plusieur fonction plus que tu ne le crois avant de posté ici !
j'avais préféré celle que j'ai mise sur mon premier message ! 1/ pour ca taille 2/ elle fonctionne sans boucle...
3/ ces résultat correcte
avant de m'appercevoir du probléme lié à l'année 2010
certe ton code à l'aire de fonctionner mais je le trouve trop long
surtout pour mon traitement qui travail sur plus de 2000 lignes
merci comme meme julien de vouloir m'aider
si d'autres personnes ont des idées n'ésité pas
|
|
mardi 1 juillet 2008 à 17:31:02 |
Re : trouver numéro de semaine

bigfish_le vrai
|
Salut, oui j'ai une autre idee  ... - te prendre par la main et aller voir le lien que t'a donné PCPT car il regroupe toute les methodes generiques. Les solutions de Jmfmarques et de Jrivet incluses. Bon courage  A+
|
|
mardi 1 juillet 2008 à 18:01:10 |
Re : trouver numéro de semaine

Molenn
|
Ou alors écrire toi même ta propre fonction ? C'est ce que j'ai fait personnellement moi-même en m'inspirant de plusieurs trouvées sur le net (ce qui fait qu'à mon avis, on doit retrouver la même chose un peu partout au nom de variable près). La voici, la voilà :
Public Function NuméroSemaine(DateContrôlée As Date) As String NuméroSemaine = DatePart("ww", DateContrôlée, vbMonday, vbFirstFourDays) If NuméroSemaine > 52 Then If DatePart("ww", DateContrôlée + 7, vbMonday, vbFirstFourDays) = 2 Then NuméroSemaine = 1 End If End If NuméroSemaine = Right("0" & NuméroSemaine, 2) End Function
Ah oui, ma fonction sort la semaine au format String parce que je veux que les premières soient 01, 02 ... 09 et non 1, 2, ... 9.
Si je rentre 28/07/2010, je trouve la semaine 30.
Autrement, ton problème peut venir que tu paramètres très mal la fonction DatePart. Le numéro de semaine par chez nous correspond aux options vbMonday et vbFirstFourDays : si elles ne sont pas précisées, elles ont pour valeur par défaut vbSunday et vbFirstJan1. Mais même bien paramétrée, elle ne fonctionne pas toujours bien (essayez avec le 31/12/2007 et dites moi ce qui ressort ^^)
'alà
Molenn
|
|
mardi 1 juillet 2008 à 21:24:13 |
Re : trouver numéro de semaine

casy
|
Attention à la définition du n° de semaine et notamment de la première semaine de l'année. Cela peut varier. les définitions les plus courantes sont : - La première semaine est celle du 1er Janvier - La premiere semaine est la première semaine de l'année comptant au moins 4 jours - Le premiere semaine est la première semaine complete de l'année. Sachant que le premier jour de l'année peut etre variable lui aussi, et définie soit le dimanche, soit le lundi. Généralement en France, le premier jour de la semaine est défini sur Lundi, et la première semaine de l'année, celle du 1er Janvier. Mais ce n'est pas forcément le cas dans le paramétrage de ton logiciel. ---- Sevyc64 (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE # [ Lien ]
|
|
mercredi 2 juillet 2008 à 09:12:32 |
Re : trouver numéro de semaine

Molenn
|
Pas tout à fait vrai Casy, en France, la première semaine n'est pas celle contenant le 1er janvier. Exemple : le 1er janvier 2006 faisait partie de la semaine 52.
La règle est la suivante : '****************************************************************** ' 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). '******************************************************************
Molenn
|
|
Cette discussion est classée dans : trouver, numéro, semaine, if, trouvernumérosemaine
Répondre à ce message
Livres en rapport
|
Derniers Blogs
PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc
Forum
RE : VITESSERE : VITESSE par ossama261988
Cliquez pour lire la suite par ossama261988
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|