|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Bonjour,
Après de nombreuses recherches, je n'ai pas trouvé de solution à mon problème. Je dois traiter des dates (en fait des strings au format "YYYY/MM" et "YYYY/WW" uniquement) dans mes requêtes, tables et formulaires. Tout particulièrement, j'ai souvent besoin de la première semaine d'un mois, et de la dernière semaine. Il s'agit là de semaines industrielles dépendant de la position du mercredi. Par exemple, si le mercredi est en Mai, alors cette semaine "appartient" au mois de Mai. J'ai donc créé quelques fonctions: Code :
J'ai essayé toutes les combinaisons possibles avec vbFirstFullWeek, vbFirstJan1 ... Merci d'avance pour votre aide |
||
|
|
00
|
|
|
#2 | ||
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Je viens de trouver une réponse bricolée qui fonctionne, si ça peu en intéresser certains:
Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 480 ![]() |
Bonjour,
Il me manque une info à la description du problème : comment sont numérotées les semaines dans l'année ? |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Elles sont numérotées comme dans un calendrier classique en fait : S01, S02 etc ... (sont stockées au format YYYY/WW).
Il me faut juste une notion de semaine appartenant à un mois. On considère donc qu'une semaine SXX appartient à un Mois Y si son mercredi est dans le mois Y. Donc par exemple en Mars 2011 j'ai les semaines 9, 10, 11, 12 et 13. En Avril : 14, 15, 16 et 17. etc. Voir la numérotation des semaines: http://www.mathieuweb.fr/calendrier/...e=0&logement=1 EDIT: La semaine n°1 commence à la première semaine de 4 jours, comme sur la plupart des calendriers, MAIS mes deux fonctions ci dessus ne fonctionnent correctement que si je met l'attribut vbFirstFullWeek ... Etrange non? |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 480 ![]() |
Re-bonjour,
Voilà un code que j'ai essayé de tester sur la page de calendrier... il y a des cas assez tordus ! Attention, les paramètres FirstDayOfWeek et Firstweekofyear pour la fonction Format s'appliquent au calendrier pour déterminer la numérotation des semaines. Il faut dont les alimenter avec vbMonday et vbFirstFourDays, et tester le cas des mercredi dans le code. J'espère que je n'ai pas oublié de cas Code :
|
||
|
|
10
|
|
|
#6 | ||
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 435 ![]() |
Bonjour,
Cela est efficace à partir d'une date, retourne la premiere ou la derniere semaine Code :
|
||
|
|
10
|
|
|
#7 | |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Citation:
Merci à toi Tedo et à Helas pour vos réponses. J'aime bien la solution d'Hélas, clair net et efficace. |
|
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2007 Messages : 480 ![]() |
Bonjour,
Attention helas, ces fonctions ne marchent pas dans tous les cas. 1. La fonction DerniereSemaine ne renvoit pas la bonne valeur pour le mois de décembre. Par exemple, pour le 31.12.2010, le résultat devrait être 2010/52 et pas 2010/1. 1. ne marche pas toujours, cela dépend de la langue. Même en français, sur mon poste, c'est le libellé "mercredi" qu'il faut tester sinon ça part dans une boucle sans fin. Il est plus propre d'utiliser et tester la valeur 3 pour mercredi. 3. n'est pas très lisible, autant utiliser les constantes fournies et écrire Code :
Format$(d, "yyyyww", vbMonday, vbFirstFourDays) |
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Je prends note, merci.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com