IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

calcul de date à partir du numero de semaine


Sujet :

Access

  1. #1
    Membre averti Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Points : 403
    Points
    403
    Par défaut calcul de date à partir du numero de semaine
    bonjour à tous,
    j'ai la fonction suivante qui me calcule le numero de semaine "administrative" à partir d'une date... est-il possible d'obtenir l'operation inverse à partir du numero de semaine, obtenir les dates des premier et dernier jours de la dite semaine ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Compare Database
     
    Function fnWeek(MyDate As Date) As String
     
     
        Dim NoSemaine As Integer
        Dim NoAnnee As Integer
        If Not IsDate(MyDate) Then
            fnWeek = ""
        Else
            NoSemaine = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
                If NoSemaine = 53 Then
                If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
                    NoSemaine = 1
                End If
            End If
     
            Select Case NoSemaine
            'Affecter la semaine 1 de fin d'année au début de l'année suivante
            Case 1
                If Month(MyDate) = 12 Then
                    NoAnnee = Year(MyDate) + 1
                Else
                    NoAnnee = Year(MyDate)
                End If
            Case Is < 52
                NoAnnee = Year(MyDate)
            'Affecter la semaine 52 ou 53 de début d'année à la fin d'année précédente
            Case Is >= 52
                If Month(MyDate) = 1 Then
                    NoAnnee = Year(MyDate) - 1
                Else
                    NoAnnee = Year(MyDate)
                End If
            End Select
     
            fnWeek = Format(NoSemaine, "00")
       End If
     
    End Function


  2. #2
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Salut,

    Tofalu m'avait donné cette petite fonction(que tu va coller dans un module):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Public Function date_semaine(semaine As Integer, an As Integer) As Date
    Dim base As Integer
    Dim n As Integer
    Dim d As Date
    base = Premier_jour(an)
    d = DateSerial(an, 1, 1)
    d = DateAdd("d", 2 - base, d)
    n = (semaine - 1) * 7
    d = DateAdd("d", n, d)
    date_semaine = d
    End Function
    Public Function Premier_jour(an As Integer) As Integer
    'premier janvier2000: samedi
    Dim i As Integer
    Dim s As Integer
    For i = 2000 To an - 1
    s = s + 365
    If ((i Mod 4 = 0) And (i Mod 100 <> 0)) Or (i Mod 400 = 0) Then s = s + 1
    Next i
    s = s Mod 7
    Premier_jour = s
    End Function
    Libre à toi de l'employer dans une requête:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Date_Semaine([Sem],[An]) AS DateDébut, [DateDébut]+5 AS DateDeFin;
    Ou dans un Formulaire ayant un contrôle N°Semaine et un contrôle Année.

  3. #3
    Membre averti Avatar de @rkane
    Homme Profil pro
    developpeur amateur dans mon cadre professionnel
    Inscrit en
    Juin 2006
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : developpeur amateur dans mon cadre professionnel
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 521
    Points : 403
    Points
    403
    Par défaut
    salut ft035580, tout d'abord meilleurs voeux... et puis je vais tester ça, je te remercie.


Discussions similaires

  1. Les dates en asp (numero de semaine)
    Par Zouko dans le forum ASP.NET
    Réponses: 21
    Dernier message: 06/04/2011, 15h17
  2. [XL-2003] Récupérer une date à partir du numéro de semaine
    Par tarnx dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2011, 00h32
  3. Réponses: 4
    Dernier message: 31/10/2007, 15h11
  4. Réponses: 3
    Dernier message: 07/08/2006, 10h01
  5. Réponses: 4
    Dernier message: 06/06/2006, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo