Comment declancher un msgbox tout les 7 jours a une heure precis

Résolu
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013 - 3 oct. 2013 à 02:11
siaka7 Messages postés 1 Date d'inscription samedi 23 janvier 2016 Statut Membre Dernière intervention 23 janvier 2016 - 23 janv. 2016 à 23:22
bonjour tous le monde

debutant en vba je suis a la recherche d'un bout de code qui me permetrait de declancher un msgbox tout les 7 jours a une heure bien precise.
merci d'avance a vous qui me lirez

2 réponses

jordane45 Messages postés 36573 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 novembre 2022 341
3 oct. 2013 à 02:22
Bonjour,

Si ta question concerne le VBA, tu n'as pas posté dans la bonne section du forum.

Ensuite, pour répondre à votre question, je vous inviterai à regarder du côte de : Application.OnTime

Par contre, si vous souhaitez declancher un msgbox tout les 7 jours a une heure bien precise, il faudra bien entendu que votre fichier contenant la macro soit ouvert à cette période là...

=> Si vous ne souhaitez réellement n'avoir qu'une MSGBOX, je vous inviterai plutôt à le faire en VB Script, puis d'appeler ce script depuis le planificateur de taches de Windows..

'msgbox en vbs..
msgbox "coucou"

0
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013
3 oct. 2013 à 04:47
Bonjour jordane45

merci deja de l'interet porté a ma question.
pour plus de precision en fait se que je cherche a faire s'est tous simplement declancher un msgbox sous access tous les 7 jours a une heure precise
j'ai une table ouverture A avec 3 champ (Id=numauto / heure execution=heure / derniere execution=date heure
j'ai un formulaire ouverture A dans lequel j'ai glisser dans "sur minuterie" une procedure evenementiel---->
Private Sub Form_Timer()
Dim varHeureExec As Variant
Dim varDerniereExec As Variant


' Lire l'heure d'exécution
varHeureExec = DLookup("[heure execution]", "[ouverture A]")
If IsNull(varHeureExec) Then Exit Sub

' Lire l'heure de dernière exécution
varDerniereExec = DLookup("[derniere execution]", "[ouverture A]")
If IsNull(varDerniereExec) Then varDerniereExec = #1/1/1900 12:00:00 PM#

' Si une exécution a eu lieu aujourd'hui, annuler le processus
If Format(varDerniereExec, "dd/mm/yyyy") = Format(Date, "dd/mm/yyyy") Then Exit Sub

'si la date est superieur de 7 jours alors execute message
If DateDiff("d", Date, a) >= 7 Then
MsgBox "OUVERTURE A !!!", vbInformation

' Mettre à jour la date d'exécution
CurrentDb.Execute "UPDATE [ouverture A] SET [derniere execution]=#" & _
Format(Now, "mm/dd/yyyy hh:nn:ss") & "#"
End If
End Sub
mais sa fonctionne pas :'(
0
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013
3 oct. 2013 à 03:26
Bonjour jordane45

merci deja de l'interet porté a ma question.
pour plus de precision en fait se que je cherche a faire s'est tous simplement declancher un msgbox sous access tous les 7 jours a une heure precise
j'ai une table ouverture A avec 3 champ (Id=numauto / heure execution=heure / derniere execution=date heure
j'ai un formulaire ouverture A dans lequel j'ai glisser dans "sur minuterie" une procedure evenementiel---->
Private Sub Form_Timer()
Dim varHeureExec As Variant
Dim varDerniereExec As Variant


' Lire l'heure d'exécution
varHeureExec = DLookup("[heure execution]", "[ouverture A]")
If IsNull(varHeureExec) Then Exit Sub

' Lire l'heure de dernière exécution
varDerniereExec = DLookup("[derniere execution]", "[ouverture A]")
If IsNull(varDerniereExec) Then varDerniereExec = #1/1/1900 12:00:00 PM#

' Si une exécution a eu lieu aujourd'hui, annuler le processus
If Format(varDerniereExec, "dd/mm/yyyy") = Format(Date, "dd/mm/yyyy") Then Exit Sub

'si la date est superieur de 7 jours alors execute message
If DateDiff("d", Date, a) >= 7 Then
MsgBox "OUVERTURE A !!!", vbInformation

' Mettre à jour la date d'exécution
CurrentDb.Execute "UPDATE [ouverture A] SET [derniere execution]=#" & _
Format(Now, "mm/dd/yyyy hh:nn:ss") & "#"
End If
End Sub
0
jordane45 Messages postés 36573 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 novembre 2022 341
3 oct. 2013 à 08:01
Déroulez la macro en mode pas à pas et verifiez ce qu'il se passe et ce que valent vos variables
Surtout pour le dernier datedif.
0
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013
3 oct. 2013 à 15:45
re bonjour jordane45

se n'est pas une macro mais une procedure evenementiel dans la section minuterie de l'user form
0
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013
Modifié par WJ9 le 3/10/2013 à 16:47
en faite le bout de code que je cherche a faire pourais de resumer a sa :
si la date du champ "derniere execution" (jj/mm/aaaa_h:m:s) est depassee de 7 jours alors....sinon rien

donc je supose que sa dois ressembler a un truc comme sa

if DateDiff (derniere execution depasser de 7 jours) then
msgbox " coucou"
else
rien
end if
end sub

a l'aide...!! :)
0
jordane45 Messages postés 36573 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 novembre 2022 341
3 oct. 2013 à 17:27
dans cette ligne :
If DateDiff("d", Date, a) >= 7 Then

Que vaut 'a' ?
0
WJ9 Messages postés 20 Date d'inscription lundi 20 août 2012 Statut Membre Dernière intervention 13 octobre 2013
3 oct. 2013 à 18:27
je me suis basé sur ce bout de code

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

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
0