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

Programmer vos tâches récurrentes dans Access

Objectif : apprendre à programmer vos tâches récurrentes dans Access.

Niveau requis : confirmé.

Commentez cet article : Commentez Donner une note à l´article (0)

Article lu   fois.

L'auteur

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

Un premier tutoriel expliquant comment générer des tâches planifiéesgénérer des tâches planifiées a déjà été publié par Jean-Philippe AndréJean-Philippe André.
L'objectif de cet article est d'expliquer, au travers d'une base exemple, comment enregistrer dans une table des tâches récurrentes (sauvegardes de fichiers, alertes, transferts de tables..) en les associant à des procédures et à une période, pour ensuite les exécuter au bon moment en utilisant la méthode Run d'Access.

Pour mieux comprendre le fonctionnement de cet outil, on décomposera sa présentation en trois parties :

  • table pour enregistrer les données des tâches ;
  • procédure d'exécution des tâches ;
  • code des procédures associées aux tâches.
Timer
Timer

II. Table pour enregistrer les données des tâches

On part d'une table T_Tache pour enregistrer les informations sur les tâches à exécuter :

Champ

Type de données

Description

IdTache

Numéro-auto

Numéro d'enregistrement

IntituleTache

Texte

Intitulé de la tâche

UniteTemps

Texte

Unité de temps (seonde, minute, heure, jour, mois, semaine, année)

PeriodeTemps

entier long

période en nombre de secondes, minutes, heures, jours, semaines, mois, ou années

DateProchaineExecution

Date/heure

Date de prochaine exécution de la tâche

DateFinExecution

Date/heure

Date de fin d'exécution de la tâche

NomProcedure

Texte

Nom de la procédure à exécuter

ArgumentProcedure

Texte

Argument de la procédure à exécuter

Active

Booléen

Indique si la tâche est active ou non

Exemples de tâches à exécuter :

Sauvegarde du fichier Access toutes les 30 minutes.

Transfert tous les mois des données sur les factures du mois précédent.

Alerte pour relancer un client toutes les semaines pour payer sa facture.


Table T_Tache
Table T_Tache

Pour exécuter la procédure on utilise la méthode Run avec le nom de la procédure en argument.

III. Procédure d'exécution des tâches

Extrait de l'aide :

Vous pouvez utiliser la méthode Run pour exécuter une procédure ou une fonction spécifiée par l’utilisateur ou Microsoft Access.

Syntaxe
expression.Run (Procédure, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9, Arg10, Arg11, Arg12, Arg13, _ Arg14_, Arg15, Arg16, Arg17, Arg18, Arg19, Arg20, Arg21, Arg22, Arg23, Arg24, Arg25, Arg26, _ Arg27_, Arg28, Arg29, Arg30)

expression est une variable qui représente un objet Application.
...

Dans notre cas, on n'utilisera au plus qu'un argument, et la ligne de code ressemblera donc à :

 
Sélectionnez
application.Run NomProcedure, ArgumentProcedure

La procédure d'exécution des tâches les parcourt une à une :

Déroulé condensé de la procédure RunTasks
  • On ouvre le Recordset contenant les informations sur les tâches actives ;
  • Pour chaque enregistrement, on teste si la date de prochaine exécution de la tâche est inférieure ou égale à maintenant ;
  • Si c'est le cas, on exécute la procédure associée à la tâche avec la méthode Run ;
  • Puis on met à jour la date de sa prochaîne exécution.
Procédure RunTasks
Cacher/Afficher le codeSélectionnez

Gros plan sur les commandes de lancement d'une procédure :

 
Sélectionnez
		' il faut lancer la tâche et recalculer la date de prochaîne exécution de la tâche
            If Nz(rs!ArgumentProcedure, "") = "" Then ' si pas d'argument à la procédure
                Run (rs!NomProcedure) ' on exécute la procédure à l'aide de la méthode run
            Else ' sinon
            	' on exécute la procédure à l'aide de la méthode run avec un argument supplémentaire            	
                Run rs!NomProcedure, rs!ArgumentProcedure
            End IF

L'exécution des tâches s'effectue sur l'événement Timer du formulaire F_ProgrammerTaches .

Formulaire F_ProgrammerTaches
Formulaire F_ProgrammerTaches

III-A-1. Exécution des tâches sur timer

Pour paramétrer le Timer du formulaire on a besoin de définir l'intervalle minuterie en millisecondes, par exemple, pour exécuter la procédure RunTasks toutes les 60 secondes, on saisit sur cette propriété 60 000 (ms).

Propriétés Timer
Propriétés Timer

Ensuite, on doit placer la procédure d'exécution des tâches sur l'événement Timer :

 
Sélectionnez

Private Sub Form_Timer()
    RunTasks ' exécution des tâches sur timer
End Sub

Pour définir manuellement l'intervalle d'exécution de la procédure sur Timer on peut aussi saisir une valeur dans la zone de texte IntervalleMinuterie, représentant l'intervalle de temps exprimé en millisecondes entre 2 exécutions :

 
Sélectionnez
Private Sub IntervalleMinuterie_AfterUpdate()
    ' définit l'intervalle minuterie après mise à jour de la zone de texte
    ' si 0 arrêt du timer
     Me.TimerInterval = Me.IntervalleMinuterie ' copie de la valeur de la zone de texte dans la propriété TimerInterval du formulaire
End Sub

IV. Procédures associées aux tâches

On décrit les procédures contenues dans le module M_Taches et permettant d'exécuter les différentes tâches.

IV-A. SaveFile

La procédure sauvegarde la totalité de la base active :

Procédure SaveFile
Sélectionnez
Public Sub SaveFile()
    ' Procédure de sauvegarde du fichier Access
    Dim fso As Object ' référence à fso
    Dim cheminFichier As String ' variable pour le chemin complet du fichier sur le disque
    Dim nomFichier As String ' variable pour le nom du fichier
    Dim nomDossier As String ' variable pour le nom du dossier de sauvegarde
    
    Set fso = CreateObject("Scripting.FileSystemObject") ' Création de l'objet fso
    
    nomDossier = CurrentProject.Path & "\Sauvegarde" ' dossier de sauvegarde
    cheminFichier = CurrentProject.FullName ' chemin complet du fichier Access
    nomFichier = CurrentProject.Name ' nom du fichier Access
    
        If Dir(nomDossier, vbDirectory) = "" Then ' si le dossier n'existe pas
            fso.CreateFolder nomDossier ' création du dossier de sauvegarde
        End If
        
    ' copie du fichier Access dans le dossier de sauvegarde
    fso.CopyFile cheminFichier, nomDossier & "\" & nomFichier & " - " & Format(Date, "yyyy-mm-dd") & ".accdb"
    
    ' Affichage du message de succès de la sauvegarde
    MsgBox "Sauvegarde du fichier réalisée avec succès !", vbExclamation
    
    ' On libère la variable fso
    Set fso = Nothing

End Sub

IV-B. TransferSpreadSheet

La procédure transfère dans un fichier Excel les données des factures du mois précédent, affichées dans la requête R_FactureMoisPrecedent :

Procédure TransfertSpreadSheet
Sélectionnez
Public Sub TransferSpreadSheet()
    ' Procédure de transfert des données de la requête R_FactureMois dans un fichier Excel
    Dim fso As Object ' référence à fso
    Dim cheminFichier As String ' variable pour le chemin complet du fichier sur le disque
    Dim nomDossier As String ' variable pour le nom du dossier de sauvegarde
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    nomDossier = CurrentProject.Path & "\Factures mensuelles" ' dossier de sauvegarde
    cheminFichier = nomDossier & "\Factures " & Format(DateAdd("m", -1, Date), "yyyy-mm") & ".xlsx" ' chemin complet du fichier Access
    
        If Dir(nomDossier, vbDirectory) = "" Then ' si le dossier n'existe pas
            fso.CreateFolder nomDossier ' création du dossier de sauvegarde
        End If
        
    ' transfert de la table Access vers le fichier Excel
    DoCmd.TransferSpreadSheet acExport, acSpreadsheetTypeExcel12Xml, "R_FactureMoisPrecedent", cheminFichier, True
    
    ' Affichage du message de succès du transfert
    MsgBox "Transfert de la table réalisé avec succès !", vbExclamation
    
    ' On libère la variable fso
    Set fso = Nothing

End Sub

IV-C. Alert

La procédure affiche le message d'alerte passé en argument:

Procédure Alert
Sélectionnez
Public Sub Alert(msg As String)
    ' on affiche le message d'alerte passé en argument
    MsgBox msg, vbExclamation, "Alerte !"
End Sub

V. Base de données à télécharger

La base jointeprogrammer-taches-recurrentes décrite dans le tutoriel est au format accdb.

VI. Remerciements

Je tiens à remercier ..., ..., ..., et ... pour m'avoir conseillé pour la réalisation de cet article, ainsi que ... pour sa relecture.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2019 Denis Hulo. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.