Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1449 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  pb date access

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb date access

n°1841891
iblis75
Posté le 23-01-2009 à 08:24:08  profilanswer
 

bonjour
 
j'ai un petit soucis avec les dates
 
voila le probleme
sous access 97
 
j'ai une date de saisie je voudrais avoir une date de valeur a j +3 la pas de probleme, le probleme est que ce j + 3 doit etre un jour ouvre de la semaine et pas un jour ferie ou un jour week .
la je cale completement
 
par avance je vous remercie de votre aide
 
thierry

mood
Publicité
Posté le 23-01-2009 à 08:24:08  profilanswer
 

n°1841914
olivthill
Posté le 23-01-2009 à 09:59:48  profilanswer
 

La fonction Weekday() retourne le numéro du jour de la semaine.
Par exemple pour trouver la date de lundi prochain :

        intOffset = Abs((9 - Weekday(Now))Mod 7)
        nextMonday = Format(Now() + intOffset + 7, "mmmm d" )

n°1841917
iblis75
Posté le 23-01-2009 à 10:05:44  profilanswer
 

merci  
 
pour ta reponse
mais je recherche qlq chose d'automatique
 
quand tu rentres comme aujourd'hui le vendredi 23 janvier je veux que automatiquement il m'affiche mercredi 28 janvier dans une autre case
 
a +
 
thierry

n°1841926
olivthill
Posté le 23-01-2009 à 10:31:59  profilanswer
 

Citation :

dans une autre case

Qu'est-ce qu'une case ? Un cellule Excel ou un champ d'un formulaire Access, ou autre chose ?

Citation :

automatiquement

Une automatisation possible consiste à avoir quelques lignes de VBA se basant sur la fonction Weekday() dans une procédure appelée lors d'un évenement. (Est-ce que vous connaissez VBA ? Cela permet de faire beaucoup de choses et ce n'est pas très compliqué à mettre en oeuvre. Cela vaut le coup de l'apprendre quand on utilise Access ou Excel régulièrement.)

n°1841927
iblis75
Posté le 23-01-2009 à 10:35:51  profilanswer
 

re
 
merci pour ces reponses rapides
c'est un champ de formulaire
 
et pour le vba je connais que peut et cela remonte a un certain temps
 
dans exel j'ai trouve une solution avec des fonction mais je veux utiliser access pour des questions de protection des données
 
a +
 
thierry

n°1843245
iblis75
Posté le 26-01-2009 à 16:10:34  profilanswer
 

je vais reposer le probleme
 
dim datesaisie = date
dim valeurdbf = datesaisie +1
if datesaisie = vbmonday then valeurbdf = vbtuesday
et tout ceci jusqu'au vendredi qui renvoi au lundi sauf si la date vzleurbdf tombe un jour ferie alors je prend le lendemain
 
voila mon petit probleme
 
a +
 
thierry

n°1843575
SuppotDeSa​Tante
Aka dje69r
Posté le 27-01-2009 à 13:16:27  profilanswer
 

Bonjour
 
Tu dois aussi calculer les jours type 11/11 ou 25/12 ?
 
Si c'est juste vis a vis de la semaine. Comme tu as +3 jours, tu regardes quel jour de la semaine tombe ta date de départ. Sil elle est strictement inférieur à mercredi tu ajoutes 3, sinon tu ajoutes 5
 
Ensuite si tu n'y connais rien vba tu peux commencer par les macros.
Un définir valeur avec :
element : nom du champ de ta date de départ (je pars du principe que ton champ se nomme [DateDepart]
Expression : =vraifaux(JourSem([DateDepart];2)<3;AjDate("j";3;[DateDepart]);AjDate("j";5;[DateDepart]))
 
En vba ca donnerait :  
If WeekDay([DateDepart],2) <3 then
   DateFin = DateAdd("j",3,[DateDepart])
Else
   DateFin = DateAdd("j",5,[DateDepart])
End if
 
En fonction d'ou tu es ou pour coder tu peux aussi utiliser cette forme la pour faire reference a tes controles :
Forms("Nom de ton formulaire" )("Nom de ton controle ou est la date" )
 
Cordialement


Message édité par SuppotDeSaTante le 27-01-2009 à 13:23:31

---------------
Soyez malin, louez entre voisins !
n°1843579
iblis75
Posté le 27-01-2009 à 13:22:41  profilanswer
 

bonjour
 
merci pour ta reponse oui je dois aussi prendre les jours feries en compte et la ca complique le systeme
 
cordialement Thierry

n°1843581
SuppotDeSa​Tante
Aka dje69r
Posté le 27-01-2009 à 13:23:47  profilanswer
 

J'ai edité mon post en haut...
 
Alors la c'est pas pareil.... Faut calculer les jours fériés... Calendrier gregorien toussa....  :pt1cable:


Message édité par SuppotDeSaTante le 27-01-2009 à 13:24:47

---------------
Soyez malin, louez entre voisins !
n°1843584
SuppotDeSa​Tante
Aka dje69r
Posté le 27-01-2009 à 13:27:15  profilanswer
 

Citation :

'Fonction trouvée sur www.codes-sources.fr/www.vbfrance.com
'http://www.vbfrance.com/code.aspx?ID=1251
Private Function IsFerie(Date_testee As Date) As Boolean
    Dim JJ, AA, MM As Integer
    Dim NbOr, Epacte As Integer
    Dim PLune, Paques, Ascension, Pentecote As Date
    JJ = Day(Date_testee)
    MM = Month(Date_testee)
    AA = Year(Date_testee)
    If JJ = 1 And MM = 1 Then IsFerie = True: Exit Function '1 Janvier
    If JJ = 1 And MM = 5 Then IsFerie = True: Exit Function '1 Mai
    If JJ = 8 And MM = 5 Then IsFerie = True: Exit Function '8 Mai
    If JJ = 14 And MM = 7 Then IsFerie = True: Exit Function '14 Juillet
    If JJ = 15 And MM = 8 Then IsFerie = True: Exit Function '15 Août
    If JJ = 1 And MM = 11 Then IsFerie = True: Exit Function '1 Novembre
    If JJ = 11 And MM = 11 Then IsFerie = True: Exit Function '11 Novembre
    If JJ = 25 And MM = 12 Then IsFerie = True: Exit Function '25 Décembre
    NbOr = (AA Mod 19) + 1
    Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
    PLune = DateSerial(AA, 4, 19) - ((Epacte + 6) Mod 30)
    If Epacte = 24 Then PLune = PLune - 1
    If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
    Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques
    If JJ = Day(Paques) And MM = Month(Paques) Then IsFerie = True: Exit Function
    Ascension = Paques + 38 'Ascension
    If JJ = Day(Ascension) And MM = Month(Ascension) Then IsFerie = True: Exit Function
    Pentecote = Ascension + 11 'Pentecote
    If JJ = Day(Pentecote) And MM = Month(Pentecote) Then IsFerie = True: Exit Function
    IsFerie = False
End Function


Message édité par SuppotDeSaTante le 27-01-2009 à 13:28:01

---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le 27-01-2009 à 13:27:15  profilanswer
 

n°1843590
iblis75
Posté le 27-01-2009 à 13:34:11  profilanswer
 

re
 
merci pour ta reponse je vais tester ca cet apm  
 
je te tiens au courant si j'ai un soucis pour le faire fonctionner
 
bon apm
 
a +
 
thierry

n°1843603
iblis75
Posté le 27-01-2009 à 13:47:06  profilanswer
 

re
 
je viens de teste mais je m'arrive pas ale faire fonctionner.
 
peux tu m'aider
 
cordialement
 
thierry

n°1843614
SuppotDeSa​Tante
Aka dje69r
Posté le 27-01-2009 à 14:05:05  profilanswer
 

Sois peut etre un peu plus explicite....?


---------------
Soyez malin, louez entre voisins !
n°1843626
iblis75
Posté le 27-01-2009 à 14:23:08  profilanswer
 

re
 
voila ma table
date de saise
date de depot = date de saisie +  1 jour ouvre
date valeur = date depot + 1 jour ouvre
date valeur1 = date de depot + 3 jours ouvre
 
dans XL j'ai trouve une solution mais comme je bosse sous access 97 je recherche une nouvelle solution
 
a +
 
thierry

n°1843636
SuppotDeSa​Tante
Aka dje69r
Posté le 27-01-2009 à 14:47:17  profilanswer
 

Je n'arrive pas a voir la difference qu'il pourrait y avoir sous excel et access au niveau des calculs de date...


---------------
Soyez malin, louez entre voisins !
n°1843641
iblis75
Posté le 27-01-2009 à 14:54:28  profilanswer
 

re  
 pour Xl j'utilise la fonction suivante =SERIE.JOUR.OUVRE(B4;1;L4:L21) en determinant la fonction (=PLANCHER(JOUR(MINUTE(K2/38)/2+56)&"/5/"&K2;7)-34
 
voila c'est assez simple
mais pour access je n'arrive a rien de concret
 
a +
 
thierry

n°1845114
SuppotDeSa​Tante
Aka dje69r
Posté le 30-01-2009 à 11:01:50  profilanswer
 

Et tu veux quoi ?
Une requete mise a jour qui mette a jour toutes tes dates calculées en fonction de [date de saise] ?
Ou un formulaire ?


Message édité par SuppotDeSaTante le 30-01-2009 à 11:02:02

---------------
Soyez malin, louez entre voisins !
n°1845116
iblis75
Posté le 30-01-2009 à 11:07:15  profilanswer
 

BONJOUR
 
JE CHERCHE A FAIRE UN FORMULAIRE  
 
A +
 
THIERRY

n°1845131
SuppotDeSa​Tante
Aka dje69r
Posté le 30-01-2009 à 11:27:59  profilanswer
 

A mettre dans un module :

Code :
  1. Function IsFerie(Date_testee As Date) As Boolean
  2.     Dim JJ, AA, MM As Integer
  3.     Dim NbOr, Epacte As Integer
  4.     Dim PLune, Paques, Ascension, Pentecote As Date
  5.    
  6.     If Weekday(Date_testee, vbMonday) = 6 Or Weekday(Date_testee, vbMonday) = 7 Then IsFerie = True: Exit Function
  7.     JJ = Day(Date_testee)
  8.     MM = Month(Date_testee)
  9.     AA = Year(Date_testee)
  10.     If JJ = 1 And MM = 1 Then IsFerie = True: Exit Function '1 Janvier
  11.     If JJ = 1 And MM = 5 Then IsFerie = True: Exit Function '1 Mai
  12.     If JJ = 8 And MM = 5 Then IsFerie = True: Exit Function '8 Mai
  13.     If JJ = 14 And MM = 7 Then IsFerie = True: Exit Function '14 Juillet
  14.     If JJ = 15 And MM = 8 Then IsFerie = True: Exit Function '15 Août
  15.     If JJ = 1 And MM = 11 Then IsFerie = True: Exit Function '1 Novembre
  16.     If JJ = 11 And MM = 11 Then IsFerie = True: Exit Function '11 Novembre
  17.     If JJ = 25 And MM = 12 Then IsFerie = True: Exit Function '25 Décembre
  18.     NbOr = (AA Mod 19) + 1
  19.     Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
  20.     PLune = DateSerial(AA, 4, 19) - ((Epacte + 6) Mod 30)
  21.     If Epacte = 24 Then PLune = PLune - 1
  22.     If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune - 1
  23.     Paques = PLune - Weekday(PLune) + vbMonday + 7 'Paques
  24.     If JJ = Day(Paques) And MM = Month(Paques) Then IsFerie = True: Exit Function
  25.     Ascension = Paques + 38 'Ascension
  26.     If JJ = Day(Ascension) And MM = Month(Ascension) Then IsFerie = True: Exit Function
  27.     Pentecote = Ascension + 11 'Pentecote
  28.     If JJ = Day(Pentecote) And MM = Month(Pentecote) Then IsFerie = True: Exit Function
  29.     IsFerie = False
  30. End Function
  31. Function JPlusNbJour(Date_testee As Date, NbJour As Integer)
  32. Dim DateCalc As Date, SamDim As Integer
  33. DateCalc = DateAdd("d", NbJour, Date_testee) 'Voir si sous 97 il ne faut remplacer d par j
  34. If IsFerie(DateCalc) = True Then
  35.     While IsFerie(DateCalc) = True
  36.         DateCalc = DateAdd("d", 1, DateCalc) 'Voir si sous 97 il ne faut remplacer d par j
  37.    
  38.     Wend
  39.     JPlusNbJour = DateCalc
  40. Else
  41.     JPlusNbJour = DateCalc
  42. End If
  43. End Function


 
Ensuite, je pars du principe que le controle dans lequel tu saisis la date se nomme [DateSaisie] et celui qui calcul le j+3 se nomme [DateJ3].
Dans le module de ton formulaire, apres mise a jour de DateSaisie :
[DateJ3] = JPlusNbJour([DateSaisie], 3)
 
Si tu veux j+1 : [DateJ3] = JPlusNbJour([DateSaisie], 1)
Ou si tu veux j+15 : [DateJ3] = JPlusNbJour([DateSaisie], 15)
 
Cordialement


Message édité par SuppotDeSaTante le 30-01-2009 à 14:42:43

---------------
Soyez malin, louez entre voisins !
n°1845138
iblis75
Posté le 30-01-2009 à 11:32:02  profilanswer
 

re
 
merci
 
je vais tester cet apm
 
et je te dis
encore
merci
 
thierry

n°1845142
SuppotDeSa​Tante
Aka dje69r
Posté le 30-01-2009 à 11:37:17  profilanswer
 

J'ai édité mon code pour faire une modif, reprends le.
 
Tiens moi au jus ;)


---------------
Soyez malin, louez entre voisins !
n°1845174
iblis75
Posté le 30-01-2009 à 12:51:05  profilanswer
 

re
 
merci  
 
parcontre je sais pas si je vais avoir du temps cet apm
 
parcontre lundi cela devrait le faire
 
donc je te tiens au courant au plus tard lundi
 
bon week a +
 
thierry

n°1846113
iblis75
Posté le 02-02-2009 à 16:15:47  profilanswer
 

bonjour
 
apres de nombreux tests j'ai pas reuissi a faire fonctionner le formulaire il refuse la formule dans le control
 
a +
 
thierry

n°1846225
SuppotDeSa​Tante
Aka dje69r
Posté le 02-02-2009 à 20:12:51  profilanswer
 

Je pense que ca serait plus simple que tu m'envoies ta base que je zieute...
 
Donne moi parcontre le nom du formulaire a modifier/regarder


---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  pb date access

 

Sujets relatifs
ACCESS - Comment être averti de la date d'anniversaire d'un client?[Access] Probleme fonction Date() ... time()... Mid()...
[Access] Pb avec fonction Date et MsgBox Error$[ACCESS] requete SQL max date
ACCESS : Problème pour importer champ dateFormat date d'Access à SQL Server
[ACCESS] Comment faire une recherche précise sur une date?[Access] Conversion de date unixtime -> local timezone !!??
Access: numero de semaine -> date ?[Access/SQL] erreur de données incompatible et date
Plus de sujets relatifs à : pb date access


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR