Vous êtes sur la page 1sur 24

ACCESS : Créer des compléments

(menu/assistants) en VBA

Par Thierry GASPERMENT

Date de publication : 5 avril 2007

Dernière mise à jour : 13 février 2011

Apprenez à créer des compléments en VBA pour Access.


Ces compléments peuvent être exécutés ensuite par le menu ou en tant qu'assistants.
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

I - Généralités sur les compléments........................................................................................................................... 3


I-A - Comment créer un complément?.................................................................................................................. 3
I-B - Comment s'installe un complément?............................................................................................................. 3
I-B-1 - Sécurité sous Vista................................................................................................................................3
I-B-2 - Sécurité sous Seven............................................................................................................................. 5
I-C - Structure de la table USysRegInfo................................................................................................................ 5
I-D - Comment créer la table USysRegInfo ?........................................................................................................6
II - Complément de Menu........................................................................................................................................... 7
II-A - Création......................................................................................................................................................... 7
II-A-1 - Création de la table de paramètres d'installation.................................................................................7
II-A-2 - Création de la base de données..........................................................................................................8
II-B - Installation..................................................................................................................................................... 9
III - Assistant formulaire ou état................................................................................................................................ 10
III-A - Création...................................................................................................................................................... 10
III-A-1 - Création de la table de paramètres d'installation..............................................................................10
III-A-2 - Création de la base de données.......................................................................................................12
III-B - Installation.................................................................................................................................................. 13
IV - Assistant contrôle ou propriété...........................................................................................................................14
IV-A - Création......................................................................................................................................................14
IV-A-1 - Création de la table de paramètres d'installation............................................................................. 14
IV-A-2 - Création de la base de données...................................................................................................... 17
IV-B - Installation.................................................................................................................................................. 17
V - Assistant table ou requête...................................................................................................................................18
V-A - Création.......................................................................................................................................................18
V-A-1 - Création de la table de paramètres d'installation.............................................................................. 18
V-A-2 - Création de la base de données....................................................................................................... 20
V-B - Installation................................................................................................................................................... 21
VI - Enchaîner les assistants.....................................................................................................................................22
VII - Gestion de la confidentialité avec Access 2007............................................................................................... 23
VIII - Astuces de programmation : CodeDb et CodeProject..................................................................................... 24
IX - Conclusion.......................................................................................................................................................... 24

-2-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

I - Généralités sur les compléments

I-A - Comment créer un complément?

Vous avez tous déjà utilisé des compléments (ou add-ins), peut-être sans le savoir!
Les assistants de création de contrôles, de formulaires… sont des compléments.

Ces compléments sont de simples bases Access, sauvegardées habituellement avec l'extension mda, ou mde si
le complément est compilé.

Pour créer de tels compléments, seul Access est nécessaire.

Nous ne traiterons pas dans cet article des compléments COM.

I-B - Comment s'installe un complément?

La particularité d'un complément est d'avoir, dans une table système nommée USysRegInfo, les paramètres
nécessaires à son installation.

L'installation se fait grâce au Gestionnaire de compléments accessible dans le menu :


Outils --> Macros complémentaires --> Gestionnaire de compléments.

A partir d'Access 2007, le gestionnaire de compléments est disponible dans l'onglet Outils
de base de données du ruban.
Dans Compléments, sélectionnez Gestionnaire de compléments.

Cette installation se fait en deux étapes :

1 copie du complément dans le répertoire approprié ;


2 copie des entrées de la table USysRegInfo dans le registre de Windows.

Une fois installés sur un ordinateur, les compléments sont accessibles dans toutes les bases de données ouvertes
sur cet ordinateur.

Sous Windows Vista ou Seven, la sécurité peut vous empêcher d'installer le complément.
Vous devez exécuter Access en administrateur :

Clic droit sur le raccourci vers Access.exe => Propriétés => onglet Compatibilité => cochez Exécuter ce programme
en tant qu'administrateur.
Décochez la case après avoir installé l'assistant.

Vous pouvez également procéder selon les indications suivantes.

I-B-1 - Sécurité sous Vista

Cliquez sur le bouton en bas à gauche de Ouvrez le panneau de configuration :


Windows :

-3-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Choisissez Comptes utilisateurs : Cliquez sur le bouton Activer ou


désactiver le contrôle des comptes
utilisateurs.

Décochez l'option : Redémarrez le PC quand cela est


demandé :

Installez le complément lorsque le PC est redémarré.

Faites ensuite la manipulation inverse pour réactiver la sécurité.

Ou réactivez-la en ouvrant le centre de Cliquez alors sur le bouton Activer


sécurité : maintenant.

-4-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Merci à Dolphy35 pour ces explications.

I-B-2 - Sécurité sous Seven

Ouvrez le panneau de configuration. cliquez sur le bouton Modifier les


Choisissez Comptes utilisateurs : paramètres de contrôle des comptes
utilisateurs.

Abaisser le niveau : Ne jamais Redémarrez le PC


m'avertir : quand cela est demandé.

Installez le complément lorsque le PC est redémarré.

Faites ensuite la manipulation inverse pour réactiver la sécurité.

Merci à Domi2 pour ces explications.

I-C - Structure de la table USysRegInfo

Pour que le complément soit installable, il faut créer une table système qui contient les paramètres d'installation du
complément.
Cette table USysRegInfo est utilisée par le gestionnaire de compléments d'Access lors de l'installation.

Voici la structure de cette table :

-5-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

La structure de la table est identique quel que soit le type de complément.

Les données de cette table seront copiées dans le registre de Windows :

• Subkey : clé de registre ;


• Type : type de valeur ;
• ValName : nom de la valeur ;
• Value : donnée de la valeur.

I-D - Comment créer la table USysRegInfo ?

Comme c'est une table système, il faut d'abord demander l'affichage de ces tables système.
Outils --> Options --> onglet Affichage --> cochez Objets système

A partir d'Access 2007 : clic droit sur l'en-tête du volet de navigation à gauche puis :
Options de navigation… => cochez Afficher les objets système.

Vous pouvez soit :

• créer vous-même cette table ;


• importer la structure de cette table d'un autre complément.

L'import est la solution la plus simple :


Dans le menu : Fichier --> Données externes --> Importer, choisissez un complément.
A partir d'Access 2007 : dans l'onglet Données externes du ruban, choisissez Access.
Vous pouvez trouver les compléments d'Access dans le répertoire d'installation d'Office :
Pour Access 2003 par exemple : C:\Program Files\Microsoft Office 2003\OFFICE11\ACWZMAIN.MDE

-6-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Choisissez ici la table USysRegInfo et cliquez OK.

Videz le contenu de la table importée si elle est déjà remplie.

Si la structure est toujours identique, le contenu de la table varie en fonction du type de complément.

Les chapitres suivants détaillent la création des entrées de table dans chaque cas.

II - Complément de Menu

II-A - Création

II-A-1 - Création de la table de paramètres d'installation

Créez la structure de la table UsysRegInfo selon les instructions du paragraphe Comment créer la table
USysRegInfo?

Le champ Subkey détermine l'emplacement des entrées de registre à ajouter à l'installation :


Pour un complément de menu : HKEY_CURRENT_ACCESS_PROFILE\Menu Add-ins\NomDuMenu

Quatre enregistrements sont nécessaires pour un menu :

Type ValName Value Description


0 Cet enregistrement
demande au
gestionnaire de
compléments d'installer
le complément à l'aide
des enregistrements
suivants.
1 Expression =NomDeLaFonction() Nom de la fonction à
lancer
Lors du clic sur l'entrée
de menu correspondant
au complément, la

-7-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

fonction mentionnée est


exécutée.
1 Library |ACCDIR Chemin d'installation du
\NomDuFichierComplément.mda
complément
Le chemin est |ACCDIR
\ (Access installera le
complément dans le
répertoire utilisateur
adéquat), suivi du
nom de fichier du
complément.
1 Version 1, 2 ou 3 la valeur détermine la
visibilité du complément :

• 1 = Visible
uniquement dans
les bases de
données mdb
• 2 = Visible
uniquement dans
les projets adp
• 3 = Visible dans
les deux types de
fichiers

A partir de ces informations, remplissons la table USysRegInfo ainsi :

Subkey Type ValName Value


HKEY_CURRENT_ACCESS_PROFILE
0
\Menu Add-ins
\MenuDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Expression =Fonction_Test_Menu()
\Menu Add-ins
\MenuDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Library |ACCDIR
\Menu Add-ins \Test_Menu.mda
\MenuDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Version 3
\Menu Add-ins
\MenuDVP

II-A-2 - Création de la base de données

Créez une nouvelle base Access, cette base est notre complément de menu.
Nommez la par exemple Test_Menu.mda

On a d'abord besoin de la fonction qui sera le point d'entrée du complément de menu.


On crée donc dans un nouveau module une fonction nommée par exemple Fonction_Test_Menu.

On peut par exemple utiliser Screen.ActiveForm pour connaître le formulaire actif

Function Fonction_Test_Menu()
On error resume next
MsgBox "Le formulaire actif est : " & Screen.ActiveForm.Name
If err.number <> 0 then MsgBox "Pas de formulaire actif"
End Function

-8-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Les propriétés de la base de données doivent également être modifiées, dans Fichier --> Propriétés de la base)

Le Titre, la Société et le Commentaire apparaîtrons dans le gestionnaire de compléments.

II-B - Installation

Dans le menu : Outils --> Macros complémentaires --> Gestionnaire de compléments.


Cliquez sur le bouton : Ajoutez un nouveau…, sélectionnez le fichier mda du complément à installer.

On note que les propriétés de la base de données mises à jour précédemment ont bien été utilisées.

-9-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Désormais, dans toutes les bases Access, on obtient une nouvelle entrée de menu dans Macro Complémentaire :

Si on clique sur ce menu, on exécute la fonction Fonction_Test_Menu.

L'exemple affiche simplement le nom du formulaire actif dans une boîte de message.
Il est possible de faire mieux en ajoutant aux compléments des formulaires, des tables, des états…
Les objets Screen.ActiveControl, Screen.ActiveForm, Screen.ActiveReport sont utiles pour connaître le nom des
objets actifs.

III - Assistant formulaire ou état

III-A - Création

III-A-1 - Création de la table de paramètres d'installation

Créez la structure de la table UsysRegInfo selon les instructions du paragraphe Comment créer la table
USysRegInfo?

Le champ Subkey détermine l'emplacement des entrées de registre à ajouter à l'installation :


Pour un assistant de création de formulaire : HKEY_CURRENT_ACCESS_PROFILE\Wizards\Form Wizards
\NomAssistant

Pour un assistant de création d'état : HKEY_CURRENT_ACCESS_PROFILE\Wizards\Report Wizards


\NomAssistant

Huit enregistrements sont nécessaires pour un assistant de formulaire ou d'état :

Type ValName Value Description


0 Cet enregistrement
demande au
gestionnaire de
compléments d'installer
le complément à l'aide
des enregistrements
suivants.
1 Bitmap Chemin d'un fichier Cette image s'affiche
image Bitmap (*.bmp) dans la liste des

- 10 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

assistants, si la valeur
n'est pas renseignée
alors aucune image ne
s'affiche.
4 Datasource Required 0 ou 1 0 : Le choix d'une table
ou requête est facultatif;
1 : L'assistant impose
le choix d'une table
ou requête source
des données avant de
continuer.
le nom de la table ou
requête choisie est
passée en paramètre à
la fonction définie dans
la valeur Function
1 Description Texte libre Description à afficher
dans la liste des
asssistants.
1 Function NomDeLaFonction Nom de la fonction à
lancer
Lors de la sélection
de l'assistant, la
fonction mentionnée est
exécutée.
4 Index Numérique Position dans la liste des
assistants
Mettre 0 pour que
l'assistant soit en
première position.
1 Library |ACCDIR Chemin d'installation du
\NomDuFichierComplément.mda
complément
Le chemin est |ACCDIR
\ (Access installera le
complément dans le
répertoire utilisateur
adéquat), suivi du
nom de fichier du
complément.
1 Version 1, 2 ou 3 la valeur détermine la
visibilité du complément :

• 1 = Visible
uniquement dans
les bases de
données mdb
• 2 = Visible
uniquement dans
les projets adp
• 3 = Visible dans
les deux types de
fichiers

A partir de ces informations, remplissons la table USysRegInfo ainsi :

- 11 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Subkey Type ValName Value


HKEY_CURRENT_ACCESS_PROFILE
0
\Wizards\Form Wizards
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
1 Bitmap
\Wizards\Form Wizards
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
4 Datasource Required 1
\Wizards\Form Wizards
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
1 Description Tutoriel DVP Assistant
\Wizards\Form Wizards formulaire
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
1 Function Fonction_Test_formulaire
\Wizards\Form Wizards
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
4 Index 0
\Wizards\Form Wizards
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
1 Library |ACCDIR
\Wizards\Form Wizards \Test_Form.mda
\Test_Form
HKEY_CURRENT_ACCESS_PROFILE
1 Version 3
\Wizards\Form Wizards
\Test_Form

III-A-2 - Création de la base de données

Créez une nouvelle base Access, cette base est notre assistant de création de formulaire ou d'état.
Nommez la par exemple Test_Formulaire.mda

On a d'abord besoin de la fonction qui sera le point d'entrée de l'assistant.


On crée donc dans un nouveau module une fonction nommée par exemple Fonction_Test_formulaire.

La fonction doit avoir un paramètre optionnel pour le choix de la source de données.

Function Fonction_Test_formulaire(Optional pRecordSource As String)


' Pour tests, on affiche la source de données choisie dans une boîte de message
MsgBox "Source de données choisie = " & pRecordSource
End Function

Les propriétés de la base de données doivent également être modifiées, dans Fichier --> Propriétés de la base.

- 12 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Le Titre, la Société et le Commentaire apparaîtrons dans le gestionnaire de compléments.

III-B - Installation

Dans le menu : Outils --> Macros complémentaires --> Gestionnaire de compléments.


Cliquez sur le bouton : Ajoutez un nouveau…, sélectionnez le fichier mda du complément à installer.

On note que les propriétés de la base de données mises à jour précédemment ont bien été utilisées.

Désormais, dans toutes les bases Access, on obtient un nouvel assistant de création de formulaire.

- 13 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Si on choisit cet assistant, on exécute la fonction Fonction_Test_Formulaire.

L'exemple affiche simplement, dans une boîte de message, le nom de la source de données sélectionnée.

En fonction du type d'assistant développé, on pourra utiliser les méthodes : CreateForm, CreateReport et
CreateControlpour créer un nouvel objet en suivant ses propres règles.

IV - Assistant contrôle ou propriété

IV-A - Création

IV-A-1 - Création de la table de paramètres d'installation

Créez la structure de la table UsysRegInfo selon les instructions du paragraphe Comment créer la table
USysRegInfo?

Le champ Subkey détermine l'emplacement des entrées de registre à ajouter à l'installation :

• Pour un assistant contrôle OLE :

HKEY_CURRENT_ACCESS_PROFILE\Wizards\OLE CUSTOM CONTROL WIZARDS


\TypeDeContrôle\NomAssistant
Le TypeDeContrôle est la classe d l'objet OLE (créez un objet OLE et regardez sa propriété Class).

• Pour un assistant contrôle :

HKEY_CURRENT_ACCESS_PROFILE\Wizards\Control Wizards\TypeDeContrôle\NomAssistant
Le TypeDeContrôle peut être :

- 14 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Type de contrôle Description


Label Etiquette
TextBox Zone de texte
OptionGroup Groupe d'options
ToggleButton Bouton bascule
OptionButton Case d'option
CheckBox Case à cocher
ComboBox Zone de liste déroulante
ListBox Zone de liste
CommandButton Bouton de commande
ImageFrame Image
UnboundObjectFrame Cadre d'objet indépendant
BoundObjectFrame Cadre d'objet dépendant
PageBreak Saut de page
SubformSubreport Sous-formulaire/Sous-état
Line Trait
Rectangle Rectangle

• Pour un assistant propriété :

HKEY_CURRENT_ACCESS_PROFILE\Wizards\Property Wizards\TypeDePropriété\NomAssistant
Le TypeDePropriété peut être :

BackColor Couleur de remplissage


BorderColor Couleur de bordure
FieldName Nom du champ
ForeColor Couleur du texte
InputMask Masque de saisie
LinkChildFields Champs fils
LinkMasterFields Champs père
MenuBar Barre de menu
Module Module
ODBCConnectStr Chaîne de connectino ODBC
Picture Image
ShortcutMenuBar Menu contextuel

Six enregistrements sont nécessaires pour un assistant contrôle ou propriété :

Type ValName Value Description


0 Cet enregistrement
demande au
gestionnaire de
compléments d'installer
le complément à l'aide
des enregistrements
suivants.
4 Can Edit 0 ou 1 0 : L'assistant ne peut
être utilisé qu'en création

- 15 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

1 : L'assistant peut être


utilisé en création ou
modification
1 Description Texte libre Description à afficher
dans la liste des
asssistants.
1 Function NomDeLaFonction Nom de la fonction à
lancer
Lors de la sélection
de l'assistant, la
fonction mentionnée est
exécutée.
1 Library |ACCDIR Chemin d'installation du
\NomDuFichierComplément.mda
complément
Le chemin est |ACCDIR
\ (Access installera le
complément dans le
répertoire utilisateur
adéquat), suivi du
nom de fichier du
complément.
1 Version 1, 2 ou 3 la valeur détermine
la visibilité du
complément :
1 = Visible uniquement
dans les base de
données mdb
2 = Visible uniquement
dans les projets adp
3 = Visible dans les deux
types de fichiers

A partir de ces informations, remplissons la table USysRegInfo pour un assistant de création de contrôle :

Subkey Type ValName Value


HKEY_CURRENT_ACCESS_PROFILE
0
\Wizards\Control
Wizards\TextBox
\ControlDVP
HKEY_CURRENT_ACCESS_PROFILE
4 Can Edit 0
\Wizards\Control
Wizards\TextBox
\ControlDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Description Tutoriel DVP Assistant
\Wizards\Control contrôle
Wizards\TextBox
\ControlDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Function Fonction_Test_Control
\Wizards\Control
Wizards\TextBox
\ControlDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Library |ACCDIR
\Wizards\Control \Test_Control.mda
Wizards\TextBox
\ControlDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Version 3
\Wizards\Control

- 16 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Wizards\TextBox
\ControlDVP

IV-A-2 - Création de la base de données

Créez une nouvelle base Access, cette base est notre assistant contrôle ou propriété.
Nommez la par exemple Test_Control.mda

On a d'abord besoin de la fonction qui sera le point d'entrée de l'assistant.


On crée donc dans un nouveau module une fonction nommée par exemple Fonction_Test_Control.

La fonction doit avoir des paramètres pour recevoir des informations au lancement de l'assistant.

Function Fonction_Test_Control(Optional pArg1 As String, Optional


pArg2 As String, Optional pArg3 As String)
' Pour tests, on affiche les paramètres reçus à l'exécution de l'assistant
MsgBox pArg1 & ":" & pArg2 & ":" & pArg3
End Function

Les propriétés de la base de données doivent également être modifiées, dans Fichier --> Propriétés de la base.

Le Titre, la Société et le Commentaire apparaîtront dans le gestionnaire de compléments.

IV-B - Installation

Dans le menu : Outils --> Macros complémentaires --> Gestionnaire de compléments.

- 17 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Cliquez sur le bouton : Ajoutez un nouveau…, sélectionnez le fichier mda du complément à installer.

On note que les propriétés de la base de données mises à jour précédemment ont bien été utilisées.

Désormais, dans toutes les bases Access, on obtient un nouvel assistant de création de zone de texte.

Lorsque l'on crée une nouvelle zone de texte, on exécute la fonction Fonction_Test_Control.

L'exemple affiche simplement, dans une boîte de message, les paramètres reçus par l'assistant.
On s'aperçoit qu'il y a deux paramètres pour une zone de texte : le nom de l'étiquette et le nom de la zone de texte.

Le formulaire courant est : Screen.ActiveForm

On peut alors modifier les propriétés de ces deux objets.

V - Assistant table ou requête

V-A - Création

V-A-1 - Création de la table de paramètres d'installation

Créez la structure de la table UsysRegInfo selon les instructions du paragraphe Comment créer la table
USysRegInfo?

Le champ Subkey détermine l'emplacement des entrées de registre à ajouter à l'installation :

• Pour un assistant table : HKEY_CURRENT_ACCESS_PROFILE\Wizards\Table Wizards\NomAssistant


• Pour un assistant requête : HKEY_CURRENT_ACCESS_PROFILE\Wizards\Query Wizards\NomAssistant

Sept enregistrements sont nécessaires pour un assistant table ou requête :

Type ValName Value Description


0 Cet enregistrement
demande au
gestionnaire de
compléments d'installer

- 18 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

le complément à l'aide
des enregistrements
suivants.
1 Bitmap Chemin d'un fichier Cette image s'affiche
image Bitmap (*.bmp) dans la liste des
assistants, si la valeur
n'est pas renseignée
alors aucune image ne
s'affiche.
1 Description Texte libre Description à afficher
dans la liste des
asssistants.
1 Function NomDeLaFonction Nom de la fonction à
lancer
Lors de la sélection
de l'assistant, la
fonction mentionnée est
exécutée.
4 Index Numérique Position dans la liste des
assistants
Mettre 0 pour que
l'assistant soit en
première position.
1 Library |ACCDIR Chemin d'installation du
\NomDuFichierComplément.mda
complément
Le chemin est |ACCDIR
\ (Access installera le
complément dans le
répertoire utilisateur
adéquat), suivi du
nom de fichier du
complément.
1 Version 1, 2 ou 3 la valeur détermine la
visibilité du complément :

• 1 = Visible
uniquement dans
les bases de
données mdb
• 2 = Visible
uniquement dans
les projets adp
• 3 = Visible dans
les deux types de
fichiers

A partir de ces informations, remplissons la table USysRegInfo pour un assistant de création de table :

- 19 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Subkey Type ValName Value


HKEY_CURRENT_ACCESS_PROFILE
0
\Wizards\Table Wizards
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Bitmap
\Wizards\Table Wizards
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Description Tutoriel DVP Assistant
\Wizards\Table Wizards table
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Function Fonction_Test_Table
\Wizards\Table Wizards
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
4 Index 0
\Wizards\Table Wizards
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Library |ACCDIR
\Wizards\Table Wizards \Test_Table.mda
\TableDVP
HKEY_CURRENT_ACCESS_PROFILE
1 Version 3
\Wizards\Table Wizards
\TableDVP

V-A-2 - Création de la base de données

Créez une nouvelle base Access, cette base est notre assistant contrôle ou propriété.
Nommez la par exemple Test_Table.mda

On a d'abord besoin de la fonction qui sera le point d'entrée de l'assistant.


On crée donc dans un nouveau module une fonction nommée par exemple Fonction_Test_Table.

La fonction n'a pas de paramètre.

Function Fonction_Test_Table()
' Pour tests, on affiche un message
MsgBox "Assistant table DVP"
End Function

Les propriétés de la base de données doivent également être modifiées, dans Fichier --> Propriétés de la base.

- 20 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

Le Titre, la Société et le Commentaire apparaîtront dans le gestionnaire de compléments.

V-B - Installation

Dans le menu : Outils --> Macros complémentaires --> Gestionnaire de compléments.


Cliquez sur le bouton : Ajoutez un nouveau…, sélectionnez le fichier mda du complément à installer.

On note que les propriétés de la base de données mises à jour précédemment ont bien été utilisées.

Désormais, dans toutes les bases Access, on obtient un nouvel assistant de création de table.

- 21 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

L'exemple affiche simplement une boîte de message.

On peut utiliser par exemple une requête création de table (cf. http://access.developpez.com/sql/#L2.1.1) pour
créer une nouvelle table).

VI - Enchaîner les assistants

Les assistants standards sont compilés en base de données mde.


On n'a donc pas accès à leur code si on souhaite les modifier.

Par contre on peut, dans un assistant, appeler un assistant standard avant de reprendre la main et apporter des
modifications personnalisées.

Pour retrouver les assistants standards, on peut regarder les entrées de la base de registre.
Dans le menu Démarrer de Windows, cliquez Exécuter, Tapez Regedit et cliquez OK.

Déroulez l'arborescence suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Access\Wizards
(le 11.0 peut varier en fonction de votre version d'Access)

On voudrait par exemple exécuter un assistant formulaire avant de reprendre la main et ajouter un en-tête
au code du formulaire.
La clé de registre suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Access\Wizards\Form Wizards\AutoForm:
Tabular
correspond à l'assistant : Formulaire instantané : Tableau (voir la valeur de index pour connaître la position dans
la liste des assistants)

- 22 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

On note dans les valeurs :

• la librairie : acwzmain ;
• la fonction : auto_Entry ;
• les arguments : 2 et 2 ;
• la source de données requise ou non : 1.

Pour appeler cet assistant il faut alors utiliser la fonction suivante :

Run "acwzmain.auto_entry", "NomDelaSource", 2, 2

« NomDelaSource » est le nom de la table ou requête choisie, elle est nécessaire car Datasource Required = 1.

Pour notre assistant on utilisera le code suivant :

Function Fonction_Test_formulaire(Optional pRecordSource As String)


' Appel de l'assistant standard
Run "acwzmain.auto_entry", pRecordSource, 2, 2
' Ouverture du formulaire en mode édition
DoCmd.OpenForm Screen.ActiveForm.Name, acDesign
With Screen.ActiveForm
' Ajout d'une page de code
.HasModule = True
' Ajout du code
.Module.InsertText "'**************** Module créé par assistant DVP *****************" & _
vbCrLf & "' Date : " & Now
End With
End Function

Pour tester ce code de complément, utilisez la partie Assistant formulaire ou état de cet article et remplacer le
codepar celui ci-dessus.

Télécharger ce complément (format Access 2000)

VII - Gestion de la confidentialité avec Access 2007

Access 2007 vous protège via le centre de gestion de la confidentialité.

Le répertoire contenant les compléments doit être approuvé pour qu'ils puissent s'exécuter.
Dans le cas contraire, vous verrez ce message :

Vous devez alors approuver le répertoire de complément:

- Cliquez sur le bouton Office :

- Puis cliquez sur le bouton Options Access :


- Dans le menu de gauche, choisissez Centre de gestion de la confidentialité
- Et cliquez sur le bouton Paramètres du Centre de gestion de la confidentialité…

- 23 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/
ACCESS : Créer des compléments (menu/assistants) en VBA par Thierry GASPERMENT

- Dans le menu de gauche, choisissez Emplacements approuvés


- Cliquez sur le bouton Ajouter un nouvel emplacement….
- Sélectionnez le répertoire où sont copiés les compléments.
Si vous avez utilisé |ACCDIR dans le paramètre library de la table de paramètres USysRegInfo, le répertoire est :
C:\Documents and Settings\[Nom de l'utilisateur]\Application Data\Microsoft\AddIns
(par défaut ce répertoire est caché, pour l'afficher dans l'explorateur Windows : Outils --> Options des dossiers --
> Affichage --> Afficher les fichiers et les dossiers cachés)
- Cochez la case Les sous-dossiers de cet emplacement sont également approuvés.

VIII - Astuces de programmation : CodeDb et CodeProject

Vous avez sans doute l'habitude d'utiliser dans vos programmes les objets CurrentDb et CurrentProject.

Lors de la programmation de compléments, ces deux objets font référence à la base de données dans laquelle
s'exécute le complément.

Si vous souhaitez faire référence au complément (qui rappelons-le, est une base de données presque comme les
autres), vous devrez utiliser les objetsCodeDb et CodeProject.

Remarque : CurrentProject et CodeProject sont apparus avec Access 2000.

IX - Conclusion

Si vos travaux aboutissent à des compléments que vous souhaitez partager, n'hésitez pas à les proposer dans le
forum Vos contributions

- 24 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2007 Thierry GASPERMENT. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.
http://arkham46.developpez.com/articles/access/complements/

Vous aimerez peut-être aussi