A l'aide : Calcul de date dans Acces

Résolu
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007
- 8 mai 2007 à 06:46
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007
- 8 mai 2007 à 11:18
Bonjour;

Depuis ce matin je cherche, je ne suis pas un pro d'access mais je n'ai pas le choix !

1) Dans une requête Access, je voudrai calculer le nombre de jours entre deux dates, j'ai trouver une fonction "DiffDate" puis je utiliser cette fonction (Explication nécéssaire car je ne vois pas comment l'utiliser !) ou faut il créer une autre expression ?

2) Le must !!!  Si je veux exclure les jours de week-end voir férié comment puis je faire simplement ?   

D'avance Merci

Maxou le petit

12 réponses

mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 09:50
Oui, FirstWeekDay, c'est pour déterminer le premier jour de la semaine (en France c'est Lundi, mais dans d'autres Pays, c'est Dimanche), et FirstWeek, c'est pour déterminer la première semaine à prendre en compte (soit donc depuis le 1er jan, soit depuis le premier Lundi de l'année)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
3
cs_JMO
Messages postés
1854
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
26
8 mai 2007 à 10:21
 Bonjour à tous

Le petit code ci-dessous te montre l'utilisation de Weekday (+jours fériés).

Msgbox NbreJoursMois(05,2007, strListe)

Function NbreJoursMois(strMois, strAnnee, strListe)
Select Case (strMois)
      'Avril, Juin, Septembre, Novembre
       Case 4, 6, 9, 11
            NbreJoursMois = 30
      'Février
       Case 2
       'Si divisible par 400 alors bisextile            if (strAnnee Mod 4 0) And (strAnnee Mod 100 <> 0) Or (strAnnee Mod 400 0) Then
              NbreJoursMois = 29
           Else
              NbreJoursMois = 28
           End if
       'Les autres mois
       Case Else
            NbreJoursMois = 31
End Select
For i = 1 To NbreJoursMois    If Len(i) 1 Then i"0" & i    If Len(strMois) 1 Then strMois "0" & strMois
   
    If Weekday(CDate(i & "/" & strMois & "/" & strAnnee)) <> vbSunday And _
       Weekday(CDate(i & "/" & strMois & "/" & strAnnee)) <> vbSaturday And _
       OmitFerie(i & "/" & strMois) <> 0 Then

       strListe = strliste &vbCrLf& FormatDateTime(CDate(i & "/" & strMois & "/" & strAnnee), 1)
    End If
Next  
NbreJoursMois = strListe
End Function

Function OmitFerie(strJourMois)
TabJoursFeries = Array("01/01","01/05","08/05","17/05","14/07","15/08","01/11","11/11","25/12")
OmitFerie = UBound(Filter(TabJoursFeries, strJourMois))
End Function

'Jours Fériés fixes
'
'01/01 - Jour de l'An
'01/05 - Fete du Travail
'08/05 - Victoire 1945
'14/07 - Fete Nationale
'15/08 - Assomption
'01/11 - Toussaint
'11/11 - Armistice 1918
'25/12 - Noel

'Jours Fériés (à saisir chaque année)
'
'09/04/2007 - Lundi de Paques
'17/05/2007 - Jeudi de l'Ascension
 

jean-marc
3
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 07:09
Salut,

il suffit de faire une requête avec l'opérateur Between :

SELECT TesChamps FROM TaTable WHERE TonChampsDate BETWEEN #datedebut# AND #datefin#

Pour ne pas prendre en compte les WE / fériés, je sais pas. Regarde aussi (au cas où) sur le site SQL

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

8 mai 2007 à 07:18
Bonjour Mortalino;

Cela faisiat un bail, tu m'as fait énormément progresser en VBA Excel, maintenant j'arrive à faire des choses assez sympa.

Par contre Access et le SQL est encore un mystére pour moi, je comptais bien m'en sortir avec la fonction " Diffdate".
Ta solution est certainement bonne mais je crains que savoir ne sufise pas en matière de syntaxe !!!

Je vais assayer, je te tiens au courant...

Maxou le petit
0

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

Posez votre question
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 07:27
Salut Maxou,

oui, ça faisait un moment
Pour le sql, je te rassure, j'y connais pas grand chose aussi. Surtout en partant d'access.
Si t'as un bout de code, ce serait cool, comme ça je fais 2 ou 3 tests et vois si c'est possible d'imbriquer une requête avec des fonctions VB

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

8 mai 2007 à 07:56
Merci à toi;

La fonction dans access est la suivante sauf que je ne vois comment l'utiliser !

DiffDate («interval»; «date1»; «date2»; «firstweekday»; «firstweek»)

Maxou le petit
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 08:21
Nop,
c'est DateDiff

MsgBox DateDiff("w", Now, #05/01/2007#)
Les dates entre ## sont au format américain.

Par contre, je pensais que tu voulais filtrer des données d'une table entre 2 dates, c'est pour cela que je t'avais proposé la requête cité plus haut.

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 08:25
Oups, pas "w" mais "d"

w, dans l'aide, c'est marqué Jour de la semaine, MAIS, en fait ça renvoi le Nb de semaine(s) entre 2 dates

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

8 mai 2007 à 09:34
Merci

Dur dur je n'arrive pas à faire calculer le Nb de jour entre mes 2 dates, il n'accepte pas mon expression !

Dans l'aide elle est formulée ainsi :
Expression |Résultat |----
Intervalle : DiffDate("d", [Date commande], [Date envoi]), Affiche dans le champ Intervalle le nombre de jours entre la date de commande et celle d'expédition

Maxou le petit
0
mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
8 mai 2007 à 09:37
Ah ! Tu dois passer directement par Access, mais je ne sais pas comment.
La fonction inverse (DateDiff) est en VBA Access (Alt + F11)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
  
0
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

8 mai 2007 à 09:44
Mortalino Euréka j'ai trouvé en partie !

1) J'ai rajouté la fonction nz en cas de valeur nulle, effectivement tous mes champs non pas forcément une valeur.
Jour: DiffDate("d";nz([Date commande]);nz([Date sortie magasin]);1;2)

2) Par contre je ne comprend pas à quoi servent les 2 derniers arguments de la fonction DiffDate, j'ai mis 1 et 2 cà marche mais il doit y avoir un tru !!!
«firstweekday»; «firstweek»

Maxou le petit
0
Maxou le petit
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

8 mai 2007 à 11:18
Merci à toi Mortalino ma bidouille fonctione pour le code de Jean-Marc merci, mais il faut que j'étudie la question.

Bonne journée.
A+

Maxou le petit
0