Créer avis d'échéance MsgBox sous ACCESS [Résolu]

arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 21 juin 2006 à 12:18 - Dernière réponse : arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention
- 30 juin 2006 à 15:11
Bonjour,

Je débute sous ACCES, je me suis créé une base de données dans laquelle je gère des dates et j'aimerai qu'une MsgBox s'affiche, à l'ouverture de ma base de donnée, pour m'avertir un mois avant l'arrivée d'une échéance ou d'un événement (comme sous outlook par ex ).

pour être clair voici un ex de ce q je voudrai :
dans une table , j'ai  un champ "Nom"  Monsieur X ... et un autre champ "date changement " 01/12/06

j'aimerai qu' à l'ouverture de ma base de donnée, , qu'une MsgBox s'affiche, un mois avant la date précisée,par ex au 01/11/06, et  me signale "Attention Changement"
j'ai réussi à créer la MsgBox grace à un outil trouvé sur le site mais je ne parviens pas à trouver les codes pour paramétrer les conditions d'ouverture de la MsgBox.

merci de vos réponses car je m'en sors pas
Afficher la suite 

30 réponses

Répondre au sujet
erefdatacomputing 164 Messages postés mardi 7 mars 2006Date d'inscription 20 décembre 2017 Dernière intervention - 29 juin 2006 à 14:00
+3
Utile
Salut Arno !!

Le plus simple c'est ça !!!


If DateDiff("d", date_du_jour, date_d'échéance) <= 30 And DateDiff("d", date_du_jour, date_d'échéance) >= -2 Then MsgBox "échéance Ok !!"



testes le et tiens moi au courant !!!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de erefdatacomputing
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 21 juin 2006 à 13:10
0
Utile
 Bonjour,

MsgBox DateAdd("m", 1, Date)  renvoie le "21/07/2006".
Il faut testé dans le select...from... le ou les champs qui correspondent à "21/07/2006".
Cela sous-entend, que la base doit être ouverte (via taches planifiées) tous les jours.

jean-marc
Commenter la réponse de cs_JMO
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 21 juin 2006 à 14:02
0
Utile
merci de vs intéresser à mon pauvre sort !
vous allez vite comprendre mon niveau car je ne comprend pas ce que vous m'expliquez
c'est quoi le select...from ... ? ca se situe où?
en fait j'ai créé une msgbox nommé "Alerte Changement", elle existe sous forme de macro dans ma base de données , quand je dble cliq dessus elle s'ouvre et ca marche mais jusque là c'est simple mais sans intérêt vous l'avait bien compris.
 Donc quand je veux la modifier, s'ouvre une fenetre et à gauche j'ai une colonne "condition " et on me demande d'entrer une expression conditionnelle dans cette colonne et c 'est là que je bloque car comment lui indiquer que la MsgBox doit s'ouvrir un mois avant la date "jj/mm/aaaa" du champ"x "de la table "Y". il doit surement s'agir d'une formule du type If Date...??? Then MsgBox "Alerte Changement" mais c'est à ce niveau là que je patauge.

sinon j'ai aussi converti la macro MsgBox  en VisualBasic donc peut etre existe il un moyen plus simple en passant par là !

autre info il est prévu que la base de donnée soit utilisée tous les jours donc cela ne devrait pas poser de probleme, la macro pourra s'ouvrir lors du démarrage.

merci beaucoup
 Arno
Commenter la réponse de arno51100
domsig 125 Messages postés lundi 6 septembre 2004Date d'inscription 11 mai 2010 Dernière intervention - 21 juin 2006 à 14:48
0
Utile
bonjour
il faut passer par les macros VB sinon ça va être galère...
1°) il faut créer une macro qui s'appelle auto_open (ou auto_ouvrir, je sais jamais) dans laquelle tu fais une requête qui cherche si dans un mois, il doit y avoir un changement, quelque chose du style :
dim rst as recordset
set rst=currentdb.openrecordset("select * from [nom de la table] where date_changement = """ & DateAdd("m", 1, Date) & """") (quelque chose comme ça)
if rst.recordcount>0 then
msgbox("changement prévu")
end if

voilà voilà

bon courage
Commenter la réponse de domsig
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 21 juin 2006 à 15:47
0
Utile
g essayé comme domsig m'a dit , je n'ai aucun message d'erreur mais rien n'apparait même en changeant la date du systeme pour tester

donc  g essayé de créer une macro AutoExec et un module avec la fonction suivante mais ca marche pas non plus !

Function IncrementeOuverture()
Dim rst As RecordsetSet rst CurrentDb.OpenRecordset("select * from [evolution] where Date_Chgt_Palier """ & DateAdd("m", 1, Date) & """")
If rst.RecordCount > 0 Then
   msgbox ("Alerte")
End If


End Function

c trop compliqué pour moi a priori
Commenter la réponse de arno51100
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 21 juin 2006 à 16:54
0
Utile
 Re,

Attention au format de la date (sql ou access).
Le contenu visuel d'un recordset n'est pas le même que le contenu réel de ce recordset.
Dans le select, il faut protéger par #.

ex:
'Conversion de la date saisie (jj/mm/aaaa)  au format date SQL (mm/jj/aaaa)
SQL_saisie = "#" & Mid(Saisie , 4, 2) & "/" & Mid(Saisie , 1, 2) & "/" & Mid(Saisie , 7, 4) & "#"
MaTable = "JOB"
MaRequete = "SELECT JOBID,RON,AMJ FROM " & MaTable
MaRequete = MaRequete & " WHERE AMJ > " & SQL_saisie & " ORDER BY AMJ"
'MaRequete = SELECT TOP 10 permet de lire les 10 premiers recordsets

jean-marc
Commenter la réponse de cs_JMO
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 21 juin 2006 à 17:18
0
Utile
c'est trop compliqué pour moi, merci quand même !
mais là je suis largué  c'est pas pour un débutant comme moi
il me marque lors dernière tentative "une erreur est survenue lors de la compilation de cette fonction . le module Vb comporte une erreur de syntaxe. vérifiez le code puis recompilez-le"
et l'erreur se situe dans la ligne ci dessus indiquée en rouge.

sinon il me reste plus qu' à ouvrir chaque début de mois, la table pour m'assurer d'un éventuel chgt de palier

arno
Commenter la réponse de arno51100
domsig 125 Messages postés lundi 6 septembre 2004Date d'inscription 11 mai 2010 Dernière intervention - 22 juin 2006 à 09:58
0
Utile
Re.
Je comprends pas bien pourquoi tu as fait une fonction plutôt qu'une procédure ? enfin c'est peut-être pas la raison.
Juste après ton dim rst as recordset, ajoute msgbox("blabla"), enregistre et relance ton appli. Est-ce que tu vois le message ?
Commenter la réponse de domsig
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 22 juin 2006 à 14:39
0
Utile
g essayé de marquer msgbox ("alerte") mais ca me mets une erreur de compilation : soit attendu : fin d'instruction. soit erreur de syntaxe !

Function IncrementeOuverture()
Dim rst As Recordset MsgBox ("Alerte")Set rst CurrentDb.OpenRecordset("select * from [evolution] where Date_Chgt_Palier """ & DateAdd("m", 1, Date) & """")
If rst.RecordCount > 0 Then
   msgbox ("Alerte")
  
End If

pour ce qui est de la fonction plutot que de la procédure, j'en sais rien non plus car je n'y connais rien tout simplement,  j'apprends sur le tas en bidouillant. c surement ca le pb !!!   et qd j'écris fonction, ca veut peut etre dire pour vous procédure...mais comme c'est marqué fonction IncrementeOuverture
explique moi comment je dois faire pour créer une macro "auto_ouvrir" ou auto_open et y mettre la requete que tu m'as écrite.
merci bcp
mais si c tro compliqué vous prenez pas la tete
Commenter la réponse de arno51100
erefdatacomputing 164 Messages postés mardi 7 mars 2006Date d'inscription 20 décembre 2017 Dernière intervention - 22 juin 2006 à 15:04
0
Utile
Salut !!!

sous VB6 il existe une fonction qui s'appelle: DateDiff

et ça donne cela:

If DateDiff("d", Date, a) = -30 Then MsgBox ("Alerte")




'd' pour 'day' le nombre de jours d'écart entre les 2 dates (içi 30) 
('m' pour 'mounth' , 'y' pour year et d'autres paramètres)
 
'a' est une string contenant la date à tester que tu as dans ta table ACCESS
'Date' est la date du jour actuelle.

sous VB ça marche, mais 2 inconvénients:

  - les alertes ne se ferront que sur le jour précis (dès le lendemain, il n'y aura plus d'alerte).
 
  - 30 jours est une moyenne, car il y a des mois à 31 jours, sans parler de février qui change les donnés du problème,  donc il y a comme une imprécision.

PS ça fonctionne aussi avec un littéral de date,(le fameux"#" & Mid(Saisie , 4, 2) & "/" & Mid(Saisie , 1, 2) & "/" & Mid(Saisie , 7, 4) & "#" de JMO)mais attention aux paramètres régionaux mémorisés dans l'ordinateur

Ex:  DateDiff("d", #6/22/2006#, #6/30/2006#) donnera 8

regarde si tu peux faire quelque chose avec ça !!!
et bon courage !!!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
Commenter la réponse de erefdatacomputing
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 22 juin 2006 à 15:48
0
Utile
salut !

merci pour les infos, j'avais pas pensé à datediff pourtant je l'ai utilisé pour autre chose déjà
a priori g introduit cette ligne dans une procédure évenementielle de mon formulaire ou figure le champ "date chgt palier" sur activation. car c à l'ouverture de ce formulaire q je voudrais qq'apparaisse la MSgBox pour m'avertir d'un chgt.
mais rien ne se passe !
je sais pa si comme ca q je dois faire car à force d'essayer plusieurs trucs trouvés sur le net je me mélange les pinceaux !

en fait g remplacé "a" par le nom du champ de mon formulaire, je sais pa si c ca ? c koi un string? eh oui je sais j'suis nul  c pas pour rien que j'suis dans la section débutant !!!

voici ce q j'ai écris : 

Private Sub Form_Current()
If DateDiff("d", Date, Date_Chgt_Palier) = -30 Then msgbox ("Alerte")
End Sub

à mon avis c pas ca à cause du fameux string ("a" )

et certains m'ont parlé d'une expression comme
If Date().... between.... and.... Then msgbox.... ms g pas réussi non plus

si tu peux m'aider merci bcp
Commenter la réponse de arno51100
cs_JMO 1838 Messages postés jeudi 23 mai 2002Date d'inscription 1 avril 2018 Dernière intervention - 22 juin 2006 à 17:59
0
Utile
 Bonjour,

N'hésite à mettre des
Msgbox Date ou MsgBox "vérif1: " & Date
MsgBox Date_Chgt_Palier
ou
MsgBox Date &vbCrLf& Date_Chgt_Palier
et d'autres MsgBox avant (et après) des lignes dont tu doutes de l'efficacité.
Quand le script sera ok, il te suffira de les supprimer.

jean-marc
Commenter la réponse de cs_JMO
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 23 juin 2006 à 10:05
0
Utile
merci jean marc !mais je vais laisser tomber cete histoire de MsgBox , car même si j'peux comprendre vite (parfois) qd on m'explique longtemps et tout en détails, là j'suis largué
mais c surtout que si au final l'alerte ne s'affiche que le jour même, et plus le lendemain com expliqué plus haut, cela ne va pas etre exploitable !
merci quand même d'avoir essayé de m'expliquer.
Commenter la réponse de arno51100
erefdatacomputing 164 Messages postés mardi 7 mars 2006Date d'inscription 20 décembre 2017 Dernière intervention - 23 juin 2006 à 11:26
0
Utile
Salut !!

Essaye ça avant de tourner complètement la page:

If DateDiff("d", Date, a) >= -30 Then MsgBox ("Alerte")

Comme cela, les alertes se ferront dès que l'écart entre la date actuelle et la date d'échéance sera   <= à  30 jours , mais il reste toujours une certaine imprécision.(mois de 31 jours,...)

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
Commenter la réponse de erefdatacomputing
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 23 juin 2006 à 12:37
0
Utile
j'ai essayé et maintenant la msgbox s'affiche à chaque ouverture du formulaire même si je change les dates et qu'aucun changement n'est prévu pour les mois à venir, donc le paramétrage n'est pas encore bon, mais sans doute q'on en approche
par contre peux t me confirmer qu'il faut bien changer le "a" de
If DateDiff("d", Date, a) >= -30 Then MsgBox ("Alerte")
par le nom du champ du formulaire où figure les dates , voici ce que j'ai écris et j'ai un gros doute

Private Sub Form_Current()
If DateDiff("d", Date, Date_Chgt_Palier) >= -30 Then msgbox ("Alerte Changement de Palier")



End Sub


merci
arno
Commenter la réponse de arno51100
erefdatacomputing 164 Messages postés mardi 7 mars 2006Date d'inscription 20 décembre 2017 Dernière intervention - 23 juin 2006 à 14:01
0
Utile
Salut !!

Oui il te faut changer 'a' par la variable (pour toi Date_Chgt_Palier) qui contient la date à étudier.

Mais dis moi, qu'est ce que tu mets dans Date_Chgt_Palier ?

Si cette date est à moins de 30 jours d'écart avec la date d'aujourd'hui c'est normal que ça s'ouvre tout le temps !!

Il te faudra trouver une astuce pour refaire ce test !!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
Commenter la réponse de erefdatacomputing
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 23 juin 2006 à 14:21
0
Utile
salut !!!

"date_chgt_palier" c'est un champ date, tout ce qu'il y a de plus normal ex : "01/07/2006" pour 1er juillet 2006 !

il est relié aux données source d'une table mais a priori ya aucun probleme avec ca

sinon pour mes tests j'ai change toute les dates pour plus qu'aucune ne soit à moins de 30 jours, par mesure de précaution j'ai modifié toutes les dates et les 1ere échéances seront pour le 1er septembre 2007 ("01/09/2007")  donc normalement je ne devrais pas avoir d'alerte à l'ouverture du formulaire. 
j'ai peut etre un probleme de format de date, une inversion entre les jours, mois et année?

Je comprends rien même si on m'explique longtemps et tout en détails !!!  
Commenter la réponse de arno51100
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 23 juin 2006 à 15:39
0
Utile
salut !!

si je laisse tomber la msgbox, ne serait il pas possible de créer une requete qui puisse m'afficher la liste des personnes dont un changement de palier interviendrait le mois suivant.
je peux essayer de faire une requete sur ma table "evolution" en faisant un tri pour que n'apparaisse que le nom des personnes concerné par un tel chgt
mais je maitrise pas tre bien les requetes quel critere je dois mettre pa rapport à la date ?

si j'ouvre cette requete chaque mois, je pourrais avoir automatiquement la liste des personnes concernées non?

merci de vos conseils

arno
Commenter la réponse de arno51100
erefdatacomputing 164 Messages postés mardi 7 mars 2006Date d'inscription 20 décembre 2017 Dernière intervention - 23 juin 2006 à 16:18
0
Utile
le Pb ne vient pas du MsgBox,  mais du fait que tu ne peux pas réussir le 'test' suivant:
 
"Si différence entre les 2 dates est < ou = à 30 jours, alors signale moi une alerte !!"

c'est ça et uniquement ça !!!!

essaye ça !!

If DateDiff("d", Date_Chgt_Palier , Date) < = 30 Then MsgBox ("Alerte Changement de Palier entre cette date ")

Si ça ne marche pas, alors, je pense comme toi qu'il doit y avoir un soucis du côté des formats de date.

Est ce tu fait du VB 'pur' (Projet, Form, etc..) ou est ce que tu es sous ACCESS avec du VBA ?

est ce que tu peux mettre des TexBox de controle qui afficheraient les valeurs extraitent de ta Base ? si c'est non fait le afficher dans ta MsgBox du style:

If DateDiff("d", Date_Chgt_Palier,Date ) <= 30 Then msgbox ("Alerte Changement de Palier entre cette date " & Date_Chgt_Palier & " et aujourd'hui " & Date)

comme ça tu verras les valeurs s'afficher !!

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
Commenter la réponse de erefdatacomputing
arno51100 17 Messages postés vendredi 19 mai 2006Date d'inscription 30 juin 2006 Dernière intervention - 23 juin 2006 à 16:53
0
Utile
je suis sous access en VBA,

en fait je procéde de la manière svte:
j'ouvre mon formulaire, passe en mode création et crée une procédure évenementielle "sur activation" de mon formulaire et lorsque j'écris ce que tu me dis :

If DateDiff("d", Date_Chgt_Palier,Date ) <= 30 Then msgbox ("Alerte Changement de Palier entre cette date " & Date_Chgt_Palier & " et aujourd'hui " & Date)

qd j'essaie d'ouvrir le formulaire, s'affiche une Msgbox avec le message svt :

"Alerte changement de palier entre le 01/11/2011 et aujourd'hui 23/06/2006" 
je clique sur " ok" et mon formulaire s'ouvre.

 donc la effectivement ca marche mais je suis pas plus avancé, car ca ne me dis pas ki et quand? mais ca a l'avantage de fonctionner donc c'est qu'on progresse non?!  il faut réussir à réécrir la "formule" en triant entrela date d'aujourd'hui et le mois suivant et  peut etre qu'on peut ensuite rajouter une formule pour qu'apparaisse dans une autre couleur en rouge par ex la date et le nom dont le changement est prochain ? j'en demande surment bcp mais sait on jamais?!!
merci
arno
Commenter la réponse de arno51100

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

créer avis d'échéance MsgBox sous ACCESS - page 2