Vous êtes sur la page 1sur 103

COURS ACCESS PAR LA PRATIQUE

Par Jean-Paul M. BAGUMA

COURS DE BASE DE DONNEES


Logiciel Access
1

INTRODUCTION ...............................................................................................................................5
LES OBJETS ..................................................................................................................................5
LES GROUPES ..............................................................................................................................6
TECHNIQUES DE BASE ..................................................................................................................6
OUVRIR UNE BASE DE DONNEES ..........................................................................................6
CONSULTER UNE TABLE OU UNE REQUETE ....................................................................7
CONSULTER DES DONNEES DANS UN FORMULAIRE ....................................................7
CREER UN GROUPE ...................................................................................................................8
FERMER UNE BASE DE DONNEES .........................................................................................8
CREER UNE BASE DE DONNEES ............................................................................................8
CREER UN OBJET .......................................................................................................................9
COMPACTER UNE BASE DE DONNEES ................................................................................9
MODIFICATION DE DONNEES ...................................................................................................9
AJOUTER DES ENREGISTREMENTS...................................................................................9
SAUVEGARDE DES DONNEES ...............................................................................................10
CHAMPS NON MODIFIABLES - SAISIE IMPOSSIBLE .....................................................11
DEPLACEMENT ENTRE LES ENREGISTREMENTS ........................................................11
DEPLACEMENTS AU CLAVIER ............................................................................................11
EDITION AU CLAVIER ............................................................................................................12
LARGEUR D'UNE COLONNE EN MODE FEUILLE DE DONNEES ................................12
DEPLACER UNE COLONNE ...................................................................................................13
SELECTION DES DONNEES ...................................................................................................13
FORMATS DES CARACTERES...............................................................................................14
FIGER UNE COLONNE.............................................................................................................14
TABLE SANS ASSISTANT..............................................................................................................15
CREER UNE TABLE SANS ASSISTANT ...............................................................................15
CREER UNE LISTE DE CHOIX...............................................................................................16
DEFINIR UNE CLE PRIMAIRE...............................................................................................17
ENREGISTRER LA TABLE......................................................................................................17
SAISIR LES ENREGISTREMENTS.........................................................................................17
MODIFIER UNE TABLE ................................................................................................................18
PASSER DU MODE CREATION AU MODE FEUILLE DE DONNEES ............................18
AJOUTER DES CHAMPS DANS UNE TABLE ......................................................................18
DEPLACER UN CHAMP ...........................................................................................................18
INSERER UN NOUVEAU CHAMP ..........................................................................................19
SUPPRIMER UN CHAMP .........................................................................................................20
PROPRIETES DES CHAMPS .........................................................................................................20
©Jean-Paul BAG - 2010
2

DEFINIR UNE PROPRIETE DE CHAMP...............................................................................20


TAILLE D'UN CHAMP ..............................................................................................................20
FORMAT D'AFFICHAGE .........................................................................................................21
MASQUE DE SAISIE..................................................................................................................22
VALEUR PAR DEFAUT ............................................................................................................23
PROPRIETE NULL INTERDIT................................................................................................24
REGLES DE VALIDATION DES DONNEES DE CHAMP ..................................................24
IMPORTER - EXPORTER...............................................................................................................25
IMPORTER UNE FEUILLE EXCEL .......................................................................................25
EXPORTER DANS UNE FEUILLE DE CALCUL EXCEL...................................................26
LES FILTRES ...................................................................................................................................27
FILTRE PAR SELECTION .......................................................................................................27
FILTRE PAR FORMULAIRE ...................................................................................................28
FORMULAIRE AVEC ASSISTANT ...............................................................................................28
CREER UN FORMULAIRE INSTANTANE ...........................................................................29
CREER UN FORMULAIRE AVEC UN ASSISTANT ............................................................29
SUPPRIMER UN ENREGISTREMENT EN MODE FORMULAIRE .................................30
MANIPULER LES CONTROLES ...................................................................................................30
MODES D'AFFICHAGE DU FORMULAIRE.........................................................................30
SELECTION DES CONTROLES..............................................................................................31
DEPLACER DES CONTROLES ...............................................................................................31
DIMENSIONNER DES CONTROLES .....................................................................................32
ALIGNER LES CONTROLES ENTRE EUX ..........................................................................33
SUPPRIMER UN CONTROLE .................................................................................................33
PERSONNALISER UN FORMULAIRE.........................................................................................33
CONTROLES DANS UN FORMULAIRE ...............................................................................33
AJOUTER DES CONTROLES DEPENDANTS ......................................................................34
AJOUTER DES CONTROLES AVEC LA BOITE A OUTILS .............................................34
CREER UNE ZONE DE TEXTE CALCULE...........................................................................35
CREER UN INTITULE...............................................................................................................35
ZONE DE LISTE OU LISTE MODIFIABLE AVEC UN ASSISTANT ................................36
SAISIE DE NOUVELLES VALEURS DANS UNE LISTE MODIFIABLE .........................38
RECHERCHER UN ENREGISTREMENT .............................................................................39
INSERER UN CONTROLE ONGLET .....................................................................................40
VALEURS OUI/NON ..................................................................................................................42
GROUPE D'OPTIONS ................................................................................................................43
SAUT DE PAGE...........................................................................................................................44
©Jean-Paul BAG - 2010
3

PROPRIETES D'UN FORMULAIRE ........................................................................................45


AFFICHER ET MODIFIER LES PROPRIETES D'UN CONTROLE .................................45
MODIFICATION DE L'ORDRE DE SAISIE DES CONTROLES .......................................46
AJOUT DE SECTIONS...............................................................................................................47
DIMENSIONNER UNE SECTION ...........................................................................................47
AFFICHER ET MODIFIER LES PROPRIETES D'UNE SECTION ...................................48
AFFICHER ET MODIFIER LES PROPRIETES DU FORMULAIRE ................................48
FONCTION D'EDITION PAR DEFAUT .................................................................................48
MISE EN FORME D'UN FORMULAIRE......................................................................................49
FORMAT AUTOMATIQUE ......................................................................................................49
DESSINER UN RECTANGLE OU UN TRAIT .......................................................................49
STYLE - POLICE - TAILLE DE CARACTERES - ALIGNEMENT ...................................50
CHOIX DES ENCADREMENTS ET COULEURS .................................................................51
CREER DES CONTROLES EN TROIS DIMENSIONS ........................................................51
ETAT AVEC ASSISTANT................................................................................................................51
CREER UN ETAT INSTANTANE ............................................................................................52
CREER UN ETAT AVEC UN ASSISTANT .............................................................................52
MODES D'AFFICHAGE DE L'ETAT ......................................................................................55
CREATION DE REQUETES ...........................................................................................................56
CREER UNE REQUETE SANS ASSISTANT..........................................................................56
AJOUTER UN CHAMP A LA REQUETE ...............................................................................56
AJOUTER PLUSIEURS CHAMPS ...........................................................................................57
CONSULTER LES ENREGISTREMENTS DE LA REQUETE ...........................................58
SAUVEGARDER LA REQUETE ..............................................................................................58
TRI DES ENREGISTREMENTS...............................................................................................58
MODIFIER UNE REQUETE ..........................................................................................................59
DEPLACER UN CHAMP ...........................................................................................................59
INSERER UNE COLONNE VIERGE.......................................................................................60
INSERER UN CHAMP ...............................................................................................................60
SUPPRIMER UN CHAMP .........................................................................................................60
EXCLURE UN CHAMP DE LA FEUILLE DE REPONSES .................................................61
REQUETE SELECTION..................................................................................................................61
DEFINIR UN CRITERE .............................................................................................................61
VISUALISER LES RESULTATS ..............................................................................................62
EXPRESSIONS COURANTES ..................................................................................................62
UTILISATION DE CARACTERES GENERIQUES ..............................................................63
SELECTION DES ENREGISTREMENTS PAR DIFFERENCE ..........................................64
©Jean-Paul BAG - 2010
4

SELECTION DES ENREGISTREMENTS VIDES OU NON VIDES ...................................64


SELECTION DE LA DATE DU JOUR.....................................................................................64
CRITERES COMPRENANT UNE OPERATION...................................................................64
CRITERES COMPRENANT DES NOMS DE CHAMPS.......................................................65
COMBINAISON DE PLUSIEURS CRITERES .......................................................................65
CRITERES SUPPLEMENTAIRES ...........................................................................................66
CREATION DE CHAMPS CALCULES...................................................................................66
CHAMPS CALCULES AFFICHANT UNE PARTIE DE CHAMP TEXTE ........................67
CHAMP CALCULE AFFICHANT UNE PARTIE DE CHAMP DATE ...............................67
SELECTION DE VALEURS UNIQUES...................................................................................68
CHANGER LE NOM DU CHAMP............................................................................................69
OPERATIONS SUR TOUS LES ENREGISTREMENTS D'UNE TABLE...........................69
OPERATIONS SUR DES GROUPES D'ENREGISTREMENTS ..........................................70

CREATION DES BARRES DE MENUS, D’OUTILS ET DE MENUS CONTEXTUELS


PERSONNALISES (FICHES OUTILS 5.10 A 5.30)………………………………………….71

CREATION DE LA BARRE DE MENU………………………………………………………71


PROGRAMMATION VBA……………………………………………………………………..72
VARIABLES VBA…………………………………………………………………………….....72
L’OBJET DOCMD………………………………………………………………………………77
77
L’OBJET RECORDSET………………………………………………………………………...87
FONCTION MSGBOX………………………………………………………………………….94

FONCTION INPUTBOX……………………………………………………………………......96

QUELQUES EXEMPLES PRATIQUES………………………………………………………97

©Jean-Paul BAG - 2010


5

INTRODUCTION

Une Base de Données sert à stocker et à traiter des informations. On peut ainsi utiliser une Base de
Données pour gérer un fichier Clients, un fichier du Personnel, un système de Commandes et de
Facturation, un système de Gestion des Stocks, etc.

ACCESS est un Système de Gestion de Bases de Données Relationnelles. La particularité des Bases de
Données Relationnelles est de pouvoir mettre en relation des fichiers (appelés ici Tables) différents en
établissant des liens entre eux.

LES OBJETS

Une Base de Donnée est composée de différents types d'objets ayant chacun une fonction propre.

Les Tables

Une Table comporte des données relatives à une catégorie d'informations. Elle est composée de
champs (colonnes) et d'enregistrements (lignes).

Les Requêtes

Une Requête peut être considérée comme une interrogation posée à la Base de Données. Le
résultat de la requête se présente comme une table, en lignes et en colonnes, composée des seuls
enregistrements répondant à la question posée.

Les Formulaires

Un Formulaire est un format d'écran destiné à rendre plus agréable la consultation, la saisie
ou la modification des données d'une table. Il facilite également le contrôle des informations
saisies par l'utilisateur.
Un Formulaire peut également être basé sur une requête.
On pourra également insérer des sous-formulaires, basés sur d'autres sources, dans un formulaire
principal.

Les Etats

Un Etat est utilisé pour définir le format selon lequel les données de la requête seront imprimées.
Un Etat peut également être basé sur une table.

Les Pages

Un objet Page permet la création de pages Web accessibles par Internet ou sous un Intranet.
Comme les Formulaires, les Pages sont des formats d'écran autour des données provenant d'une
table ou d'une requête.
©Jean-Paul BAG - 2010
6

Les Macros

Une Macro est une suite d'instructions permettant d'automatiser l'exécution d'une suite d'actions
répétitives.
Les Modules

Un Module est un programme rédigé dans le langage Visual Basic. On utilisera un Module pour
solutionner un problème trop complexe pour les macros.

LES GROUPES

Ils sont assimilables aux dossiers de Windows et contiennent des raccourcis vers les objets de la Base de
Données.
Ils sont accessibles à partir de la barre Groupes située à gauche de la fenêtre Base de Données.

TECHNIQUES DE BASE

OUVRIR UNE BASE DE DONNEES

On ne peut pas avoir plus d'une base de données ouverte à la fois.

• Cliquer l'icône Ouvrir


ou
• FICHIER
• Ouvrir (CTRL+O)

• Sélectionner l'unité et le dossier


• Cliquer la base de données à ouvrir

• Cliquer le bouton
ou
Cliquer la flèche à droite du bouton

Cliquer Ouvrir en lecture seule ou Ouvrir en exclusif (empêche dans un environnement multi-
©Jean-Paul BAG - 2010
7

utilisateur, les autres utilisateurs de modifier les données et les objets de la base de données).

La fenêtre affiche la liste des tables de la base de données. Les onglets d'objets offrent un accès direct
à chaque objet de la base.

Note:
On retrouve dans ACCESS la gestion des documents Favoris, identique à celle de Word et d'Excel. Idem pour
les différentes formes d'affichage des fichiers.

CONSULTER UNE TABLE OU UNE REQUETE

• Cliquer l'Objet Tables ou cliquer l'Objet Requêtes

• Cliquer deux fois sur le nom de la table ou de la requête à consulter


ou
• Cliquer sur la table ou sur la requête
• Cliquer le bouton
ACCESS affiche la table ou la requête en mode Feuille de données

CONSULTER DES DONNEES DANS UN FORMULAIRE

• Depuis la fenêtre Base de Données, cliquer l'Objet Formulaires

• Cliquer deux fois le nom du formulaire à consulter


ou
• Cliquer le nom du formulaire
• Cliquer le bouton

Mode d'affichage d'un Formulaire

• Cliquer la flèche déroulante à droite de l'icône Affichage

©Jean-Paul BAG - 2010


8

• Cliquer le mode d'affichage désiré

CREER UN GROUPE

• Pointer un espace vide de la barre Objets ou de la barre Groupes


• Cliquer le bouton droit de la souris
• Nouveau Groupe
• Saisir le nom du nouveau Groupe
• Cliquer OK

Pour ajouter le raccourci d'un objet à un Groupe

• Faire glisser le nom de l'objet dans le Groupe de destination.

FERMER UNE BASE DE DONNEES

• Activer la fenêtre Base de données (par F11 ou l'icône Fenêtre Base de données )
• FICHIER
• Fermer

CREER UNE BASE DE DONNEES

On crée en fait un nouveau fichier dans lequel seront placés les tables et les objets de la base.

• Cliquer l'icône Nouvelle base de données


ou
• FICHIER
• Nouvelle base de données (CTRL+N)
• Prendre comme modèle Base de données
• Cliquer OK
On pourrait aussi, par l'onglet Bases de données, utiliser un modèle préformaté
• Taper le nom de la base de données
• Sélectionner l'unité et le dossier de destination
• Cliquer le bouton
ACCESS affiche alors la fenêtre "Base de données" à partir de laquelle on crée les objets de la base.

©Jean-Paul BAG - 2010


9

CREER UN OBJET

Après avoir créé une base de données, la première étape consiste à créer des tables. Après quoi, on
crée des requêtes, des formulaires, des états, et tous les objets qui aideront à exploiter les données
contenues dans ces tables.

• Depuis la fenêtre Base de Données, cliquer l'Objet correspondant


• Cliquer le bouton

COMPACTER UNE BASE DE DONNEES

Quand on effectue des modifications dans une base de données (ajout ou suppression d'objets), il
arrive que son fichier se fragmente et n'utilise pas l'espace disque de façon optimale. Il est donc conseillé
de compacter régulièrement la base de données afin d'en défragmenter le fichier. Le fichier de Base de
Données est en général plus petit après compactage.

• On doit fermer la Base de Données avant de la compacter


• OUTILS
• Utilitaires de base de données
• Compacter une base de données
• Sélectionner la base de données à compacter
• Cliquer le bouton

• Rentrer le nom (il peut être identique), l'unité et le dossier de la base de données compactée
• Cliquer le bouton
• Cliquer Oui si on utilise le même nom

MODIFICATION DE DONNEES

AJOUTER DES ENREGISTREMENTS

Applicable dans une table, dans une requête ou un formulaire.

Chaque table, requête ou formulaire contient un enregistrement vierge réservé aux nouvelles données,
situé en fin de liste. Le sélecteur de cet enregistrement vierge contient un astérisque .

Saisie d'un nouvel enregistrement dans une table

• Ouvrir la table
• Cliquer dans la première cellule de la dernière ligne de la table, précédée par
• Saisir le premier champ
• Taper TAB pour accéder au champ suivant
• Effectuer la saisie du champ suivant
• Procéder ainsi pour chaque champ
©Jean-Paul BAG - 2010
10

• A la fin de l'enregistrement, taper TAB pour passer à l'enregistrement suivant


ACCESS sauvegarde alors automatiquement l'enregistrement saisi
• A la fin de la saisie, fermer la table

Note:
Pour ajouter des enregistrements sans visualiser les enregistrements existants, activer la commande
ENREGISTREMENTS/Saisie de données. Pour réafficher le contenu de toute la table, activer la commande
ENREGISTREMENTS/Afficher tous les enregistrements.

Symboles d'enregistrements:

Enregistrement en cours (contenant le pointeur)


Crayon: modification de l'enregistrement en cours

SAUVEGARDE DES DONNEES

ACCESS sauvegarde automatiquement les modifications lorsque l'on passe à un autre


enregistrement, ou lorsque l'on ferme le formulaire ou la feuille de données.

Sauvegarder l'enregistrement courant (sans passer au suivant)

• Taper MAJ+RETOUR
ou
• ENREGISTREMENTS
• Sauvegarder l'enregistrement

©Jean-Paul BAG - 2010


- 11 -

CHAMPS NON MODIFIABLES - SAISIE IMPOSSIBLE

Champs NuméroAuto
ACCESS assigne automatiquement un numéro séquentiel pour chaque enregistrement. Ce
type de champ est souvent utilisé comme numéro d'enregistrement ou "clé primaire"

Champs Calculés ou issus de certains types de requêtes


Calculs effectués par ACCESS

Champs verrouillés ou désactivés (Formulaire)


Si la propriété "Verrouillé" d'un champ a pour paramètre "Oui" ou si sa propriété "Activé" a
pour paramètre "Non", on ne peut pas modifier son contenu
Si on utilise ACCESS dans un environnement multi-utilisateur, on ne peut pas modifier les
données d'un enregistrement verrouillé par un autre utilisateur

Champs dans un formulaire en lecture seule ou dans une base de données verrouillée
Si la propriété "Modif autorisée" du formulaire a pour paramètre "Non" ou si les données
sous-jacentes sont dans une base de données verrouillée, aucune modification n'est possible.

DEPLACEMENT ENTRE LES ENREGISTREMENTS

Par les menus

• EDITION
• Atteindre
• Cliquer Premier ou Dernier ou Suivant ou Précédent ou Nouvel enregistrement

Par les boutons de déplacement

Premier enregistrement
Enregistrement précédent
Enregistrement suivant
Dernier enregistrement
Nouvel enregistrement

Atteindre un enregistrement précis

• Taper F5
ou
• Cliquer deux fois sur le numéro d'enregistrement courant

• Taper le numéro d'enregistrement à atteindre et valider

DEPLACEMENTS AU CLAVIER

TAB Champ suivant


MAJ+TAB Champ précédent
Pos 1 Premier champ de l'enregistrement (après sélection d'un champ)
©Jean-Paul BAG - 2010
- 12 -

Fin Dernier champ de l'enregistrement (après sélection d'un champ)


CTRL+Pg AR Enregistrement précédent dans un formulaire
CTRL+Pg AV Enregistrement suivant dans un formulaire
Flèche Haute Enregistrement précédent dans une feuille de données
Flèche basse Enregistrement suivant dans une feuille de données
CTRL+Pos 1 Premier champ du premier enregistrement
CTRL+Fin Dernier champ du dernier enregistrement
Pg AR Un écran vers le haut
Pg AV Un écran vers le bas

EDITION AU CLAVIER

F2 Sélection du champ en cours ou désactivation de cette sélection


ECHAPP Annuler les modifications en cours
CTRL+RETOUR Insérer une nouvelle ligne dans un champ
CTRL+" Copier la valeur du même champ de l'enregistrement précédent
CTRL+ALT+ESPACE Inscrit dans le champ sa valeur par défaut
ALT+Flèche basse Ouvre une liste modifiable pour afficher ses valeurs
MAJ+F2 Visualise et modifie le champ en cours en mode Zoom
F9 Mise à jour des enregistrements affichés

Note:
Pour annuler les modifications faites sur un champ, taper sur la touche ECHAP.
Pour annuler toutes les modifications faites dans l'enregistrement courant, taper deux fois sur la touche
ECHAP.

LARGEUR D'UNE COLONNE EN MODE FEUILLE DE DONNEES

Avec la souris:

• Pointer le trait vertical à droite de l'étiquette de colonne

• Cliquer deux fois pour ajuster automatiquement la largeur à la plus grande saisie
ou
• Presser et faire glisser pour élargir ou rétrécir

Avec les menus

• Cliquer un champ dans la colonne


• FORMAT
• Largeur de colonne

• Taper une valeur et cliquer OK


ou
• Cliquer Ajuster

Note:
On peut redimensionner plusieurs colonnes en une opération, en les sélectionnant par leurs étiquettes

©Jean-Paul BAG - 2010


- 13 -

DEPLACER UNE COLONNE

• Cliquer sur l'étiquette de colonne pour la sélectionner

• Pointer l'étiquette de colonne


• Presser et faire glisser (trait vertical) à la position désirée
• Relâcher

SELECTION DES DONNEES

Champs adjacents

• Cliquer dans le premier champ à sélectionner


• Taper F2 pour sélectionner ce champ
• MAJ pressée
• Utiliser les flèches pour sélectionner les champs adjacents
ou
• Cliquer sur le bord gauche à l'intérieur du premier champ et maintenir pressé
• Faire glisser
ou
• Sélectionner le premier champ
• MAJ pressée
• Cliquer sur le dernier champ à sélectionner

Colonne entière (tous les champs)

• Pointer et cliquer le nom de la colonne


ou
• Pointer le nom de la première colonne
• Presser et faire glisser pour sélectionner les colonnes adjacentes
ou
• Cliquer dans un champ de la colonne
• Taper F2 pour sélectionner ce champ
• Taper CTRL+ESPACE
• Pour sélectionner les colonnes adjacentes, taper MAJ+DROITE ou MAJ+GAUCHE

©Jean-Paul BAG - 2010


14

Enregistrements

• Pointer et cliquer le sélecteur de la ligne


ou
• Pointer le sélecteur de la première ligne
• Presser et faire glisser pour sélectionner les lignes adjacentes
ou
• Cliquer dans un champ de la ligne
• Taper F2 pour sélectionner le champ
• Taper MAJ+ESPACE
• Pour sélectionner les lignes adjacentes, taper MAJ+HAUT ou MAJ+BAS

Sélectionner tous les enregistrements d'une feuille de données

• Cliquer sur la case vide à gauche des étiquettes de colonnes

FORMATS DES CARACTERES

• Ouvrir la table ou la requête en Mode Feuille de données


• FORMAT
• Police
• Sélectionner une police, un style, une taille et une couleur
• Cliquer OK
Les modifications affectent l'ensemble des données de la feuille

FIGER UNE COLONNE

La procédure permet de toujours conserver sur la gauche de l'écran, les colonnes sélectionnées.

• Ouvrir la table ou la requête en Mode Feuille de données


• Sélectionner les colonnes à figer
• FORMAT
• Figer les colonnes

Libérer les colonnes figées

• FORMAT
• Libérer toutes les colonnes

©Jean-Paul BAG - 2010


15

TABLE SANS ASSISTANT


Une table comporte des données relatives à une catégorie d'informations. Elle est composée de
champs et d'enregistrements que l'on peut considérer respectivement comme les colonnes et les
lignes d'un tableau. Pour chaque champ, il faut définir son nom et le type de contenu.

CREER UNE TABLE SANS ASSISTANT

• Depuis la fenêtre Base de données, cliquer l'Objet Tables


• Cliquer le bouton Nouveau
• Cliquer Mode Création
• Cliquer OK

• Taper le nom du premier champ (64 caract. maxi.)


• Valider ou taper TAB (MAJ+TAB permet de revenir en arrière)
• Cliquer la flèche vers le bas dans la zone "Type de données"
• Cliquer le type de données du champ créé
• Valider ou taper TAB
• Saisir un texte de commentaire, décrivant l'objet du champ (facultatif)
• Valider ou taper TAB

• Saisir le nom du deuxième champ


• Valider ou taper TAB
• Sélectionner un type de données
• Valider ou taper TAB
• Saisir une description
• Valider ou taper TAB
• Procéder ainsi pour chaque champ de la table

Notes sur les Types de données:


On doit choisir pour chaque champ le type de données qu'il contiendra, en fonction de la saisie autorisée dans
le champ (Texte par défaut)

Texte Caractères alphanumériques (jusqu'à 255)


Mémo Caractères alphanumériques (jusqu'à 64000) Numérique Nombres
entiers ou décimaux (jusqu'à 8 chiffres) Date/Heure Dates et Heures (8 caractères)
Monétaire Valeurs monétaires (8 caractères)
NuméroAuto Valeur d'incrément par nouvel enregistrement (4 caractères)
Oui/Non Valeurs booléennes

Objet OLE Objets OLE, graphiques et autres données externes


(jusqu'à 1 giga-octets selon l'espace disque)

©Jean-Paul BAG - 2010


16

Lien hypertexte Adresse URL ou adresse EMAIL


Assistant Liste de choix Création d'une liste déroulante dans la table

On utilise le type "Monétaire" si on doit exécuter de nombreuses opérations sur un champ qui contient des
données comprenant de une à quatre décimales. Les champs de type "Réel simple" et "Réel double" exigent des
opérations en virgule flottante. Les champs de type "Monétaire" utilisent des opérations plus rapides en
virgule fixe.

CREER UNE LISTE DE CHOIX

Lorsque ce type de champ est utilisé, ACCESS propose, lors de la saisie, un ensemble de valeurs
sous forme de liste déroulante.
Les valeurs proposées dans une liste de choix peuvent être des données constantes déterminées lors
de la création de la table ou des données variables issues d'une table ou d'une requête.
Lorsque l'on crée un formulaire basé sur une table contenant un champ de type "Liste de choix", une
zone de liste déroulante est automatiquement créée pour le champ concerné.

• Ouvrir la table en mode Création


• Saisir le nom du champ
• Sélectionner le type Assistant Liste de choix

Liste de valeurs constantes (saisies)

• Activer l'option Je taperai les valeurs souhaitées


• Cliquer Suivant
• Saisir le nombre de colonnes souhaité dans la liste
• Cliquer dans la première cellule de saisie
• Saisir le premier élément de la liste
• Se placer dans la cellule suivante
• Saisir l'élément suivant de la liste
• Se placer dans la cellule suivante
• Procéder ainsi pour saisir tous les éléments de la liste

• Cliquer Suivant
• Conserver la même étiquette pour le nom de champ
• Cliquer Terminer

Valeurs issues d'une table ou d'une requête

• Activer l'option Je veux que la liste de choix recherche les valeurs dans une table ou
requête
• Cliquer Suivant
• Sélectionner la table ou la requête contenant le champ dont les valeurs sont à utiliser
dans la liste de choix
©Jean-Paul BAG - 2010
17

• Cliquer Suivant
• Cliquer deux fois sur le champ contenant les valeurs à utiliser dans la liste de choix
Afin de placer ce champ dans la zone "Champs sélectionnés"
• Cliquer Suivant
• Régler la largeur de la colonne
• Cliquer Suivant
• Conserver la même étiquette pour le nom de champ
• Cliquer Terminer

DEFINIR UNE CLE PRIMAIRE

Une table doit comporter au moins un champ qui identifie de manière unique chaque
enregistrement. Ce champ s'appelle la clé primaire (souvent un code ou un numéro, propre à chaque
enregistrement).
Lorsque l'on visualisera les enregistrements, ACCESS les affichera en les triant sur la clé primaire.

• Cliquer sur la ligne du champ utilisé comme clé primaire


• Cliquer l'icône Clé primaire

Notes:
1. Pour créer une clé primaire multichamp, maintenir CTRL pressée et cliquer sur le sélecteur de ligne de
chaque champ concerné. A utiliser lorsque la table ne contient aucun champ de valeur unique (Ex:
Chambre d'hôtel et Date de réservation).
2. Pour supprimer une clé primaire, cliquer de nouveau sur l'icône Clé primaire.

ENREGISTRER LA TABLE

• FICHIER
• Enregistrer sous
• Taper le nom de la table (64 caract. maxi.)
• Cliquer OK

SAISIR LES ENREGISTREMENTS

• Cliquer l'icône Affichage (ou AFFICHAGE/Mode Feuille de données)


• Saisir le contenu de chaque champ, dans chaque enregistrement, en validant pour passer de
l'un à l'autre
• Cliquer la case de fermeture pour fermer la table

©Jean-Paul BAG - 2010


18

Note:
Pour saisir les valeurs d'un champ de type "Liste de choix", accéder à la cellule du champ, cliquer la flèche sur
sa droite puis sélectionner un élément de la liste déroulante.

MODIFIER UNE TABLE

PASSER DU MODE CREATION AU MODE FEUILLE DE DONNEES

Chaque table peut s'ouvrir en deux modes:


1. Le Mode Création, pour en modifier la structure
2. Le mode Feuille de Données, pour effectuer des opérations sur les enregistrements

• Cliquer l'icône Affichage (ou AFFICHAGE/Création)


ou
• Cliquer l'icône Affichage (ou AFFICHAGE/Mode Feuille de données)

AJOUTER DES CHAMPS DANS UNE TABLE

• Depuis la fenêtre Base de Données, cliquer l'Objet Tables


• Cliquer la table dans laquelle on souhaite ajouter des champs
• Cliquer le bouton
• Cliquer dans la cellule vide sous les noms de champs

• Taper le nom du nouveau champ


• Valider pour se placer dans la zone "Type de données"
• Cliquer la flèche et sélectionner le type de données
• Valider pour se placer dans la zone "Description"
• Taper un texte de commentaire, décrivant le champ
• Valider
• Procéder de même pour chaque nouveau champ
• Cliquer l'icône Enregistrer

Saisir les informations des nouveaux champs

• Cliquer l'icône Affichage


• Saisir chaque cellule des nouveaux champs
• Cliquer la case de fermeture pour fermer la table

DEPLACER UN CHAMP

• Ouvrir la table en mode Création


• Cliquer sur le sélecteur de ligne à gauche du nom de champ à déplacer

©Jean-Paul BAG - 2010


19

• Pointer le sélecteur
• Presser et faire glisser la ligne horizontale noire jusqu’à la position désirée
• Relâcher

INSERER UN NOUVEAU CHAMP

• Ouvrir la table en mode Création


• Cliquer dans la ligne qui se retrouvera sous celle insérée

• Cliquer l’icône Insérer des lignes (ou INSERTION/Lignes)


• Taper le nom du champ
• Valider
• Sélectionner un type de données
• Valider
• Saisir un texte de commentaire (facultatif)

©Jean-Paul BAG - 2010


20

SUPPRIMER UN CHAMP

• Ouvrir la table en mode Création


• Cliquer dans la ligne correspondant au champ à supprimer
• Cliquer l’icône Supprimer les lignes (ou EDITION/Supprimer les lignes)
• Cliquer Oui pour confirmer la suppression des données

PROPRIETES DES CHAMPS


Chaque champ d'une table possède un ensemble de propriétés permettant de contrôler avec
précision la manière dont ACCESS enregistre, manipule, et affiche les données dans le champ.

DEFINIR UNE PROPRIETE DE CHAMP

• Ouvrir la table en mode Création


• Cliquer dans la ligne du champ concerné par la propriété
• Cliquer sur la propriété à définir ou taper F6 et utiliser les flèches pour accéder à la propriété

Suivant la propriété:
• Taper un paramètre
ou
• Cliquer sur la flèche
• Cliquer sur un élément de la liste proposée

• Cliquer l'icône Enregistrer pour sauvegarder les modifications

TAILLE D'UN CHAMP

La propriété "Taille du champ" permet de spécifier la taille maximale des données pouvant être
contenues dans un champ pour les données de type "Texte", "Numérique" ou "NuméroAuto".
Il est conseillé d'utiliser la plus petite valeur possible pour la propriété "Taille du champ" car les
données de petite taille sont traitées plus rapidement.

Champs de type NuméroAuto

La propriété "Taille du champ" peut prendre la valeur "Entier long" ou "N° réplication".

Champs de type "Texte"

La taille du champ (entre 1 et 255) précise le nombre maximal de caractères autorisés. Par
défaut, la valeur utilisée est 50. ACCESS utilise seulement en mémoire la saisie effectuée, et
non pas la place attribuée.
Champs de type "Numérique"
©Jean-Paul BAG - 2010
21

La taille du champ détermine la plage de valeurs


autorisées, ainsi que l'exclusion ou non des nombres
décimaux. Par défaut, ACCESS attribue la valeur "Entier
long", qui autorise tous les nombres.

Taille du Valeurs Décimales Taille


champ d'enreg.
Octet 0 à 255 0 1 octet
Entier -32768 à 32767 0 2 octets
Entier long -2147483648 à 2147483647 0 4 octets
Réel simple -3,4E38 et -1,4E-45 pour les 15 4 octets
valeurs négatives
1,4E-45 et 3,4E38 pour les
valeurs positives
Réel double -1,8E308 et -4,9E-324 pour les 15 8 octets
valeurs négatives
1,8E308 et 4,9E-324 pour les
valeurs positives
N° réplication Identifiant globalement unique 16 octets
(permet d'identifier des tables,
des enregistrements, des
objets)
Synchronisation des tables
Décimal Permet de préciser le nombre 15
de chiffres avant et après le
séparateur décimal (précision
égale à 18)

Notes:
1. Pour agrandir la zone de saisie d'une propriété, taper MAJ+F2
2. On peut spécifier la taille par défaut des champs de type "Texte" et "Numérique" en modifiant les valeurs
dans la zone "Tailles de champ par défaut" sur l'onglet "Tables/Requêtes", dans le menu OUTILS/Options.

FORMAT D'AFFICHAGE

Le format n'affecte que l'affichage de la valeur du champ, et non la valeur enregistrée dans la table.
Une fois le format défini, ACCESS l'applique dans les feuilles de données de table et de requête et
affectera les nouveaux formulaires ou états.
Avec la propriété "Décimales" en complément, on peut spécifier le nombre de décimales affichées.
Si on choisit "Auto", ACCESS affiche 0 décimale pour le format "Fixe" et 2 décimales pour les
autres formats.

On peut appliquer dans ACCESS les mêmes formats personnalisés que ceux d'EXCEL. Il suffit de
saisir le code de format dans la zone Format des propriétés.

©Jean-Paul BAG - 2010


22

Champs Numérique:

Par exemple, un format numérique comportera quatre parties, séparées par des points-
virgules. Première partie pour les nombres positifs, deuxième pour les nombres négatifs,
troisième pour les valeurs 0, quatrième s'il n'y a aucune valeur.

Le chiffre 0 affiche les nombres tels quels.


Le signe # est utilisé pour des chiffres pouvant être saisis ou non.

• Cliquer dans la ligne du champ concerné


• Cliquer dans la propriété Format
• Cliquer la flèche à droite de la propriété Format
• Sélectionner le code de format de son choix
ou
• Saisir le code de format désiré

• Cliquer l'icône Enregistrer pour sauvegarder les modifications

Champs Texte:

Un format texte comprendra trois parties, séparées par des points-virgules. Première partie
aux champs comportant du texte, la deuxième aux champs contenant des chaînes vides
(aucun caractère), la troisième aux champs Null (aucune valeur).

@ représente un caractère qui devra toujours être saisi


& représente un caractère qui pourra être saisi ou non
< transforme les caractères saisis en minuscules
> transforme les caractères saisis en majuscules

• Cliquer dans la ligne du champ concerné


• Cliquer dans la propriété Format
• Saisir le code de format désiré

• Cliquer l'icône Enregistrer pour sauvegarder les modifications

MASQUE DE SAISIE

Le masque de saisie a pour but de faciliter la saisie d'un champ complexe, comme un numéro de
téléphone par exemple, en utilisant un format adéquat.
Applicable à tous les types de champs sauf de type Mémo ou NuméroAuto.

©Jean-Paul BAG - 2010


23

Champs Numérique:

• Cliquer dans la ligne du champ concerné


• Cliquer dans la propriété Masque de saisie
• Saisir le masque en remplaçant les caractères à saisir dans le champ par
0 pour des chiffres devant obligatoirement être saisis
# pour des chiffres pouvant être saisis ou non
• Cliquer l'icône Enregistrer pour sauvegarder les modifications

Champs Date/Heure:

• Cliquer dans la ligne du champ concerné


• Cliquer dans la propriété Masque de saisie
• Cliquer sur l'icône du Générateur d'expression à droite de la propriété
• Cliquer Oui pour sauvegarder la table
• Sélectionner le format désiré
• Cliquer Suivant
• Sélectionner un caractère d'espace réservé
• Cliquer Suivant
• Cliquer Terminer
• Cliquer l'icône Enregistrer pour sauvegarder les modifications

Champs Texte:

• Cliquer dans la ligne du champ concerné


• Cliquer dans la propriété Masque de saisie
• Cliquer sur l'icône du Générateur d'expression à droite de la propriété
• Cliquer Oui pour sauvegarder la table
• Sélectionner le format désiré
• Cliquer Suivant
• Sélectionner un caractère d'espace réservé
• Cliquer Suivant
• Sélectionner un mode d'écriture de stockage des données
• Cliquer Suivant
• Cliquer Terminer
• Cliquer l'icône Enregistrer pour sauvegarder les modifications

Exemple d'un masque de saisie pour un champ N° de téléphone

VALEUR PAR DEFAUT

Pour tous les champs sauf de type NuméroAuto. Le champ sera automatiquement rempli d'une
valeur donnée. Utile lorsqu'un champ contient souvent la même valeur. Valable pour les
enregistrements à venir.

Exemple:

©Jean-Paul BAG - 2010


24

PROPRIETE NULL INTERDIT

En précisant "Oui" à la propriété "Null interdit", le champ concerné devra obligatoirement contenir
une valeur pour chaque enregistrement.
Les champs Texte ou Memo possèdent en plus la propriété "Chaîne vide autorisée", qui détermine
si un champ peut contenir des chaînes vides (""), différentes de la valeur Null.

Si on attribue la valeur "Oui" aux propriétés "Chaîne vide autorisée" et "Null interdit":

On pourra enregistrer des chaînes vides au lieu de valeurs Null lorsqu'on laisse un champ
vierge; (différence de traitement dans les requêtes: Access n'inclut pas dans la feuille de
réponses les enregistrements dont les champs critères contiennent des valeurs Null).

Si on attribue la valeur "Oui" à la propriété "Chaîne vide autorisée" et "Non" à "Null interdit":

On peut autoriser l'enregistrement de valeurs Null et de chaînes vides, afin de distinguer par
exemple les valeurs inconnues (Null) des valeurs inexistantes (""). Champ vierge = Null
Champ contenant "" = Chaîne vide

REGLES DE VALIDATION DES DONNEES DE CHAMP

Il s'agit de définir les conditions particulières que doivent remplir les données d'un champ, en plus
du type de données que contrôle ACCESS en permanence.
On peut prévoir également le texte qui s'affichera en cas de transgression de la règle de validation.

• Ouvrir la table en mode Création


• Cliquer dans la ligne du champ concerné par la règle de validation
• Cliquer dans la propriété Valide si
• Saisir l'expression
• Cliquer dans la propriété Message si erreur
• Taper le texte qui apparaîtra en cas de transgression de la règle Valide si

• Cliquer l'icône Enregistrer pour sauvegarder les modifications

Note:
On pourrait utiliser les outils du Générateur d'expression pour créer une règle complexe. Cliquer l'icône à
droite de la propriété "Valide si"

Exemples de règles

< #01/01/1995#
>100
Comme "M????"
>= #01/01/1993# Et < #01/01/1994#

©Jean-Paul BAG - 2010


25

IMPORTER - EXPORTER

IMPORTER UNE FEUILLE EXCEL

Si dans la feuille de calcul, les noms des champs se trouvent sur la première ligne, ACCESS
peut
les reprendre comme noms de champ dans la table. ACCESS affecte à chaque nouveau
champ créé dans la table le type le plus approprié aux données importées.

• Ouvrir la base de données de destination


• FICHIER
• Données externes
• Importer
• Sélectionner le type de fichier Microsoft Excel
• Sélectionner le lecteur et le dossier contenant le fichier Excel
• Sélectionner le fichier Excel à importer
• Cliquer le bouton

• Sélectionner la feuille de calcul à importer

• Cliquer Suivant

• L’option Première ligne contient les en-têtes de colonnes est activée par défaut
Afin de reprendre comme noms de champs dans la table, ceux existants dans Excel

• Cliquer Suivant
• Cliquer Dans une nouvelle table
©Jean-Paul BAG - 2010
26

La feuille de calcul importée constituera une nouvelle table dans la base de données
ou
• Cliquer Dans une table existante puis sélectionner la table de réception
La feuille de calcul doit alors contenir les mêmes types de données dans chaque
champ, avec le même classement; chaque ligne comportant les mêmes champs.

• Cliquer Suivant

La suite de la procédure concerne la création d’une nouvelle table

Indexation d’un champ

• Cliquer sur l’étiquette du champ (en-tête de colonne)


• Dans la liste déroulante “Indexé”, sélectionner l’option désirée

Ne pas importer un champ

• Cliquer sur l’étiquette du champ (en-tête de colonne)


• Activer l’option Ne pas importer le champ (sauter)

• Cliquer Suivant

Choix de la clé primaire

• Cliquer Choisir ma propre clé primaire


• Sélectionner le champ clé primaire dans la liste

Note:
Si on clique l’option “Pas de clé primaire”, la table n’en disposera pas
Si on clique l’option “Laisser Access ajouter une clé primaire”, Access crée un nouveau champ dans la
table, nommé Numéro, dont il fait la clé primaire

• Cliquer Suivant

• Saisir le nom de la nouvelle table ou conserver le nom de la feuille Excel d’origine

• Cliquer Terminer
• Cliquer OK
Access affiche la nouvelle table dans la liste des tables

EXPORTER DANS UNE FEUILLE DE CALCUL EXCEL

Cette procédure est identique pour exporter des données ACCESS vers un autre tableur, un
fichier
base de données, ou un traitement de texte.

• Ouvrir la base de données contenant l’objet à exporter


• Cliquer l'Objet puis sélectionner celui à exporter dans Excel
• FICHIER
• Exporter
• Saisir le nom du fichier de destination
©Jean-Paul BAG - 2010
27

Ou conserver le nom d’origine de l'objet


• Sélectionner le type de fichier Microsoft Excel 97-2000
Ou sélectionner une version Excel antérieure
• Sélectionner l’unité et le dossier de destination
• Cliquer le bouton

Notes:
1. Si on choisit d’exporter une table ou une requête vers un classeur Excel97 existant, en
sélectionnant le
nom du fichier Excel parmi le contenu du dossier de destination, Access crée une nouvelle feuille
de calcul dans le classeur et y intègre les données exportées.
2. Lors de la procédure d'exportation, le choix du type de fichier résultant "Rich Text Format"
permet d'ouvrir ensuite celui-ci dans un traitement de texte, en sélectionnant les documents
d'extension .RTF.

LES FILTRES
Lorsque l'on souhaite n'afficher qu'une partie des données sans créer une requête, on peut
définir un
filtre.
Les filtres fonctionnent avec les tables, les requêtes, les formulaires.
Lorsque l'on imprime un état basé sur une table ou une requête filtrée, il sera tenu compte du
filtre
si on choisit Oui dans la propriété Filtre actif de l'état.

FILTRE PAR SELECTION

• Ouvrir la table ou le formulaire en mode Feuille de données


• Sélectionner le contenu d'un champ (tout ou partie), dans un enregistrement, commun à
tous
les enregistrements à afficher
Exemple, pour afficher tous les enregistrements du vendeur "Montel", cliquer dans une
cellule quelconque du champ Vendeur contenant "Montel"
Exemple, pour afficher tous les enregistrements des clients d'un même département,
sélectionner les deux premiers chiffres du champ Code Postal dans une cellule contenant
un code correspondant au département désiré
• Cliquer l'icône Filtrer par sélection (ou ENREGISTREMENTS/Filtre/Filtrer par

sélection) Afficher tous les enregistrements

• Cliquer l'icône Supprimer le filtre (ou ENREGISTEMENTS/Afficher tous les


enregistrements)

Appliquer de nouveau le dernier filtre

• Cliquer l'icône Appliquer le filtre (ou ENREGISTREMENTS/Appliquer le filtre/tri)

©Jean-Paul BAG - 2010


28

FILTRE PAR FORMULAIRE

• Ouvrir la table ou le formulaire en mode Feuille de données


• Cliquer l'icône Filtrer par formulaire
Un enregistrement vierge apparaît

Saisir un critère

• Cliquer dans la cellule du champ concerné par le critère

• Cliquer la flèche déroulante et sélectionner l'élément correspondant au critère


ou
• Saisir le critère dans la cellule
• Valider

• Procéder de même pour chaque champ à affecter d'un critère

Note:
Si un même champ doit comporter un autre critère, cliquer l'onglet Ou
en bas à gauche de l'écran, et sélectionner ou saisir le
critère

supplémentaire.

• Cliquer l'icône Appliquer le filtre

Afficher tous les enregistrements

• Cliquer l'icône Supprimer le filtre

FORMULAIRE AVEC ASSISTANT


Les formulaires permettent de saisir, de modifier, de visualiser et d'imprimer les données
d'une table
ou d'une requête. On peut visualiser toutes les valeurs d'un enregistrement en mode
Formulaire, ou tous les enregistrements d'un formulaire en mode Feuille de données.

Toutes les données d'un formulaire sont affichées dans des contrôles.
Certains contrôles sont associés aux champs de la table ou de la requête sous-jacente pour
nous permettre d'afficher le contenu des champs ou d'y entrer des données.
D'autres contrôles affichent uniquement les informations enregistrées dans le formulaire ou
ont une fonction décorative (étiquettes, traits, rectangles...).

©Jean-Paul BAG - 2010


29

CREER UN FORMULAIRE INSTANTANE

• Depuis la fenêtre Base de Données, cliquer l'Objet Tables ou Requêtes


• Cliquer la table ou la requête sur laquelle se crée le formulaire
• Cliquer la flèche à droite de l'icône Nouvel objet
• Cliquer Formulaire instantané
ACCESS crée et ouvre le formulaire

ou

• Dans la fenêtre Base de Données, cliquer l'Objet Formulaires


• Cliquer le bouton Nouveau
• Cliquer Formulaire Instantané: Colonnes ou Formulaire Instantané: Tableau ou
Formulaire Instantané: Feuille de données
• Sélectionner la table ou la requête sur laquelle se créé le formulaire
• Cliquer OK
ACCESS crée et ouvre le formulaire

• FICHIER
• Enregistrer sous
• Taper le nom du formulaire
• Cliquer OK

CREER UN FORMULAIRE AVEC UN ASSISTANT

• Dans la fenêtre Base de Données, cliquer l'Objet Formulaires


• Cliquer le bouton Nouveau
• Cliquer Assistant Formulaire
• Sélectionner la table ou la requête sur laquelle se créé le formulaire
• Cliquer OK

• Cliquer deux fois sur chaque champ à inclure dans le formulaire


ou
• Cliquer sur le champ à inclure
• Cliquer l'icône

Pour inclure tous les champs


• Cliquer l'icône
Pour retirer tous les champs
• Cliquer l'icône
Pour retirer un champ
• Cliquer deux fois sur le champ dans la zone "Champs sélectionnés"
ou
• Cliquer sur le champ dans la zone "Champs sélectionnés"
• Cliquer l'icône

©Jean-Paul BAG - 2010


30

Note :
Les champs apparaîtront dans le formulaire dans l'ordre où ils figurent dans la zone Champs
sélectionnés.

• Cliquer Suivant
• Cliquer une présentation
• Cliquer Suivant
• Cliquer un style de formulaire
• Cliquer Suivant

• Saisir le titre principal du formulaire


• Conserver l'option Ouvrir le formulaire pour afficher ou entrer des informations
• Cliquer Terminer

SUPPRIMER UN ENREGISTREMENT EN MODE FORMULAIRE

• Activer l'enregistrement à supprimer


• EDITION
• Supprimer l'enregistrement

MANIPULER LES CONTROLES

MODES D'AFFICHAGE DU FORMULAIRE

• Le formulaire est ouvert


• Cliquer la flèche à droite de l'icône Affichage

• Cliquer Mode Feuille de données


Ce mode n'affiche pas les images, autres objets OLE et les boutons de commande
ou
• Cliquer Mode Formulaire
Ce mode n'affiche qu'un enregistrement unique
ou
• Cliquer Mode Création
Pour modifier la structure du formulaire
©Jean-Paul BAG - 2010
31

Aperçu avant impression

• Cliquer l'icône Aperçu avant impression


Taper ECHAP pour revenir en mode normal

SELECTION DES CONTROLES

Les procédures de sélection, de déplacement, de dimensionnement et d'alignement sont les


mêmes
pour tous les contrôles ACCESS, qu'ils se trouvent dans un formulaire ou dans un état.

• Le formulaire est ouvert en mode Création

Sélection d'un contrôle

• Cliquer dans le contrôle (zone contenant la valeur)

Si le contrôle est associé à une étiquette, celle-ci est sélectionnée également


• Dès lors, la frappe de TAB ou de MAJ+TAB, permet de se déplacer d'un contôle à l'autre

Sélectionner des contrôles adjacents

• Pointer l'extérieur du premier contrôle à sélectionner


• Presser et faire glisser la souris pour sélectionner tous les contrôles

Tracer un rectangle autour des contrôles à sélectionner

Sélectionner des contrôles non-adjacents ou superposés

• Presser MAJ
• Cliquer sur chaque contrôle à sélectionner

Supprimer un contrôle du groupe sélectionné

• Presser MAJ
• Cliquer sur les contrôles à désélectionner

DEPLACER DES CONTROLES

• Le formulaire est ouvert en mode Création

Déplacer un contrôle et son étiquette éventuelle

©Jean-Paul BAG - 2010


32

• Sélectionner les contrôles à déplacer


• Pointer le bord d'un contrôle sélectionné (main ouverte)
• Presser et faire glisser jusqu'à l'emplacement désiré

Déplacer une étiquette seule ou un contrôle seul

• Cliquer dans l'étiquette ou dans le contrôle à déplacer


• Pointer la poignée de déplacement (angle supérieur gauche = main avec index)

• Presser et faire glisser à l'emplacement désiré


Pour déplacer un contrôle seul ou une étiquette seule dans une autre section, passer par
COUPER/COLLER

Déplacement sur la ligne ou sur la colonne

• Presser MAJ et cliquer les contrôles à déplacer


• Au dernier contrôle sélectionné, ne pas relâcher la souris
• Presser faire glisser verticalement ou horizontalement

DIMENSIONNER DES CONTROLES

• Le formulaire est ouvert en mode Création

Dimensionner des contrôles

• Sélectionner les contrôles à redimensionner


• Pointer la poignée de redimensionnement correspondante
• Presser et faire glisser pour obtenir la taille désirée

Ajuster la dimension des étiquettes à leur contenu

• Sélectionner les étiquettes (ou boutons)


• FORMAT
• Taille
• Cliquer Au contenu

Dimensionner les contrôles les uns par rapport aux autres

• Sélectionner les contrôles


• FORMAT
©Jean-Paul BAG - 2010
33

• Taille

• Cliquer Au plus grand (la même hauteur que le plus grand contrôle sélectionné)
ou
• Cliquer Au plus petit (la même hauteur que le plus petit contrôle sélectionné)
ou
• Cliquer Au plus large (la même largeur que le plus large contrôle sélectionné)
ou
• Cliquer Au plus étroit (la même largeur que le contrôle le plus étroit sélectionné)

ALIGNER LES CONTROLES ENTRE EUX

• Le formulaire est ouvert en mode Création


• Sélectionner les contrôles d'une même ligne ou d'une même colonne
• FORMAT
• Aligner

• Cliquer Gauche (aligne les bords gauches des contrôles sur celui le plus à gauche)
ou
• Cliquer Droite (aligne les bords droits des contrôles sur celui le plus à droite)
ou
• Cliquer Haut (aligne les bords supérieurs des contrôles sur celui le plus en haut)
ou
• Cliquer Bas (aligne les bords inférieurs des contrôles sur celui le plus en bas)
ou
• Cliquer Sur la grille (alignement des contrôles sur la grille = maillage égal à 0,25 cm)

SUPPRIMER UN CONTROLE

Lorsque l'on supprime un contrôle, l'étiquette associée est automatiquement supprimée.


A l'inverse, en ne sélectionnant que l'étiquette, on peut supprimer celle-ci tout en conservant
le contrôle associé.

PERSONNALISER UN
FORMULAIRE

CONTROLES DANS UN FORMULAIRE

Un contrôle peut être de trois types:

Contrôle Dépendant (ou lié)


Affiche une donnée provenant d'une table ou d'une requête.
Il permet d'afficher, de saisir, et de mettre à jour les valeurs des champs.

©Jean-Paul BAG - 2010


34

Contrôle indépendant
Affiche une information non liée à une table ou une requête. Cela peut aussi être une
figure géométrique ou une image. Il n'y a donc pas de source de données.

Contrôle calculé
Affiche une valeur provenant d'une expression et non pas d'un champ. On doit donc
définir une expression comme source des données. Une expression peut utiliser les
données issues d'un champ de la table ou de la requête sous-jacente, ou d'un contrôle
du formulaire. A
chaque ouverture du formulaire, ACCESS calculera la valeur de l'expression en
utilisant la dernière version des données.

Conseil:
Dans le formulaire, placer tout d'abord les contrôles dépendants, puis les contrôles indépendants et
calculés à l'aide de la barre d'outils.

AJOUTER DES CONTROLES DEPENDANTS

• Le formulaire est ouvert en mode Création


• Cliquer l'icône Liste des champs (ou AFFICHAGE/Liste des champs)

• Sélectionner les champs à ajouter au formulaire


Pour sélectionner tous les champs, cliquer deux fois sur le titre de la liste
• Pointer un champ sélectionné
• Presser et faire glisser dans le formulaire
Prendre en compte le placement de l'étiquette
• Cliquer l’icône Liste des Champs

AJOUTER DES CONTROLES AVEC LA BOITE A OUTILS

La boîte à outils est utilisée pour créer des contrôles indépendants ou calculés, ainsi que des
contrôles dépendants autres que "Zone de texte".

• Le formulaire est ouvert en mode Création

Afficher ou masquer la boîte à outils

• Cliquer l'icône Boîte à outils (ou AFFICHAGE/Boîte à outils) Créer un contrôle

avec un outil

• Cliquer l'outil correspondant au type de contrôle à créer

Créer un contrôle dépendant autre que "Zone de texte"

• Cliquer l'icône Liste des champs


• Pointer le champ correspondant au contrôle
• Presser et faire glisser le nom de champ dans le formulaire
• Cliquer l’icône Liste des Champs
©Jean-Paul BAG - 2010
35

Créer un contrôle indépendant

• Cliquer dans le formulaire à la position du coin supérieur gauche du contrôle


La taille est alors définie par défaut
ou
• Pointer dans le formulaire la position du coin supérieur gauche du contrôle
• Presser et faire glisser pour définir la taille

CREER UNE ZONE DE TEXTE CALCULE

Un contrôle calculé est en règle générale une zone de texte dans laquelle on tape directement
l'expression pour l'attribuer à la propriété "Source contrôle" du contrôle.

• Le formulaire est ouvert en mode Création


• Cliquer l'outil Zone de texte dans la boîte à outils
• Cliquer dans le formulaire à la position du coin supérieur gauche de la zone de texte
La taille est alors définie par défaut
ou
• Pointer dans le formulaire la position du coin supérieur gauche de la zone de texte
• Presser et faire glisser pour définir la taille

• Cliquer à l'intérieur de la zone de texte (contrôle et non étiquette)

• Taper le signe = et l'expression désirée

• Valider
• Cliquer sur le nom temporaire de l'étiquette
• Cliquer l'icône Propriétés (ou cliquer deux fois sur l'étiquette)
• Dans la liste des propriétés qui apparaît, sélectionner le texte de légende
• Taper un libellé plus explicite

• Cliquer l'icône Propriétés pour refermer la boîte des propriétés


• Redimensionner la largeur de l'étiquette, si nécessaire

CREER UN INTITULE

On utilise un contrôle de type "Intitulé" pour afficher un titre, une légende, ou des
instructions. Les intitulés sont toujours indépendants, n'étant pas associés à un champ.

• Le formulaire est ouvert en mode Création

©Jean-Paul BAG - 2010


36

• Cliquer l'outil Intitulé

• Dans le formulaire, cliquer à la position du début de saisie


• Taper le texte désiré
La taille de l'intitulé s'ajuste automatiquement au fur et à mesure de la saisie
ou
• Dans le formulaire, pointer la position du début de saisie
• Presser et faire glisser pour définir la taille
• Relâcher et taper le texte désiré

Note:
Pour saisir un texte sur plusieurs lignes dans une étiquette, taper CTRL+RETOUR pour passer à la
ligne.

ZONE DE LISTE OU LISTE MODIFIABLE AVEC UN ASSISTANT

Il est plus simple de sélectionner une valeur dans une liste que de la taper.
Une zone de liste comprend une série de valeurs toujours affichées parmi lesquelles on peut
faire son choix.
Une liste modifiable est la combinaison d'une zone de texte et d'une zone de liste; on peut
taper une valeur dans la partie zone de texte du contrôle, ou sélectionner une valeur dans sa
liste après avoir cliqué la flèche.

• Le formulaire est ouvert en mode Création


• Vérifier que l'outil Assistants Contrôle est activé ("enfoncé")
• Cliquer l'outil Zone de liste ou l'outil Zone de liste modifiable dans la boîte à
outils
• Dans le formulaire, cliquer à la position désirée du coin supérieur gauche de la liste

Zone de liste ou Liste modifiable dépendant d'une table ou d'une requête


Permet de sélectionner et conserver un élément d'un seul champ

• Conserver le premier choix relatif à la table ou requête

©Jean-Paul BAG - 2010


37

• Cliquer Suivant
• Cliquer la table ou la requête contenant les valeurs de la liste
• Cliquer Suivant
• Cliquer le champ contenant les valeurs à inclure dans la liste
• Cliquer le bouton
• Procéder ainsi pour chaque champ
Les champs sélectionnés deviendront les colonnes dans la liste
• Cliquer Suivant
• Définir la largeur des colonnes des champs sélectionnés
• Cliquer Suivant
• Cliquer Stocker la valeur dans ce champ
• Sélectionner le champ qui contiendra la valeur sélectionnée dans la liste
• Cliquer Suivant
• Taper le nom de l'étiquette de la liste créée
• Cliquer Terminer

ou

Zone de liste ou Liste modifiable contenant des valeurs saisies

• Cliquer Je taperai les valeurs souhaitées

©Jean-Paul BAG - 2010


38

• Cliquer Suivant
• Saisir le nombre de colonnes qui composeront la liste
• Cliquer dans la première cellule
• Saisir le premier élément de la liste
• Taper la touche TAB (ou utiliser la flèche) pour accéder à la deuxième cellule
• Saisir le deuxième élément de la liste
• Taper TAB
• Procéder ainsi pour chaque élément à saisir dans la liste

• Définir la largeur des colonnes des champs


• Cliquer Suivant
• Cliquer Stocker la valeur dans ce champ
• Sélectionner le champ qui contiendra la valeur sélectionnée dans la liste
• Cliquer Suivant
• Taper le nom de l'étiquette de la liste créée
• Cliquer Terminer

SAISIE DE NOUVELLES VALEURS DANS UNE LISTE MODIFIABLE

La procédure suivante est employée uniquement pour les listes modifiables ayant été
conçues en
saisissant les valeurs qui les composent.

• Le formulaire est ouvert en mode Création


©Jean-Paul BAG - 2010
39

• Cliquer sur la liste modifiable concernée


• Cliquer l'icône Propriétés
• Cliquer dans la propriété Limiter à liste
• Sélectionner Non (par défaut) pour autoriser la saisie de nouvelles données
ou
• Sélectionner Oui pour limiter les valeurs utilisées à celles de la liste
• Cliquer dans la propriété Contenu
• Saisir entre guillemets, chaque nouvelle valeur, espacée d'un point-virgule

• Cliquer l'icône Propriétés

RECHERCHER UN ENREGISTREMENT

Il s'agit d'inclure dans le formulaire une liste modifiable dont la sélection d'un élément
permet
l'affichage de l'enregistrement correspondant.

• Le formulaire est ouvert en mode Création


• Cliquer l'outil Zone de liste modifiable
• Cliquer dans la zone Détail à la position désirée pour l'insertion de la liste
• Activer l'option Rechercher un enregistrement dans mon formulaire

• Cliquer Suivant
• Sélectionner le champ utilisé pour effectuer la recherche d'enregistrement
• Cliquer le bouton
• Cliquer Suivant
• Régler la largeur de la colonne
• Cliquer Suivant
• Saisir le texte de l'étiquette de la liste créée
• Cliquer Terminer
©Jean-Paul BAG - 2010
40

• Redimensionner éventuellement la largeur de l'étiquette

INSERER UN CONTROLE ONGLET

Lorsque les contrôles sont trop nombreux, ils risquent de ne pas tenir sur une zone limitée
d'un
écran. Il est alors préférable de les disposer à l'intérieur d'onglets, semblables à certains
menus.
Ce système permet de créer des formulaires de plusieurs pages, facilement manipulables.

• Ouvrir le formulaire en mode Création


• Aménager une zone suffisamment grande pour recevoir le contrôle onglet
• Cliquer l'icône Contrôle Onglet
• Dans le formulaire, pointer le coin supérieur gauche du contrôle onglet à créer
• Presser et faire glisser pour créer le contrôle onglet puis relâcher

Ajouter un onglet

• Cliquer sur un onglet quelconque afin de sélectionner le contrôle onglet


• Cliquer le bouton droit de la souris
• Cliquer Insérer une page (ou INSERTION/Page Contrôle onglet) Un nouvel
onglet apparaît à droite de ceux existants

Supprimer un onglet

• Cliquer sur l'onglet à supprimer


• Cliquer le bouton droit de la souris
• Cliquer Supprimer la page

Déplacer un onglet

• Cliquer sur un onglet quelconque afin de sélectionner le contrôle onglet


• Cliquer le bouton droit de la souris
• Cliquer Ordre des pages
• Sélectionner l'onglet à déplacer

©Jean-Paul BAG - 2010


41

• Cliquer le bouton Déplacer vers le haut ou Déplacer vers le bas

• Cliquer OK

Renommer un onglet

• Cliquer deux fois sur l'onglet à renommer


La feuille de propriétés de l'onglet apparaît
• Saisir le nom désiré dans la propriété Légende
• Cliquer l'icône Propriétés

Placer les contrôles dans les onglets

• Sélectionner les contrôles du formulaire à placer dans le premier onglet


• Cliquer l'icône Couper
• Cliquer sur l'onglet de destination
• Cliquer l'icône Coller
• Déplacer et redimensionner les contrôles si besoin
• Procéder de même pour insérer les autres contrôles dans les autres onglets

©Jean-Paul BAG - 2010


42

VALEURS OUI/NON

Les cases à cocher, les boutons d'options et les boutons bascule sont utilisés comme
contrôles
autonomes pour définir des valeurs Oui/Non ou Vrai/Faux.

Case à cocher

Bouton d'option

Bouton bascule

Lorsque ces boutons sont activés ou désactivés, ACCESS enregistre la valeur dans la table
sous- jacente, et l'affiche en fonction de la propriété "Format" définie pour le champ.
Lorsque ces contrôles sont associés à des champs autres que de type Oui/Non, ACCESS
inscrit "-1" (Oui ou Vrai) en cas de sélection, sinon "0" (Non ou Faux).

©Jean-Paul BAG - 2010


43

Créer un bouton dépendant d'un champ

• Le formulaire est ouvert en mode Création


• Cliquer l'outil Case à cocher ou Bouton d'option ou Bouton bascule
• Cliquer l'icône Liste des champs

• Pointer le champ Oui/Non correspondant au bouton


• Presser et faire glisser dans le formulaire
• Cliquer l'icône Liste des champs

GROUPE D'OPTIONS

Un groupe d'options est constitué d'un cadre de groupe contenant plusieurs cases à cocher,
boutons
d'options ou boutons bascule. Un groupe d'options facilite la sélection, car il nécessite un
simple clic sur l'option de son choix.
Un groupe d'options dépendant d'un champ, c'est le cadre du groupe qui dépend du champ, et
non
ses options. Le groupe peut également dépendre d'une expression, ou être indépendant.

Chaque option d'un groupe a sa propriété "Valeur contrôle", à laquelle on attribue une valeur
obligatoirement numérique correspondant au champ associé au cadre de groupe. Lorsque
l'on sélectionne l'une des options d'un groupe, ACCESS affecte au champ dont le groupe
d'options dépend, la valeur de la propriété "Valeur contrôle" de l'option sélectionnée.

• Ouvrir le formulaire en mode Création


• Cliquer l'icône Groupe d'options
• Pointer dans le formulaire la position du coin supérieur gauche du groupe d'options
• Presser et faire glisser la souris pour créer le groupe d'options et relâcher
• Saisir le texte de l'étiquette de la première option du groupe
• Taper la touche TAB
• Saisir le texte de l'étiquette suivante
• Taper la touche TAB
• Procéder ainsi pour saisir toutes les étiquettes du groupe d'options

• Cliquer Suivant
• Sélectionner Oui ou Non pour avoir ou pas une valeur par défaut
Si on clique Oui, sélectionner ensuite la valeur par défaut dans la liste déroulante
• Cliquer Suivant
• Modifier si besoin les valeurs attribuées à chaque option
Lors de la sélection d'une option, ACCESS stocke dans le champ sous-jacent la valeur
correspondante. Appliquer -1 ou 0 pour les valeurs d'un champ de type Oui/Non.

©Jean-Paul BAG - 2010


44

• Cliquer Suivant
• Cliquer Stocker la valeur dans ce champ
• Sélectionner dans la liste déroulante le champ de la table qui contiendra la valeur
assignée à l'option choisie
• Cliquer Suivant
• Sélectionner un type de contrôle et un style

• Cliquer Suivant
• Saisir le texte de la légende
• Cliquer Terminer

SAUT DE PAGE

En mode formulaire, un saut de page n'est actif que si on a attribué la valeur "Mode simple"
à la
propriété "Affich par défaut" au formulaire.
En mode Formulaire, ACCESS utilise un saut de page pour marquer une zone spécifique
accessible avec les touches PGUP et PGDN.

• Le formulaire est ouvert en mode Création


• Cliquer l'icône Saut de page
• Dans le formulaire, cliquer à la position désirée du saut de page

©Jean-Paul BAG - 2010


45

PROPRIETES D'UN FORMULAIRE

AFFICHER ET MODIFIER LES PROPRIETES D'UN CONTROLE

• Le formulaire est ouvert en mode Création

• Cliquer deux fois sur le contrôle (et non son étiquette éventuelle)
ou
• Cliquer le contrôle
• Cliquer l'icône Propriétés (ou AFFICHAGE/Propriétés)

• Sélectionner une catégorie de propriétés par l'onglet approprié


• Cliquer sur la propriété à définir
• Taper la valeur ou la sélectionner dans la liste après avoir cliqué la flèche
• Cliquer sur l'icône Propriétés pour refermer la zone de dialogue

Notes:
1. Si on modifie la propriété d'un contrôle, celle du champ reste inchangée dans la table ou la
requête sous- jacente.
2. Si on modifie la propriété d'un champ dans une table ou une requête après avoir créé un
formulaire utilisant ce champ, on doit mettre cette propriété à jour dans tous les contrôles
dépendants du champ.
3. Si on définit deux règles de validation (propriété "Valide si") différentes dans un formulaire et
dans la table sous-jacente, elles seront toutes deux appliquées.
4. On devra par contre définir toutes les propriétés d'un champ calculé d'un formulaire, s'il ne
correspond pas à un champ de requête sous-jacente.
5. Dans le cas de zone de texte faisant référence à un champ de type "Mémo", affecter la valeur
"Oui" aux
propriétés "Auto extensible" et "Auto réductible", qui ajustent la hauteur du contrôle en fonction
de la longueur des données à l'impression. Ces propriétés n'ont aucune incidence sur la taille de
la zone de texte affichée en mode formulaire.
6. Choisir Non à la propriété "Visible" si on veut que le contrôle n'apparaisse pas à l'écran lors de la
saisie.
7. Choisir Non à la propriété "Activé" si on souhaite que le contrôle soit visible mais pas accessible
en saisie.
8. Choisir Oui à la propriété "Verrouillé" si on souhaite que le contrôle soit accessible mais non
modifiable
en saisie.
9. Saisir le texte dans la propriété "Message si erreur" qui apparaîtra dans une boîte de dialogue si
les règles
de saisie ou de validité ne sont pas respectées.

©Jean-Paul BAG - 2010


46

MODIFICATION DE L'ORDRE DE SAISIE DES CONTROLES

ACCESS affecte automatiquement un ordre de saisie à tous les contrôles que l'on ajoute dans
un
formulaire. Cet ordre correspond à l'ordre d'ajout des contrôles dans le formulaire.
On peut créer un ordre d'entrée automatique qui active les contrôles de gauche à droite et de
haut en bas, ou personnaliser l'ordre.

• Le formulaire est ouvert en mode Création


• AFFICHAGE
• Ordre de tabulation

• Cliquer Ordre automatique


• Cliquer OK

ou

• Cliquer le sélecteur du contrôle à déplacer, à gauche de la ligne


Pour sélectionner plusieurs contrôles, presser et faire glisser sur les sélecteurs

• Pointer de nouveau le sélecteur du contrôle


• Presser et faire glisser vers la position souhaitée

©Jean-Paul BAG - 2010


47

• Cliquer OK

AJOUT DE SECTIONS

En-tête de formulaire
Zone du titre du formulaire, des boutons éventuels de commande. En mode
formulaire, il ne figure qu'au début du formulaire. Il est imprimé en haut de la
première page. Si on ne
souhaite pas l'imprimer, attribuer la valeur "A l'écran" à sa propriété "Afficher".

En-tête de page
Figure en haut de chaque page du formulaire. Il apparaît uniquement à l'impression.

Section Détail
Contient les enregistrements.

Pied de page
Figure au bas de chaque page du formulaire, et peut contenir le numéro de page. Il
n'apparaît qu'à l'impression.

Pied de formulaire
S'affiche au bas de l'écran en mode Formulaire et s'imprime au bas de la dernière
page.

Ajouter ou supprimer un En-tête/pied de formulaire ou En-tête/pied de page

• Le formulaire est ouvert en mode Création


• AFFICHAGE
• Activer/Désactiver En-tête et pied de page et/ou En-tête/pied de formulaire

DIMENSIONNER UNE SECTION

On peut définir une hauteur différente pour chaque section. En revanche, lorsque l'on
modifie la largeur d'une section, elle s'applique au formulaire tout entier.

• Le formulaire est ouvert en mode Création


• Pointer le bord supérieur ou droit de la section à dimensionner
• Faire glisser pour obtenir la hauteur ou la largeur souhaitée

©Jean-Paul BAG - 2010


48

AFFICHER ET MODIFIER LES PROPRIETES D'UNE SECTION

• Le formulaire est ouvert en mode Création

• Cliquer deux fois dans la section hors de tout contrôle


ou
• Cliquer dans la section hors de tout contrôle
• Cliquer l'icône Propriétés

• Sélectionner une catégorie de propriétés par l'onglet approprié


• Modifier les propriétés
• Cliquer l'icône Propriétés

AFFICHER ET MODIFIER LES PROPRIETES DU FORMULAIRE

Les propriétés du formulaire définissent leur aspect général et leur fonctionnement.

• Le formulaire est ouvert en mode Création


• Cliquer deux fois dans la zone grise hors des sections ou sur la case grise à
l'intersection des règles

ou

• EDITION
• Sélectionner le formulaire
• Cliquer l'icône Propriétés

• Sélectionner une catégorie de propriétés par l'onglet approprié


• Modifier les propriétés
• Cliquer l'icône Propriétés

FONCTION D'EDITION PAR DEFAUT

On peut définir la fonction principale d'un formulaire de façon à l'activer dès son ouverture.

• Le formulaire est ouvert en mode Création


• Sélectionner le formulaire
• Cliquer l'icône Propriétés
• Sélectionner la valeur Oui à la propriété Entrée données si l'on veut que le formulaire
soit utilisé exclusivement pour la saisie de nouveaux enregistrements
©Jean-Paul BAG - 2010
49

et/ou
• Sélectionner Non à la propriété Ajout autorisé pour empêcher l'utilisateur de créer de
nouveaux enregistrements à partir du formulaire
et/ou
• Utiliser les propriétés Modif autorisée et Suppr autorisée pour autoriser ou non
l'utilisateur à modifier ou supprimer des enregistrements
• Cliquer l'icône Propriétés

MISE EN FORME D'UN


FORMULAIRE

FORMAT AUTOMATIQUE

• Ouvrir le formulaire en mode Création


• Cliquer l'icône Format automatique
• Sélectionner un format
• Cliquer OK
• Cliquer l'icône Enregistrer

DESSINER UN RECTANGLE OU UN TRAIT

• Le formulaire est ouvert en mode Création


• Cliquer l'outil Rectangle ou Trait
• Dans le formulaire, pointer la position du coin supérieur gauche du rectangle ou du
trait à tracer
• Presser et faire glisser pour créer le rectangle ou le trait
• Relâcher

Selon les attributs de dessin, une figure comme un rectangle peut masquer les contrôles sur
lesquels
elle est placée.

Pour placer la figure à l'arrière plan

• Sélectionner la figure en mode formulaire


• FORMAT
• Mettre en arrière-plan

©Jean-Paul BAG - 2010


50

STYLE - POLICE - TAILLE DE CARACTERES - ALIGNEMENT

• Le formulaire est ouvert en mode Création

Utiliser les polices de l'imprimante

• Cliquer dans la zone grise, hors des sections


• Cliquer l'icône Propriétés

• Sélectionner Oui dans la propriété Polices imprimante


• Cliquer l'icône Propriétés
ACCESS affiche alors les polices et tailles de caractères disponibles sur l'imprimante.

Choix des styles, polices et tailles

• Sélectionner les contrôles à mettre en forme


• Sélectionner une police

• Sélectionner une taille(on peut saisir aussi une taille inexistante)


• Activer ou non, Gras, Italique et Souligné

Alignement des contrôles

• Sélectionner les contrôles à aligner


L'alignement concerne la valeur (texte ou nombre) dans le cadre du contrôle
• Cliquer une icône d'alignement

©Jean-Paul BAG - 2010


51

CHOIX DES ENCADREMENTS ET COULEURS

• Le formulaire est ouvert en mode Création


• Sélectionner les contrôles concernés ou une section
• Cliquer la flèche à droite de l'icône Epaisseur de bordure/trait
• Sélectionner une bordure
• Cliquer la flèche à droite de l'icône Couleur d'arrière-plan/remplissage
• Sélectionner une couleur
• Cliquer la flèche à droite de l'icône Couleur de police/premier plan
• Sélectionner une couleur
• Cliquer la flèche à droite de l'icône Couleur de bordure/trait
• Sélectionner une couleur

CREER DES CONTROLES EN TROIS DIMENSIONS

• Le formulaire est ouvert en mode Création


• Sélectionner les contrôles concernés
• Cliquer la flèche à droite de la dernière icône de la barre d'outils "Mise en forme"
• Sélectionner une option dans la liste

ETAT AVEC ASSISTANT


Un état permet de présenter des données sous la forme d'un document imprimé.
Par rapport à un formulaire que l'on pourrait imprimer, un état offre davantage de flexibilité
quant à
la présentation d'informations de synthèse. Par exemple, il est possible d'inclure des totaux
par catégories d'enregistrements.
Un état regroupe les données à partir d'une table unique. Si les données proviennent de
plusieurs tables, l'état doit se baser sur une requête unique, chargée d'extraire les données.
Une fois la structure de l'état créée, on peut l'utiliser à l'infini sans la modifier, les données
étant mises à jour à chaque impression.

L'Assistant Etat instantané génère un état préformaté à une colonne, sans question posée à
l'utilisateur. Les autres assistants posent des questions et créent l'état en fonction des
réponses fournies. Ils accélèrent le processus de création d'un état en prenant en charge les
opérations essentielles. L'état de base ainsi obtenu peut ensuite éventuellement être modifié.

©Jean-Paul BAG - 2010


52

CREER UN ETAT INSTANTANE

• Depuis la fenêtre Base de données, cliquer l'Objet Tables ou Requêtes


• Cliquer la table ou la requête sur laquelle se fonde l'état à créer
• Cliquer la flèche à droite de l'icône Nouvel objet
• Dans la liste, cliquer Etat Instantané

CREER UN ETAT AVEC UN ASSISTANT

• Dans la fenêtre Base de données, cliquer l'Objet Etats


• Cliquer le bouton Nouveau
• Cliquer sur l'assistant désiré
• Sélectionner dans la liste déroulante la table ou la requête sur laquelle se basera l'état
• Cliquer OK

Suite pour le choix "Assistant Etat"

• Cliquer deux fois sur chaque champ à intégrer à l'état


ou
• Cliquer le champ à intégrer à l'état
• Cliquer l'icône
• Répéter l'opération pour chaque champ
ou
• Cliquer pour intégrer tous les champs à l'état

Rappel:
Utiliser l'icône pour retirer un champ de la zone "Champs sélectionnés"
Utiliser l'icône pour retirer tous les champs

• Cliquer Suivant
• Sélectionner le champ sur lequel s'effectuera le regroupement
(l'état comportera ainsi des sous-ensembles générés par le regroupement des lignes sur
ce champ)
• Cliquer l'icône

©Jean-Paul BAG - 2010


53

• Cliquer le bouton
• Sélectionner un intervalle de regroupement
• Cliquer OK
• Cliquer Suivant

• Sélectionner les champs utilisés comme critères de tri pour les données d'un même
sous-ensemble
• Cliquer l'icône pour passer du mode de tri croissant au mode de tri décroissant
(et vice-versa)
• Cliquer le bouton
• Activer les opérations à effectuer

• Cliquer OK
• Cliquer Suivant

• Sélectionner une présentation et une orientation

• Activer l'option

• Cliquer Suivant
• Sélectionner un style de présentation
• Cliquer Suivant
• Saisir le titre de l'état (en même temps son nom de sauvegarde)
• Cliquer Terminer

©Jean-Paul BAG - 2010


54

Suite pour le choix "Assistant Etiquette"

• Sélectionner la taille d'étiquettes à utiliser


ou
• Cliquer le bouton
• Cliquer Nouveau
• Rentrer le nom du nouveau format d'étiquettes
• Activer les options et saisir les dimensions exactes des étiquettes utilisées

©Jean-Paul BAG - 2010


55

• Cliquer OK
• Cliquer Fermer

• Cliquer Suivant
• Sélectionner la police et les autres attributs du texte de l'étiquette
• Cliquer Suivant

• Cliquer deux fois sur le premier champ à intégrer dans l'étiquette


• Séparer du champ suivant par un espace ou valider
• Insérer le champ suivant puis saisir un séparateur
• Renouveler la procédure afin de placer dans l'étiquette tous les champs désirés
Dans la zone "Etiquette prototype", pour supprimer un champ et/ou un séparateur,
effectuer la sélection nécessaire puis taper SUPPR

• Cliquer Suivant
• Cliquer deux fois sur chaque champ à utiliser comme critères de tri
• Cliquer Suivant
• Saisir le nom de sauvegarde de l'état étiquettes
• Cliquer Terminer

Conseil:
Créer un état avec un assistant puis le modifier afin de le personnaliser. On gagne ainsi du temps par rapport
à la création d'un état qui oblige à passer par toutes les phases.

MODES D'AFFICHAGE DE L'ETAT

• Ouvrir l'état
• Cliquer la flèche à droite de l'icône Affichage

• Cliquer Mode création


Pour modifier la structure de l'état
ou
• Cliquer Aperçu avant impression
Pour vérifier l'ensemble des données de l'état
ou
• Cliquer Aperçu du format
C'est une variante du mode Aperçu avant impression où seuls quelques enregistrements sont
visualisés. Ce mode est à utiliser lorsque la masse des informations traitées entraîne un
ralentissement de l'affichage.
©Jean-Paul BAG - 2010
56

CREATION DE REQUETES
Une requête est une interrogation posée à la base de données. Le résultat d'une requête, appelé
feuille de réponses, se présente sous la forme d'un tableau regroupant les seuls enregistrements
répondant à la question posée.
Les données de la feuille de réponses d'une requête sont automatiquement mises à jour, en cas de
modification dans la table sous-jacente. Inversement, si on modifie les données de la feuille de
réponses d'une requête, ACCESS met automatiquement à jour les données de la table.

Utilité des requêtes

• Sélectionner les champs à afficher


• Restreindre l'affichage aux seuls enregistrements qui satisfont aux critères
• Trier des enregistrements
• Calculer des totaux
• Créer des formulaires, des requêtes et des états à partir de requêtes
• Modification des données des tables

CREER UNE REQUETE SANS ASSISTANT

• Depuis la fenêtre Base de Données, cliquer l'Objet Requêtes


• Cliquer le bouton Nouveau
• Cliquer Mode Création
• Cliquer OK
• Cliquer l'onglet Tables ou l'onglet Requêtes ou l'onglet Les deux dans la zone "Ajouter une
table"
• Cliquer la première table ou première requête à utiliser
• Cliquer Ajouter (ou Cliquer deux fois sur la table ou la requête)
• Procéder ainsi pour chaque table ou requête à utiliser
• Cliquer Fermer

AJOUTER UN CHAMP A LA REQUETE

• Dans le cadre de la table, pointer le nom du champ à utiliser dans la requête


• Cliquer deux fois
• Procéder ainsi pour chaque champ à utiliser

ou

• Faire glisser le nom du champ désiré, de la table à la cellule de la ligne Champ de la grille
• Relâcher
• Procéder ainsi pour chaque champ à utiliser dans la requête

©Jean-Paul BAG - 2010


57

ou

• Cliquer dans la cellule de la zone Champ de la grille


• Cliquer la flèche vers le bas

• Cliquer le champ de la table à insérer dans la requête

AJOUTER PLUSIEURS CHAMPS

• Cliquer le premier champ dans le cadre de la table


• Presser CTRL et cliquer les autres champs
(ou MAJ pour prendre un bloc de champ)
• Pointer un des champs sélectionnés
• Presser et faire glisser jusqu'à la première cellule de destination (ligne Champ), dans la grille

Ajouter tous les champs d'une table

• Cliquer deux fois dans la barre de titre du cadre de la table


Tous les champs sont sélectionnés

©Jean-Paul BAG - 2010


58

• Pointer un des champs sélectionnés


• Faire glisser sur la première cellule Champ de la grille

ou

• Cliquer deux fois sur l'astérisque (*)

Note:
L'astérisque inclut tous les champs de la table ou de la requête, sans les afficher individuellement.. De ce fait,
les champs ajoutés à la grille ne peuvent être ni triés ni affectés de critères de sélection.

CONSULTER LES ENREGISTREMENTS DE LA REQUETE

• Cliquer l'icône Affichage (ou AFFICHAGE/Mode Feuille de données)

Note :
La liste déroulante Premières valeurs spécifie le nombre d'enregistrements auquel doit se limiter
la requête.

SAUVEGARDER LA REQUETE

• FICHIER
• Enregistrer sous
• Taper le nom de la requête (64 caract. max.)
• Cliquer OK

TRI DES ENREGISTREMENTS

On peut trier les enregistrements d'une requête sur un ou plusieurs champs.


Pour préciser un ordre de tri sur plusieurs champs, ACCESS commence le tri à partir du premier
champ à gauche. On doit donc éventuellement redisposer les champs à trier de gauche à droite sur
la grille.

• Ouvrir la requête en Mode Création

• Cliquer dans la cellule Tri du champ utilisé comme critère de tri


• Cliquer la flèche vers le bas
• Cliquer Croissant ou Décroissant

©Jean-Paul BAG - 2010


59

• Cliquer dans la cellule Tri du champ utilisé comme autre critère de tri
• Cliquer la flèche vers le bas
• Cliquer Croissant ou Décroissant
• Procéder de même pour un autre champ utilisé comme critère de tri

Visualiser les résultats:

• Cliquer l'icône Affichage

Enregistrer la requête:
• Cliquer l'icône Enregistrer

MODIFIER UNE REQUETE

DEPLACER UN CHAMP

• Ouvrir la requête en mode Création


• Cliquer le sélecteur en haut de la colonne à déplacer
Ligne grise au-dessus du nom du champ - On obtient une flèche noire pointant vers le bas

• Pointer de nouveau le sélecteur


• Presser et faire glisser la ligne verticale noire à l'endroit désiré
• Relâcher

©Jean-Paul BAG - 2010


60

INSERER UNE COLONNE VIERGE

• Ouvrir la requête en mode Création


• Cliquer le sélecteur de la colonne qui sera à droite de celle insérée
• INSERTION
• Colonnes

INSERER UN CHAMP

• Ouvrir la requête en mode Création


• Dans le cadre de la table, pointer le nom de champ à rajouter
• Presser et faire glisser dans la grille sur le nom du champ qui sera après celui inséré

SUPPRIMER UN CHAMP

• Ouvrir la requête en mode Création


• Cliquer le sélecteur de la colonne du champ à supprimer
• Taper SUPPR (ou EDITION/Supprimer ou EDITION/Supprimer colonnes)

Supprimer tous les champs de la grille

• EDITION
• Effacer la grille

©Jean-Paul BAG - 2010


61

EXCLURE UN CHAMP DE LA FEUILLE DE REPONSES

La sélection d'un champ dans une requête n'implique pas forcément son affichage dans la feuille de
réponses. On peut ainsi sélectionner les enregistrements d'une même ville, sans afficher la ville.

• Ouvrir la requête en mode Création


• Désactiver la case Afficher de chaque champ à exclure

REQUETE SELECTION
Pour que la feuille de réponses d'une requête ne prenne en compte que certains enregistrements, il
est nécessaire de spécifier des critères de sélection.

DEFINIR UN CRITERE

• Ouvrir la requête en mode Création


• Dans la grille, cliquer dans la cellule Critères du champ concerné

Saisie directe

• Saisir directement le critère


• Valider

Note:
Pour afficher la cellule "Critères" en mode Zoom: Taper MAJ+F2 (Mode Zoom)
Cliquer OK pour revenir

Générateur d'expression

• Cliquer l'icône Créer pour appeler le Générateur d'expression


• Générer l'expression en utilisant les fonctions, les champs et les opérateurs
• Cliquer OK

©Jean-Paul BAG - 2010


62

VISUALISER LES RESULTATS

• Cliquer l'icône Affichage

EXPRESSIONS COURANTES

Mot

Saisir Dupont dans le champ de type texte concerné.


La saisie de critères de type texte peut s'effectuer indifféremment en majuscules ou en minuscules.

Phrase

Saisir "Juan les Pins" dans le champ de type texte concerné.

Les guillemets sont obligatoires pour prendre en compte un texte comprenant des espaces.

Valeur
Saisir 100 dans le champ de type numérique concerné.

Tranche de valeurs
Saisir >40000 dans le champ de type numérique concerné.
La feuille de réponses affichera tous les enregistrements dont le champ utilisé à une valeur
strictement supérieure à 40000.

La feuille de réponses affichera tous les enregistrements dont le champ DATE à une valeur
strictement supérieure au 01/01/2002.

Valeurs entre deux bornes

La feuille de réponses affichera tous les enregistrements dont le champ TOTAL à une valeur
comprise entre 20000 et 40000.

©Jean-Paul BAG - 2010


63

La feuille de réponses affichera tous les enregistrements dont le champ DATE à une valeur
comprise entre le 01/01/2002 et le 31/03/2002.

Valeurs booléennes
Saisir Non ou Faux ou Inactif ou 0 dans le champ de type Oui/Non concerné.
La feuille de réponses affichera tous les enregistrements dont le champ utilisé à une valeur
correspondant à Non (Oui, Vrai, Actif ou 1 pour Oui).

UTILISATION DE CARACTERES GENERIQUES

Pour sélectionner des champs sur la base d'un ou de plusieurs caractères (type Texte et Date/Heure).

? Remplace un seul caractère quelconque, au même emplacement


* Remplace un ou plusieurs caractères quelconques au même emplacement dans la valeur

Exemple

Saisir Log* dans le champ PRODUIT et valider.

La feuille de réponses affichera tous les enregistrements dont le champ PRODUIT a un


contenu qui commence par les trois lettres "Log".

Autres exemples

Dupon? Dupont *ton Menton


Dupond Mouton

Du*d Durand *fér* Conférence


Dupond Indifférence

*/*/2002 Toutes les dates en 2002

©Jean-Paul BAG - 2010


64

Notes:
1. Avec les caractères génériques, l'écriture des lettres est la même en majuscule comme en minuscule (du* =
Du*).
2. A la validation, ACCESS entoure la saisie de guillemets, et la fait précéder de l'expression Comme
(Exemple: Comme "*/*/2002").

SELECTION DES ENREGISTREMENTS PAR DIFFERENCE

Opérateur PAS

Exemples de critères dans un champ NOM


Pas Dupont Affiche tous les enregistrements dont le nom n'est pas Dupont
Pas D* Affiche tous les enregistrements dont le nom ne commence pas par la lettre D

SELECTION DES ENREGISTREMENTS VIDES OU NON VIDES

Opérateur NULL ou EST NULL

Pour rechercher les champs vides.

Opérateur PAS NULL ou EST PAS NULL

Pour rechercher les champs qui contiennent une valeur.

Note:
Pour rechercher des chaînes vides (suivant les propriétés définies), taper un double guillemet ("")

SELECTION DE LA DATE DU JOUR

Pour sélectionner les enregistrements comportant la date du jour (fournie par l'horloge de
l'ordinateur).

Opérateur DATE()

CRITERES COMPRENANT UNE OPERATION

La feuille de réponses affichera tous les enregistrements dont le champ DATE a une valeur
correspondant aux trente derniers jours.

©Jean-Paul BAG - 2010


65

CRITERES COMPRENANT DES NOMS DE CHAMPS

Si un calcul, dans un critère, porte sur un nom de champ, on doit placer celui-ci entre crochets ([]).

La feuille de réponses affichera tous les enregistrements dont la valeur du champ TOTAL
est strictement supérieure à la valeur de PX_UNIT*2.

COMBINAISON DE PLUSIEURS CRITERES

Utilisation des opérateurs ET ou OU dans un champ.

L'opérateur ET

Est utilisé lorsqu'un champ doit satisfaire deux critères ou plus

Exemple:
>=01/01/2002 Et <01/04/2002
Toutes les dates du premier trimestre 2002

L'opérateur Entre

Permet d'identifier une plage dans une expression sans utiliser les opérateurs de comparaison (<, >,
<=, >=, <>).

Exemple:
Entre 01/01/2002 Et 01/03/2002
Entre le 1er janvier et le 1er mars 2002

L'opérateur OU

Est utilisé lorsqu'un champ doit satisfaire au mois un des critères spécifiés.

Exemple:

La feuille de réponses affichera tous les enregistrements dont le champ PRODUIT contient
©Jean-Paul BAG - 2010
66

les valeurs Micros ou Logiciel.

CRITERES SUPPLEMENTAIRES

Règle:

Deux ou plusieurs critères sur des lignes différentes sont unis par un OU logique
Deux ou plusieurs critères sur la même ligne sont unis par un ET logique

Exemple: Si on définit plus d'un critère pour un même champ

Les critères sont saisis sur plusieurs lignes du champ dans la grille d'interrogation.
On sélectionne les enregistrements qui répondent à l'un OU à l'autre critère du champ.

Exemple: Si on définit des critères pour plusieurs champs

Les critères sont saisis sur la même ligne


On sélectionne les enregistrements qui répondent à tous les critères de la ligne

CREATION DE CHAMPS CALCULES

1. Dans une requête, on peut créer de nouveaux champs à partir de champs existants.
2. On pourra ensuite trier ces champs, rajouter des critères ou utiliser les résultats obtenus.
3. Un champ calculé peut également combiner du texte de deux champs, grâce à l'opérateur &.
4. Dans la feuille de réponses de la requête, il est impossible de modifier les résultats d'un champ
calculé. En revanche, le recalcul se fait automatiquement si on modifie une valeur de champ qui
intervient dans l'opération.
5. Si on souhaite utiliser souvent un champ calculé dans un formulaire ou un état, on peut créer
une requête effectuant le calcul et fonder le formulaire ou l'état sur cette requête et non sur une
table.

• Ouvrir la requête en mode Création


• Cliquer sur la première cellule de champ vide
Ou insérer une colonne
• Taper l'expression désirée
• Valider
©Jean-Paul BAG - 2010
67

• Sélectionner l'expression Expr(chiffre) (sans la formule qui suit ni les :)


• Taper un nom plus significatif
Dès la saisie du champ calculé, on pourrait inscrire le nom du champ

• Cliquer l'icône Affichage

CHAMPS CALCULES AFFICHANT UNE PARTIE DE CHAMP TEXTE

Fonction Gauche(expression;valeur)

Extrait un nombre ("valeur") de caractères depuis la gauche du champ (entre crochets), du


texte ou du nombre ("expression").

Fonction Droite(expression;valeur)

Extrait un nombre ("valeur") de caractères depuis la droite du champ (entre crochets), du


texte ou du nombre ("expression").

Fonction ExtracChaîne(expression;début;valeur)

Extrait un nombre ("valeur") de caractères depuis la position ("début") du champ (entre


crochets), du texte ou du nombre ("expression").

Exemple: soit la saisie d'un numéro de téléphone (04) 93 31 25 18 dans le champ TEL
Gauche([TEL];4) donne (04)
Droite([TEL];8) donne 31 25 18
ExtracChaîne([TEL];2;2) donne 04

CHAMP CALCULE AFFICHANT UNE PARTIE DE CHAMP DATE

Utile lorsque l'on souhaite obtenir uniquement l'année par exemple, à partir d'un champ contenant
une date complète.

Fonction PartDate(Partie Date;date)

Affiche la partie de date désirée ("Partie Date"), à savoir le jour ("j"), le mois ("m"), le
trimestre ("t") ou l'année ("aaaa"), sous forme de chiffres.
©Jean-Paul BAG - 2010
68

"Date" est soit un nom de champ (entre crochets), soit une date.

Exemple: soit la saisie d'une date (23-fév-95) dans le champ DATE


PartDate("aaaa";[DATE]) donne 1995

Note:
PartDate("a";[DATE]) donne le nombre de jours écoulés entre le 1er janvier et la date

SELECTION DE VALEURS UNIQUES

Une requête affiche tous les enregistrements qui répondent aux critères spécifiés. Ainsi donc, par
exemple, plusieurs lignes peuvent faire apparaître le même client ou le même pays.
Dans certains cas, il peut être intéressant de n'obtenir que des valeurs uniques, afin de lister les
différents clients par exemple.
La requête ne doit contenir que le(s) champ(s) permettant d’obtenir des valeurs uniques.

• Ouvrir la requête en mode Création


• Cliquer dans la partie supérieure de la fenêtre Requête, en-dehors de la liste de champs

• Cliquer l'icône Propriétés


• Cliquer dans la propriété Valeurs distinctes
• Sélectionner Oui après avoir cliqué la flèche
• Cliquer l'icône Propriétés pour refermer la zone de dialogue

Dès lors, si la requête retourne habituellement deux ou plusieurs lignes identiques, ACCESS n'en
affichera qu'une. De plus, ACCESS trie automatiquement les champs (ordre croissant) par la
gauche.

« Non » à Valeurs distinctes « Oui » à Valeurs distinctes

©Jean-Paul BAG - 2010


69

Note:
Autre exemple de propriété, si un champ numérique dans la requête est doté d'un tri par ordre décroissant, on
peut afficher les premières valeurs dans la feuille de réponses, en utilisant la propriété "Premières valeurs" de
la fenêtre de requête.

CHANGER LE NOM DU CHAMP

Il est possible dans la requête de renommer les champs, qui figureront en titre dans la feuille de
réponses. Les noms d'origine demeurent intacts dans la table.

• Ouvrir la requête en mode Création


• Dans la grille, cliquer à gauche de la première lettre du nom de champ à modifier
• Taper le nouveau nom suivi de :

• Cliquer l'icône Affichage


Il est inutile d'effacer l'ancien nom.

OPERATIONS SUR TOUS LES ENREGISTREMENTS D'UNE TABLE

• Ouvrir la requête en mode Création


• Placer dans la grille les seuls champs pour lesquels on effectue un calcul
• Cliquer l'icône Opérations (ou AFFICHAGE/Opérations)
Chaque cellule de la nouvelle ligne Opération contient le mot "Regroupement"

• Cliquer dans la cellule Opération du champ de calcul


• Cliquer la flèche vers le bas
• Cliquer la fonction désirée

©Jean-Paul BAG - 2010


70

• Cliquer l'icône Affichage

Notes:
1. Pour effectuer des opérations portant sur l'ensemble des enregistrements, aucune cellule Opération ne doit
indiquer "Regroupement"
2. Pour annuler l'opération, sélectionner "Regroupement" en mode Création, dans le champ utilisé pour le
calcul.
3. Pour désactiver les opérations, Cliquer l'icône Opérations

OPERATIONS SUR DES GROUPES D'ENREGISTREMENTS

Exemple, dans un fichier de factures, calculer le montant total des factures par produit.
Dans la requête, on doit spécifier les champs destinés au regroupement, et ceux à utiliser pour les
opérations.
Sélectionner "Regroupement" dans la ligne Opération des champs utilisés pour le regroupement, et
choisir un type de calcul pour les champs utilisés pour les opérations.
On peut regrouper plusieurs champs. ACCESS regroupe les champs dans leur ordre d'apparition de
gauche à droite.

Spécifier des critères dans les champs de regroupement

Exemple, somme des factures par produits renseignés.

©Jean-Paul BAG - 2010


71

CREATION DES BARRES DE MENUS, D’OUTILS ET DE MENUS


CONTEXTUELS PERSONNALISES (FICHES OUTILS 5.10 A 5.30)
Se référant à l’image écran de la page 4 de ce fascicule, et étant déjà initiés à des applications
Windows, nous connaissons déjà ce que c’est qu’une barre de menus et une barre d’outils. Un menu
contextuel quant à lui, est une simple barre de menu (ou barre d'outil, comme on veut) qui n'apparaît
que quand on le lui demande en appuyant sur le bouton droit de la souris.
Chaque élément d'un menu contextuel personnalisé devra OBLIGATOIREMENT appeler une
macro. Comme on voudra vraisemblablement utiliser du code VBA à la place des macros, il sera
nécessaire, dans la plupart de cas et selon la version de MS-Access utilisée, de définir comme
paramètre le nom d'une FONCTION (pas d'une procédure) VBA qui se trouve dans un module.

CREATION DE LA BARRE DE MENU


1. Affichage / Barre d'outils / Personnaliser...
2. Cliquer sur l’onglet Barre d’outils
3. Cliquer sur Nouvelle...
4. Donner un nom. Dans cet exemple, appelons-là bmGestPharm, car nous destinons ce menu à
l’ouverture des objets de l’interface utilisateur de notre programme, notamment, les
formulaires et les états. Cliquer sur OK.
5. Maintenant que bmGestPharm existe, et que c'est une barre d'outils vide (type par défaut des
barres de menus, d’outils et des menus contextuels), on va la transformer en barre de menus
en cliquant sur Propriétés.
6. Choisir Type : Barre menu. C'est ce fait qui transforme la barre d’outils, type par défaut lors
de la création d’une barre quelconque, en barre de menus proprement dite. Pour la
transformer en menu contextuel, il suffit tout simplement de spécifier le type
FenIndépendante en lieu et place du type Barre d’outils ou autre. Cliquer sur Fermer.
Les opérations précédentes ne nous servent qu'à créer la barre de menus, mais, celle-ci est vide. Pour
y ajouter des menus qui vont nous permettre d’accéder à nos différents formulaires et états,
procédons comme suit :
7. Cliquer sur l’onglet Commandes
8. Sous Catégories, sélectionner Nouveau menu
9. Sous la zone de liste Commandes, glisser l’élément Nouveau menu vers le menu
bmGestPharm. Cette action crée le menu Nouveau menu dans notre barre de menus.
10. Pour renommer le menu nouvellement créé, click droit sur ce menu, dans le menu contextuel
qui apparaît et sous l’item Nom, effacer le nom par défaut et le remplacer par le nom réel de
notre menu : &Données par exemple. Cliquer ensuite en dehors du menu contextuel. Le nom
Nouveau menu change désormais au profit du nom Données que nous venons de spécifier
dans le menu contextuel.
11. Pour insérer des sous-menus, la procédure reste toujours la même sauf que, il faudra glisser
l’élément Nouveau menu non plus sur la barre de menus principale, mais dans le menu
Données comme un item.
12. Pour ajouter un item dans le menu ou un élément des menus prédéfinis, il suffit de
sélectionner, sous l’onglet Commandes, le menu concerné et dans la zone de liste
Commandes, glisser l’item voulu vers notre menu personnalisé.
C’est ainsi que, pour créer un item d’ouverture du formulaire fProduit, sous l’onglet Commandes,
sélectionner le menu Tous les formulaires et dans la zone de liste Commandes, glisser le formulaire
©Jean-Paul BAG - 2010
72

fProduit dans le menu Données comme item. Il ne restera plus qu’à lui donner un nom significatif
via le menu contextuel de l’item, Produits par exemple, et le tour est joué.
Notons que la procédure reste la même aussi bien pour les barres d’outils que pour les menus
contextuels à quelques exceptions près :
• Quand on crée un outil dans la barre d’outils, comme celui-ci est représenté par une
icône, il n’est toujours pas nécessaire de le renommer. Néanmoins, on peut se décider
d’associer des légendes aux icônes d’une barre d’outils. Dans ce cas, le menu
contextuel de personnalisation de l’item nous est d’une très grande importance.
• Pour ce qui est de la création d’un menu contextuel, il faut toujours définir le type de
menu après la création totale de la barre de menu sous forme de barre d’ sous forme
de barre d’outils pour faciliter son accessibilité. Pour accéder à une barre de menu
contextuel personnalisée, sous l’onglet Barre de menus, dans la zone de liste Barre
d’outils, cocher l’item Menus contextuels. Dans la barre des menus contextuels qui
apparaît, cliquer sur le menu Personnalisé. La liste de tous les menus contextuels déjà
créés apparaît. On peut désormais jongler avec eux comme pour d’autres types de
menus.

Fin de la partie interactive du cours

VBA

©Jean-Paul BAG - 2010


73

PARTIE 2 : PROGRAMMATION VBA


VARIABLES VBA
Une variable est un emplacement de stockage nommé contenant des données pouvant être modifiées au cours
de l'exécution du programme. Chaque variable possède un nom qui l'identifie de manière univoque au sein de
sa portée. Un type de données peut être indiqué. Les noms de variable doivent commencer par un caractère
alphabétique, être univoques au sein d'une même portée, ne doivent pas excéder 255 caractères et ne peuvent
contenir ni caractère de déclaration de type ni point.
Un type de données définit les caractéristiques d'une variable qui déterminent le genre de données que cette
variable peut contenir. Les types de données sont les suivants : Byte, Boolean, Integer, Long, Currency,
Decimal, Single, Double, Date, String, Object, Variant (valeur par défaut), types définis par l'utilisateur et
certains types d'objet.
La version 2007 permet de créer une variable temporaire et de lui affecter une valeur spécifique. Vous pouvez
ensuite utiliser la variable comme condition ou argument dans une procédure événementielle, dans un
formulaire, un état ou une requête.

Types de données de variables


Type de données Taille Plage
d'enregistrement
Byte 1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long (entier long) 4 octets -2 147 483 648 à 2 147 483 647
Single (à virgule flottante en 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ;
simple précision) 1,401298E-45 à 3,402823E38 pour les valeurs positives
Double (à virgule flottante 8 octets -1,79769313486231E308 à
en double précision) -4,94065645841247E-324 pour les valeurs négatives ;
4,94065645841247E-324 à 1,79769313486232E308 pour les
valeurs positives
Currency (entier à décalage) 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807
Decimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans séparateur
décimal ;
+/-7,9228162514264337593543950335 avec 28 chiffres à
droite du séparateur décimal ; le plus petit nombre différent
de zéro est +/-0.0000000000000000000000000001.
Date 8 octets 1er janvier 100 au 31 décembre 9999
Object 4 octets Toute référence à des données de type Object
String (longueur variable) 10 octets + longueur 0 à environ 2 milliards
de la chaîne
String (longueur fixe) Longueur de la 1 à environ 65 400
chaîne
Variant (nombres) 16 octets Toute valeur numérique, avec la même plage de valeurs
qu'une donnée de type Double
Variant (caractères) 22 octets + longueur Même plage de valeurs qu'une donnée de type String de
de la chaîne longueur variable
Type défini par l’utilisateur En fonction des La plage de valeurs de chaque élément correspond à celle de
(avec Type) éléments son type de données.

©Jean-Paul BAG - 2010


74

Déclaration explicite des variables :


L'option Explicit est une Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes
les variables de ce module.
Syntaxe
Option Explicit
Si elle est utilisée, l'instruction Option Explicit doit apparaître dans un module avant toute procédure. Si
l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à
l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non
déclarée, une erreur se produit à la compilation.
Si vous n'utilisez pas l'instruction Option Explicit, toutes les variables non déclarées sont de type Variant à
moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une instruction Deftype.
Utilisez l'instruction Option Explicit pour éviter toute faute de frappe lors de la saisie du nom d'une variable
existante ou pour écarter tout risque de confusion dans un code où la portée de la variable n'apparaît pas
clairement.

Opérateurs VBA
Les opérateurs sont classés en quatre catégories :

Catégories d'opérateurs
Opérateur Description Priorité des opérateurs
Lorsque plusieurs opérations sont contenues
Opérateurs Opérateurs permettant d'effectuer des
dans une même expression, chacune d'elles est
arithmétiques calculs mathématiques.
évaluée et résolue dans un ordre prédéfini,
Opérateurs de Opérateurs permettant d'effectuer des appelé priorité des opérateurs.
comparaison comparaisons. Dans les expressions contenant des opérateurs
Opérateurs de Opérateurs permettant de combiner des de diverses catégories, les opérateurs sont
concaténation chaînes. évalués dans l'ordre suivant : opérateurs
Opérateurs Opérateurs permettant d'effectuer des arithmétiques, puis opérateurs de comparaison et
logiques opérations logiques. enfin opérateurs logiques. Les opérateurs de
comparaison ont la même priorité ; c'est-à-dire
qu'ils sont évalués dans leur ordre d'apparition, de gauche à droite. Les opérateurs arithmétiques et logiques
sont évalués dans l'ordre de priorité ci-dessous :
Ordres de priorité Lorsqu'une même expression
Arithmétique Comparaison Logique comprend une multiplication et une
Élévation à une puissance (^) Égalité (=) Not division, chaque opération est évaluée
Négation (–) Inégalité (<>) And dans l'ordre d'apparition, de gauche à
droite. Il en est de même des
Multiplication et division (*, /) Infériorité (<) Or
expressions contenant une addition et
Division d'entiers (\) Supériorité (>) Xor une soustraction. L'utilisation de
Modulo arithmétique (Mod) Infériorité ou égalité (<=) Eqv parenthèses permet de modifier l'ordre
Addition et soustraction (+, –) Supériorité ou égalité (>=) de priorité afin qu'un élément d'une
Concaténation de chaînes (&) expression soit évalué avant les autres.
Les opérations situées à l'intérieur de
parenthèses sont toujours traitées avant les autres. La priorité des opérateurs s'applique cependant à l'intérieur
des parenthèses.
L'opérateur de concaténation de chaînes (&) n'est pas un opérateur arithmétique, mais sa priorité est inférieure
à celle des opérateurs arithmétiques et supérieure à celle des opérateurs de comparaison.
Procédures VBA
Nous allons parler des deux collections qui sont composées d'instructions qui accomplissent des tâches, Les
procédures Sub et les procédures Function.
La seule différence entre une procédure Sub et une procédure Function est que la procédure Function renvoie
une valeur après son exécution. Les procédures Sub réalisent des opérations mais ne retournent pas de valeur
après exécution.

Procédure Sub VBA


Sub déclare le nom, les arguments et le code formant le corps d'une procédure Sub.

Syntaxe :
©Jean-Paul BAG - 2010
75

[Private | Public ] [Static] Sub name [(arglist)]


[statements]
[Exit Sub]
[statements]
End Sub

La syntaxe de l'instruction Sub comprend les éléments suivants :

Éléments de l'instruction Sub


Élément Description
Public Facultatif. Indique que la procédure Sub est accessible à toutes les autres procédures
dans l'ensemble des modules. Dans un module contenant une instruction Option Private,
la procédure n'est pas disponible en dehors du projet.
Private Facultatif. Indique que la procédure Sub n'est accessible qu'à d'autres procédures du
module dans lequel elle a été déclarée.
Static Facultatif. Indique que les variables locales de la procédure Sub sont conservées entre
les appels. L'attribut Static n'a aucun effet sur les variables déclarées en dehors de la
procédure Sub, même si elles sont utilisées dans cette dernière.
name Nom de la procédure Sub. Respecte les conventions standard d'affectation de noms aux
variables.
arglist Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure
Sub lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules.
statements Facultatif. Tout groupe d'instructions à exécuter dans la procédure Sub.

Remarques :
En l'absence des mentions Public, Private, les procédures Sub sont publiques par défaut. Si le mot clé Static
n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels.
Attention : Les procédures Sub peuvent être récursives ; en d'autres termes, elles peuvent faire appel à elles-
mêmes pour exécuter une tâche. Cette caractéristique peut toutefois entraîner un dépassement de capacité de
la pile. Le mot clé Static n'est généralement pas utilisé avec les procédures Sub récursives.
Tout code exécutable doit figurer dans des procédures. Il n'est pas possible de définir une procédure Sub au
sein d'une procédure Sub ou Function.
Les mots clés Exit Sub entraînent la sortie immédiate d'une procédure Sub. L'exécution du programme se
poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Sub. Une procédure Sub peut
comporter plusieurs instructions Exit Sub en n'importe quel point.
Tout comme la procédure Function, une procédure Sub constitue une procédure séparée pouvant accepter des
arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement
à la procédure Function, qui renvoie une valeur, il est impossible d'utiliser une procédure Sub dans une
expression.
Pour appeler une procédure Sub, utilisez son nom suivi d'une liste d'arguments (s’il y en a).
Les variables utilisées dans les procédures Sub appartiennent à deux catégories : les variables qui sont
déclarées explicitement au sein de la procédure (à l'aide de l'instruction Dim ou de l'équivalent) et celles qui
ne le sont pas. Les premières sont locales au niveau de la procédure. Les variables utilisées sans avoir été
explicitement déclarées sont également locales au niveau de la procédure, à moins qu'elles ne soient
explicitement déclarées à un niveau supérieur en dehors de la procédure.
Attention : Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans cette dernière.
Un conflit de nom peut toutefois survenir si un élément défini au niveau module porte le même nom. Si la
procédure fait référence à une variable non déclarée portant le même nom qu'une autre procédure, constante
ou variable, la procédure est supposée faire référence au nom de niveau module. Afin d'éviter ce type de
conflit, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables, vous pouvez
utiliser l'instruction Option Explicit.

Note : Vous ne pouvez pas entrer dans une procédure Sub, ni en


sortir, à l'aide des instructions GoSub, GoTo ou Return.

Procédure Function VBA


Déclare le nom, les arguments et le code formant le corps d'une procédure Function.

©Jean-Paul BAG - 2010


76

Syntaxe :
[Public | Private ] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function

La syntaxe de l'instruction Function comprend les éléments suivants :

Éléments de l'instruction Function


Élément Description
Public Facultatif. Indique que la procédure Function est accessible à toutes les autres
procédures de tous les modules. Si cet élément est utilisé dans un module contenant un
élément Option Private, la procédure n'est pas disponible en dehors du projet.
Private Facultatif. Indique que la procédure Function n'est accessible qu'à d'autres procédures
du module dans lequel elle a été déclarée.
Static Facultatif. Indique que les variables locales de la procédure Function sont conservées
entre les appels. L'attribut Static n'a pas d'effet sur les variables déclarées en dehors de
la procédure Function, même si elles sont utilisées dans cette dernière.
name Nom de la procédure Function. Respecte les conventions standard d'affectation de
noms aux variables.
arglist Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure
Function lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules.
type Facultatif. Type de données de la valeur renvoyée par la procédure Function ; elle peut
être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String,
Objet, Variant.
statements Facultatif. Tout groupe d'instructions à exécuter dans la procédure Function.
expression Facultatif. Valeur renvoyée par la procédure Function.

Remarques
En l'absence des mentions Public, Private, les procédures Function sont publiques par défaut. Si le mot clé
Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels.
Attention : Tout comme pour les procédures Sub, les procédures Function peuvent être récursives, c'est-à-dire
qu’elles peuvent s'appeler elles-mêmes pour accomplir une tâche déterminée. Cette caractéristique peut
toutefois entraîner un dépassement de la capacité de la pile. Le mot clé Static n'est généralement pas utilisé
avec des procédures Function récursives.
Tout code exécutable doit figurer dans des procédures. Vous ne pouvez définir une procédure Function au
sein d'une autre procédure Function ou Sub.
L'instruction Exit Function entraîne la sortie immédiate d'une procédure Function. L'exécution du programme
se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Function. Une procédure Function
peut comporter plusieurs instructions Exit Function apparaissant en n'importe quel point.
Tout comme une procédure Sub, une procédure Function constitue une procédure séparée pouvant accepter
des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant,
contrairement à une procédure Sub, vous pouvez utiliser une procédure Function à droite d'une expression,
comme avec une fonction intrinsèque, telle que Sqr, Cos ou Chr, lorsque vous souhaitez utiliser la valeur
renvoyée par la fonction.
Vous appelez une procédure Function à l'aide du nom de la fonction suivi de la liste d'arguments entre
parenthèses, dans une expression.
Pour qu'une fonction renvoie une valeur, attribuez la valeur au nom de la fonction. Un nombre quelconque
d'affectations de ce type peut apparaître n'importe où dans la procédure. Si aucune valeur n'est attribuée à
l'argument name, la procédure renvoie une valeur par défaut : une fonction numérique renvoie la valeur 0, une
fonction de type chaîne de caractères, une chaîne de longueur nulle ("") et une fonction de type Variant, la
valeur Empty. Une fonction qui renvoie une référence d'objet renvoie Nothing si aucune référence d'objet
n'est attribuée à l'argument name (à l'aide de l'instruction Set) à l'intérieur de la procédure Function.

©Jean-Paul BAG - 2010


77

L'exemple suivant montre comment attribuer une valeur de renvoi à une fonction BinarySearch. Dans ce cas,
la valeur False est attribuée au nom de la fonction pour indiquer qu'une valeur n'a pas été trouvée.

Function BinarySearch(. . .) As Boolean


...
' Valeur introuvable. Renvoie la valeur False.
If lower > upper Then
BinarySearch = False
Exit Function
End If
...
End Function

Les variables utilisées dans les procédures Function appartiennent à deux catégories : les variables qui sont
déclarées explicitement dans la procédure et celles qui ne le sont pas. Les variables explicitement déclarées
dans une procédure (à l'aide de l'instruction Dim ou d'une instruction équivalente) sont toujours locales au
niveau de la procédure. Les autres variables utilisées mais qui ne sont pas déclarées explicitement dans une
procédure sont également locales au niveau de la procédure, à moins qu'elles ne soient explicitement
déclarées à un niveau plus élevé en dehors de la procédure.
Attention : Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans la procédure
mais un conflit de nom peut survenir si un élément que vous avez défini au niveau module possède le même
nom. Si votre procédure se réfère à une variable non déclarée qui porte le même nom qu'une autre procédure,
constante ou variable, votre procédure est supposée faire référence à ce nom de niveau module. Pour éviter ce
genre de conflits, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables,
vous pouvez utiliser l'instruction Option Explicit.
Attention : Visual Basic peut modifier l'ordre des expressions arithmétiques pour améliorer les performances
internes. Évitez d'utiliser une procédure Function dans une expression arithmétique lorsque la fonction
modifie la valeur des variables dans cette même expression.

L’OBJET DOCMD
Vous pouvez utiliser les méthodes de l'objet DoCmd pour exécuter des actions Microsoft Access à partir de
Visual Basic. Une action effectue des tâches telles que la fermeture de fenêtres, l'ouverture de formulaires et
la définition de la valeur des contrôles.

Utilisation de l'objet DoCmd


Par exemple, vous pouvez utiliser la méthode OpenForm de l'objet DoCmd pour ouvrir un formulaire.
La plupart des méthodes de l'objet DoCmd possèdent des arguments, dont certains sont obligatoires et d'autres
sont facultatifs. Si vous omettez des arguments facultatifs, les arguments utilisent les valeurs par défaut pour
la méthode particulière. Par exemple, la méthode OpenForm utilise sept arguments, mais seul le premier
argument, FormName, est obligatoire.
L'objet DoCmd ne prend pas en charge les méthodes correspondant aux actions suivantes :
• AjouterMenu.
• BoîteMsg. Utilisez la fonction MsgBox.
• ExécuterApplication. Utilisez la fonction Shell pour exécuter une autre application.
• ExécuterCode. Exécutez directement la fonction dans Visual Basic.
• EnvoiTouches. Utilisez l'instruction SendKeys.
• DéfinirValeur. Définissez directement la valeur dans Visual Basic.
• ArrêtToutesMacros.
• ArrêtMacro.
Pour plus d'informations sur l'action Microsoft Access correspondant à une méthode DoCmd, recherchez le
nom de l'action dans l'index de l'aide VBA Access.

Limitation des méthodes


Seules quelques méthodes, celles indispensables dans une application Access, seront traitées dans ce chapitre.
Pour celles qui n'apparaissent pas, se reporter à l'aide Access sur DoCmd.
Les méthodes de l'objet DoCmd traitées dans ce chapitre ne représentent pas l'ensemble des méthodes à
disposition mais seulement les méthodes indispensables pour la marche normale d'une application.
©Jean-Paul BAG - 2010
78

Ouvrir formulaires et états VBA


Seront traitées ici les méthodes d'ouverture des formulaires et des états qui sont les deux principales
ouvertures d'objets utilisées par les développeurs débutants.

La méthode OpenForm
La méthode OpenForm exécute l'action OuvrirFormulaire dans Visual Basic.

Syntaxe:
DoCmd.OpenForm(<NomFormulaire>, <Afficher>, <NomFiltre>, <ConditionWhere>,
<ModeDonnées>, <Modefenêtre>, <ArgOuverture>)

Les paramètres pourront avoir les valeurs suivantes:

NomFormulaire String obligatoire. Expression chaîne qui est le nom valide d'un formulaire dans la base
de données en cours. Si vous exécutez du code Visual Basic contenant la méthode OpenForm dans une base
de données bibliothèque, Microsoft Access recherche le formulaire portant ce nom dans la base de données
bibliothèque, puis dans la base de données en cours.

Afficher facultatif. Type d'affichage par constante AcFormView qui prendra une des valeurs suivantes :

Valeurs de AcFormView
Valeur de AcFormView Description
acDesign Ouverture en mode création
acFormDS Ouverture en mode feuille de données
acFormPivotChart ouverture en mode graphique croisé dynamique
acFormPivotTable ouverture en mode tableau croisé dynamique
acNormal Constante par défaut. Ouverture en mode Formulaire
acPreview Ouverture en mode aperçu avant impression

NomFiltre String facultatif. Expression chaîne qui est le nom valide d'une requête dans la base de données
en cours.

ConditionWhere String facultatif. Clause SQL WHERE valide sans le mot WHERE.

ModeDonnées Constante AcFormOpenDataMode facultatif. Le mode de saisie des données pour le


formulaire. S'applique uniquement aux formulaires ouverts en mode Formulaire ou Feuille de données.

Valeurs de AcFormOpenDataMode
Valeur Description
L'utilisateur peut ajouter de nouveaux enregistrements mais il ne peut pas modifier
acFormAdd
ceux qui existent.
acFormEdit L'utilisateur peut modifier les enregistrements existants et en ajouter de nouveaux.
constante par défaut. Access ouvre le formulaire dans le mode de données défini
acFormPropertySettings par les propriétés AllowEdits, AllowDeletions, AllowAdditions et DataEntry du
formulaire.
acFormReadOnly L'utilisateur peut seulement afficher les enregistrements.

ModeFenêtre Constante AcWindowMode facultatif. Le mode de fenêtre dans lequel s'ouvre le formulaire.
Valeurs de AcWindowMode
Valeur Description
acDialog Les propriétés Modal et PopUp du formulaire sont réglées sur oui
acHidden Le formulaire est masqué.
acIcon Le formulaire s'ouvre sous forme réduite dans la barre des tâches Windows.
acWindowNormal Valeur par défaut. Le formulaire est ouvert dans le mode défini par ses propriétés

©Jean-Paul BAG - 2010


79

ArgOuverture Variant facultatif. Expression chaîne. Cette expression sert à définir la propriété
OpenArgs du formulaire. Ce paramètre peut ensuite être utilisé par du code dans un module d'un formulaire,
comme dans la procédure événementielle Open. Vous pouvez également faire référence à la propriété
OpenArgs dans des macros et des expressions.
Par exemple, supposez que le formulaire que vous ouvrez est un formulaire continu contenant une liste de
clients. Si vous voulez activer l'enregistrement d'un client spécifique à l'ouverture du formulaire, vous pouvez
spécifier le nom du client avec l'argument ArgOuverture , puis utiliser la méthode FindRecord pour activer
l'enregistrement correspondant au client du nom spécifié.

Remarques
L'argument conditionwhere peut comporter jusqu'à 32 768 caractères.
Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule
de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier
argument spécifié.

La méthode OpenReport
La méthode OpenReport exécute l'action OuvrirEtat dans Visual Basic.

Syntaxe:
DoCmd.OpenReport(<ReportName>, <View>, <FilterName>, <WhereCondition>, <WindowMode>,
<OpenArgs>)

Les paramètres pourront avoir les valeurs suivantes :

ReportName Variant requis. Une expression chaîne qui est le nom valide d'un état dans la base de données
en cours. Si vous exécutez un code Visual Basic contenant la méthode OpenReport dans une base de
données bibliothèque, Access recherche l'état sous ce nom, d'abord dans la base de données bibliothèque, puis
dans la base de données en cours.

View Constante AcView facultatif. La vue à appliquer à l'état spécifié.


Valeurs de AcView
Valeur Description
acViewDesign Ouverture de l'état en mode création.
Option par défaut. Imprime l'état
acViewNormal
immédiatement.
acViewPivotChart Non prise en charge.
acViewPivotTable Non prise en charge.
acViewPreview Ouverture en mode aperçu avant impression

FilterName Variant facultatif. Une expression chaîne qui est le nom valide d'une requête dans la base de
données en cours.

WhereCondition Variant facultatif. Une expression chaîne qui est une clause WHERE SQL valide sans le
mot WHERE.

ModeFenêtre Constante AcWindowMode facultatif. Le mode dans lequel s'ouvre le formulaire.


Valeurs de AcWindowMode
Valeur Description
acDialog Les propriétés Modal et PopUp de l'état sont réglées sur Oui.
acHidden L'état est masqué.
acIcon L'état s'ouvre sous forme réduite dans la barre des tâches Windows.
acWindowNormal Option par défaut. L'état est dans le mode défini par ses propriétés

OpenArgs Variant facultatif. Définit la propriété OpenArgs.

Remarques
L'argument WhereCondition peut comporter jusqu'à 32 768 caractères.
©Jean-Paul BAG - 2010
80

Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule
de l'argument. Si vous laissez un ou plusieurs arguments de fin vierges, n'utilisez pas de virgule à la suite des
arguments spécifiés.

Fermer formulaires et états VBA

La méthode Close
La méthode Close exécute l'action Enregistrer dans Visual Basic.
Syntaxe:
DoCmd.Close(<TypeObjet>, <NomObjet>, <Enregistrer>)

Exemples:
Cette commande ci-dessous ferme le formulaire « fClient » en enregistrant les modifications apportées à la
structure du formulaire.

DoCmd.Close acForm, « fClient », acSaveYes

TypeObjet objet acObjectType facultatif.


valeur AcObjectType
acDataAccessPage
acDefault (valeur par défaut)
acDiagram
acForm
acFunction
acMacro
acModule
acQuery
acReport
acServerView
acStoredProcedure
acTable

NomObjet Variant facultatif. Expression chaîne qui correspond au nom valide d'un objet du type
sélectionné par l'argument typeobjet. Par défaut l'objet actif sera utilisé.

Enregistrer acCloseSave facultatif.

©Jean-Paul BAG - 2010


81

Valeurs de AcCloseSave
Valeur Description
L'objet sera fermé, mais les modifications apportées à la structure de l'objet ne seront pas
acSaveNo
enregistrées. Les données modifiées par l'objet seront bien sauvegardées.
Valeur par défaut. En cas de modification de la structure de l'objet une confirmation sera
acSavePrompt
demandée par Access.
L'objet sera fermé, les modifications apportées à la structure de l'objet seront enregistrées.
acSaveYes
Les données modifiées par l'objet seront sauvegardées.

Remarques
Si vous laissez vides les arguments typeobjet et nomobjet (la constante par défaut, acDefault, est choisie pour
typeobjet), Access ferme la fenêtre active. Si vous spécifiez l'argument enregistrer et laissez vides les
arguments typeobjet et nomobjet, vous devez inclure les virgules des arguments typeobjet et nomobjet. Si un
formulaire renferme un contrôle lié à un champ dont la propriété Required a pour valeur « Oui », et si le
formulaire est fermé à l'aide de la méthode Close sans entrer aucune donnée pour ce champ, aucun message
d'erreur n'est affiché. Toute modification apportée à l'enregistrement est abandonnée. Lorsque le formulaire
est fermé à l'aide du bouton Fermer de Windows, de l'action Close d'une macro, ou en cliquant dans le menu
Fichier sur la commande Fermer, Access affiche une alerte.

Copier des données vers Excel VBA


La méthode TransferSpreadsheet exécute l'action TransférerFeuilleCalcul dans Visual Basic. Vous pouvez
utiliser l'action TransférerFeuilleCalcul pour importer ou exporter des données entre la base de données
Access(.mdb) active ou le projet Access (.adp) actif et un fichier de feuille de calcul. Vous pouvez également
attacher les données d'une feuille de calcul Excel avec la base de données Access active. Avec une feuille de
calcul attachée, vous pouvez afficher et modifier les données de la feuille de calcul avec Access tout en
donnant un accès complet aux données depuis votre tableur Excel. Vous pouvez également vous attacher à
des données d'un fichier de feuille de calcul Lotus 1-2-3, mais ces données sont en lecture seule dans Access.

Syntaxe:
DoCmd.TransferSpreadsheet([<TypeTransfert>], [<TypeFeuille>], <NomTable ou Nomrequête>,
<NomFichier>, [<ContientNomsChamps>], [<Étendue>], [<UtiliserOA>])

TypeTransfert AcDataTransferType facultatif. Indique le type de transfert

Valeurs de AcDataTransferType
Valeur Description
acExport Exportation
acImport constante par défaut. Importation
acLink Attache d'une table. N'est pas pris en charge pour les projets Microsoft Access (.adp).

TypeFeuille AcSpreadSheetType facultatif. Type de feuille de données.

Valeurs de AcSpreadSheetType
acSpreadsheetTypeExcel3
acSpreadsheetTypeExcel4
acSpreadsheetTypeExcel5
acSpreadsheetTypeExcel7
acSpreadsheetTypeExcel8 valeur par défaut
acSpreadsheetTypeExcel9
acSpreadsheetTypeLotusWJ2 - version japonaise uniquement
acSpreadsheetTypeLotusWK1
acSpreadsheetTypeLotusWK3
acSpreadsheetTypeLotusWK4

Vous pouvez attacher les données provenant d'une feuille de calcul Lotus 1-2-3, mais ces données ne sont
accessibles qu'en lecture seule dans Access. Vous pouvez importer et attacher (en lecture seule) des fichiers
©Jean-Paul BAG - 2010
82

Lotus .WK4, mais vous ne pouvez pas exporter des données Access vers ce format de feuille de calcul.
Microsoft Access ne prend désormais plus en charge l'importation, l'exportation et la liaison de données
provenant de feuilles de calcul Lotus .WKS ou Excel version 2.0. au moyen de cette méthode.
Si vous laissez cet argument vierge, la valeur par défaut (acSpreadsheetTypeExcel8) est choisie.

NomTable Variant obligatoire. Expression chaîne qui correspond au nom de la table Access dans laquelle
vous voulez importer des données, de laquelle vous voulez exporter les données ou à laquelle vous voulez
attacher des données. Il peut s'agir également de la requête Sélection Access dont vous voulez exporter les
résultats dans une feuille de calcul.Si vous sélectionnez Importer dans l'argument Type transfert, Access
ajoute les données de la feuille de données à cette table si la table existe déjà. Dans le cas contraire, Access
crée une nouvelle table contenant les données de la feuille de calcul. Dans Access, vous ne pouvez pas utiliser
une instruction SQL pour spécifier des données à exporter quand vous utilisez l'action
TransférerFeuilleCalcul. Au lieu d'utiliser une instruction SQL, vous devez d'abord créer une requête et
ensuite spécifier le nom de la requête dans l'argument Nom table.

NomFichier Variant obligatoire. Expression chaîne qui représente le nom et le chemin du fichier de feuille
de calcul dont vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel
vous voulez attacher des données. Access crée une nouvelle feuille de calcul quand vous exportez des
données depuis Access. Si le nom de fichier est identique à celui d'une feuille de données existante, Access
remplace la feuille existante, à moins que vous n'exportiez vers un classeur d'Excel version 5.0 ou ultérieure.
Dans ce cas, Access copie les données exportées vers la nouvelle feuille de calcul disponible qui suit dans le
classeur. Si vous importez de ou que vous vous liez à une feuille de calcul d'Excel version 5.0 ou ultérieure,
vous pouvez spécifier une feuille de calcul particulière avec l'argument Étendue.

ContientNomsChamps Variant facultatif. Utilisez True pour utiliser les noms de champs de la première
ligne de la feuille de calcul lors d'une importation, exportation ou attache. Utilisez False pour que Access
considère la première ligne de la feuille de calcul comme étant des données normales. Si vous laissez cet
argument vierge, la valeur par défaut (False) est choisie. Lorsque vous exportez les données d'une table ou
d'une requête Sélection Access vers une feuille de calcul, les noms de champs sont insérés dans la première
ligne de la feuille de calcul, quelle que soit la valeur de cet argument.

Étendue Variant facultatif. Expression chaîne qui correspond à une plage valide de cellules ou au nom
d'une plage de la feuille de calcul. Cet argument n'est valable que pour une importation. Laissez cet argument
vierge pour importer la feuille de calcul entière. Lorsque vous effectuez une exportation vers une feuille de
calcul, vous devez laisser cet argument vierge. Si vous tapez une plage, l'exportation échoue.
Si vous importez de ou que vous vous attachez à une feuille de calcul d'Excel version 5.0 ou ultérieure, vous
pouvez préfixer la plage avec le nom du classeur et un point d'exclamation, comme par exemple :
Budget!A1:C7.

UtiliserOA Variant facultatif.


Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule
de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier
argument spécifié.

Copier des données vers fichier texte VBA


La méthode TransferText exécute l'action TransférerTexte dans Visual Basic. Vous pouvez utiliser l'action
TransférerTexte pour importer ou exporter du texte entre la base de données Access (.mdb) active ou le projet
Access (.adp) actif et un fichier texte. Vous pouvez également attacher les données d'un fichier texte à la base
de données Access active. Avec un fichier texte attaché, vous pouvez afficher les données texte avec Access
tout en offrant un accès complet aux données depuis votre programme de traitement de texte. Vous pouvez
également importer de, exporter vers et vous attacher à une table ou une liste dans un fichier HTML (*.html).
Si vous vous attachez à des données dans un fichier texte ou un fichier HTML, les données sont en lecture
seule dans Access.
Syntaxe:
DoCmd.TransferText([<TypeTransfert>], [<NomSpécification>], [<NomTable ou NomRequête>],
[<NomFichier>], [<ContientNomsChamps>], [<NomTableHTML>], [<PageCode>])

TypeTransfert constante AcTextTransferType facultatif.


©Jean-Paul BAG - 2010
83

Valeurs de AcTextTransferType
Valeur Description
acExportDelim Exportation texte (délimité)
acExportFixed Exportation texte (longueur fixe)
acExportHTML Exportation HTML
acExportMerge Fusion avec Word
acImportDelim valeur par défaut. Importation texte (délimité)
acImportFixed Importation texte (longueur fixe)
acImportHTML Importation HTML
acLinkDelim Liaison texte (délimité)
acLinkFixed Liaison texte (longueur fixe)
acLinkHTML Liaison HTML

Si vous laissez cet argument vide, la valeur par défaut (acImportDelim) est choisie.
Vous pouvez également exporter des données vers un fichier de données de fusion de courrier Microsoft
Word, que vous pouvez ensuite utiliser avec la fonction de fusion de Word pour créer des documents
fusionnés, comme des lettres type et des étiquettes d'envoi. Seuls les types de transfert Importation texte
(délimité), Importation texte (longueur fixe), Exportation texte (délimité), Exportation texte (longueur fixe) ou
Fusion avec Word sont pris en charge dans un projet Access (.adp).

NomSpécification Variant facultatif. Expression chaîne qui correspond au nom du format d'importation ou
d'exportation que vous avez créé et enregistré dans la base de données en cours. Dans le cas d'un fichier texte
de largeur fixe, vous devez spécifier obligatoirement un nom de fichier de spécification. Dans le cas des
fichiers texte délimités et des fichiers de données de publipostage Microsoft Word, vous pouvez laisser cet
argument vide afin de sélectionner les caractéristiques d'importation/exportation par défaut. Pour créer un
fichier de spécification, utiliser le bouton Avancé dans un import ou export manuel. Attention, en version
2007 le fichier de spécification est obligatoire sinon une erreur d'exécution se déclenche.

NomTable Variant facultatif. Expression chaîne qui correspond au nom de la table Microsoft Access dans
laquelle vous voulez importer des données, de laquelle vous voulez exporter les données ou à laquelle vous
voulez attacher des données. Il peut s'agir également d'une requête Access dont vous voulez exporter les
résultats dans une feuille de calcul. Si vous indiquez Importation texte (délimité), Importation texte (longueur
fixe) ou Importation HTML, Access ajoute les données texte à cette table si la table existe déjà. Dans le cas
contraire, Access crée une nouvelle table contenant les données texte. Vous ne pouvez pas utiliser une
instruction SQL pour spécifier des données à exporter quand vous utilisez l'action TransférerTexte. Au lieu
d'utiliser une instruction SQL, vous devez d'abord créer une requête et ensuite spécifier le nom de la requête
dans l'argument Nom table.

NomFichier Variant facultatif. Expression chaîne qui représente le nom et le chemin du fichier texte dont
vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel vous voulez
attacher des données. Indiquez le chemin d'accès complet. Access crée un nouveau fichier texte quand vous
exportez des données depuis Access. Si le nom de fichier est le même que celui d'un fichier texte existant,
Access remplace le fichier texte existant. Si vous voulez importer ou attacher une table ou une liste
particulière dans un fichier HTML, vous pouvez utiliser l'argument Nom table HTML. Attention, en version
2003 et 2007, l'extension txt est obligatoire pour les fichiers texte.

ContientNomsChamps Variant facultatif. Utilisez True pour utiliser les noms de champs de la première
ligne du fichier texte lors d'une importation, exportation ou attache. Utilisez False pour que Access considère
la première ligne du fichier texte comme étant des données normales. Si vous laissez cet argument vierge, la
valeur par défaut (False) est choisie. Cet argument est ignoré pour les fichiers de données de publipostage
MSWord, dans lesquels la première ligne doit toujours contenir les noms des champs.

NomTableHTML Variant facultatif. Expression chaîne qui correspond au nom de la table ou de la liste
dans le fichier HTML que vous voulez importer ou attacher. Cet argument n'est pas pris en compte sauf si
l'argument typetransfert a pour valeur acImportHTML ou acLinkHTML. Si vous laissez cet argument vierge,
la première table ou liste du fichier HTML est importée ou attachée. Le nom de la table ou de la liste dans le
©Jean-Paul BAG - 2010
84

fichier HTML est déterminé par le texte spécifié par la balise <CAPTION>, s'il en existe une. S'il n'y a pas de
balise <CAPTION>, le nom est déterminé par le texte spécifié par la balise <TITLE>. Si plusieurs tables ou
listes portent le même nom, Microsoft Access les distingue en ajoutant un numéro à la fin de chaque nom de
table ou de liste.

PageCode Variant facultatif. Valeur de type Long désignant le jeu de caractères de la page de codes.
Jeu de caractères : groupement de caractères alphabétiques, numériques et autres qui présentent une certaine
relation entre eux. Par exemple, le jeu de caractères ASCII standard comprend des lettres, des chiffres, des
symboles et des codes de contrôle qui composent le système de codage ASCII.
Page de codes : tableau qui met en relation les codes de caractères binaires utilisés par un programme avec les
touches du clavier ou avec l' aspect des caractères à l' écran. Les pages de code constituent un moyen de
prendre en charge les langues de différents pays.
Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule
de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier
argument spécifié.
Les données texte que vous ajoutez à une table Access existante doivent être compatibles avec la structure de
la table. Chaque champ du texte doit être du même type de données que le champ correspondant dans la table.
Les champs doivent être dans le même ordre (à moins d'avoir défini l'argument Contient noms des champs à
Oui, auquel cas les noms des champs doivent correspondre aux noms des champs dans la table).

Manipuler les fenêtres VBA


Dimensions de la fenêtre VBA
La méthode MoveSize exécute l'action DéplacerDimensionner dans Visual Basic. Vous pouvez utiliser
l'action DéplacerDimensionner pour déplacer ou redimensionner la fenêtre active.

Syntaxe:
DoCmd.MoveSize [<Droite>],[<Bas>],[<Largeur>],[<Hauteur>]

La méthode MoveSize prend les arguments suivants.

Arguments de la méthode MoveSize


Argument Description
Nouvelle position horizontale du coin supérieur gauche de la fenêtre, mesurée à partir du bord
Droite
gauche de la fenêtre qui la contient.
Nouvelle position verticale du coin supérieur gauche de la fenêtre, mesurée à partir du bord
Bas
supérieur de la fenêtre qui la contient.
Largeur Nouvelle largeur de la fenêtre.
Hauteur Nouvelle hauteur de la fenêtre.

Si vous laissez un argument à blanc, Microsoft Access utilise le paramétrage actuel de la fenêtre. Vous devez
saisir une valeur pour au moins un des arguments. Pour déplacer une fenêtre sans la redimensionner, saisissez
des valeurs pour les arguments Droite et Bas mais laissez les arguments Largeur et Hauteur à blanc. Pour
redimensionner une fenêtre sans la déplacer, saisissez des valeurs pour les arguments Largeur et Hauteur mais
laissez à blanc les arguments Droite et Bas. Vous pouvez laisser un argument facultatif vierge au milieu de la
syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un ou plusieurs arguments de fin
vierges, n'utilisez pas de virgule à la suite des arguments spécifiés.
Les unités des arguments sont exprimées en twips. Un twip est équivalant à 1/20e de point ou 1/1440e de
pouce. Un centimètre contient 567 twips.

Fenêtre maxi, mini et restaurer VBA


Les commandes Maximize, Minimize et Restore permettent de gérer la taille de la fenêtre d'un objet
formulaire ou état dans la fenêtre Access. Elles s'appliquent à la fenêtre Access qui contient les objets tels que
les formulaires mais pas à la fenêtre application Access.
La méthode Minimize exécute l'action Réduire dans Visual Basic. Vous pouvez utiliser l'action Réduire pour
réduire la fenêtre active à une petite barre de titre dans le bas de la fenêtre de Microsoft Access. Vous pouvez
utiliser cette action pour faire disparaître une fenêtre de l'écran en laissant l'objet ouvert. Vous pouvez
également utiliser cette action pour ouvrir un objet sans afficher sa fenêtre. Pour afficher l'objet, utilisez
l'action Agrandir (Maximize) ou Restaurer (Restore). L'action Minimize équivaut à cliquer sur le bouton
©Jean-Paul BAG - 2010
85

Réduire dans le coin supérieur droit de la fenêtre ou à cliquer sur Réduction dans le menu Système de la
fenêtre. Vous pouvez utiliser l'action Restaurer pour restaurer une fenêtre réduite à sa taille antérieure.
La méthode Maximize exécute l'action Agrandir dans Visual Basic. Vous pouvez utiliser l'action Agrandir
pour augmenter la taille de la fenêtre active afin qu'elle remplisse la fenêtre Microsoft Access. Cette action va
vous permettre de voir la plus grande partie possible de l'objet dans la fenêtre active. Cette action équivaut à
cliquer sur le bouton Agrandir dans le coin supérieur droit de la fenêtre ou à cliquer sur Agrandissement dans
le menu Système de la fenêtre. Vous pouvez utiliser l'action Restaurer pour restaurer une fenêtre agrandie à sa
taille antérieure.
La méthode Restore exécute l'action Restaurer dans Visual Basic. Vous pouvez utiliser l'action Restaurer pour
restaurer à sa taille antérieure une fenêtre agrandie ou réduite. L'action Restaurer équivaut à cliquer sur le
bouton Restaurer dans le coin supérieur droit ou à cliquer sur la commande Restaurer dans le menu Système
de la fenêtre.

Syntaxe:
DoCmd.Maximize
DoCmd.Minimize
DoCmd.Restore

Imprimer un objet VBA


La méthode PrintOut exécute l'action Imprimer dans Visual Basic. Vous pouvez utiliser l'action Imprimer
pour imprimer l'objet actif de la base de données ouverte. Vous pouvez imprimer des feuilles de données, des
états, des formulaires, des pages d'accès aux données et des modules.

Syntaxe:
DoCmd.PrintOut([<Imprimer>], [<DePage>], [<APage>], [<QualitéImpression>], [<Copies>],
[<CopiesTriées>])

Imprimer AcPrintRange facultatif. Indique le type d'impression.

Valeurs de AcPrintRange
Valeur Description
acPages Impression d'une plage de pages
acPrintAll valeur par défaut. Impression de l'objet complet.
acSelection Impression de la sélection

DePage Variant facultatif. Expression numérique qui représente un numéro de page valide dans le
formulaire actif ou la feuille de données active. Cet argument est obligatoire si vous spécifiez acPages pour
l'argument Imprimer.

ÀPage Variant facultatif. Expression numérique qui représente un numéro de page valide dans la feuille de
données ou le formulaire actif. Cet argument est obligatoire si vous spécifiez acPages pour l'argument
Imprimer. La valeur de ÀPage doit être égale ou supérieure à la valeur de DePage

QualitéImpression Constante AcPrintQuality facultatif.

Valeurs de AcPrintQuality
Valeur Description
acDraft Qualité Brouillon
acHigh constante par défaut. Qualité Haute
acLow Qualité Basse
acMedium Qualité Moyenne

Copies Variant facultatif. Expression numérique. Si vous laissez cet argument vierge, la valeur par défaut
(1) est choisie.

©Jean-Paul BAG - 2010


86

CopiesTriées Variant facultatif. Utilisez True pour trier les copies imprimées et False dans le cas contraire.
Si vous laissez cet argument vierge, la valeur par défaut (True) est choisie. L'objet peut s'imprimer plus vite si
cet argument est défini à False.
Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule
de l'argument. Si vous laissez un ou plusieurs arguments de fin vierges, n'utilisez pas de virgule à la suite des
arguments spécifiés.
Avec cette action, aucune boîte de dialogue Imprimer n'apparaît.

Quitter MS-Access
La méthode Quit vous permet de quitter Microsoft Access. Plusieurs options vous permettent de sauvegarder
un objet de base de données avant de quitter Microsoft Access.
Docmd.Quit(Option)
Option Facultatif AcQuitOption. Option permettant de quitter.

acQuitOption peut être l'une de ces constantes acQuitOption.


acQuitPrompt Affiche une boîte de dialogue vous invitant à enregistrer tous les objets de base de données
modifiés mais non sauvegardés. (Auparavant appelée acPrompt).
acQuitSaveAll par défaut Enregistre tous les objets sans afficher de boîte de dialogue. (Auparavant appelée
acSaveYes).
acQuitSaveNone Quitte Microsoft Access sans qu'aucun objet ne soit sauvegardé. (Auparavant appelée
acExit).

Remarque 1
La méthode Quit équivaut à cliquer sur la commande Quitter du menu Fichier. Il est possible de créer dans
un formulaire une commande de menu personnalisée ou un bouton de commande à l'aide d'une procédure qui
inclut la méthode Quit. Par exemple, vous pouvez insérer un bouton Quitter dans un formulaire et inclure une
procédure dans l'événement Click du bouton qui utilise la méthode Quit en attribuant la valeur
acQuitSaveAll à l'argument Option.

Remarque 2
La méthode Quit de l'objet DoCmd a été ajoutée pour des raisons de compatibilité ascendante afin de pouvoir
exécuter l'action Quitter dans du code Visual Basic dans Microsoft Access 95. Il vaut mieux que vous utilisiez
plutôt la méthode Quit existante de l'objet Application.

Exemples

Application à l'objet Application.


L'exemple suivant montre la procédure événementielle Click du bouton de commande AppExit. Après avoir
cliqué sur ce bouton, une boîte de dialogue vous invitant à enregistrer les modifications avant de quitter
Microsoft Access s'affiche.

Private Sub AppExit_Click()


Application.Quit acQuitPrompt
End Sub

Application à l'objet DoCmd.


Cet exemple affiche une boîte de dialogue qui vous invite à enregistrer les objets modifiés avant de quitter
Microsoft Access.

DoCmd.Quit acQuitPrompt

Supprimer un objet VBA


La méthode DeleteObject exécute l'action DeleteObject dans Visual Basic. Vous pouvez utiliser l'action
SupprimerObjet pour supprimer un objet de la base de données active.

Syntaxe
DoCmd.DeleteObject([<TypeObjet>], [<NomObjet>]))
©Jean-Paul BAG - 2010
87

TypeObjet Constante AcObjectType facultatif.

Valeurs de AcObjectType
Valeur Objet à supprimer
acDataAccessPage Page d'accès aux données
acDefault valeur par défaut
acDiagram Schéma
acForm Formulaire
acFunction Fonction
acMacro Macro
acModule module
acQuery requête
acReport Etat
acServerView Vue serveur
acStoredProcedure Procédure stockée
acTable Table

NomObjet Variant facultatif. Expression chaîne qui est le nom valide d'un objet du type sélectionné avec
l'argument typeobjet. Si vous exécutez du code Visual Basic contenant la méthode DeleteObject dans une
base de données bibliothèque, Microsoft Access recherche un objet de ce nom d'abord dans la base de
données bibliothèque, puis dans la base de données en cours.
Si vous laissez les arguments typeobjet et nomobjet vierges (la constante par défaut acDefault est choisie pour
typeobjet), Access supprime l'objet sélectionné dans la fenêtre Base de données, sans afficher un message
d'avertissement quand il rencontre méthode DeleteObject .

L’OBJET RECORDSET

Accès aux enregistrements


L'accès à des enregistrements d'une table ou d'une requête est une des techniques de base d'Access. Il n'existe
pas de procédure ou de fonction où vous ne deviez pas rechercher ou sélectionner un enregistrement, lire les
valeurs d'un champ ou écrire des données.
La démarche est identique que les enregistrements soient le résultat d'une requête ou qu'ils résident dans une
table. Par principe on ne travaillera pas directement dans la table de données mais avec une requête qui va
filtrer les enregistrements et les présentera dans un ordre établi.

L'objet RecordSet
L'objet RecordSet représente un jeu d'enregistrements. Il peut provenir de n'importe quel endroit cela n'a pas
d'importance. Il peut s'agir du résultat d'une requête ou d'une table. En ouvrant une table ou en exécutant une
requête on ouvre une instance recordSet.
Pourquoi DAO ?
Ce cours étant destiné en priorité aux débutants, il apparaît plus aisé de démarrer les fonctions par DAO car
certains des lecteurs pourront être appelés à réaliser des bases de données dans des versions d’Access
antérieures à Access 2000 où ils ne peuvent pas appliquer la technique ADO.
Conventions d'appellation des objets
Pour utiliser un objet recordset , nous devons utiliser d'autres objets tel que DataBase, Field, index etc... Pour
bien reconnaître ces objets d'après leur nom il faut prendre l'habitude de les nommer de la même façon dans
toutes les applications en respectant la casse.
Db Objet Database
Rs Objet RecordSet
Fld Objet Field

©Jean-Paul BAG - 2010


88

Base active
Pour ouvrir un recordset, il faudra indiquer un objet DataBase pour que Access puisse détecter la base
contenant la table à ouvrir. S'il s'agit de la base active (la base dans laquelle vous évoluez) vous pouvez la
nommer par la propriété CurrentDb. On peut également utiliser la propriété CodeDb.
Convention de codification
Pour nommer les champs d'enregistrement lors d'une lecture ou d'une écriture il y a plusieurs façons de
procéder, toutes ayant le même résultat mais plus ou moins compréhensibles pour le lecteur.
Pour accéder à un champ du recordset il faut utiliser la liste Fields qui est l'objet de liste contenant tous les
champs de la table sous la forme d'objet Field. Pour identifier un champ on peut utiliser l'index ou le nom, ce
dernier étant de loin préférable.
Identification d'un champ : Rs.Fields(<Nom de champ>) ou Rs.Fields(<numéro index>)
Pour obtenir la valeur contenu dans un champ on utilisera la propriété value.
Rs.Fields(<Nom de champ>).Value
Si on tiens compte que la valeur de la propriété par défaut d'un champ d'un recordset est Value, on peut ne pas
l'utiliser:
<variable> = Rs.Fields(<Nom de champ>)
Si on tient compte également que la valeur de la propriété par défaut de l'objet recordset est Fields, on peut ne
pas l'utiliser:
<variable> = Rs(<Nom de champ>)
<variable> = Rs(<Numéro d'index>)

Ces deux codifications seront seront donc utilisées dans ce site.


Il sera possible également d'utiliser le ! pour nommer un champ de recordset mais je trouve que cette dernière
façon n'est pas dans la logique d'une programmation objet.

<variable> = Rs(<Nom de champ>) peut donc s'écrire <variable> = Rs!<Nom de champ>

Requête ou Table ?
Toutes les opérations réalisées sur les tables sont réalisables à l'aide de requêtes. Soit vous utilisez le nom
d'une requête enregistrée soit l'instruction SQL de la requête directement dans l'ouverture de l'objet recordset.
Le type adapté aux requêtes s'appelle Dynaset. La méthode d'utilisation des requêtes et des tables est
identiques sauf que la méthode Seek ne fonctionne pas pour les requêtes, mais l'utilisation des clauses Where
du sql et les méthodes Find permettent de réaliser la même fonction.
La requête sélectionne à l'avance, dans la table, les enregistrements répondant aux critères et on n'a pas besoin
de rechercher par Find les enregistrements répondant à ces critères.

Ouverture d'un recordset


L'ouverture d'un jeu d'enregistrement (recordset) doit être codifiée dans toutes vos applications. Il faut définir
l'objet DataBase, ensuite l'objet RecordSet. Ensuite la base de données (DataBase) sera chargée et le recordset
ouvert par la méthode OpenRecordSet. Lorsque le recordset sera ouvert il faudra contrôler s'il contient des
enregistrements par la propriété BOF (Begin Of File, Début de Fichier). Pour la bonne compréhension du
lecteur débutant j'ai supprimé tout ce qui concerne les bases ODBC et nous ne parlerons que des bases
Microsoft Jet MDB.
Syntaxe:
<objet DataBase>.OpenRecordSet(source, type, options, lockedits)

Procédure:
Private Sub OuverturerecordSet()
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Table1", dbOpenTable, dbSeeChanges,
dbPessimistic)
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
©Jean-Paul BAG - 2010
89

Do Until Rs.EOF
Debug.Print Rs(0)
Rs.MoveNext
Loop
Exit_Sub:
Rs.Close
Set Rs = Nothing
Set Db = Nothing
End Sub

La syntaxe de la méthode OpenRecordSet comprend les éléments suivants :

Paramètres de OpenRecordSet:
Élément Description
source Donnée de type String indiquant la source des enregistrements du nouvel objet
Recordset. Il peut s'agir du nom d'une table, d'une requête ou d'une instruction SQL
qui renvoie des enregistrements.
type Facultatif. Constante indiquant le type d'objet Recordset à ouvrir.
options Facultatif. Combinaison de constantes indiquant les caractéristiques du nouvel
objet Recordset.
lockedits Facultatif. Constante définissant le verrouillage de l'objet Recordset.

Valeurs des paramètres de Type


Type Description
dbOpenTable Ouvre un objet Recordset de type Table.
dbOpenDynaset Ouvre un objet Recordset de type Feuille de réponses dynamique (Dynaset),
(Valeur par défaut). Vous pouvez modifier des contrôles dépendants basés sur une
seule ou plusieurs tables avec une relation un-à-un. Pour des contrôles liés à des
champs basés sur des tables avec une relation un-à-plusieurs, vous ne pouvez pas
modifier les données du champ joint du côté « un » de la relation, sauf si la mise à
jour en cascade est activée entre les tables.
dbOpenSnapshot Ouvre un objet Recordset de type Instantané, Aucune table ou aucun contrôle
correspondant à leurs champs ne peut être modifié.

Si vous ouvrez un objet Recordset et si vous n'indiquez aucun type, OpenRecordSet crée un objet Recordset
de type Table si possible. Si vous indiquez une table liée ou une requête, la méthode OpenRecordSet crée un
objet Recordset de type Feuille de réponses dynamique (Dynaset).

Options d'ouverture
Options Description
dbAppendOnly Permet aux utilisateurs d'ajouter de nouveaux enregistrements à l'objet Recordset, tout en
leur interdisant de modifier ou de supprimer les enregistrements existants .
dbSeeChanges Génère une erreur d'exécution si un utilisateur modifie les données en cours de
modification par un autre utilisateur (objet Recordset de type Feuille de réponses
dynamique (Dynaset) uniquement). Ce comportement peut s'avérer utile dans les
applications dans lesquelles plusieurs utilisateurs bénéficient d'accès simultané en
lecture/écriture aux mêmes données.
dbDenyWrite Interdit aux autres utilisateurs de modifier ou d'ajouter des enregistrements.
dbDenyRead Interdit aux autres utilisateurs de lire les données d'une table.
dbConsistent Autorise uniquement les mises à jour cohérentes (objets Recordset Microsoft Jet de type
Feuille de réponses dynamique (Dynaset))

Options de blocage
lockedits Description
dbPessimistic Utilise le verrouillage pessimiste afin de déterminer de quelle façon les modifications sont

©Jean-Paul BAG - 2010


90

apportées à l'objet Recordset dans un environnement multi-utilisateur. La page contenant


l'enregistrement que vous modifiez est verrouillée dès que vous utilisez la méthode Edit. Si
la version Access utilisée vous indique une erreur de variable non déclarée, remplacez
dbPessimistic par sa valeur numérique : 2.
dbOptimistic Utilise le verrouillage optimiste afin de déterminer de quelle façon les modifications sont
apportées à l'objet Recordset dans un environnement multi-utilisateur. La page contenant
l'enregistrement n'est pas verrouillée tant que l'exécution de la méthode Update n'est pas
terminée.

Dans la pratique, l'ouverture d'un recordset va se résumer à l'indication de la table ou de la requête sans autre
option:
Set Rs = Db.OpenRecordset("Table1")
Set Rs = Db.OpenRecordset("Requête1")
Set Rs = Db.OpenRecordset("Select table1.* from table1")

Fermeture du recordset
Tout recordset ouvert dans un module doit être fermé, au plus tard lorsque l'application se termine mais le
plus tôt possible dès que le recordset n'est plus utilisé, pour libérer l'espace disponible. Tout objet non fermé
lors de la fermeture de l'application peut provoquer une fermeture incomplète et laisser Access dans les
processus en exécution.

Exemple:

Private Sub OuverturerecordSet()


Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("Table1", dbOpenTable, dbSeeChanges,
dbPessimistic)
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Do Until Rs.EOF
Debug.Print Rs(0)
Rs.MoveNext
Loop
Exit_Sub:
Rs.Close
Set Rs = Nothing
Set Db = Nothing
End Sub

Remarques:
Attribuer à une variable objet la valeur Nothing (Set Rs = Nothing) produit le même résultat que la méthode
Close. Dans l'exemple ci-dessus la méthode Rs.Close n'est pas nécessaire.

Déplacements dans un recordset


Il est important de savoir comment Access gère un recordset. Access utilise un pointeur qui se déplace sur les
enregistrement et l'enregistrement sur lequel se trouve le pointeur devient l'enregistrement en cours
(CurrentRecord). Ce pointeur se déplace parmi les enregistrements dès qu'un autre enregistrement est
sélectionné. Il se déplace ainsi vers le début ou vers la fin du recordset et se place sur un enregistrement
précis. Il n'existe qu'un seul pointeur qui indique en permanence le CurrentRecord. Toutes les actions sur un
enregistrement sont appliquées au currentRecord.
Pour vous déplacer dans un recordset vous avez quatre méthodes:
MoveFirst, MoveLast, MoveNext et MovePrevious
Qui passent respectivement au premier enregistrement, au dernier, au suivant ou au précédent dans un objet
Recordset indiqué et le transforme en enregistrement actuel (CurrentRecord)
©Jean-Paul BAG - 2010
91

Syntaxe
<variable recordset>.{MoveFirst | MoveLast | MoveNext | MovePrevious}

La variable recordset est une variable objet représentant un objet Recordset (Rs) ouvert par Set Rs =
Db.OpenRecordset("Table1", dbOpenTable) comme dans l'exemple d'ouverture de recordset.
Rs.MoveFirst déplace le pointeur sur le 1er enregistrement
Rs.MoveLast déplace le pointeur sur le dernier enregistrement
Rs.MoveNext déplace le pointeur sur l'enregistrement suivant
Rs.MovePrevious déplace le pointeur sur l'enregistrement précédent
tout déplacement sera suivi d'un test de début ou fin de fichier.
MoveFirst et MovePrevious seront suivi de : If Rs.BOF Then ....
MoveLast et MoveNext seront suivis de : If Rs.EOF Then ....
Dans une boucle de lecture, EOF sera inclus dans la condition de la boucle.

Remarques
Lorsque vous modifiez l'enregistrement actuel, n'oubliez pas d'enregistrer les modifications à l'aide de la
méthode Update avant de passer à un autre enregistrement sinon vos modifications seront perdues.
Lorsque vous ouvrez un objet Recordset, le premier enregistrement est l'enregistrement actuel et la propriété
BOF a la valeur False. Si l'objet Recordset ne contient aucun enregistrement, la propriété BOF a la valeur
True, et il n'y a pas d'enregistrement actuel.
Si le premier ou le dernier enregistrement est déjà en cours lorsque vous utilisez les méthodes MoveFirst ou
MoveLast, il le demeure.
Si vous utilisez la méthode MovePrevious quand le premier enregistrement est en cours, la valeur True est
affectée à la propriété BOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode
MovePrevious, une erreur se produit et la propriété BOF conserve la valeur True.
Si vous utilisez la méthode MoveNext quand le dernier enregistrement est en cours, la valeur True est affectée
à la propriété EOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode
MoveNext, une erreur se produit et la propriété EOF conserve la valeur True.
Si recordset fait référence à un objet Recordset de type Table, le mouvement suit l'index en cours. Vous
pouvez définir l'index en cours à l'aide de la propriété Index. Si vous ne le définissez pas, l'ordre dans lequel
les enregistrements sont renvoyés est indéfini.
Vous pouvez employer la méthode MoveLast pour remplir entièrement un objet Recordset de type Feuille de
données dynamique (Dynaset) ou Instantané, afin de fournir le nombre d'enregistrements de l'objet Recordset
à ce moment. Toutefois, si vous utilisez la méthode MoveLast de cette façon, vous risquez de ralentir les
performances de votre application. Il est recommandé d'utiliser la méthode MoveLast uniquement si vous
souhaitez connaître le compte exact d'enregistrements d'un objet Recordset nouvellement ouvert.
Vous ne pouvez pas recourir aux méthodes MoveFirst, MoveLast et MovePrevious pour un objet Recordset
de type En avant seulement.

Recherche d'enregistrements
Pour trouver un enregistrement dans un recordset il n'est pas nécessaire d'utiliser les méthodes Move car
celles-ci seraient trop longues et de plus il faudrait tester si le CurrentRecord est bien celui recherché.
Nous disposons de quatre variantes de la méthode Find qui permet de se positionner sur un enregistrement
satisfaisant à des conditions de recherche. Si la condition est réalisée, l'enregistrement devient le
CurrentRecord (enregistrement actif).
FindFirst Recherche le premier enregistrement à partir du premier jusqu'à la fin
FindNext Recherche le suivant à partir du CurrentRecord jusqu'à la fin
FinLast Recherche le dernier à partir de la fin jusqu'au début
FinPrevious recherche le précédent à partir du CurrentRecord jusqu'au début

Syntaxe:
<objet recordsedt>.<méthode Find> <critère>

Exemple:

Private Sub OuverturerecordSet()


Dim Db As DAO.Database

©Jean-Paul BAG - 2010


92

Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Rs.FindFirst "[numéro] = 5"
If Rs.NoMatch Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Me.Madate = Rs("madate")
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
End Sub

Vérifiez toujours la valeur de la propriété NoMatch afin de déterminer si l'opération Find a réussi. En cas de
réussite de la recherche, la propriété NoMatch prend la valeur False. En cas d'échec, la propriété NoMatch
prend la valeur True et l'enregistrement actuel n'est pas défini. Dans ce cas, vous devez replacer le pointeur
d'enregistrement actuel sur un enregistrement valide.
Dans le cas d'un espace de travail ODBCDirect, les méthodes Find et Seek ne peuvent être appliquées à aucun
type d'objet Recordset, car l'exécution d'une méthode Find ou Seek sur une connexion ODBC n'est pas très
efficace sur réseau. Définissez plutôt la requête (c'est-à-dire, l'argument source de la méthode OpenRecordset)
à l'aide d'une clause WHERE appropriée qui limite les enregistrements renvoyés à ceux répondant aux critères
que vous utiliseriez normalement dans une méthode Find ou Seek.
Utilisez le format de date américain (mois-jour-année) lorsque vous recherchez des champs qui contiennent
des dates, même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Jet ;
sinon, vous risquez de ne pas trouver les données. Utilisez la fonction Format de Visual Basic pour convertir
la date.

Exemple :
rstEmployees.FindFirst "Ladate > #" & Format(mydate, 'm-d-yy' ) & "#"

Les autres variantes de Find, si elles sont utilisées, devront avoir le même critère que le FindFirst initial.
Création d'un enregistrement

La création d'un enregistrement sera réalisée par la méthode AddNew et enregistré par la méthode Update.
Syntaxe:
<variable recordset>.AddNew

La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez ajouter
un nouvel enregistrement.

Exemple
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
Rs.AddNew
Rs("numéro") = Me.Numéro
Rs("Nomclient") = Me.NomClient
Rs.Update
Set Rs = Nothing
Set Db = Nothing

Remarques

©Jean-Paul BAG - 2010


93

Utilisez la méthode AddNew pour créer et ajouter un enregistrement à l'objet Recordset. Cette méthode
attribue aux champs des valeurs par défaut. En conséquence, si les valeurs par défaut ne sont pas définies, les
champs prennent la valeur Null (valeurs par défaut définies pour un objet Recordset de type Table).
Après saisie du nouvel enregistrement, utilisez la méthode Update pour enregistrer les changements et ajouter
cet enregistrement à l'objet Recordset. Aucune modification n'est prise en compte dans la base de données tant
que vous n'avez pas utilisé la méthode Update.
Attention Si vous utilisez la méthode AddNew, puis exécutez une opération qui vous fait passer à un autre
enregistrement, sans auparavant utiliser la méthode Update, les informations saisies sont perdues. Par ailleurs,
si vous fermez l'objet Recordset ou mettez fin à la procédure qui déclare l'objet Recordset ou son objet
Database, le nouvel enregistrement est ignoré.
Lorsque vous utilisez la méthode AddNew dans un espace de travail Microsoft Jet et que le moteur de base de
données doit créer une page pour contenir l'enregistrement actuel, le verrouillage des pages est pessimiste. Si
le nouvel enregistrement peut être stocké entièrement dans une page existante, le verrouillage des pages est
optimiste.
Si vous n'êtes pas passé au dernier enregistrement de votre objet Recordset, les enregistrements ajoutés aux
tables de base par d'autres traitements peuvent être inclus s'ils se trouvent après l'enregistrement actuel.
Cependant, si vous ajoutez un enregistrement à votre propre objet Recordset, il apparaît dans l'objet Recordset
et figure dans la table source où il est accessible à tout nouvel objet Recordset.
La position du nouvel enregistrement dépend du type d'objet Recordset :
• Dans un objet Recordset de type Feuille de réponses dynamique (Dynaset), les enregistrements sont
insérés à la fin de l'objet Recordset, quels que soient les règles de tri ou l'ordre applicables à
l'ouverture de l'objet Recordset.
• Dans un objet Recordset de type Table dont la propriété Index a été définie, les enregistrements sont
placés à leur position correcte en fonction de l'ordre de tri. En revanche, si vous n'avez pas défini la
propriété Index, les nouveaux enregistrements sont insérés à la fin de l'objet Recordset.
L'enregistrement qui était en cours avant l'utilisation de la méthode AddNew le demeure. Si vous souhaitez
que le nouvel enregistrement devienne l'enregistrement courant, attribuez à la propriété Bookmark la valeur
du signet défini par la propriété LastModified.
Pour ajouter, modifier ou supprimer un enregistrement, ce dernier doit comporter un index unique dans la
source de données sous-jacente. Dans le cas contraire, l'erreur "Permission refusée" se produit lors des appels
de méthode AddNew, Delete et Edit dans un espace de travail Microsoft Jet. L'erreur "Argument non valide"
se produit lors d'un appel Update dans un espace de travail ODBCDirect.
Modification d'un enregistrement
La modification d'un enregistrement sera réalisée par la méthode Edit et enregistrée par la méthode Update.

Syntaxe:
<variable recordset>.Edit

La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez modifier
un enregistrement.

Exemple:

Private Sub OuverturerecordSet()


Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Rs.FindFirst "[numéro] = 5"
If Rs.NoMatch Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Rs.Edit
Rs("madate")= Me.Madate
©Jean-Paul BAG - 2010
94

Rs.Update
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
End Sub

Remarques:
L'enregistrement actuel le reste après utilisation de la méthode Edit.
Si vous modifiez un enregistrement puis effectuez une opération qui vous fait passer à un autre enregistrement
avant que vous ayez utilisé la méthode Update, les modifications sont perdues. D'autre part, si vous fermez
l'objet recordset ou si vous mettez fin à la procédure qui déclare l'objet Recordset ou l'objet DataBase, les
modifications de votre enregistrement sont ignorées.

FONCTION MSGBOX
Affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton, puis renvoie une
valeur de type Integer qui indique le bouton choisi par l'utilisateur.
Syntaxe
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
La syntaxe de la fonction MsgBox comprend les arguments nommés suivants :

Élément Description
prompt Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur
maximale de l'argument prompt est d'environ 1 024 caractères selon la largeur des caractères
utilisés. Si l'argument prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour
chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de
caractères retour chariot-saut de ligne (Chr(13) & Chr(10)).
buttons Facultatif. Expression numérique qui représente la somme des valeurs indiquant le nombre et
le type de boutons à afficher, le style d'icône à utiliser, l'identité du bouton par défaut, ainsi
que la modalité du message. Si l'argument buttons est omis, sa valeur par défaut est 0.
title Facultatif. Expression de chaîne affichée dans la barre de titre de la boîte de dialogue. Si
l'argument title est omis, le nom de l'application est placé dans la barre de titre.
helpfile Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour fournir une aide
contextuelle sur la boîte de dialogue. Si l'argument helpfile est défini, l'argument context doit
l'être également.
context Facultatif. Expression indiquant le numéro de contexte attribué par l'auteur de l'aide à la
rubrique appropriée. Si l'argument context est défini, l'argument helpfile doit l'être également.

Valeurs
L'argument buttons prend les valeurs suivantes :
Constant Value Description
vbOKOnly 0 Affiche le bouton OK uniquement.
vbOKCancel 1 Affiche les boutons OK et Annuler.
vbAbortRetryIgnore 2 Affiche le bouton Abandonner, Réessayer et Ignorer.
vbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler.
vbYesNo 4 Affiche les boutons Oui et Non.
vbRetryCancel 5 Affiche les boutons Réessayer et Annuler.
vbCritical 16 Affiche l'icône Message critique.

©Jean-Paul BAG - 2010


95

vbQuestion 32 Affiche l'icône Requête d'avertissement.


vbExclamation 48 Affiche l'icône Message d'avertissement.
vbInformation 64 Affiche l'icône Message d'information.
vbDefaultButton1 0 Le premier bouton est le bouton par défaut.
vbDefaultButton2 256 Le deuxième bouton est le bouton par défaut.
vbDefaultButton3 512 Le troisième bouton est le bouton par défaut.
vbDefaultButton4 768 Le quatrième bouton est le bouton par défaut.
vbApplicationModal 0 Boîte de dialogue modale. L'utilisateur doit répondre au
message affiché dans la zone de message avant de
pouvoir continuer de travailler dans l'application en
cours.
vbSystemModal 4096 Modal système. Toutes les applications sont
interrompues jusqu'à ce que l'utilisateur réponde au
message affiché dans la zone de message.
vbMsgBoxHelpButton 16384 Ajoute le bouton Aide à la zone de message.
VbMsgBoxSetForeground 65536 Indique la fenêtre de zone de message comme fenêtre
de premier plan.
vbMsgBoxRight 524288 Le teste est aligné à droite.
vbMsgBoxRtlReading 1048576 Indique que le texte doit apparaître de droite à gauche
sur les systèmes hébraïques et arabes.
Le premier groupe de valeurs (0 à 5) décrit le nombre et le type de boutons affichés dans la boîte de dialogue.
Le deuxième groupe (16, 32, 48 et 64) décrit le style d'icône. Le troisième groupe (0, 256 et 512) définit le
bouton par défaut. Enfin, le quatrième groupe (0 et 4 096) détermine la modalité de la zone de message. Au
moment d'additionner ces nombres pour obtenir la valeur finale de l'argument buttons, ne sélectionnez qu'un
seul nombre dans chaque groupe.
Note Ces constantes sont indiquées par Visual Basic pour Applications. Vous pouvez par conséquent les
utiliser n'importe où dans votre code à la place des valeurs réelles correspondantes.

Valeurs renvoyées
Constante Valeur Description
vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Réessayer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non

Remarques
Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la
rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par
exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue.

©Jean-Paul BAG - 2010


96

Si la boîte de dialogue est dotée d'un bouton Annuler, appuyer sur Échap équivaut à cliquer sur Annuler. Si
la boîte de dialogue contient un bouton Aide, cela signifie qu'une aide contextuelle relative à la boîte de
dialogue est disponible. Toutefois, aucune valeur n'est renvoyée tant que l'utilisateur n'a pas cliqué sur l'un des
autres boutons.
Note Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé,
vous devez utiliser la fonction MsgBox dans une expression. Si vous voulez omettre certains arguments de
position, vous devez quand même placer la virgule de séparation correspondante.
Exemple
Cet exemple utilise la fonction MsgBox pour afficher un message d'erreur grave dans une boîte de dialogue
pourvue des boutons Yes et No. Le bouton No est spécifié comme réponse par défaut. La valeur renvoyée par
la fonction MsgBox dépend du bouton sélectionné par l'utilisateur. Dans cet exemple, DEMO.HLP est un
fichier d'aide contenant une section dont le numéro de contexte d'aide est 1000.
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Souhaitez-vous continuer?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Démonstration de MsgBox " ' Définit le titre.
Help = "DEMO.HLP" ' Définit le fichier d'aide.
Ctxt = 1000 ' Définit le contexte de
' la rubrique.
' Affiche le message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
End If

FONCTION INPUTBOX
Affiche une invite dans une boîte de dialogue, attend que l'utilisateur tape du texte ou clique sur un bouton,
puis renvoie le contenu de la zone de texte sous la forme d'une valeur de type String.
Syntaxe
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
La syntaxe de la fonction InputBox comprend les arguments nommés suivants :

Élément Description
prompt Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur
maximale de l'argument prompt est d'environ 1 024 caractères, selon la largeur des
caractères utilisés. Si prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour
chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de
caractères retour chariot-saut de ligne (Chr(13) & Chr(10)) entre chaque ligne.
title Facultatif. Expression de chaîne affichée dans la barre de titre de la boîte de dialogue. Si
l'argument title est omis, le nom de l'application est placé dans la barre de titre.
default Facultatif. Expression de chaîne affichée par défaut dans la zone de texte en l'absence de
toute autre valeur. Si l'argument default est omis, la zone de texte qui s'affiche est vide.
xpos Facultatif. Expression numérique indiquant, en twips, la distance horizontale qui sépare le
bord gauche de l'écran de la bordure gauche de la boîte de dialogue. Si l'argument xpos est
omis, la boîte de dialogue est centrée horizontalement.
ypos Facultatif. Expression numérique indiquant, en twips, la distance verticale qui sépare le haut
de l'écran de la bordure supérieure de la boîte de dialogue. Si l'argument ypos est omis, la
boîte de dialogue est positionnée verticalement, à environ un tiers de l'écran en partant du
haut.
helpfile Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour fournir une aide

©Jean-Paul BAG - 2010


97

contextuelle sur la boîte de dialogue. Si l'argument helpfile est défini, l'argument context
doit l'être également.
context Facultatif. Expression numérique indiquant le numéro de contexte attribué par l'auteur de
l'aide à la rubrique appropriée. Si l'argument context est défini, l'argument helpfile doit l'être
également.

Remarques
Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la
rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par
exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue. Si l'utilisateur clique sur
OK ou appuie sur ENTRÉE , la fonction InputBox renvoie le texte contenu dans la zone de texte. Si
l'utilisateur clique sur le bouton Annuler, la fonction renvoie une chaîne de longueur nulle ("").
Note Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé,
vous devez utiliser la fonction InputBox dans une expression. Si vous voulez omettre certains arguments de
position, vous devez quand même placer la virgule de séparation correspondante.
InputBox, fonction, exemple
Cet exemple montre comment utiliser la fonction InputBox pour inviter l'utilisateur à saisir une valeur. Si
vous omettez de spécifier les positions de x et de y, les deux axes correspondants sont automatiquement
déterminés de manière à centrer la boîte de dialogue. La variable MyValue contient la valeur entrée par
l'utilisateur si celui-ci clique sur OK ou appuie sur la touche ENTRÉE. Si l'utilisateur clique sur Annuler, une
chaîne de longueur nulle est renvoyée.

Dim Message, Title, Default, MyValue


' Définit le message.
Message = "Entrez une valeur comprise entre 1 et 3"
Title = "Démonstration de InputBox" ' Définit le titre.
Default = "1" ' Définition la valeur par défaut.
' Affiche le message, le titre et la valeur par défaut.
MyValue = InputBox(Message, Title, Default)

' Utilise le fichier d'aide et le contexte.


' Le bouton Aide est ajouté automatiquement.
MyValue = InputBox(Message, Title, , , , "DEMO.HLP", 10)

' Affiche la boîte de dialogue sur la position 100, 100.


MyValue = InputBox(Message, Title, Default, 100, 100)

QUELQUES EXEMPLES PRATIQUES

Créer une table locale DAO


Cette fonction permet de créer une table locale sous DAO. Cocher la référence DAO3.6. Aucun paramètre
n'est passé à la fonction car tous les paramètres sont dans cette fonction.

Appel de la fonction:
TableCreateDAO

Fonction:

Insérer ce code dans un module standard

Public Function TableCreateDAO()


Dim Db As DAO.Database
Dim Tbl As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index
©Jean-Paul BAG - 2010
98

Dim Prp As DAO.Property

Set Db = CurrentDb() ' Ouverture base de données


Set Tbl = Db.CreateTableDef("NouvelleTable") 'Création d'une table
Set fld = Tbl.CreateField("CodePays", dbLong) 'création du premier champ
fld.OrdinalPosition = 1 'champ position 1
fld.Attributes = dbAutoIncrField 'définition numéroauto
Tbl.Fields.Append fld 'ajout du champ dans la table
Set fld = Tbl.CreateField("NomduPays", dbText) 'création du deuxième champ
fld.OrdinalPosition = 2 'champ position 2
fld.Size = 100 'taille 100 caractères
fld.Required = True 'valeur nulle interdite
fld.AllowZeroLength = False 'chaine vide autorisée
Tbl.Fields.Append fld 'ajout du champ dans la table
Set idx = Tbl.CreateIndex("PrimaryKey") 'création d'un index
idx.Primary = True 'clé primaire
idx.Required = True
idx.Unique = True ' sans doublons
Set fld = idx.CreateField("CodePays") 'définition du champ qui sert d'index
idx.Fields.Append fld 'ajout du champ dans l'index
Tbl.Indexes.Append idx 'ajout de l'index dans la table
Db.TableDefs.Append Tbl 'ajoute la table à la base
RefreshDatabaseWindow 'rafraichissement de la fenêtre base de données

Set Tdf = Db.TableDefs("NouvelleTable")' entrée des propriétés caption et description


Set Fld = Tbl.Fields("CodePays")
Set prp = Fld.CreateProperty("Caption", dbText)
prp.Value = "Clé d'accès"
Fld.Properties.Append prp
Set prp = Fld.CreateProperty("Description", dbText)
prp.Value = "Clé d'accès code pays"
Fld.Properties.Append prp
Set Fld = Tbl.Fields("NomduPays")
Set prp = Fld.CreateProperty("Caption", dbText)
prp.Value = "Pays"
Fld.Properties.Append prp
Set prp = Fld.CreateProperty("Description", dbText)
prp.Value = "Nom du pays"
Fld.Properties.Append prp
End Function

N.B. : Ce code est un peu complexe que celui vu en auditoire. Mais, il a plus d’options car il vous apprend
beaucoup de choses à la fois. Merci de bien le comprendre.

Création d'un enregistrement


La création d'un enregistrement sera réalisée par la méthode AddNew et enregistré par la méthode Update.

Syntaxe:
<variable recordset>.AddNew

La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez ajouter
un nouvel enregistrement.

Exemple
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
©Jean-Paul BAG - 2010
99

Set Rs = Db.OpenRecordset("select * from table1")


Rs.AddNew
Rs("numéro") = Me.Numéro
Rs("Nomclient") = Me.NomClient
Rs.Update
Set Rs = Nothing
Set Db = Nothing

Remarques
Utilisez la méthode AddNew pour créer et ajouter un enregistrement à l'objet Recordset. Cette méthode
attribue aux champs des valeurs par défaut. En conséquence, si les valeurs par défaut ne sont pas définies, les
champs prennent la valeur Null (valeurs par défaut définies pour un objet Recordset de type Table).
Après saisie du nouvel enregistrement, utilisez la méthode Update pour enregistrer les changements et ajouter
cet enregistrement à l'objet Recordset. Aucune modification n'est prise en compte dans la base de données tant
que vous n'avez pas utilisé la méthode Update.
Attention Si vous utilisez la méthode AddNew, puis exécutez une opération qui vous fait passer à un autre
enregistrement, sans auparavant utiliser la méthode Update, les informations saisies sont perdues. Par ailleurs,
si vous fermez l'objet Recordset ou mettez fin à la procédure qui déclare l'objet Recordset ou son objet
Database, le nouvel enregistrement est ignoré.
Lorsque vous utilisez la méthode AddNew dans un espace de travail Microsoft Jet et que le moteur de base de
données doit créer une page pour contenir l'enregistrement actuel, le verrouillage des pages est pessimiste. Si
le nouvel enregistrement peut être stocké entièrement dans une page existante, le verrouillage des pages est
optimiste.
Si vous n'êtes pas passé au dernier enregistrement de votre objet Recordset, les enregistrements ajoutés aux
tables de base par d'autres traitements peuvent être inclus s'ils se trouvent après l'enregistrement actuel.
Cependant, si vous ajoutez un enregistrement à votre propre objet Recordset, il apparaît dans l'objet Recordset
et figure dans la table source où il est accessible à tout nouvel objet Recordset.
La position du nouvel enregistrement dépend du type d'objet Recordset :
• Dans un objet Recordset de type Feuille de réponses dynamique (Dynaset), les enregistrements sont
insérés à la fin de l'objet Recordset, quels que soient les règles de tri ou l'ordre applicables à
l'ouverture de l'objet Recordset.
• Dans un objet Recordset de type Table dont la propriété Index a été définie, les enregistrements sont
placés à leur position correcte en fonction de l'ordre de tri. En revanche, si vous n'avez pas défini la
propriété Index, les nouveaux enregistrements sont insérés à la fin de l'objet Recordset.
L'enregistrement qui était en cours avant l'utilisation de la méthode AddNew le demeure. Si vous souhaitez
que le nouvel enregistrement devienne l'enregistrement courant, attribuez à la propriété Bookmark la valeur
du signet défini par la propriété LastModified.
Pour ajouter, modifier ou supprimer un enregistrement, ce dernier doit comporter un index unique dans la
source de données sous-jacente. Dans le cas contraire, l'erreur "Permission refusée" se produit lors des appels
de méthode AddNew, Delete et Edit dans un espace de travail Microsoft Jet. L'erreur "Argument non valide"
se produit lors d'un appel Update dans un espace de travail ODBCDirect.

Modification d'un enregistrement


La modification d'un enregistrement sera réalisée par la méthode Edit et enregistrée par la méthode Update.

Syntaxe:
<variable recordset>.Edit
La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez modifier
un enregistrement.

Exemple:
Private Sub OuverturerecordSet()
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
©Jean-Paul BAG - 2010
100

GoTo Exit_Sub
End If
Rs.FindFirst "[numéro] = 5"
If Rs.NoMatch Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Rs.Edit
Rs("madate")= Me.Madate
Rs.Update
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
End Sub

Remarques:
L'enregistrement actuel le reste après utilisation de la méthode Edit.
Si vous modifiez un enregistrement puis effectuez une opération qui vous fait passer à un autre enregistrement
avant que vous ayez utilisé la méthode Update, les modifications sont perdues. D'autre part, si vous fermez
l'objet recordset ou si vous mettez fin à la procédure qui déclare l'objet Recordset ou l'objet DataBase, les
modifications de votre enregistrement sont ignorées.

Recherche d'enregistrements
Pour trouver un enregistrement dans un recordset il n'est pas nécessaire d'utiliser les méthodes Move car
celles-ci seraient trop longues et de plus il faudrait tester si le CurrentRecord est bien celui recherché.
Nous disposons de quatre variantes de la méthode Find qui permet de se positionner sur un enregistrement
satisfaisant à des conditions de recherche. Si la condition est réalisée, l'enregistrement devient le
CurrentRecord (enregistrement actif).
FindFirst Recherche le premier enregistrement à partir du premier jusqu'à la fin
FindNext Recherche le suivant à partir du CurrentRecord jusqu'à la fin
FinLast Recherche le dernier à partir de la fin jusqu'au début
FinPrevious recherche le précédent à partir du CurrentRecord jusqu'au début

Syntaxe:
<objet recordsedt>.<méthode Find> <critère>

Exemple:

Private Sub OuverturerecordSet()


Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
If Rs.BOF Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Rs.FindFirst "[numéro] = 5"
If Rs.NoMatch Then
MsgBox "il n'y a pas d'enregistrements"
GoTo Exit_Sub
End If
Me.Madate = Rs("madate")
Exit_Sub:
Set Rs = Nothing
Set Db = Nothing
End Sub

©Jean-Paul BAG - 2010


101

Vérifiez toujours la valeur de la propriété NoMatch afin de déterminer si l'opération Find a réussi. En cas de
réussite de la recherche, la propriété NoMatch prend la valeur False. En cas d'échec, la propriété NoMatch
prend la valeur True et l'enregistrement actuel n'est pas défini. Dans ce cas, vous devez replacer le pointeur
d'enregistrement actuel sur un enregistrement valide. Dans le cas d'un espace de travail ODBCDirect, les
méthodes Find et Seek ne peuvent être appliquées à aucun type d'objet Recordset, car l'exécution d'une
méthode Find ou Seek sur une connexion ODBC n'est pas très efficace sur réseau. Définissez plutôt la requête
(c'est-à-dire, l'argument source de la méthode OpenRecordset) à l'aide d'une clause WHERE appropriée qui
limite les enregistrements renvoyés à ceux répondant aux critères que vous utiliseriez normalement dans une
méthode Find ou Seek.
Utilisez le format de date américain (mois-jour-année) lorsque vous recherchez des champs qui contiennent
des dates, même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Jet ;
sinon, vous risquez de ne pas trouver les données. Utilisez la fonction Format de Visual Basic pour convertir
la date.

Exemple :

rstEmployees.FindFirst "Ladate > #" & Format(mydate, 'm-d-yy' ) & "#"

Les autres variantes de Find, si elles sont utilisées, devront avoir le même critère que le FindFirst initial.

Déplacements dans un recordset


Il est important de savoir comment Access gère un recordset. Access utilise un pointeur qui se déplace sur les
enregistrement et l'enregistrement sur lequel se trouve le pointeur devient l'enregistrement en cours
(CurrentRecord). Ce pointeur se déplace parmi les enregistrements dès qu'un autre enregistrement est
sélectionné. Il se déplace ainsi vers le début ou vers la fin du recordset et se place sur un enregistrement
précis. Il n'existe qu'un seul pointeur qui indique en permanence le CurrentRecord. Toutes les actions sur un
enregistrement sont appliquées au currentRecord.
Pour vous déplacer dans un recordset vous avez quatre méthodes:
MoveFirst, MoveLast, MoveNext et MovePrevious
Qui passent respectivement au premier enregistrement, au dernier, au suivant ou au précédent dans un objet
Recordset indiqué et le transforme en enregistrement actuel (CurrentRecord)

Syntaxe
<variable recordset>.{MoveFirst | MoveLast | MoveNext | MovePrevious}
La variable recordset est une variable objet représentant un objet Recordset (Rs) ouvert par Set Rs =
Db.OpenRecordset("Table1", dbOpenTable) comme dans l'exemple d'ouverture de recordset.
Rs.MoveFirst déplace le pointeur sur le 1er enregistrement
Rs.MoveLast déplace le pointeur sur le dernier enregistrement
Rs.MoveNext déplace le pointeur sur l'enregistrement suivant
Rs.MovePrevious déplace le pointeur sur l'enregistrement précédent
tout déplacement sera suivi d'un test de début ou fin de fichier.
MoveFirst et MovePrevious seront suivi de : If Rs.BOF Then ....
MoveLast et MoveNext seront suivis de : If Rs.EOF Then ....
Dans une boucle de lecture, EOF sera inclus dans la condition de la boucle.

Remarques
Lorsque vous modifiez l'enregistrement actuel, n'oubliez pas d'enregistrer les modifications à l'aide de la
méthode Update avant de passer à un autre enregistrement sinon vos modifications seront perdues.
Lorsque vous ouvrez un objet Recordset, le premier enregistrement est l'enregistrement actuel et la propriété
BOF a la valeur False. Si l'objet Recordset ne contient aucun enregistrement, la propriété BOF a la valeur
True, et il n'y a pas d'enregistrement actuel.
Si le premier ou le dernier enregistrement est déjà en cours lorsque vous utilisez les méthodes MoveFirst ou
MoveLast, il le demeure.
Si vous utilisez la méthode MovePrevious quand le premier enregistrement est en cours, la valeur True est
affectée à la propriété BOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode
MovePrevious, une erreur se produit et la propriété BOF conserve la valeur True.

©Jean-Paul BAG - 2010


102

Si vous utilisez la méthode MoveNext quand le dernier enregistrement est en cours, la valeur True est affectée
à la propriété EOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode
MoveNext, une erreur se produit et la propriété EOF conserve la valeur True.
Si recordset fait référence à un objet Recordset de type Table, le mouvement suit l'index en cours. Vous
pouvez définir l'index en cours à l'aide de la propriété Index. Si vous ne le définissez pas, l'ordre dans lequel
les enregistrements sont renvoyés est indéfini.
Vous pouvez employer la méthode MoveLast pour remplir entièrement un objet Recordset de type Feuille de
données dynamique (Dynaset) ou Instantané, afin de fournir le nombre d'enregistrements de l'objet Recordset
à ce moment. Toutefois, si vous utilisez la méthode MoveLast de cette façon, vous risquez de ralentir les
performances de votre application. Il est recommandé d'utiliser la méthode MoveLast uniquement si vous
souhaitez connaître le compte exact d'enregistrements d'un objet Recordset nouvellement ouvert.
Vous ne pouvez pas recourir aux méthodes MoveFirst, MoveLast et MovePrevious pour un objet Recordset
de type En avant seulement.

©Jean-Paul BAG - 2010

Vous aimerez peut-être aussi