Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Nombre d'ouvertures de la base de données
C'est une nouvelle
astuce VBA Access que nous mettons en avant pour voir comment il est possible, Ã titre statistique, de
connaître le nombre de fois qu'une base de données a été ouverte.
Base de données Access à télécharger
Pour développer cette solution, nous suggérons d'appuyer l'étude sur une
base de données Access offrant déjà une
table ainsi qu'un
formulaire.
Comme l'indique le volet de navigation, cette petite base de données est constituée d'
une table nommée
Tnb ainsi que d'un
formulaire nommé
fParcourir.
- Double cliquer sur la table Tnb pour l'afficher en mode exécution,
Comme vous pouvez le voir, cette table est faite de deux champs. Le premier est celui de la clé primaire, certes pas absolument nécessaire dans ce cas, mais il s'agit de la philosophie d'un SGBDR. Le second est initialisé sur la
valeur zéro car cette base n'a pas encore été ouverte avec le
code VBA de gestion des clics. C'est ce champ qui doit être automatiquement incrémenté à chaque nouvelle ouverture.
- Cliquer sur la croix de son onglet pour fermer cette table,
- Dans le volet de navigation, double cliquer sur le formulaire fParcourir pour l'exécuter,
Certes, ce nom n'est pas très pertinent mais il s'agit d'un intitulé qui traîne au fil des formations et parfois, quelques détails nous échappent comme celui de renommer judicieusement un objet.
Ce formulaire est on ne peut plus dépouillé. Au milieu d'un texte explicatif, il propose une zone de texte. Comme ce formulaire est construit sur la table, cette zone réceptionne automatiquement l'information du champ que nous devons incrémenter.
Module VBA
Nous devons commencer par créer un
module de code VBA pour accueillir la
fonction destinée à être appelée à chaque
nouvelle ouverture de la
base de données.
- Fermer le formulaire en cliquant sur la croix de son onglet,
- En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
- Dans la section Macros et code du ruban, cliquer sur le bouton Module,
Nous basculons ainsi dans l'
éditeur VBA Access sur la
feuille de code d'un
nouveau module indépendant.
La fonction de décompte
La
fonction que nous devons créer doit se charger d'
incrémenter le champ Tnb_nb de la
table Tnb, Ã chaque nouvelle ouverture. Mais pour ce faire, des
objets sont nécessaires pour
piloter la base de données et
ses enregistrements.
- Dans la feuille de ce module, créer la fonction nbFois, comme suit :
Function nbFois() As Long
Dim base As Database: Dim requete As String
End Function
Nous la typons comme un
entier long (As Long) puisqu'elle doit retourner le
compteur de visites. Puis, nous déclarons un
objet de type Database pour prendre possession de la
base de données en cours. Ensuite, nous déclarons une
variable (requete) comme un
texte (As String). Sa vocation est de stocker la
syntaxe de la requête de mise à jour à exécuter sur la table, à chaque nouvelle ouverture.
Compteur de visites
Les variables étant déclarées, nous pouvons les initialiser. Nous devons faire pointer l'
objet base sur la
base de données en cours. C'est ainsi que nous pourrons y exécuter une
requête de mise à jour, dont la syntaxe doit être stockée dans la
variable requete.
- Après les variables, ajouter les instructions VBA suivantes :
...
Set base = CurrentDb()
requete = "UPDATE Tnb set Tnb_nb = Tnb_nb + " & 1
base.Execute requete
...
Nous initialisons (Set) l'
objet base sur la
base de données en cours, grâce à la
fonction VBA CurrentDb. Ensuite, nous enregistrons une
requête Update dans la
variable requete. A chaque appel, elle se charge d'
incrémenter la valeur du champ Tnb_nb (Tnb_nb = Tnb_nb + " & 1) dans la
table Tnb. Puis, nous exécutons cette requête en exploitant la
méthode héritée Execute de l'
objet base.
Décharger l'objet de base de données
Une fois la requête exécutée sur la base de données, nous devons décharger l'objet représentant cette dernière.
- Toujours à la suite du code VBA, ajouter les deux instructions suivantes :
...
base.Close
Set base = Nothing
...
Nous fermons l'instance de la base de données grâce à la
méthode héritée Close de l'
objet base. Puis, nous le détruisons en le réinitialisant (Set) Ã
Nothing. C'est ainsi que nous le sortons de la mémoire de l'ordinateur.
Exécution à l'ouverture
Pour que ce code se déclenche Ã
chaque ouverture de la base de données, l'astuce est simple. Elle consiste à construire une
macro AutoExec dont la vocation est d'appeler cette fonction. Ce
nom AutoExec est important. C'est lui qui indique à Access d'exécuter automatiquement la macro au
chargement de l'application.
- Enregistrer les modifications et fermer l'éditeur VBA Access,
- Dans la section Macros et code du ruban Créer, cliquer sur le bouton Macro,
- Avec la liste déroulante qui se propose, choisir l'action ExécuterCode,
- Inscrire le nom de la fonction : nbFois(), dans la zone Nom de la fonction,
- Déployer la liste déroulante du dessous,
- Choisir l'action OuvrirFormulaire,
- Dans la zone Nom de formulaire, désigner le formulaire fParcourir,
- Puis, enregistrer (CTRL + S) cette macro sous le nom AutoExec,
De cette manière, nous commandons l'ouverture du formulaire juste après l'exécution de la fonction VBA. Nous pourrons ainsi vérifier automatiquement l'incrémentation du
compteur de visites.
Compter les ouvertures
Il ne nous reste plus qu'à tester en conditions réelles.
- Fermer Access en cliquant sur la croix de sa fenêtre,
- Puis, rouvrir l'application à plusieurs reprises,
Comme vous pouvez l'apprécier, Ã
chaque ouverture de la base de données, le
formulaire est affiché et son
compteur de visites est
automatiquement incrémenté.