Access Numéro de semaines du mois

Résolu/Fermé
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 - 6 mai 2011 à 10:02
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 - 9 mai 2011 à 10:06
Bonjour,

J'ai besoin de connaître le numéro des semaines qui composent le mois précédent le mois courant (pour aujourd'hui je voudrais avoir les semaines, 14,15,16,17 qui correspondent au mois d'avril)

Je vais utiliser ce résultat comme critère dans une requête de sélection.

Merci d'avance de tout l'aide que vous pourrez m'apporter.

6 réponses

KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
6 mai 2011 à 11:51
Bonjour.

Tout d'abord pardon pour mon impressision.
Je travail sur Access 2002.

J'ai bien trouvé comment obtenir un numéro de semaine et le mois en cours:
PartDate("WW";Maintenant()).

Mais ce que je cherche à faire c'est de pouvoir connaître les quatres semaine du mois =Mois(Maintenant()) Et ça je n'est pas trouvé.

Pour l'instant je n'en suis pas encore à essayé de résoudre le problème des numéros de semaines en ISO.

Bien sur je continu à chercher.
Et merci de m'avoir répondu.
Cordiallement.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 6/05/2011 à 13:33
Bonjour

petite remarque: Le 1°avril 2011 est en semaine ISO 13

proposition en VBA XL(normalement OK pour VBA Access) donnant le N° semaine du 1°jour du mois et le dernier en utilisant "le nombre de semaines complètes ou partielles dans le mois (c'est-à-dire dont au moins un jour est compris dans le mois)"
Source:http://xcell05.free.fr/pages/form/dateheure.htm#Numsemaine

si datepart ne fonctionnait pas avec 2002, tu as la fonction nosem dans cette source

Sub essai()  
mois = Month(Date) - 1  
annee = Year(Date)  
semdebut = sem_iso(DateSerial(annee, mois, 1))  
nbre_sem = NBSEMS5(DateSerial(annee, mois, 1))  
semfin = semdebut + nbre_sem - 1  
End Sub  


Function sem_iso(Wdate As Date) As Byte  
    sem_iso = DatePart("ww", Wdate, vbMonday, vbFirstFourDays)  
  End Function  

Function NBSEMS5(UneDate As Date) As Long  
'auteur Didier Michon  
Dim JrZero As Date  
  JrZero = UneDate - Day(UneDate) ' Jour précédant le 1er jour du mois  
  NBSEMS5 = Int((37 + Weekday(JrZero) - Day(JrZero + 32)) / 7)  
End Function  


13h32: je viens d'essayer dans un module Access: c'est OK :-)
Michel
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
6 mai 2011 à 13:46
Bonjour,

Certains mois comprennent 5 semaines.

La fonction suivante devrait donner le n° de la première semaine du mois courant :
=PartDate("ww";SérieDate(Année(Date());Mois(Date());1);2;2)

et celle-ci, le n° de la dernière semaine du mois courant :
=PartDate("ww";SérieDate(Année(Date());Mois(Date())+1;0);2;2)
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
9 mai 2011 à 09:48
SAlut Patrice.

Pourais tu me dire pourquoi tu met 2 aux deux derniers argument de la fonction PartDate()?

Merci
0
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
9 mai 2011 à 10:06
En fait c'est bon j'ai trouvé sur le site Microsoft.

C'est pour dire que le premier jour de la semaine est le lundi et que la première semaine de l'année est celle avec quatres jours.

Merci beaucoup.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 mai 2011 à 15:02
Effectivement, Patrice montre que l'on simplifier , merci (j'avais craint les dernier jours, 30,31, 28,29)

donc
Sub essai()
mois = Month(Date)
annee = Year(Date)
semdebut = sem_iso(DateSerial(annee, mois - 1, 1))
semfin = sem_iso(DateSerial(annee, mois, 0))
End Sub


Function sem_iso(Wdate As Date) As Byte
    sem_iso = DatePart("ww", Wdate, vbMonday, vbFirstFourDays)
  End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
KantinT Messages postés 44 Date d'inscription mardi 19 avril 2011 Statut Membre Dernière intervention 1 juillet 2011 2
9 mai 2011 à 09:43
Merci à tous les deux de vos réponses.
Et désolé d'avoir mis autant de temps à vous répondre.

J'ai réussi a faire ce que je voulais en utilisant la méthode de Patrice:
Je met ça comme critère dans ma requête:
Entre PartDate("WW";SérieDate(Année(Date());Mois(Date())-1;1)) Et PartDate("WW";SérieDate(Année(Date());Mois(Date());1)-1)

Et j'ai bien toutes les semaines du mois.

Par contre je ne sais pas comment utiliser une fonction dans une requête.
J'ai écrit le code dans le module 1 mais je trouve pas comment l'appeler dans ma requête SQL; un truc dans le genre: Entre essai.semdebut Et essai.semfin

Merci beaucoup en tout cas.
Kantin.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
6 mai 2011 à 11:27
Bonjour,

Nous voudrions bien t'aider mais te ne précise pas avec quel logiciel tu travailles ?

D'autre part, avant de poser une question simple sur le forum, il serait respectueux envers les contributeurs de vérifier si la réponse ne s'y trouve pas déjà !
Celle-ci ne répond-elle pas à ta question :
numéro de la semaine
-1