Access Numéro de semaines du mois

Résolu
KantinT Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -  
KantinT Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   -
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.

A voir également:

6 réponses

KantinT Messages postés 44 Date d'inscription   Statut Membre Dernière intervention   2
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
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 8561 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   2
 
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   Statut Membre Dernière intervention   2
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
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   Statut Membre Dernière intervention   2
 
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 8561 Date d'inscription   Statut Membre Dernière intervention  
 
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