Cours Access Par La Pratique PDF
Cours Access Par La Pratique PDF
Cours Access Par La Pratique PDF
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
FONCTION INPUTBOX……………………………………………………………………......96
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
• 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.
CREER UN GROUPE
• Activer la fenêtre Base de données (par F11 ou l'icône Fenêtre Base de données )
• FICHIER
• Fermer
On crée en fait un nouveau fichier dans lequel seront placés les tables et les objets de la base.
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.
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.
• 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
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 .
• 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
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:
• Taper MAJ+RETOUR
ou
• ENREGISTREMENTS
• Sauvegarder l'enregistrement
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 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.
• EDITION
• Atteindre
• Cliquer Premier ou Dernier ou Suivant ou Précédent ou Nouvel enregistrement
Premier enregistrement
Enregistrement précédent
Enregistrement suivant
Dernier enregistrement
Nouvel enregistrement
• Taper F5
ou
• Cliquer deux fois sur le numéro d'enregistrement courant
DEPLACEMENTS AU CLAVIER
EDITION AU CLAVIER
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.
Avec la souris:
• Cliquer deux fois pour ajuster automatiquement la largeur à la plus grande saisie
ou
• Presser et faire glisser pour élargir ou rétrécir
Note:
On peut redimensionner plusieurs colonnes en une opération, en les sélectionnant par leurs étiquettes
Champs adjacents
Enregistrements
La procédure permet de toujours conserver sur la gauche de l'écran, les colonnes sélectionnées.
• FORMAT
• Libérer toutes les colonnes
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.
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é.
• Cliquer Suivant
• Conserver la même étiquette pour le nom de champ
• Cliquer Terminer
• 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
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.
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
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.
DEPLACER UN CHAMP
• Pointer le sélecteur
• Presser et faire glisser la ligne horizontale noire jusqu’à la position désirée
• Relâcher
SUPPRIMER UN CHAMP
Suivant la propriété:
• Taper un paramètre
ou
• Cliquer sur la flèche
• Cliquer sur un élément de la liste proposée
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.
La propriété "Taille du champ" peut prendre la valeur "Entier long" ou "N° réplication".
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
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.
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.
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).
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.
Champs Numérique:
Champs Date/Heure:
Champs Texte:
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:
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
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.
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#
IMPORTER - EXPORTER
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.
• 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
• Cliquer Suivant
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
• Cliquer Terminer
• Cliquer OK
Access affiche la nouvelle table dans la liste des tables
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.
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.
Saisir 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.
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...).
ou
• FICHIER
• Enregistrer sous
• Taper le nom du formulaire
• Cliquer OK
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
• Presser MAJ
• Cliquer sur chaque contrôle à sélectionner
• Presser MAJ
• Cliquer sur les contrôles à désélectionner
• 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é)
• 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
PERSONNALISER UN
FORMULAIRE
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.
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".
avec un outil
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.
• 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
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.
Note:
Pour saisir un texte sur plusieurs lignes dans une étiquette, taper CTRL+RETOUR pour passer à la
ligne.
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.
• 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
• 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
La procédure suivante est employée uniquement pour les listes modifiables ayant été
conçues en
saisissant les valeurs qui les composent.
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.
• 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
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.
Ajouter un onglet
Supprimer un onglet
Déplacer un onglet
• Cliquer OK
Renommer un onglet
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).
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.
• 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.
• 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.
• 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)
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.
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.
ou
• 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.
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.
ou
• EDITION
• Sélectionner le formulaire
• Cliquer l'icône Propriétés
On peut définir la fonction principale d'un formulaire de façon à l'activer dès son ouverture.
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
FORMAT AUTOMATIQUE
Selon les attributs de dessin, une figure comme un rectangle peut masquer les contrôles sur
lesquels
elle est placée.
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é.
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
• 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
• 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
• Cliquer OK
• Cliquer Fermer
• Cliquer Suivant
• Sélectionner la police et les autres attributs du texte de l'étiquette
• Cliquer Suivant
• 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.
• Ouvrir l'état
• Cliquer la flèche à droite de l'icône Affichage
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.
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
ou
ou
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.
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
• 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
Enregistrer la requête:
• Cliquer l'icône Enregistrer
DEPLACER UN CHAMP
INSERER UN CHAMP
SUPPRIMER UN CHAMP
• EDITION
• Effacer la grille
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.
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
Saisie directe
Note:
Pour afficher la cellule "Critères" en mode Zoom: Taper MAJ+F2 (Mode Zoom)
Cliquer OK pour revenir
Générateur d'expression
EXPRESSIONS COURANTES
Mot
Phrase
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.
La feuille de réponses affichera tous les enregistrements dont le champ TOTAL à une valeur
comprise entre 20000 et 40000.
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).
Pour sélectionner des champs sur la base d'un ou de plusieurs caractères (type Texte et Date/Heure).
Exemple
Autres exemples
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").
Opérateur PAS
Note:
Pour rechercher des chaînes vides (suivant les propriétés définies), taper un double guillemet ("")
Pour sélectionner les enregistrements comportant la date du jour (fournie par l'horloge de
l'ordinateur).
Opérateur DATE()
La feuille de réponses affichera tous les enregistrements dont le champ DATE a une valeur
correspondant aux trente derniers jours.
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.
L'opérateur ET
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
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
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.
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.
Fonction Gauche(expression;valeur)
Fonction Droite(expression;valeur)
Fonction ExtracChaîne(expression;début;valeur)
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
Utile lorsque l'on souhaite obtenir uniquement l'année par exemple, à partir d'un champ contenant
une date complète.
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.
Note:
PartDate("a";[DATE]) donne le nombre de jours écoulés entre le 1er janvier et la date
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.
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.
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.
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.
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
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.
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.
VBA
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.
Syntaxe :
©Jean-Paul BAG - 2010
75
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.
Syntaxe :
[Public | Private ] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End 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.
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.
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.
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>)
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.
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
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>)
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.
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.
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.
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.
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é.
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.
Syntaxe:
DoCmd.TransferSpreadsheet([<TypeTransfert>], [<TypeFeuille>], <NomTable ou Nomrequête>,
<NomFichier>, [<ContientNomsChamps>], [<Étendue>], [<UtiliserOA>])
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).
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.
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).
Syntaxe:
DoCmd.MoveSize [<Droite>],[<Bas>],[<Largeur>],[<Hauteur>]
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.
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
Syntaxe:
DoCmd.PrintOut([<Imprimer>], [<DePage>], [<APage>], [<QualitéImpression>], [<Copies>],
[<CopiesTriées>])
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
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.
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.
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
DoCmd.Quit acQuitPrompt
Syntaxe
DoCmd.DeleteObject([<TypeObjet>], [<NomObjet>]))
©Jean-Paul BAG - 2010
87
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
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
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>)
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.
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
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.
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
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:
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.
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:
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
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:
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.
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.
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
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.
Appel de la fonction:
TableCreateDAO
Fonction:
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.
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
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.
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:
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 :
Les autres variantes de Find, si elles sont utilisées, devront avoir le même critère que le FindFirst initial.
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.