Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans Access, il existe deux types de modules : les modules standard et les modules de classe. Dans Access 95, les modules de classe n’existaient qu’en association avec un formulaire ou un état. Dans Access 97, ils figuraient également sous l’onglet Modules de la fenêtre Base de données.
Créer des objets personnalisés avec des modules de classe
Utilisez un module de classe pour créer une définition pour un objet personnalisé. Le nom sous lequel vous enregistrez le module de classe devient le nom de votre objet personnalisé. Les procédures publiques Sub et Function que vous définissez au sein d'un module de classe deviennent les méthodes personnalisées de l'objet. Les procédures publiques Property Let, Property Get et Property Set deviennent les propriétés de l'objet.
Une fois que vous avez défini des procédures dans le module de classe, vous pouvez créer l’objet en créant une nouvelle instance de la classe . Pour créer une nouvelle instance d'une classe, vous devez déclarer une variable du type défini par cette classe. Si, par exemple, le nom de votre classe est UneClasseDeBase, vous créez une nouvelle instance de celle-ci de la manière suivante :
Dim abc As New ABasicClass
Lorsque vous exécutez le code contenant cette déclaration, Visual Basic crée la nouvelle instance. Vous pouvez ensuite appliquer ses méthodes et propriétés à l'aide de la variable. Par exemple, si vous avez défini une méthode personnalisée appelée ListNames, vous pouvez l'appliquer comme suit :
abc.ListNames
Créer l’instance par défaut d’une classe de formulaire (Access 95)
Quand vous ouvrez un formulaire en mode Formulaire, que ce soit à partir de l'interface utilisateur ou de Visual Basic, vous créez une instance du module de classe de ce formulaire. En d'autres mots, vous attribuez de l'espace en mémoire à l'endroit où l'objet existe à présent, et vous pouvez dès lors appeler ses méthodes et définir ou retourner ses propriétés à partir du code, comme pour un objet par défaut. Cela vaut aussi pour les états ouverts en mode Aperçu avant impression.
Lorsque vous faites référence à un formulaire dans le code Visual Basic, vous utilisez généralement l’instance par défaut de la classe du formulaire. La classe d'un formulaire ne possède qu'une seule instance par défaut. Vous pouvez également créer des instances multiples de la classe du même formulaire depuis Visual Basic. Si vous créez des instances multiples d'un formulaire, vous créez des instances qui ne sont pas par défaut.
Vous disposez de quatre manières pour créer l'instance par défaut d'un formulaire. Vous pouvez ouvrir un formulaire existant à l’aide de l’interface utilisateur, en exécutant la méthode OpenForm de l’objet DoCmd , en appelant la méthode CreateForm et en basculant le nouveau formulaire en mode Formulaire, ou en utilisant Visual Basic pour créer une variable de type Form pour faire référence à l’instance par défaut. L'exemple suivant ouvre le formulaire Employés et lui affecte une variable Form:
Dim frm As Form
DoCmd.OpenForm "Employees"
Set frm = Forms!Employees
Access présente également un raccourci qui vous permet d'ouvrir un formulaire et de faire référence à une méthode ou une propriété de ce formulaire ou à un de ses contrôles en une seule opération. Vous pouvez faire référence au module de classe du formulaire comme dans l'exemple suivant :
Form_Employees.Visible = True
Form_Employees.Caption = "New Employees"
Lorsque vous exécutez ce code, Access ouvre le formulaire Employés en mode Formulaire s’il n’est pas déjà ouvert et définit la légende du formulaire sur « Nouveaux employés ». Le formulaire n’est pas visible tant que vous n’avez pas explicitement défini sa propriété Visible sur True. Quand la procédure qui appelle ce code a terminé son exécution, l'instance du formulaire est détruite ; en d'autres termes, le formulaire est fermé.
Si vous tentez d'exécuter ce code pendant que le formulaire Employés est ouvert en mode Création, Access génère une erreur d'exécution. Le formulaire doit être ouvert en mode Formulaire ou ne pas être ouvert du tout.
Si vous utilisez cette syntaxe pour modifier une propriété du formulaire ou un de ses contrôles, cette modification est perdue lorsque l'instance du formulaire est détruite. Cela reste vrai chaque fois que vous modifiez le paramètre d'une propriété pour un formulaire en mode Formulaire. Vous devez modifier la propriété en mode Création et enregistrer la modification avec le formulaire.
Créer plusieurs instances de formulaires non par défaut
Vous pouvez créer des instances multiples (non par défaut) de classes de formulaire si vous voulez afficher simultanément plusieurs instances d'un formulaire. Par exemple, vous souhaitez peut-être afficher en même temps les enregistrements relatifs à un employé et ceux se rapportant à son supérieur. Vous pouvez créer une instance de la classe du formulaire Employés pour afficher les enregistrements de l'employé et une autre instance pour afficher ceux de son supérieur.
Pour créer de nouvelles instances d'une classe de formulaire (non par défaut) à partir de Visual Basic, vous devez déclarer une variable dont le type est le nom de classe du module du formulaire. Vous devez inclure le mot réservé New dans la déclaration de variable. Par exemple, le code suivant crée une nouvelle instance du formulaire Employés et l'affecte à une variable de type Form :
Dim frm As New Form_Employees
Cette instance (non par défaut) du formulaire ne s'affiche que lorsque vous définissez explicitement sa propriété Visible.
Lorsque la procédure qui crée cette instance a fini son exécution, l'instance est supprimée de la mémoire sauf si vous avez déclaré la variable qui la représente en tant que variable au niveau du module. Étant donné que les variables au niveau du module conservent leur valeur jusqu'à ce qu'elles soient redéfinies à l'aide de la commande Réinitialiser du menu Exécution ou du bouton Réinitialiser dans la barre d'outils, le formulaire restera ouvert si la variable a été déclarée en tant que variable au niveau du module.
Toutes les propriétés que vous définissez auront une incidence sur l'instance de la classe du formulaire, mais elles ne seront pas enregistrées avec ce dernier. De plus, une nouvelle instance de la classe du formulaire ne peut être créée si le formulaire est ouvert en mode Création.
Une instance non par défaut de la classe d’un formulaire ne peut pas être référencée par son nom dans la collection Forms . Faites-y référence par numéro d’index uniquement. Comme vous pouvez créer plusieurs instances (qui ne soient pas par défaut) d'un formulaire et que chaque instance porte le même nom, la collection Forms peut contenir plusieurs formulaires du même nom et vous ne pouvez les différencier que par leur numéro d'index.
Assistance et commentaires
Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.