COURS ACCESS PAR LA PRATIQUE



Documents pareils
CFCL EDHEC 1 SEMINAIRE ACCESS2000

Access 2010 Entraînement 1 Garage Renault Dossier 24 MCD

Cours Access 1) INTRODUCTION AU SGBD...4 2) LES TABLES...4

Créer une base de données

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Access 2007 FF Access FR FR Base

SOMMAIRE. Travailler avec les requêtes... 3

TABLEAU CROISE DYNAMIQUE

Utiliser une base de données

Note de cours. Introduction à Excel 2007

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Microsoft. Access Utilisation de base. Fac Similé. Manuel de référence

Parcours FOAD Formation EXCEL 2010

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

La Clé informatique. Formation Excel XP Aide-mémoire

FOXIT READER 6.0 Guide rapide. Table des matières... II Utilisation de Foxit Reader Lecture Travailler dans des documents PDF...

Le cas «BOURSE» annexe

EXCEL TUTORIEL 2012/2013

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

INITIATION A EXCEL Année

Réaliser un PUBLIPOSTAGE

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Guide pour la réalisation d'un document avec Open Office Writer 2.2

Formation tableur niveau 1 (Excel 2013)

Utilisation de l'outil «Open Office TEXTE»

Le cas «BOURSE» annexe

Programme d Accès Communautaire / Atelier 4 Initiation à Microsoft Excel PLAN DE COURS 3 MICROSOFT EXCEL 4 LANCER EXCEL 4

Mode Opératoire Windows XP

GUIDE Excel (version débutante) Version 2013

Dessiner dans Galaad FRANÇOIS PALLUT

Publipostage avec Calc

OSIRIS/ Valorisation des données PORTAIL BO MANUEL UTILISATEUR

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

COURS BARDON - ACCESS 2010

F0RMAT I0N BUREAUTIQUE

Séminaire d information MIGRATION WINDOWS 7 ET OFFICE 2010

Microsoft Excel 2000 Fonctions avancées

Suivi de la formation

KIELA CONSULTING. Microsoft Office Open Office Windows - Internet. Formation sur mesure

Exploitation des données issues de BE ( utilisation du tableur CALC) Fiche de travail (individuelle ou en binôme)

BML Informatique Tableur OpenOffice.org Calc Mercredi 8 avril 2015

Évaluation des compétences. Identification du contenu des évaluations. Septembre 2014

Centre de formation: Collège IBN BASSAM - TEMARA. Ce cours est proposé par le professeur d informatique:

Alain DI MAGGIO Mise à jour sur le site 11/01/10

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

Excel 2010 Intermediaire

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP

POUR ALLER UN PEU PLUS LOIN SUR UN TABLEUR. Version EXCEL

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Mon aide mémoire traitement de texte (Microsoft Word)

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

l'ordinateur les bases

COURS BARDON - EXCEL 2010

Créer le schéma relationnel d une base de données ACCESS

Un exemple avec WORKSPACE d'interwrite

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

L ORDINATEUR FACILE D ACCÈS!

Table des matières A. Introduction... 4 B. Principes généraux... 5 C. Exemple de formule (à réaliser) :... 7 D. Exercice pour réaliser une facture

TRUCS & ASTUCES SYSTEME. 1-Raccourcis Programme sur le Bureau (7)

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

Université Bordeaux 1. Formation Excel Initiation. Hanquiez Vincent, UMR 5805-EPOC

Formations 2015 Bureautique

Guide de l utilisateur. Faites connaissance avec la nouvelle plateforme interactive de

MEDIAplus elearning. version 6.6

Excel 2007 Niveau 3 Page 1

Tutoriaux : Faites vos premiers pas avec Microsoft Visio 2010

Manuel de formation Spaceman 1 ère journée

Débuter avec Excel. Excel

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

Mémo d'utilisation de BD Dico1.6

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Introduction : présentation de la Business Intelligence

Climat Scolaire - Manuel utilisateur - Chapitre 2 : «Créer, Editer et suivi d un texte»

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

SUPPORT DE COURS ACCESS 2010

TABLEAU CROISE DYNAMIQUE

CATALOGUE Parcours de Formations E-Learning BILAN FORMATION STAGE. e-learning

A - Créer une Base de données au format dbase

Progression secrétariat

Gestion de projets. avec. Microsoft Office PROJECT 2003

SOS Info: Traitement de textes. 1. Structurer un document. 2. Enregistrer un document

Cours Excel : les bases (bases, texte)

:...2 I.6. :... 2 I.7. :... 2 I.8. :...3 I.9. :... 3 I.10. :... 3 II. 4 II.1.

Créer un diaporama avec Open Office. Sommaire

Université Ibn Zohr Excel Résume de cours

Freeway 7. Nouvelles fonctionnalités

Qu'est ce que le Cloud?

Guide de démarrage Janvier 2012

à l édition de textes

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

OneDrive, le cloud de Microsoft

Introduction aux SGBDR et en particulier à

LE TABLEUR OPENOFFICE CALC : CONTRÔLES DE FORMULAIRES ACCÈS AUX BASES DE DONNÉES

Créer un tableau avec LibreOffice / Calc

Transcription:

COURS ACCESS PAR LA PRATIQUE Par Jean-Paul M. BAGUMA COURS DE BASE DE DONNEES Logiciel Access

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

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

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

4 SELECTION DES ENREGISTREMENTS VIDES OU NON VIDES...64 SELECTION DE LA DATE DU JOUR...64 CRITERES COMPRENANT UNE OPERATION...64 CRITERES COMPRENANT DES NOMS DE CHAMPS...65 COMBINAISON DE PLUSIEURS CRITERES...65 CRITERES SUPPLEMENTAIRES...66 CREATION DE CHAMPS CALCULES...66 CHAMPS CALCULES AFFICHANT UNE PARTIE DE CHAMP TEXTE...67 CHAMP CALCULE AFFICHANT UNE PARTIE DE CHAMP DATE...67 SELECTION DE VALEURS UNIQUES...68 CHANGER LE NOM DU CHAMP...69 OPERATIONS SUR TOUS LES ENREGISTREMENTS D'UNE TABLE...69 OPERATIONS SUR DES GROUPES D'ENREGISTREMENTS...70 CREATION DES BARRES DE MENUS, D OUTILS ET DE MENUS CONTEXTUELS PERSONNALISES (FICHES OUTILS 5.10 A 5.30).71 CREATION DE LA BARRE DE MENU 71 PROGRAMMATION VBA..72 VARIABLES VBA...72 L OBJET DOCMD 77 77 L OBJET RECORDSET...87 FONCTION MSGBOX.94 FONCTION INPUTBOX...96 QUELQUES EXEMPLES PRATIQUES 97

5 INTRODUCTION Une Base de Données sert à stocker et à traiter des informations. On peut ainsi utiliser une Base de Données pour gérer un fichier Clients, un fichier du Personnel, un système de Commandes et de Facturation, un système de Gestion des Stocks, etc. ACCESS est un Système de Gestion de Bases de Données Relationnelles. La particularité des Bases de Données Relationnelles est de pouvoir mettre en relation des fichiers (appelés ici Tables) différents en établissant des liens entre eux. LES OBJETS Une Base de Donnée est composée de différents types d'objets ayant chacun une fonction propre. Les Tables Les Requêtes Une Table comporte des données relatives à une catégorie d'informations. Elle est composée de champs (colonnes) et d'enregistrements (lignes). 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 Les Etats Les Pages 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. 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. 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.

6 Les Macros Une Macro est une suite d'instructions permettant d'automatiser l'exécution d'une suite d'actions répétitives. Les Modules Un Module est un programme rédigé dans le langage Visual Basic. On utilisera un Module pour solutionner un problème trop complexe pour les macros. LES GROUPES Ils sont assimilables aux dossiers de Windows et contiennent des raccourcis vers les objets de la Base de Données. Ils sont accessibles à partir de la barre Groupes située à gauche de la fenêtre Base de Données. TECHNIQUES DE BASE OUVRIR UNE BASE DE DONNEES On ne peut pas avoir plus d'une base de données ouverte à la fois. Cliquer l'icône Ouvrir ou FICHIER Ouvrir (CTRL+O) Sélectionner l'unité et le dossier Cliquer la base de données à ouvrir Cliquer le bouton ou Cliquer la flèche à droite du bouton Cliquer Ouvrir en lecture seule ou Ouvrir en exclusif (empêche dans un environnement multi-

7 utilisateur, les autres utilisateurs de modifier les données et les objets de la base de données). La fenêtre affiche la liste des tables de la base de données. Les onglets d'objets offrent un accès direct à chaque objet de la base. Note: On retrouve dans ACCESS la gestion des documents Favoris, identique à celle de Word et d'excel. Idem pour les différentes formes d'affichage des fichiers. CONSULTER UNE TABLE OU UNE REQUETE Cliquer l'objet Tables ou cliquer l'objet Requêtes Cliquer deux fois sur le nom de la table ou de la requête à consulter ou Cliquer sur la table ou sur la requête Cliquer le bouton ACCESS affiche la table ou la requête en mode Feuille de données CONSULTER DES DONNEES DANS UN FORMULAIRE Depuis la fenêtre Base de Données, cliquer l'objet Formulaires Cliquer deux fois le nom du formulaire à consulter ou Cliquer le nom du formulaire Cliquer le bouton Mode d'affichage d'un Formulaire Cliquer la flèche déroulante à droite de l'icône Affichage

8 Cliquer le mode d'affichage désiré CREER UN GROUPE Pointer un espace vide de la barre Objets ou de la barre Groupes Cliquer le bouton droit de la souris Nouveau Groupe Saisir le nom du nouveau Groupe Cliquer OK Pour ajouter le raccourci d'un objet à un Groupe Faire glisser le nom de l'objet dans le Groupe de destination. FERMER UNE BASE DE DONNEES Activer la fenêtre Base de données (par F11 ou l'icône Fenêtre Base de données ) FICHIER Fermer CREER UNE BASE DE DONNEES On crée en fait un nouveau fichier dans lequel seront placés les tables et les objets de la base. Cliquer l'icône Nouvelle base de données ou FICHIER Nouvelle base de données (CTRL+N) Prendre comme modèle Base de données Cliquer OK On pourrait aussi, par l'onglet Bases de données, utiliser un modèle préformaté Taper le nom de la base de données Sélectionner l'unité et le dossier de destination Cliquer le bouton ACCESS affiche alors la fenêtre "Base de données" à partir de laquelle on crée les objets de la base.

9 CREER UN OBJET Après avoir créé une base de données, la première étape consiste à créer des tables. Après quoi, on crée des requêtes, des formulaires, des états, et tous les objets qui aideront à exploiter les données contenues dans ces tables. Depuis la fenêtre Base de Données, cliquer l'objet correspondant Cliquer le bouton COMPACTER UNE BASE DE DONNEES Quand on effectue des modifications dans une base de données (ajout ou suppression d'objets), il arrive que son fichier se fragmente et n'utilise pas l'espace disque de façon optimale. Il est donc conseillé de compacter régulièrement la base de données afin d'en défragmenter le fichier. Le fichier de Base de Données est en général plus petit après compactage. On doit fermer la Base de Données avant de la compacter OUTILS Utilitaires de base de données Compacter une base de données Sélectionner la base de données à compacter Cliquer le bouton Rentrer le nom (il peut être identique), l'unité et le dossier de la base de données compactée Cliquer le bouton Cliquer Oui si on utilise le même nom MODIFICATION DE DONNEES AJOUTER DES ENREGISTREMENTS Applicable dans une table, dans une requête ou un formulaire. Chaque table, requête ou formulaire contient un enregistrement vierge réservé aux nouvelles données, situé en fin de liste. Le sélecteur de cet enregistrement vierge contient un astérisque. Saisie d'un nouvel enregistrement dans une table Ouvrir la table Cliquer dans la première cellule de la dernière ligne de la table, précédée par Saisir le premier champ Taper TAB pour accéder au champ suivant Effectuer la saisie du champ suivant Procéder ainsi pour chaque champ

A la fin de l'enregistrement, taper TAB pour passer à l'enregistrement suivant ACCESS sauvegarde alors automatiquement l'enregistrement saisi A la fin de la saisie, fermer la table 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: Enregistrement en cours (contenant le pointeur) Crayon: modification de l'enregistrement en cours SAUVEGARDE DES DONNEES ACCESS sauvegarde automatiquement les modifications lorsque l'on passe à un autre enregistrement, ou lorsque l'on ferme le formulaire ou la feuille de données. Sauvegarder l'enregistrement courant (sans passer au suivant) Taper MAJ+RETOUR ou ENREGISTREMENTS Sauvegarder l'enregistrement

- 11 - CHAMPS NON MODIFIABLES - SAISIE IMPOSSIBLE Champs NuméroAuto ACCESS assigne automatiquement un numéro séquentiel pour chaque enregistrement. Ce type de champ est souvent utilisé comme numéro d'enregistrement ou "clé primaire" Champs Calculés ou issus de certains types de requêtes Calculs effectués par ACCESS Champs verrouillés ou désactivés (Formulaire) Si la propriété "Verrouillé" d'un champ a pour paramètre "Oui" ou si sa propriété "Activé" a pour paramètre "Non", on ne peut pas modifier son contenu Si on utilise ACCESS dans un environnement multi-utilisateur, on ne peut pas modifier les données d'un enregistrement verrouillé par un autre utilisateur Champs dans un formulaire en lecture seule ou dans une base de données verrouillée Si la propriété "Modif autorisée" du formulaire a pour paramètre "Non" ou si les données sous-jacentes sont dans une base de données verrouillée, aucune modification n'est possible. DEPLACEMENT ENTRE LES ENREGISTREMENTS Par les menus EDITION Atteindre Cliquer Premier ou Dernier ou Suivant ou Précédent ou Nouvel enregistrement Par les boutons de déplacement Premier enregistrement Enregistrement précédent Enregistrement suivant Dernier enregistrement Nouvel enregistrement Atteindre un enregistrement précis Taper F5 ou Cliquer deux fois sur le numéro d'enregistrement courant Taper le numéro d'enregistrement à atteindre et valider DEPLACEMENTS AU CLAVIER TAB MAJ+TAB Pos 1 Champ suivant Champ précédent Premier champ de l'enregistrement (après sélection d'un champ)

- 12 - Fin CTRL+Pg AR CTRL+Pg AV Flèche Haute Flèche basse CTRL+Pos 1 CTRL+Fin Pg AR Pg AV Dernier champ de l'enregistrement (après sélection d'un champ) Enregistrement précédent dans un formulaire Enregistrement suivant dans un formulaire Enregistrement précédent dans une feuille de données Enregistrement suivant dans une feuille de données Premier champ du premier enregistrement Dernier champ du dernier enregistrement Un écran vers le haut Un écran vers le bas EDITION AU CLAVIER F2 ECHAPP CTRL+RETOUR CTRL+" CTRL+ALT+ESPACE ALT+Flèche basse MAJ+F2 F9 Sélection du champ en cours ou désactivation de cette sélection Annuler les modifications en cours Insérer une nouvelle ligne dans un champ Copier la valeur du même champ de l'enregistrement précédent Inscrit dans le champ sa valeur par défaut Ouvre une liste modifiable pour afficher ses valeurs Visualise et modifie le champ en cours en mode Zoom Mise à jour des enregistrements affichés Note: Pour annuler les modifications faites sur un champ, taper sur la touche ECHAP. Pour annuler toutes les modifications faites dans l'enregistrement courant, taper deux fois sur la touche ECHAP. LARGEUR D'UNE COLONNE EN MODE FEUILLE DE DONNEES Avec la souris: Pointer le trait vertical à droite de l'étiquette de colonne Cliquer deux fois pour ajuster automatiquement la largeur à la plus grande saisie ou Presser et faire glisser pour élargir ou rétrécir Avec les menus Cliquer un champ dans la colonne FORMAT Largeur de colonne Taper une valeur et cliquer OK ou Cliquer Ajuster Note: On peut redimensionner plusieurs colonnes en une opération, en les sélectionnant par leurs étiquettes

- 13 - DEPLACER UNE COLONNE Cliquer sur l'étiquette de colonne pour la sélectionner Pointer l'étiquette de colonne Presser et faire glisser (trait vertical) à la position désirée Relâcher SELECTION DES DONNEES Champs adjacents Cliquer dans le premier champ à sélectionner Taper F2 pour sélectionner ce champ MAJ pressée Utiliser les flèches pour sélectionner les champs adjacents ou Cliquer sur le bord gauche à l'intérieur du premier champ et maintenir pressé Faire glisser ou Sélectionner le premier champ MAJ pressée Cliquer sur le dernier champ à sélectionner Colonne entière (tous les champs) Pointer et cliquer le nom de la colonne ou Pointer le nom de la première colonne Presser et faire glisser pour sélectionner les colonnes adjacentes ou Cliquer dans un champ de la colonne Taper F2 pour sélectionner ce champ Taper CTRL+ESPACE Pour sélectionner les colonnes adjacentes, taper MAJ+DROITE ou MAJ+GAUCHE

14 Enregistrements Pointer et cliquer le sélecteur de la ligne ou Pointer le sélecteur de la première ligne Presser et faire glisser pour sélectionner les lignes adjacentes ou Cliquer dans un champ de la ligne Taper F2 pour sélectionner le champ Taper MAJ+ESPACE Pour sélectionner les lignes adjacentes, taper MAJ+HAUT ou MAJ+BAS Sélectionner tous les enregistrements d'une feuille de données Cliquer sur la case vide à gauche des étiquettes de colonnes FORMATS DES CARACTERES Ouvrir la table ou la requête en Mode Feuille de données FORMAT Police Sélectionner une police, un style, une taille et une couleur Cliquer OK Les modifications affectent l'ensemble des données de la feuille FIGER UNE COLONNE La procédure permet de toujours conserver sur la gauche de l'écran, les colonnes sélectionnées. Ouvrir la table ou la requête en Mode Feuille de données Sélectionner les colonnes à figer FORMAT Figer les colonnes Libérer les colonnes figées FORMAT Libérer toutes les colonnes

15 TABLE SANS ASSISTANT Une table comporte des données relatives à une catégorie d'informations. Elle est composée de champs et d'enregistrements que l'on peut considérer respectivement comme les colonnes et les lignes d'un tableau. Pour chaque champ, il faut définir son nom et le type de contenu. CREER UNE TABLE SANS ASSISTANT Depuis la fenêtre Base de données, cliquer l'objet Tables Cliquer le bouton Nouveau Cliquer Mode Création Cliquer OK Taper le nom du premier champ (64 caract. maxi.) Valider ou taper TAB (MAJ+TAB permet de revenir en arrière) Cliquer la flèche vers le bas dans la zone "Type de données" Cliquer le type de données du champ créé Valider ou taper TAB Saisir un texte de commentaire, décrivant l'objet du champ (facultatif) Valider ou taper TAB Saisir le nom du deuxième champ Valider ou taper TAB Sélectionner un type de données Valider ou taper TAB Saisir une description Valider ou taper TAB Procéder ainsi pour chaque champ de la table Notes sur les Types de données: On doit choisir pour chaque champ le type de données qu'il contiendra, en fonction de la saisie autorisée dans le champ (Texte par défaut) Texte Caractères alphanumériques (jusqu'à 255) Mémo Caractères alphanumériques (jusqu'à 64000) Numérique Nombres entiers ou décimaux (jusqu'à 8 chiffres) Date/Heure Dates et Heures (8 caractères) Monétaire Valeurs monétaires (8 caractères) NuméroAuto Valeur d'incrément par nouvel enregistrement (4 caractères) Oui/Non Valeurs booléennes Objet OLE Objets OLE, graphiques et autres données externes (jusqu'à 1 giga-octets selon l'espace disque)

16 Lien hypertexte Assistant Liste de choix Adresse URL ou adresse EMAIL Création d'une liste déroulante dans la table On utilise le type "Monétaire" si on doit exécuter de nombreuses opérations sur un champ qui contient des données comprenant de une à quatre décimales. Les champs de type "Réel simple" et "Réel double" exigent des opérations en virgule flottante. Les champs de type "Monétaire" utilisent des opérations plus rapides en virgule fixe. CREER UNE LISTE DE CHOIX Lorsque ce type de champ est utilisé, ACCESS propose, lors de la saisie, un ensemble de valeurs sous forme de liste déroulante. Les valeurs proposées dans une liste de choix peuvent être des données constantes déterminées lors de la création de la table ou des données variables issues d'une table ou d'une requête. Lorsque l'on crée un formulaire basé sur une table contenant un champ de type "Liste de choix", une zone de liste déroulante est automatiquement créée pour le champ concerné. Ouvrir la table en mode Création Saisir le nom du champ Sélectionner le type Assistant Liste de choix Liste de valeurs constantes (saisies) Activer l'option Je taperai les valeurs souhaitées Cliquer Suivant Saisir le nombre de colonnes souhaité dans la liste Cliquer dans la première cellule de saisie Saisir le premier élément de la liste Se placer dans la cellule suivante Saisir l'élément suivant de la liste Se placer dans la cellule suivante Procéder ainsi pour saisir tous les éléments de la liste Cliquer Suivant Conserver la même étiquette pour le nom de champ Cliquer Terminer Valeurs issues d'une table ou d'une requête Activer l'option Je veux que la liste de choix recherche les valeurs dans une table ou requête Cliquer Suivant Sélectionner la table ou la requête contenant le champ dont les valeurs sont à utiliser dans la liste de choix

17 Cliquer Suivant Cliquer deux fois sur le champ contenant les valeurs à utiliser dans la liste de choix Afin de placer ce champ dans la zone "Champs sélectionnés" Cliquer Suivant Régler la largeur de la colonne Cliquer Suivant Conserver la même étiquette pour le nom de champ Cliquer Terminer DEFINIR UNE CLE PRIMAIRE Une table doit comporter au moins un champ qui identifie de manière unique chaque enregistrement. Ce champ s'appelle la clé primaire (souvent un code ou un numéro, propre à chaque enregistrement). Lorsque l'on visualisera les enregistrements, ACCESS les affichera en les triant sur la clé primaire. Cliquer sur la ligne du champ utilisé comme clé primaire Cliquer l'icône Clé primaire Notes: 1. Pour créer une clé primaire multichamp, maintenir CTRL pressée et cliquer sur le sélecteur de ligne de chaque champ concerné. A utiliser lorsque la table ne contient aucun champ de valeur unique (Ex: Chambre d'hôtel et Date de réservation). 2. Pour supprimer une clé primaire, cliquer de nouveau sur l'icône Clé primaire. ENREGISTRER LA TABLE FICHIER Enregistrer sous Taper le nom de la table (64 caract. maxi.) Cliquer OK SAISIR LES ENREGISTREMENTS Cliquer l'icône Affichage (ou AFFICHAGE/Mode Feuille de données) Saisir le contenu de chaque champ, dans chaque enregistrement, en validant pour passer de l'un à l'autre Cliquer la case de fermeture pour fermer la table

18 Note: Pour saisir les valeurs d'un champ de type "Liste de choix", accéder à la cellule du champ, cliquer la flèche sur sa droite puis sélectionner un élément de la liste déroulante. MODIFIER UNE TABLE PASSER DU MODE CREATION AU MODE FEUILLE DE DONNEES Chaque table peut s'ouvrir en deux modes: 1. Le Mode Création, pour en modifier la structure 2. Le mode Feuille de Données, pour effectuer des opérations sur les enregistrements Cliquer l'icône Affichage ou Cliquer l'icône Affichage (ou AFFICHAGE/Création) (ou AFFICHAGE/Mode Feuille de données) AJOUTER DES CHAMPS DANS UNE TABLE Depuis la fenêtre Base de Données, cliquer l'objet Tables Cliquer la table dans laquelle on souhaite ajouter des champs Cliquer le bouton Cliquer dans la cellule vide sous les noms de champs Taper le nom du nouveau champ Valider pour se placer dans la zone "Type de données" Cliquer la flèche et sélectionner le type de données Valider pour se placer dans la zone "Description" Taper un texte de commentaire, décrivant le champ Valider Procéder de même pour chaque nouveau champ Cliquer l'icône Enregistrer Saisir les informations des nouveaux champs Cliquer l'icône Affichage Saisir chaque cellule des nouveaux champs Cliquer la case de fermeture pour fermer la table DEPLACER UN CHAMP Ouvrir la table en mode Création Cliquer sur le sélecteur de ligne à gauche du nom de champ à déplacer

19 Pointer le sélecteur Presser et faire glisser la ligne horizontale noire jusqu à la position désirée Relâcher INSERER UN NOUVEAU CHAMP Ouvrir la table en mode Création Cliquer dans la ligne qui se retrouvera sous celle insérée Cliquer l icône Insérer des lignes (ou INSERTION/Lignes) Taper le nom du champ Valider Sélectionner un type de données Valider Saisir un texte de commentaire (facultatif)

20 SUPPRIMER UN CHAMP Ouvrir la table en mode Création Cliquer dans la ligne correspondant au champ à supprimer Cliquer l icône Supprimer les lignes (ou EDITION/Supprimer les lignes) Cliquer Oui pour confirmer la suppression des données PROPRIETES DES CHAMPS Chaque champ d'une table possède un ensemble de propriétés permettant de contrôler avec précision la manière dont ACCESS enregistre, manipule, et affiche les données dans le champ. DEFINIR UNE PROPRIETE DE CHAMP Ouvrir la table en mode Création Cliquer dans la ligne du champ concerné par la propriété Cliquer sur la propriété à définir ou taper F6 et utiliser les flèches pour accéder à la propriété Suivant la propriété: Taper un paramètre ou Cliquer sur la flèche Cliquer sur un élément de la liste proposée Cliquer l'icône Enregistrer pour sauvegarder les modifications TAILLE D'UN CHAMP La propriété "Taille du champ" permet de spécifier la taille maximale des données pouvant être contenues dans un champ pour les données de type "Texte", "Numérique" ou "NuméroAuto". Il est conseillé d'utiliser la plus petite valeur possible pour la propriété "Taille du champ" car les données de petite taille sont traitées plus rapidement. Champs de type NuméroAuto La propriété "Taille du champ" peut prendre la valeur "Entier long" ou "N réplication". Champs de type "Texte" La taille du champ (entre 1 et 255) précise le nombre maximal de caractères autorisés. Par défaut, la valeur utilisée est 50. ACCESS utilise seulement en mémoire la saisie effectuée, et non pas la place attribuée. Champs de type "Numérique"

21 La taille du champ détermine la plage de valeurs autorisées, ainsi que l'exclusion ou non des nombres décimaux. Par défaut, ACCESS attribue la valeur "Entier long", qui autorise tous les nombres. Taille du champ Valeurs Décimales Taille d'enreg. Octet 0 à 255 0 1 octet Entier -32768 à 32767 0 2 octets Entier long -2147483648 à 2147483647 0 4 octets Réel simple -3,4 E 38 et -1,4 E -45 pour les 15 4 octets valeurs négatives 1,4 E -45 et 3,4 E 38 pour les valeurs positives Réel double -1,8 E 308 et -4,9 E -324 pour les 15 8 octets valeurs négatives 1,8 E 308 et 4,9 E -324 pour les valeurs positives N réplication Identifiant globalement unique 16 octets (permet d'identifier des tables, des enregistrements, des objets) Synchronisation des tables Décimal Permet de préciser le nombre de chiffres avant et après le séparateur décimal (précision égale à 18) 15 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.

22 Champs Numérique: Par exemple, un format numérique comportera quatre parties, séparées par des pointsvirgules. Première partie pour les nombres positifs, deuxième pour les nombres négatifs, troisième pour les valeurs 0, quatrième s'il n'y a aucune valeur. Le chiffre 0 affiche les nombres tels quels. Le signe # est utilisé pour des chiffres pouvant être saisis ou non. Cliquer dans la ligne du champ concerné Cliquer dans la propriété Format Cliquer la flèche à droite de la propriété Format Sélectionner le code de format de son choix ou Saisir le code de format désiré Cliquer l'icône Enregistrer pour sauvegarder les modifications Champs Texte: Un format texte comprendra trois parties, séparées par des points-virgules. Première partie aux champs comportant du texte, la deuxième aux champs contenant des chaînes vides (aucun caractère), la troisième aux champs Null (aucune valeur). @ représente un caractère qui devra toujours être saisi & représente un caractère qui pourra être saisi ou non < transforme les caractères saisis en minuscules > transforme les caractères saisis en majuscules Cliquer dans la ligne du champ concerné Cliquer dans la propriété Format Saisir le code de format désiré Cliquer l'icône Enregistrer pour sauvegarder les modifications MASQUE DE SAISIE Le masque de saisie a pour but de faciliter la saisie d'un champ complexe, comme un numéro de téléphone par exemple, en utilisant un format adéquat. Applicable à tous les types de champs sauf de type Mémo ou NuméroAuto.

23 Champs Numérique: Cliquer dans la ligne du champ concerné Cliquer dans la propriété Masque de saisie Saisir le masque en remplaçant les caractères à saisir dans le champ par 0 pour des chiffres devant obligatoirement être saisis # pour des chiffres pouvant être saisis ou non Cliquer l'icône Enregistrer pour sauvegarder les modifications Champs Date/Heure: Cliquer dans la ligne du champ concerné Cliquer dans la propriété Masque de saisie Cliquer sur l'icône du Générateur d'expression à droite de la propriété Cliquer Oui pour sauvegarder la table Sélectionner le format désiré Cliquer Suivant Sélectionner un caractère d'espace réservé Cliquer Suivant Cliquer Terminer Cliquer l'icône Enregistrer pour sauvegarder les modifications Champs Texte: Cliquer dans la ligne du champ concerné Cliquer dans la propriété Masque de saisie Cliquer sur l'icône du Générateur d'expression à droite de la propriété Cliquer Oui pour sauvegarder la table Sélectionner le format désiré Cliquer Suivant Sélectionner un caractère d'espace réservé Cliquer Suivant Sélectionner un mode d'écriture de stockage des données Cliquer Suivant Cliquer Terminer Cliquer l'icône Enregistrer pour sauvegarder les modifications Exemple d'un masque de saisie pour un champ N de téléphone VALEUR PAR DEFAUT Pour tous les champs sauf de type NuméroAuto. Le champ sera automatiquement rempli d'une valeur donnée. Utile lorsqu'un champ contient souvent la même valeur. Valable pour les enregistrements à venir. Exemple:

24 PROPRIETE NULL INTERDIT En précisant "Oui" à la propriété "Null interdit", le champ concerné devra obligatoirement contenir une valeur pour chaque enregistrement. Les champs Texte ou Memo possèdent en plus la propriété "Chaîne vide autorisée", qui détermine si un champ peut contenir des chaînes vides (""), différentes de la valeur Null. Si on attribue la valeur "Oui" aux propriétés "Chaîne vide autorisée" et "Null interdit": On pourra enregistrer des chaînes vides au lieu de valeurs Null lorsqu'on laisse un champ vierge; (différence de traitement dans les requêtes: Access n'inclut pas dans la feuille de réponses les enregistrements dont les champs critères contiennent des valeurs Null). Si on attribue la valeur "Oui" à la propriété "Chaîne vide autorisée" et "Non" à "Null interdit": On peut autoriser l'enregistrement de valeurs Null et de chaînes vides, afin de distinguer par exemple les valeurs inconnues (Null) des valeurs inexistantes (""). Champ vierge = Null Champ contenant "" = Chaîne vide REGLES DE VALIDATION DES DONNEES DE CHAMP Il s'agit de définir les conditions particulières que doivent remplir les données d'un champ, en plus du type de données que contrôle ACCESS en permanence. On peut prévoir également le texte qui s'affichera en cas de transgression de la règle de validation. Ouvrir la table en mode Création Cliquer dans la ligne du champ concerné par la règle de validation Cliquer dans la propriété Valide si Saisir l'expression Cliquer dans la propriété Message si erreur Taper le texte qui apparaîtra en cas de transgression de la règle Valide si Cliquer l'icône Enregistrer pour sauvegarder les modifications Note: On pourrait utiliser les outils du Générateur d'expression pour créer une règle complexe. Cliquer l'icône droite de la propriété "Valide si" à Exemples de règles < #01/01/1995# >100 Comme "M????" >= #01/01/1993# Et < #01/01/1994#

25 IMPORTER - EXPORTER IMPORTER UNE FEUILLE EXCEL Si dans la feuille de calcul, les noms des champs se trouvent sur la première ligne, ACCESS peut les reprendre comme noms de champ dans la table. ACCESS affecte à chaque nouveau champ créé dans la table le type le plus approprié aux données importées. Ouvrir la base de données de destination FICHIER Données externes Importer Sélectionner le type de fichier Microsoft Excel Sélectionner le lecteur et le dossier contenant le fichier Excel Sélectionner le fichier Excel à importer Cliquer le bouton Sélectionner la feuille de calcul à importer Cliquer Suivant L option Première ligne contient les en-têtes de colonnes est activée par défaut Afin de reprendre comme noms de champs dans la table, ceux existants dans Excel Cliquer Suivant Cliquer Dans une nouvelle table

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 Indexation d un champ La suite de la procédure concerne la création d une nouvelle table Cliquer sur l étiquette du champ (en-tête de colonne) Dans la liste déroulante Indexé, sélectionner l option désirée Ne pas importer un champ Cliquer sur l étiquette du champ (en-tête de colonne) Activer l option Ne pas importer le champ (sauter) Cliquer Suivant Choix de la clé primaire Cliquer Choisir ma propre clé primaire Sélectionner le champ clé primaire dans la liste Note: Si on clique l option Pas de clé primaire, la table n en disposera pas Si on clique l option Laisser Access ajouter une clé primaire, Access crée un nouveau champ dans la table, nommé Numéro, dont il fait la clé primaire Cliquer Suivant Saisir le nom de la nouvelle table ou conserver le nom de la feuille Excel d origine Cliquer Terminer Cliquer OK Access affiche la nouvelle table dans la liste des tables EXPORTER DANS UNE FEUILLE DE CALCUL EXCEL Cette procédure est identique pour exporter des données ACCESS vers un autre tableur, un fichier base de données, ou un traitement de texte. Ouvrir la base de données contenant l objet à exporter Cliquer l'objet puis sélectionner celui à exporter dans Excel FICHIER Exporter Saisir le nom du fichier de destination

27 Ou conserver le nom d origine de l'objet Sélectionner le type de fichier Microsoft Excel 97-2000 Ou sélectionner une version Excel antérieure Sélectionner l unité et le dossier de destination Cliquer le bouton Notes: 1. Si on choisit d exporter une table ou une requête vers un classeur Excel97 existant, en sélectionnant le nom du fichier Excel parmi le contenu du dossier de destination, Access crée une nouvelle feuille de calcul dans le classeur et y intègre les données exportées. 2. Lors de la procédure d'exportation, le choix du type de fichier résultant "Rich Text Format" permet d'ouvrir ensuite celui-ci dans un traitement de texte, en sélectionnant les documents d'extension.rtf. LES FILTRES Lorsque l'on souhaite n'afficher qu'une partie des données sans créer une requête, on peut définir un filtre. Les filtres fonctionnent avec les tables, les requêtes, les formulaires. Lorsque l'on imprime un état basé sur une table ou une requête filtrée, il sera tenu compte du filtre si on choisit Oui dans la propriété Filtre actif de l'état. FILTRE PAR SELECTION Ouvrir la table ou le formulaire en mode Feuille de données Sélectionner le contenu d'un champ (tout ou partie), dans un enregistrement, commun à tous les enregistrements à afficher Exemple, pour afficher tous les enregistrements du vendeur "Montel", cliquer dans une cellule quelconque du champ Vendeur contenant "Montel" Exemple, pour afficher tous les enregistrements des clients d'un même département, sélectionner les deux premiers chiffres du champ Code Postal dans une cellule contenant un code correspondant au département désiré Cliquer l'icône Filtrer par sélection (ou ENREGISTREMENTS/Filtre/Filtrer par sélection) Afficher tous les enregistrements Cliquer l'icône Supprimer le filtre enregistrements) (ou ENREGISTEMENTS/Afficher tous les Appliquer de nouveau le dernier filtre Cliquer l'icône Appliquer le filtre (ou ENREGISTREMENTS/Appliquer le filtre/tri)

28 FILTRE PAR FORMULAIRE Ouvrir la table ou le formulaire en mode Feuille de données Cliquer l'icône Filtrer par formulaire Un enregistrement vierge apparaît Saisir un critère Cliquer dans la cellule du champ concerné par le critère Cliquer la flèche déroulante et sélectionner l'élément correspondant au critère ou Saisir le critère dans la cellule Valider Procéder de même pour chaque champ à affecter d'un critère Note: Si un même champ doit comporter un autre critère, cliquer l'onglet Ou en bas à gauche de l'écran, et sélectionner ou saisir le critère supplémentaire. Cliquer l'icône Appliquer le filtre Afficher tous les enregistrements Cliquer l'icône Supprimer le filtre FORMULAIRE AVEC ASSISTANT Les formulaires permettent de saisir, de modifier, de visualiser et d'imprimer les données d'une table ou d'une requête. On peut visualiser toutes les valeurs d'un enregistrement en mode Formulaire, ou tous les enregistrements d'un formulaire en mode Feuille de données. Toutes les données d'un formulaire sont affichées dans des contrôles. Certains contrôles sont associés aux champs de la table ou de la requête sous-jacente pour nous permettre d'afficher le contenu des champs ou d'y entrer des données. D'autres contrôles affichent uniquement les informations enregistrées dans le formulaire ou ont une fonction décorative (étiquettes, traits, rectangles...).

29 CREER UN FORMULAIRE INSTANTANE Depuis la fenêtre Base de Données, cliquer l'objet Tables ou Requêtes Cliquer la table ou la requête sur laquelle se crée le formulaire Cliquer la flèche à droite de l'icône Nouvel objet Cliquer Formulaire instantané ACCESS crée et ouvre le formulaire ou Dans la fenêtre Base de Données, cliquer l'objet Formulaires Cliquer le bouton Nouveau Cliquer Formulaire Instantané: Colonnes ou Formulaire Instantané: Tableau ou Formulaire Instantané: Feuille de données Sélectionner la table ou la requête sur laquelle se créé le formulaire Cliquer OK ACCESS crée et ouvre le formulaire FICHIER Enregistrer sous Taper le nom du formulaire Cliquer OK CREER UN FORMULAIRE AVEC UN ASSISTANT Dans la fenêtre Base de Données, cliquer l'objet Formulaires Cliquer le bouton Nouveau Cliquer Assistant Formulaire Sélectionner la table ou la requête sur laquelle se créé le formulaire Cliquer OK Cliquer deux fois sur chaque champ à inclure dans le formulaire ou Cliquer sur le champ à inclure Cliquer l'icône Pour inclure tous les champs Cliquer l'icône Pour retirer tous les champs Cliquer l'icône Pour retirer un champ Cliquer deux fois sur le champ dans la zone "Champs sélectionnés" ou Cliquer sur le champ dans la zone "Champs sélectionnés" Cliquer l'icône

30 Note : Les champs apparaîtront dans le formulaire dans l'ordre où ils figurent dans la zone Champs sélectionnés. Cliquer Suivant Cliquer une présentation Cliquer Suivant Cliquer un style de formulaire Cliquer Suivant Saisir le titre principal du formulaire Conserver l'option Ouvrir le formulaire pour afficher ou entrer des informations Cliquer Terminer SUPPRIMER UN ENREGISTREMENT EN MODE FORMULAIRE Activer l'enregistrement à supprimer EDITION Supprimer l'enregistrement MANIPULER LES CONTROLES MODES D'AFFICHAGE DU FORMULAIRE Le formulaire est ouvert Cliquer la flèche à droite de l'icône Affichage Cliquer Mode Feuille de données Ce mode n'affiche pas les images, autres objets OLE et les boutons de commande ou Cliquer Mode Formulaire Ce mode n'affiche qu'un enregistrement unique ou Cliquer Mode Création Pour modifier la structure du formulaire

31 Aperçu avant impression Cliquer l'icône Aperçu avant impression Taper ECHAP pour revenir en mode normal SELECTION DES CONTROLES Les procédures de sélection, de déplacement, de dimensionnement et d'alignement sont les mêmes pour tous les contrôles ACCESS, qu'ils se trouvent dans un formulaire ou dans un état. Le formulaire est ouvert en mode Création Sélection d'un contrôle Cliquer dans le contrôle (zone contenant la valeur) Si le contrôle est associé à une étiquette, celle-ci est sélectionnée également Dès lors, la frappe de TAB ou de MAJ+TAB, permet de se déplacer d'un contôle à l'autre Sélectionner des contrôles adjacents Pointer l'extérieur du premier contrôle à sélectionner Presser et faire glisser la souris pour sélectionner tous les contrôles Tracer un rectangle autour des contrôles à sélectionner Sélectionner des contrôles non-adjacents ou superposés Presser MAJ Cliquer sur chaque contrôle à sélectionner Supprimer un contrôle du groupe sélectionné Presser MAJ Cliquer sur les contrôles à désélectionner DEPLACER DES CONTROLES Le formulaire est ouvert en mode Création Déplacer un contrôle et son étiquette éventuelle

32 Sélectionner les contrôles à déplacer Pointer le bord d'un contrôle sélectionné (main ouverte) Presser et faire glisser jusqu'à l'emplacement désiré Déplacer une étiquette seule ou un contrôle seul Cliquer dans l'étiquette ou dans le contrôle à déplacer Pointer la poignée de déplacement (angle supérieur gauche = main avec index) Presser et faire glisser à l'emplacement désiré Pour déplacer un contrôle seul ou une étiquette seule dans une autre section, passer par COUPER/COLLER Déplacement sur la ligne ou sur la colonne Presser MAJ et cliquer les contrôles à déplacer Au dernier contrôle sélectionné, ne pas relâcher la souris Presser faire glisser verticalement ou horizontalement DIMENSIONNER DES CONTROLES Le formulaire est ouvert en mode Création Dimensionner des contrôles Sélectionner les contrôles à redimensionner Pointer la poignée de redimensionnement correspondante Presser et faire glisser pour obtenir la taille désirée Ajuster la dimension des étiquettes à leur contenu Sélectionner les étiquettes (ou boutons) FORMAT Taille Cliquer Au contenu Dimensionner les contrôles les uns par rapport aux autres Sélectionner les contrôles FORMAT

33 Taille Cliquer Au plus grand (la même hauteur que le plus grand contrôle sélectionné) ou Cliquer Au plus petit (la même hauteur que le plus petit contrôle sélectionné) ou Cliquer Au plus large (la même largeur que le plus large contrôle sélectionné) ou Cliquer Au plus étroit (la même largeur que le contrôle le plus étroit sélectionné) ALIGNER LES CONTROLES ENTRE EUX Le formulaire est ouvert en mode Création Sélectionner les contrôles d'une même ligne ou d'une même colonne FORMAT Aligner Cliquer Gauche (aligne les bords gauches des contrôles sur celui le plus à gauche) ou Cliquer Droite (aligne les bords droits des contrôles sur celui le plus à droite) ou Cliquer Haut (aligne les bords supérieurs des contrôles sur celui le plus en haut) ou Cliquer Bas (aligne les bords inférieurs des contrôles sur celui le plus en bas) ou Cliquer Sur la grille (alignement des contrôles sur la grille = maillage égal à 0,25 cm) SUPPRIMER UN CONTROLE Lorsque l'on supprime un contrôle, l'étiquette associée est automatiquement supprimée. A l'inverse, en ne sélectionnant que l'étiquette, on peut supprimer celle-ci tout en conservant le contrôle associé. PERSONNALISER UN FORMULAIRE CONTROLES DANS UN FORMULAIRE Un contrôle peut être de trois types: Contrôle Dépendant (ou lié) Affiche une donnée provenant d'une table ou d'une requête. Il permet d'afficher, de saisir, et de mettre à jour les valeurs des champs.

34 Contrôle indépendant Affiche une information non liée à une table ou une requête. Cela peut aussi être une figure géométrique ou une image. Il n'y a donc pas de source de données. Contrôle calculé Affiche une valeur provenant d'une expression et non pas d'un champ. On doit donc définir une expression comme source des données. Une expression peut utiliser les données issues d'un champ de la table ou de la requête sous-jacente, ou d'un contrôle du formulaire. A chaque ouverture du formulaire, ACCESS calculera la valeur de l'expression en utilisant la dernière version des données. Conseil: Dans le formulaire, placer tout d'abord les contrôles dépendants, puis les contrôles indépendants et calculés à l'aide de la barre d'outils. AJOUTER DES CONTROLES DEPENDANTS Le formulaire est ouvert en mode Création Cliquer l'icône Liste des champs (ou AFFICHAGE/Liste des champs) Sélectionner les champs à ajouter au formulaire Pour sélectionner tous les champs, cliquer deux fois sur le titre de la liste Pointer un champ sélectionné Presser et faire glisser dans le formulaire Prendre en compte le placement de l'étiquette Cliquer l icône Liste des Champs AJOUTER DES CONTROLES AVEC LA BOITE A OUTILS La boîte à outils est utilisée pour créer des contrôles indépendants ou calculés, ainsi que des contrôles dépendants autres que "Zone de texte". Le formulaire est ouvert en mode Création Afficher ou masquer la boîte à outils Cliquer l'icône Boîte à outils (ou AFFICHAGE/Boîte à outils) Créer un contrôle avec un outil Cliquer l'outil correspondant au type de contrôle à créer Créer un contrôle dépendant autre que "Zone de texte" Cliquer l'icône Liste des champs Pointer le champ correspondant au contrôle Presser et faire glisser le nom de champ dans le formulaire Cliquer l icône Liste des Champs

35 Créer un contrôle indépendant Cliquer dans le formulaire à la position du coin supérieur gauche du contrôle La taille est alors définie par défaut ou Pointer dans le formulaire la position du coin supérieur gauche du contrôle Presser et faire glisser pour définir la taille CREER UNE ZONE DE TEXTE CALCULE Un contrôle calculé est en règle générale une zone de texte dans laquelle on tape directement l'expression pour l'attribuer à la propriété "Source contrôle" du contrôle. Le formulaire est ouvert en mode Création Cliquer l'outil Zone de texte dans la boîte à outils Cliquer dans le formulaire à la position du coin supérieur gauche de la zone de texte La taille est alors définie par défaut ou Pointer dans le formulaire la position du coin supérieur gauche de la zone de texte Presser et faire glisser pour définir la taille Cliquer à l'intérieur de la zone de texte (contrôle et non étiquette) Taper le signe = et l'expression désirée Valider Cliquer sur le nom temporaire de l'étiquette Cliquer l'icône Propriétés (ou cliquer deux fois sur l'étiquette) Dans la liste des propriétés qui apparaît, sélectionner le texte de légende Taper un libellé plus explicite Cliquer l'icône Propriétés pour refermer la boîte des propriétés Redimensionner la largeur de l'étiquette, si nécessaire CREER UN INTITULE On utilise un contrôle de type "Intitulé" pour afficher un titre, une légende, ou des instructions. Les intitulés sont toujours indépendants, n'étant pas associés à un champ. Le formulaire est ouvert en mode Création

36 Cliquer l'outil Intitulé Dans le formulaire, cliquer à la position du début de saisie Taper le texte désiré La taille de l'intitulé s'ajuste automatiquement au fur et à mesure de la saisie ou Dans le formulaire, pointer la position du début de saisie Presser et faire glisser pour définir la taille Relâcher et taper le texte désiré Note: Pour saisir un texte sur plusieurs lignes dans une étiquette, taper CTRL+RETOUR pour passer à la ligne. ZONE DE LISTE OU LISTE MODIFIABLE AVEC UN ASSISTANT Il est plus simple de sélectionner une valeur dans une liste que de la taper. Une zone de liste comprend une série de valeurs toujours affichées parmi lesquelles on peut faire son choix. Une liste modifiable est la combinaison d'une zone de texte et d'une zone de liste; on peut taper une valeur dans la partie zone de texte du contrôle, ou sélectionner une valeur dans sa liste après avoir cliqué la flèche. Le formulaire est ouvert en mode Création Vérifier que l'outil Assistants Contrôle est activé ("enfoncé") Cliquer l'outil Zone de liste ou l'outil Zone de liste modifiable dans la boîte à outils Dans le formulaire, cliquer à la position désirée du coin supérieur gauche de la liste Zone de liste ou Liste modifiable dépendant d'une table ou d'une requête Permet de sélectionner et conserver un élément d'un seul champ Conserver le premier choix relatif à la table ou requête

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

38 Cliquer Suivant Saisir le nombre de colonnes qui composeront la liste Cliquer dans la première cellule Saisir le premier élément de la liste Taper la touche TAB (ou utiliser la flèche) pour accéder à la deuxième cellule Saisir le deuxième élément de la liste Taper TAB Procéder ainsi pour chaque élément à saisir dans la liste Définir la largeur des colonnes des champs Cliquer Suivant Cliquer Stocker la valeur dans ce champ Sélectionner le champ qui contiendra la valeur sélectionnée dans la liste Cliquer Suivant Taper le nom de l'étiquette de la liste créée Cliquer Terminer SAISIE DE NOUVELLES VALEURS DANS UNE LISTE MODIFIABLE La procédure suivante est employée uniquement pour les listes modifiables ayant été conçues en saisissant les valeurs qui les composent. Le formulaire est ouvert en mode Création

39 Cliquer sur la liste modifiable concernée Cliquer l'icône Propriétés Cliquer dans la propriété Limiter à liste Sélectionner Non (par défaut) pour autoriser la saisie de nouvelles données ou Sélectionner Oui pour limiter les valeurs utilisées à celles de la liste Cliquer dans la propriété Contenu Saisir entre guillemets, chaque nouvelle valeur, espacée d'un point-virgule Cliquer l'icône Propriétés RECHERCHER UN ENREGISTREMENT Il s'agit d'inclure dans le formulaire une liste modifiable dont la sélection d'un élément permet l'affichage de l'enregistrement correspondant. Le formulaire est ouvert en mode Création Cliquer l'outil Zone de liste modifiable Cliquer dans la zone Détail à la position désirée pour l'insertion de la liste Activer l'option Rechercher un enregistrement dans mon formulaire Cliquer Suivant Sélectionner le champ utilisé pour effectuer la recherche d'enregistrement Cliquer le bouton Cliquer Suivant Régler la largeur de la colonne Cliquer Suivant Saisir le texte de l'étiquette de la liste créée Cliquer Terminer

40 Redimensionner éventuellement la largeur de l'étiquette INSERER UN CONTROLE ONGLET Lorsque les contrôles sont trop nombreux, ils risquent de ne pas tenir sur une zone limitée d'un écran. Il est alors préférable de les disposer à l'intérieur d'onglets, semblables à certains menus. Ce système permet de créer des formulaires de plusieurs pages, facilement manipulables. Ouvrir le formulaire en mode Création Aménager une zone suffisamment grande pour recevoir le contrôle onglet Cliquer l'icône Contrôle Onglet Dans le formulaire, pointer le coin supérieur gauche du contrôle onglet à créer Presser et faire glisser pour créer le contrôle onglet puis relâcher Ajouter un onglet Cliquer sur un onglet quelconque afin de sélectionner le contrôle onglet Cliquer le bouton droit de la souris Cliquer Insérer une page (ou INSERTION/Page Contrôle onglet) Un nouvel onglet apparaît à droite de ceux existants Supprimer un onglet Cliquer sur l'onglet à supprimer Cliquer le bouton droit de la souris Cliquer Supprimer la page Déplacer un onglet Cliquer sur un onglet quelconque afin de sélectionner le contrôle onglet Cliquer le bouton droit de la souris Cliquer Ordre des pages Sélectionner l'onglet à déplacer

41 Cliquer le bouton Déplacer vers le haut ou Déplacer vers le bas Cliquer OK Renommer un onglet Cliquer deux fois sur l'onglet à renommer La feuille de propriétés de l'onglet apparaît Saisir le nom désiré dans la propriété Légende Cliquer l'icône Propriétés Placer les contrôles dans les onglets Sélectionner les contrôles du formulaire à placer dans le premier onglet Cliquer l'icône Couper Cliquer sur l'onglet de destination Cliquer l'icône Coller Déplacer et redimensionner les contrôles si besoin Procéder de même pour insérer les autres contrôles dans les autres onglets

42 VALEURS OUI/NON Les cases à cocher, les boutons d'options et les boutons bascule sont utilisés comme contrôles autonomes pour définir des valeurs Oui/Non ou Vrai/Faux. Case à cocher Bouton d'option Bouton bascule Lorsque ces boutons sont activés ou désactivés, ACCESS enregistre la valeur dans la table sous- jacente, et l'affiche en fonction de la propriété "Format" définie pour le champ. Lorsque ces contrôles sont associés à des champs autres que de type Oui/Non, ACCESS inscrit "-1" (Oui ou Vrai) en cas de sélection, sinon "0" (Non ou Faux).

43 Créer un bouton dépendant d'un champ Le formulaire est ouvert en mode Création Cliquer l'outil Case à cocher ou Bouton d'option ou Bouton bascule Cliquer l'icône Liste des champs Pointer le champ Oui/Non correspondant au bouton Presser et faire glisser dans le formulaire Cliquer l'icône Liste des champs GROUPE D'OPTIONS Un groupe d'options est constitué d'un cadre de groupe contenant plusieurs cases à cocher, boutons d'options ou boutons bascule. Un groupe d'options facilite la sélection, car il nécessite un simple clic sur l'option de son choix. Un groupe d'options dépendant d'un champ, c'est le cadre du groupe qui dépend du champ, et non ses options. Le groupe peut également dépendre d'une expression, ou être indépendant. Chaque option d'un groupe a sa propriété "Valeur contrôle", à laquelle on attribue une valeur obligatoirement numérique correspondant au champ associé au cadre de groupe. Lorsque l'on sélectionne l'une des options d'un groupe, ACCESS affecte au champ dont le groupe d'options dépend, la valeur de la propriété "Valeur contrôle" de l'option sélectionnée. Ouvrir le formulaire en mode Création Cliquer l'icône Groupe d'options Pointer dans le formulaire la position du coin supérieur gauche du groupe d'options Presser et faire glisser la souris pour créer le groupe d'options et relâcher Saisir le texte de l'étiquette de la première option du groupe Taper la touche TAB Saisir le texte de l'étiquette suivante Taper la touche TAB Procéder ainsi pour saisir toutes les étiquettes du groupe d'options Cliquer Suivant Sélectionner Oui ou Non pour avoir ou pas une valeur par défaut Si on clique Oui, sélectionner ensuite la valeur par défaut dans la liste déroulante Cliquer Suivant Modifier si besoin les valeurs attribuées à chaque option Lors de la sélection d'une option, ACCESS stocke dans le champ sous-jacent la valeur correspondante. Appliquer -1 ou 0 pour les valeurs d'un champ de type Oui/Non.

44 Cliquer Suivant Cliquer Stocker la valeur dans ce champ Sélectionner dans la liste déroulante le champ de la table qui contiendra la valeur assignée à l'option choisie Cliquer Suivant Sélectionner un type de contrôle et un style Cliquer Suivant Saisir le texte de la légende Cliquer Terminer SAUT DE PAGE En mode formulaire, un saut de page n'est actif que si on a attribué la valeur "Mode simple" à la propriété "Affich par défaut" au formulaire. En mode Formulaire, ACCESS utilise un saut de page pour marquer une zone spécifique accessible avec les touches PGUP et PGDN. Le formulaire est ouvert en mode Création Cliquer l'icône Saut de page Dans le formulaire, cliquer à la position désirée du saut de page

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

46 MODIFICATION DE L'ORDRE DE SAISIE DES CONTROLES ACCESS affecte automatiquement un ordre de saisie à tous les contrôles que l'on ajoute dans un formulaire. Cet ordre correspond à l'ordre d'ajout des contrôles dans le formulaire. On peut créer un ordre d'entrée automatique qui active les contrôles de gauche à droite et de haut en bas, ou personnaliser l'ordre. Le formulaire est ouvert en mode Création AFFICHAGE Ordre de tabulation Cliquer Ordre automatique Cliquer OK ou Cliquer le sélecteur du contrôle à déplacer, à gauche de la ligne Pour sélectionner plusieurs contrôles, presser et faire glisser sur les sélecteurs Pointer de nouveau le sélecteur du contrôle Presser et faire glisser vers la position souhaitée

47 Cliquer OK AJOUT DE SECTIONS En-tête de formulaire Zone du titre du formulaire, des boutons éventuels de commande. En mode formulaire, il ne figure qu'au début du formulaire. Il est imprimé en haut de la première page. Si on ne souhaite pas l'imprimer, attribuer la valeur "A l'écran" à sa propriété "Afficher". En-tête de page Figure en haut de chaque page du formulaire. Il apparaît uniquement à l'impression. Section Détail Contient les enregistrements. Pied de page Figure au bas de chaque page du formulaire, et peut contenir le numéro de page. Il n'apparaît qu'à l'impression. Pied de formulaire S'affiche au bas de l'écran en mode Formulaire et s'imprime au bas de la dernière page. Ajouter ou supprimer un En-tête/pied de formulaire ou En-tête/pied de page Le formulaire est ouvert en mode Création AFFICHAGE Activer/Désactiver En-tête et pied de page et/ou En-tête/pied de formulaire DIMENSIONNER UNE SECTION On peut définir une hauteur différente pour chaque section. En revanche, lorsque l'on modifie la largeur d'une section, elle s'applique au formulaire tout entier. Le formulaire est ouvert en mode Création Pointer le bord supérieur ou droit de la section à dimensionner Faire glisser pour obtenir la hauteur ou la largeur souhaitée

48 AFFICHER ET MODIFIER LES PROPRIETES D'UNE SECTION Le formulaire est ouvert en mode Création Cliquer deux fois dans la section hors de tout contrôle ou Cliquer dans la section hors de tout contrôle Cliquer l'icône Propriétés Sélectionner une catégorie de propriétés par l'onglet approprié Modifier les propriétés Cliquer l'icône Propriétés AFFICHER ET MODIFIER LES PROPRIETES DU FORMULAIRE Les propriétés du formulaire définissent leur aspect général et leur fonctionnement. Le formulaire est ouvert en mode Création Cliquer deux fois dans la zone grise hors des sections ou sur la case grise à l'intersection des règles ou EDITION Sélectionner le formulaire Cliquer l'icône Propriétés Sélectionner une catégorie de propriétés par l'onglet approprié Modifier les propriétés Cliquer l'icône Propriétés FONCTION D'EDITION PAR DEFAUT On peut définir la fonction principale d'un formulaire de façon à l'activer dès son ouverture. Le formulaire est ouvert en mode Création Sélectionner le formulaire Cliquer l'icône Propriétés Sélectionner la valeur Oui à la propriété Entrée données si l'on veut que le formulaire soit utilisé exclusivement pour la saisie de nouveaux enregistrements

49 et/ou Sélectionner Non à la propriété Ajout autorisé pour empêcher l'utilisateur de créer de nouveaux enregistrements à partir du formulaire et/ou Utiliser les propriétés Modif autorisée et Suppr autorisée pour autoriser ou non l'utilisateur à modifier ou supprimer des enregistrements Cliquer l'icône Propriétés MISE EN FORME D'UN FORMULAIRE FORMAT AUTOMATIQUE Ouvrir le formulaire en mode Création Cliquer l'icône Format automatique Sélectionner un format Cliquer OK Cliquer l'icône Enregistrer DESSINER UN RECTANGLE OU UN TRAIT Le formulaire est ouvert en mode Création Cliquer l'outil Rectangle ou Trait Dans le formulaire, pointer la position du coin supérieur gauche du rectangle ou du trait à tracer Presser et faire glisser pour créer le rectangle ou le trait Relâcher Selon les attributs de dessin, une figure comme un rectangle peut masquer les contrôles sur lesquels elle est placée. Pour placer la figure à l'arrière plan Sélectionner la figure en mode formulaire FORMAT Mettre en arrière-plan

50 STYLE - POLICE - TAILLE DE CARACTERES - ALIGNEMENT Le formulaire est ouvert en mode Création Utiliser les polices de l'imprimante Cliquer dans la zone grise, hors des sections Cliquer l'icône Propriétés Sélectionner Oui dans la propriété Polices imprimante Cliquer l'icône Propriétés ACCESS affiche alors les polices et tailles de caractères disponibles sur l'imprimante. Choix des styles, polices et tailles Sélectionner les contrôles à mettre en forme Sélectionner une police Sélectionner une taille(on peut saisir aussi une taille inexistante) Activer ou non, Gras, Italique et Souligné Alignement des contrôles Sélectionner les contrôles à aligner L'alignement concerne la valeur (texte ou nombre) dans le cadre du contrôle Cliquer une icône d'alignement

51 CHOIX DES ENCADREMENTS ET COULEURS Le formulaire est ouvert en mode Création Sélectionner les contrôles concernés ou une section Cliquer la flèche à droite de l'icône Epaisseur de bordure/trait Sélectionner une bordure Cliquer la flèche à droite de l'icône Couleur d'arrière-plan/remplissage Sélectionner une couleur Cliquer la flèche à droite de l'icône Couleur de police/premier plan Sélectionner une couleur Cliquer la flèche à droite de l'icône Couleur de bordure/trait Sélectionner une couleur CREER DES CONTROLES EN TROIS DIMENSIONS Le formulaire est ouvert en mode Création Sélectionner les contrôles concernés Cliquer la flèche à droite de la dernière icône de la barre d'outils "Mise en forme" Sélectionner une option dans la liste ETAT AVEC ASSISTANT Un état permet de présenter des données sous la forme d'un document imprimé. Par rapport à un formulaire que l'on pourrait imprimer, un état offre davantage de flexibilité quant à la présentation d'informations de synthèse. Par exemple, il est possible d'inclure des totaux par catégories d'enregistrements. Un état regroupe les données à partir d'une table unique. Si les données proviennent de plusieurs tables, l'état doit se baser sur une requête unique, chargée d'extraire les données. Une fois la structure de l'état créée, on peut l'utiliser à l'infini sans la modifier, les données étant mises à jour à chaque impression. L'Assistant Etat instantané génère un état préformaté à une colonne, sans question posée à l'utilisateur. Les autres assistants posent des questions et créent l'état en fonction des réponses fournies. Ils accélèrent le processus de création d'un état en prenant en charge les opérations essentielles. L'état de base ainsi obtenu peut ensuite éventuellement être modifié.

52 CREER UN ETAT INSTANTANE Depuis la fenêtre Base de données, cliquer l'objet Tables ou Requêtes Cliquer la table ou la requête sur laquelle se fonde l'état à créer Cliquer la flèche à droite de l'icône Nouvel objet Dans la liste, cliquer Etat Instantané CREER UN ETAT AVEC UN ASSISTANT Dans la fenêtre Base de données, cliquer l'objet Etats Cliquer le bouton Nouveau Cliquer sur l'assistant désiré Sélectionner dans la liste déroulante la table ou la requête sur laquelle se basera l'état Cliquer OK Suite pour le choix "Assistant Etat" Cliquer deux fois sur chaque champ à intégrer à l'état ou Cliquer le champ à intégrer à l'état Cliquer l'icône Répéter l'opération pour chaque champ ou Cliquer pour intégrer tous les champs à l'état Rappel: Utiliser l'icône Utiliser l'icône pour retirer un champ de la zone "Champs sélectionnés" 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

53 Cliquer le bouton Sélectionner un intervalle de regroupement Cliquer OK Cliquer Suivant Sélectionner les champs utilisés comme critères de tri pour les données d'un même sous-ensemble Cliquer l'icône pour passer du mode de tri croissant au mode de tri décroissant (et vice-versa) Cliquer le bouton Activer les opérations à effectuer Cliquer OK Cliquer Suivant Sélectionner une présentation et une orientation Activer l'option Cliquer Suivant Sélectionner un style de présentation Cliquer Suivant Saisir le titre de l'état (en même temps son nom de sauvegarde) Cliquer Terminer

54 Suite pour le choix "Assistant Etiquette" Sélectionner la taille d'étiquettes à utiliser ou Cliquer le bouton Cliquer Nouveau Rentrer le nom du nouveau format d'étiquettes Activer les options et saisir les dimensions exactes des étiquettes utilisées

55 Cliquer OK Cliquer Fermer Cliquer Suivant Sélectionner la police et les autres attributs du texte de l'étiquette Cliquer Suivant Cliquer deux fois sur le premier champ à intégrer dans l'étiquette Séparer du champ suivant par un espace ou valider Insérer le champ suivant puis saisir un séparateur Renouveler la procédure afin de placer dans l'étiquette tous les champs désirés Dans la zone "Etiquette prototype", pour supprimer un champ et/ou un séparateur, effectuer la sélection nécessaire puis taper SUPPR Cliquer Suivant Cliquer deux fois sur chaque champ à utiliser comme critères de tri Cliquer Suivant Saisir le nom de sauvegarde de l'état étiquettes Cliquer Terminer Conseil: Créer un état avec un assistant puis le modifier afin de le personnaliser. On gagne ainsi du temps par rapport à la création d'un état qui oblige à passer par toutes les phases. MODES D'AFFICHAGE DE L'ETAT Ouvrir l'état Cliquer la flèche à droite de l'icône Affichage Cliquer Mode création Pour modifier la structure de l'état ou Cliquer Aperçu avant impression Pour vérifier l'ensemble des données de l'état ou Cliquer Aperçu du format C'est une variante du mode Aperçu avant impression où seuls quelques enregistrements sont visualisés. Ce mode est à utiliser lorsque la masse des informations traitées entraîne un ralentissement de l'affichage.

56 CREATION DE REQUETES Une requête est une interrogation posée à la base de données. Le résultat d'une requête, appelé feuille de réponses, se présente sous la forme d'un tableau regroupant les seuls enregistrements répondant à la question posée. Les données de la feuille de réponses d'une requête sont automatiquement mises à jour, en cas de modification dans la table sous-jacente. Inversement, si on modifie les données de la feuille de réponses d'une requête, ACCESS met automatiquement à jour les données de la table. Utilité des requêtes Sélectionner les champs à afficher Restreindre l'affichage aux seuls enregistrements qui satisfont aux critères Trier des enregistrements Calculer des totaux Créer des formulaires, des requêtes et des états à partir de requêtes Modification des données des tables CREER UNE REQUETE SANS ASSISTANT Depuis la fenêtre Base de Données, cliquer l'objet Requêtes Cliquer le bouton Nouveau Cliquer Mode Création Cliquer OK Cliquer l'onglet Tables ou l'onglet Requêtes ou l'onglet Les deux dans la zone "Ajouter une table" Cliquer la première table ou première requête à utiliser Cliquer Ajouter (ou Cliquer deux fois sur la table ou la requête) Procéder ainsi pour chaque table ou requête à utiliser Cliquer Fermer AJOUTER UN CHAMP A LA REQUETE Dans le cadre de la table, pointer le nom du champ à utiliser dans la requête Cliquer deux fois Procéder ainsi pour chaque champ à utiliser ou Faire glisser le nom du champ désiré, de la table à la cellule de la ligne Champ de la grille Relâcher Procéder ainsi pour chaque champ à utiliser dans la requête

57 ou Cliquer dans la cellule de la zone Champ de la grille Cliquer la flèche vers le bas Cliquer le champ de la table à insérer dans la requête AJOUTER PLUSIEURS CHAMPS Cliquer le premier champ dans le cadre de la table Presser CTRL et cliquer les autres champs (ou MAJ pour prendre un bloc de champ) Pointer un des champs sélectionnés Presser et faire glisser jusqu'à la première cellule de destination (ligne Champ), dans la grille Ajouter tous les champs d'une table Cliquer deux fois dans la barre de titre du cadre de la table Tous les champs sont sélectionnés

58 Pointer un des champs sélectionnés Faire glisser sur la première cellule Champ de la grille ou Cliquer deux fois sur l'astérisque (*) Note: L'astérisque inclut tous les champs de la table ou de la requête, sans les afficher individuellement.. De ce fait, les champs ajoutés à la grille ne peuvent être ni triés ni affectés de critères de sélection. CONSULTER LES ENREGISTREMENTS DE LA REQUETE Cliquer l'icône Affichage (ou AFFICHAGE/Mode Feuille de données) Note : La liste déroulante Premières valeurs la requête. spécifie le nombre d'enregistrements auquel doit se limiter SAUVEGARDER LA REQUETE FICHIER Enregistrer sous Taper le nom de la requête (64 caract. max.) Cliquer OK TRI DES ENREGISTREMENTS On peut trier les enregistrements d'une requête sur un ou plusieurs champs. Pour préciser un ordre de tri sur plusieurs champs, ACCESS commence le tri à partir du premier champ à gauche. On doit donc éventuellement redisposer les champs à trier de gauche à droite sur la grille. Ouvrir la requête en Mode Création Cliquer dans la cellule Tri du champ utilisé comme critère de tri Cliquer la flèche vers le bas Cliquer Croissant ou Décroissant

59 Cliquer dans la cellule Tri du champ utilisé comme autre critère de tri Cliquer la flèche vers le bas Cliquer Croissant ou Décroissant Procéder de même pour un autre champ utilisé comme critère de tri Visualiser les résultats: Cliquer l'icône Affichage Enregistrer la requête: Cliquer l'icône Enregistrer MODIFIER UNE REQUETE DEPLACER UN CHAMP Ouvrir la requête en mode Création Cliquer le sélecteur en haut de la colonne à déplacer Ligne grise au-dessus du nom du champ - On obtient une flèche noire pointant vers le bas Pointer de nouveau le sélecteur Presser et faire glisser la ligne verticale noire à l'endroit désiré Relâcher

60 INSERER UNE COLONNE VIERGE Ouvrir la requête en mode Création Cliquer le sélecteur de la colonne qui sera à droite de celle insérée INSERTION Colonnes INSERER UN CHAMP Ouvrir la requête en mode Création Dans le cadre de la table, pointer le nom de champ à rajouter Presser et faire glisser dans la grille sur le nom du champ qui sera après celui inséré SUPPRIMER UN CHAMP Ouvrir la requête en mode Création Cliquer le sélecteur de la colonne du champ à supprimer Taper SUPPR (ou EDITION/Supprimer ou EDITION/Supprimer colonnes) Supprimer tous les champs de la grille EDITION Effacer la grille

61 EXCLURE UN CHAMP DE LA FEUILLE DE REPONSES La sélection d'un champ dans une requête n'implique pas forcément son affichage dans la feuille de réponses. On peut ainsi sélectionner les enregistrements d'une même ville, sans afficher la ville. Ouvrir la requête en mode Création Désactiver la case Afficher de chaque champ à exclure REQUETE SELECTION Pour que la feuille de réponses d'une requête ne prenne en compte que certains enregistrements, il est nécessaire de spécifier des critères de sélection. DEFINIR UN CRITERE Ouvrir la requête en mode Création Dans la grille, cliquer dans la cellule Critères du champ concerné Saisie directe Saisir directement le critère Valider Note: Pour afficher la cellule "Critères" en mode Zoom: Taper MAJ+F2 (Mode Zoom) Cliquer OK pour revenir Générateur d'expression Cliquer l'icône Créer pour appeler le Générateur d'expression Générer l'expression en utilisant les fonctions, les champs et les opérateurs Cliquer OK

62 VISUALISER LES RESULTATS Cliquer l'icône Affichage EXPRESSIONS COURANTES Mot Saisir Dupont dans le champ de type texte concerné. La saisie de critères de type texte peut s'effectuer indifféremment en majuscules ou en minuscules. Phrase Saisir "Juan les Pins" dans le champ de type texte concerné. Les guillemets sont obligatoires pour prendre en compte un texte comprenant des espaces. Valeur Saisir 100 dans le champ de type numérique concerné. Tranche de valeurs Saisir >40000 dans le champ de type numérique concerné. La feuille de réponses affichera tous les enregistrements dont le champ utilisé à une valeur strictement supérieure à 40000. La feuille de réponses affichera tous les enregistrements dont le champ DATE à une valeur strictement supérieure au 01/01/2002. Valeurs entre deux bornes La feuille de réponses affichera tous les enregistrements dont le champ TOTAL à une valeur comprise entre 20000 et 40000.

63 La feuille de réponses affichera tous les enregistrements dont le champ DATE à une valeur comprise entre le 01/01/2002 et le 31/03/2002. Valeurs booléennes Saisir Non ou Faux ou Inactif ou 0 dans le champ de type Oui/Non concerné. La feuille de réponses affichera tous les enregistrements dont le champ utilisé à une valeur correspondant à Non (Oui, Vrai, Actif ou 1 pour Oui). UTILISATION DE CARACTERES GENERIQUES Pour sélectionner des champs sur la base d'un ou de plusieurs caractères (type Texte et Date/Heure).? Remplace un seul caractère quelconque, au même emplacement * Remplace un ou plusieurs caractères quelconques au même emplacement dans la valeur Exemple Saisir Log* dans le champ PRODUIT et valider. La feuille de réponses affichera tous les enregistrements dont le champ PRODUIT a un contenu qui commence par les trois lettres "Log". Autres exemples Dupon? Dupont Dupond *ton Menton Mouton Du*d Durand Dupond *fér* Conférence Indifférence */*/2002 Toutes les dates en 2002

64 Notes: 1. Avec les caractères génériques, l'écriture des lettres est la même en majuscule comme en minuscule (du* = Du*). 2. A la validation, ACCESS entoure la saisie de guillemets, et la fait précéder de l'expression Comme (Exemple: Comme "*/*/2002"). SELECTION DES ENREGISTREMENTS PAR DIFFERENCE Opérateur PAS Exemples de critères dans un champ NOM Pas Dupont Affiche tous les enregistrements dont le nom n'est pas Dupont Pas D* Affiche tous les enregistrements dont le nom ne commence pas par la lettre D SELECTION DES ENREGISTREMENTS VIDES OU NON VIDES Opérateur NULL ou EST NULL Pour rechercher les champs vides. Opérateur PAS NULL ou EST PAS NULL Pour rechercher les champs qui contiennent une valeur. Note: Pour rechercher des chaînes vides (suivant les propriétés définies), taper un double guillemet ("") SELECTION DE LA DATE DU JOUR Pour sélectionner les enregistrements comportant la date du jour (fournie par l'horloge de l'ordinateur). Opérateur DATE() CRITERES COMPRENANT UNE OPERATION La feuille de réponses affichera tous les enregistrements dont le champ DATE a une valeur correspondant aux trente derniers jours.

65 CRITERES COMPRENANT DES NOMS DE CHAMPS Si un calcul, dans un critère, porte sur un nom de champ, on doit placer celui-ci entre crochets ([]). La feuille de réponses affichera tous les enregistrements dont la valeur du champ TOTAL est strictement supérieure à la valeur de PX_UNIT*2. COMBINAISON DE PLUSIEURS CRITERES Utilisation des opérateurs ET ou OU dans un champ. L'opérateur ET Est utilisé lorsqu'un champ doit satisfaire deux critères ou plus Exemple: >=01/01/2002 Et <01/04/2002 Toutes les dates du premier trimestre 2002 L'opérateur Entre Permet d'identifier une plage dans une expression sans utiliser les opérateurs de comparaison (<, >, <=, >=, <>). Exemple: Entre 01/01/2002 Et 01/03/2002 Entre le 1er janvier et le 1er mars 2002 L'opérateur OU Est utilisé lorsqu'un champ doit satisfaire au mois un des critères spécifiés. Exemple: La feuille de réponses affichera tous les enregistrements dont le champ PRODUIT contient

66 les valeurs Micros ou Logiciel. CRITERES SUPPLEMENTAIRES Règle: Deux ou plusieurs critères sur des lignes différentes sont unis par un OU logique Deux ou plusieurs critères sur la même ligne sont unis par un ET logique Exemple: Si on définit plus d'un critère pour un même champ Les critères sont saisis sur plusieurs lignes du champ dans la grille d'interrogation. On sélectionne les enregistrements qui répondent à l'un OU à l'autre critère du champ. Exemple: Si on définit des critères pour plusieurs champs Les critères sont saisis sur la même ligne On sélectionne les enregistrements qui répondent à tous les critères de la ligne CREATION DE CHAMPS CALCULES 1. Dans une requête, on peut créer de nouveaux champs à partir de champs existants. 2. On pourra ensuite trier ces champs, rajouter des critères ou utiliser les résultats obtenus. 3. Un champ calculé peut également combiner du texte de deux champs, grâce à l'opérateur &. 4. Dans la feuille de réponses de la requête, il est impossible de modifier les résultats d'un champ calculé. En revanche, le recalcul se fait automatiquement si on modifie une valeur de champ qui intervient dans l'opération. 5. Si on souhaite utiliser souvent un champ calculé dans un formulaire ou un état, on peut créer une requête effectuant le calcul et fonder le formulaire ou l'état sur cette requête et non sur une table. Ouvrir la requête en mode Création Cliquer sur la première cellule de champ vide Ou insérer une colonne Taper l'expression désirée Valider

67 Sélectionner l'expression Expr(chiffre) (sans la formule qui suit ni les :) Taper un nom plus significatif Dès la saisie du champ calculé, on pourrait inscrire le nom du champ Cliquer l'icône Affichage CHAMPS CALCULES AFFICHANT UNE PARTIE DE CHAMP TEXTE Fonction Gauche(expression;valeur) Extrait un nombre ("valeur") de caractères depuis la gauche du champ (entre crochets), du texte ou du nombre ("expression"). Fonction Droite(expression;valeur) Extrait un nombre ("valeur") de caractères depuis la droite du champ (entre crochets), du texte ou du nombre ("expression"). Fonction ExtracChaîne(expression;début;valeur) Extrait un nombre ("valeur") de caractères depuis la position ("début") du champ (entre crochets), du texte ou du nombre ("expression"). Exemple: soit la saisie d'un numéro de téléphone (04) 93 31 25 18 dans le champ TEL Gauche([TEL];4) donne (04) Droite([TEL];8) donne 31 25 18 ExtracChaîne([TEL];2;2) donne 04 CHAMP CALCULE AFFICHANT UNE PARTIE DE CHAMP DATE Utile lorsque l'on souhaite obtenir uniquement l'année par exemple, à partir d'un champ contenant une date complète. Fonction PartDate(Partie Date;date) Affiche la partie de date désirée ("Partie Date"), à savoir le jour ("j"), le mois ("m"), le trimestre ("t") ou l'année ("aaaa"), sous forme de chiffres.

68 "Date" est soit un nom de champ (entre crochets), soit une date. Exemple: soit la saisie d'une date (23-fév-95) dans le champ DATE PartDate("aaaa";[DATE]) donne 1995 Note: PartDate("a";[DATE]) donne le nombre de jours écoulés entre le 1er janvier et la date SELECTION DE VALEURS UNIQUES Une requête affiche tous les enregistrements qui répondent aux critères spécifiés. Ainsi donc, par exemple, plusieurs lignes peuvent faire apparaître le même client ou le même pays. Dans certains cas, il peut être intéressant de n'obtenir que des valeurs uniques, afin de lister les différents clients par exemple. La requête ne doit contenir que le(s) champ(s) permettant d obtenir des valeurs uniques. Ouvrir la requête en mode Création Cliquer dans la partie supérieure de la fenêtre Requête, en-dehors de la liste de champs Cliquer l'icône Propriétés Cliquer dans la propriété Valeurs distinctes Sélectionner Oui après avoir cliqué la flèche Cliquer l'icône Propriétés pour refermer la zone de dialogue Dès lors, si la requête retourne habituellement deux ou plusieurs lignes identiques, ACCESS n'en affichera qu'une. De plus, ACCESS trie automatiquement les champs (ordre croissant) par la gauche. «Non» à Valeurs distinctes «Oui» à Valeurs distinctes

69 Note: Autre exemple de propriété, si un champ numérique dans la requête est doté d'un tri par ordre décroissant, on peut afficher les premières valeurs dans la feuille de réponses, en utilisant la propriété "Premières valeurs" de la fenêtre de requête. CHANGER LE NOM DU CHAMP Il est possible dans la requête de renommer les champs, qui figureront en titre dans la feuille de réponses. Les noms d'origine demeurent intacts dans la table. Ouvrir la requête en mode Création Dans la grille, cliquer à gauche de la première lettre du nom de champ à modifier Taper le nouveau nom suivi de : Cliquer l'icône Affichage Il est inutile d'effacer l'ancien nom. OPERATIONS SUR TOUS LES ENREGISTREMENTS D'UNE TABLE Ouvrir la requête en mode Création Placer dans la grille les seuls champs pour lesquels on effectue un calcul Cliquer l'icône Opérations (ou AFFICHAGE/Opérations) Chaque cellule de la nouvelle ligne Opération contient le mot "Regroupement" Cliquer dans la cellule Opération du champ de calcul Cliquer la flèche vers le bas Cliquer la fonction désirée

70 Cliquer l'icône Affichage Notes: 1. Pour effectuer des opérations portant sur l'ensemble des enregistrements, aucune cellule Opération ne doit indiquer "Regroupement" 2. Pour annuler l'opération, sélectionner "Regroupement" en mode Création, dans le champ utilisé pour le calcul. 3. Pour désactiver les opérations, Cliquer l'icône Opérations OPERATIONS SUR DES GROUPES D'ENREGISTREMENTS Exemple, dans un fichier de factures, calculer le montant total des factures par produit. Dans la requête, on doit spécifier les champs destinés au regroupement, et ceux à utiliser pour les opérations. Sélectionner "Regroupement" dans la ligne Opération des champs utilisés pour le regroupement, et choisir un type de calcul pour les champs utilisés pour les opérations. On peut regrouper plusieurs champs. ACCESS regroupe les champs dans leur ordre d'apparition de gauche à droite. Spécifier des critères dans les champs de regroupement Exemple, somme des factures par produits renseignés.

71 CREATION DES BARRES DE MENUS, D OUTILS ET DE MENUS CONTEXTUELS PERSONNALISES (FICHES OUTILS 5.10 A 5.30) Se référant à l image écran de la page 4 de ce fascicule, et étant déjà initiés à des applications Windows, nous connaissons déjà ce que c est qu une barre de menus et une barre d outils. Un menu contextuel quant à lui, est une simple barre de menu (ou barre d'outil, comme on veut) qui n'apparaît que quand on le lui demande en appuyant sur le bouton droit de la souris. Chaque élément d'un menu contextuel personnalisé devra OBLIGATOIREMENT appeler une macro. Comme on voudra vraisemblablement utiliser du code VBA à la place des macros, il sera nécessaire, dans la plupart de cas et selon la version de MS-Access utilisée, de définir comme paramètre le nom d'une FONCTION (pas d'une procédure) VBA qui se trouve dans un module. CREATION DE LA BARRE DE MENU 1. Affichage / Barre d'outils / Personnaliser... 2. Cliquer sur l onglet Barre d outils 3. Cliquer sur Nouvelle... 4. Donner un nom. Dans cet exemple, appelons-là bmgestpharm, car nous destinons ce menu à l ouverture des objets de l interface utilisateur de notre programme, notamment, les formulaires et les états. Cliquer sur OK. 5. Maintenant que bmgestpharm existe, et que c'est une barre d'outils vide (type par défaut des barres de menus, d outils et des menus contextuels), on va la transformer en barre de menus en cliquant sur Propriétés. 6. Choisir Type : Barre menu. C'est ce fait qui transforme la barre d outils, type par défaut lors de la création d une barre quelconque, en barre de menus proprement dite. Pour la transformer en menu contextuel, il suffit tout simplement de spécifier le type FenIndépendante en lieu et place du type Barre d outils ou autre. Cliquer sur Fermer. Les opérations précédentes ne nous servent qu'à créer la barre de menus, mais, celle-ci est vide. Pour y ajouter des menus qui vont nous permettre d accéder à nos différents formulaires et états, procédons comme suit : 7. Cliquer sur l onglet Commandes 8. Sous Catégories, sélectionner Nouveau menu 9. Sous la zone de liste Commandes, glisser l élément Nouveau menu vers le menu bmgestpharm. Cette action crée le menu Nouveau menu dans notre barre de menus. 10. Pour renommer le menu nouvellement créé, click droit sur ce menu, dans le menu contextuel qui apparaît et sous l item Nom, effacer le nom par défaut et le remplacer par le nom réel de notre menu : &Données par exemple. Cliquer ensuite en dehors du menu contextuel. Le nom Nouveau menu change désormais au profit du nom Données que nous venons de spécifier dans le menu contextuel. 11. Pour insérer des sous-menus, la procédure reste toujours la même sauf que, il faudra glisser l élément Nouveau menu non plus sur la barre de menus principale, mais dans le menu Données comme un item. 12. Pour ajouter un item dans le menu ou un élément des menus prédéfinis, il suffit de sélectionner, sous l onglet Commandes, le menu concerné et dans la zone de liste Commandes, glisser l item voulu vers notre menu personnalisé. C est ainsi que, pour créer un item d ouverture du formulaire fproduit, sous l onglet Commandes, sélectionner le menu Tous les formulaires et dans la zone de liste Commandes, glisser le formulaire

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

73 PARTIE 2 : PROGRAMMATION VBA VARIABLES VBA Une variable est un emplacement de stockage nommé contenant des données pouvant être modifiées au cours de l'exécution du programme. Chaque variable possède un nom qui l'identifie de manière univoque au sein de sa portée. Un type de données peut être indiqué. Les noms de variable doivent commencer par un caractère alphabétique, être univoques au sein d'une même portée, ne doivent pas excéder 255 caractères et ne peuvent contenir ni caractère de déclaration de type ni point. Un type de données définit les caractéristiques d'une variable qui déterminent le genre de données que cette variable peut contenir. Les types de données sont les suivants : Byte, Boolean, Integer, Long, Currency, Decimal, Single, Double, Date, String, Object, Variant (valeur par défaut), types définis par l'utilisateur et certains types d'objet. La version 2007 permet de créer une variable temporaire et de lui affecter une valeur spécifique. Vous pouvez ensuite utiliser la variable comme condition ou argument dans une procédure événementielle, dans un formulaire, un état ou une requête. Types de données de variables Type de données Taille Plage d'enregistrement Byte 1 octet 0 à 255 Boolean 2 octets True ou False Integer 2 octets -32 768 à 32 767 Long (entier long) 4 octets -2 147 483 648 à 2 147 483 647 Single (à virgule flottante en 4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; simple précision) 1,401298E-45 à 3,402823E38 pour les valeurs positives Double (à virgule flottante en double précision) 8 octets -1,79769313486231E308 à -4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives Currency (entier à décalage) 8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807 Decimal 14 octets +/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal ; +/-7,9228162514264337593543950335 avec 28 chiffres à droite du séparateur décimal ; le plus petit nombre différent de zéro est +/-0.0000000000000000000000000001. Date 8 octets 1er janvier 100 au 31 décembre 9999 Object 4 octets Toute référence à des données de type Object String (longueur variable) 10 octets + longueur 0 à environ 2 milliards de la chaîne String (longueur fixe) Longueur de la 1 à environ 65 400 chaîne Variant (nombres) 16 octets Toute valeur numérique, avec la même plage de valeurs qu'une donnée de type Double Variant (caractères) 22 octets + longueur Même plage de valeurs qu'une donnée de type String de de la chaîne longueur variable Type défini par l utilisateur En fonction des La plage de valeurs de chaque élément correspond à celle de (avec Type) éléments son type de données.

74 Déclaration explicite des variables : L'option Explicit est une Instruction utilisée au niveau module pour imposer la déclaration explicite de toutes les variables de ce module. Syntaxe Option Explicit Si elle est utilisée, l'instruction Option Explicit doit apparaître dans un module avant toute procédure. Si l'instruction Option Explicit apparaît dans un module, vous devez déclarer explicitement toutes les variables à l'aide des instructions Dim, Private, Public, ReDim ou Static. Si vous tentez d'utiliser un nom de variable non déclarée, une erreur se produit à la compilation. Si vous n'utilisez pas l'instruction Option Explicit, toutes les variables non déclarées sont de type Variant à moins qu'un type par défaut soit précisé à un autre endroit à l'aide d'une instruction Deftype. Utilisez l'instruction Option Explicit pour éviter toute faute de frappe lors de la saisie du nom d'une variable existante ou pour écarter tout risque de confusion dans un code où la portée de la variable n'apparaît pas clairement. Opérateurs VBA Les opérateurs sont classés en quatre catégories : Catégories d'opérateurs Opérateur Description Priorité des opérateurs Lorsque plusieurs opérations sont contenues Opérateurs Opérateurs permettant d'effectuer des dans une même expression, chacune d'elles est arithmétiques calculs mathématiques. évaluée et résolue dans un ordre prédéfini, Opérateurs de Opérateurs permettant d'effectuer des appelé priorité des opérateurs. comparaison comparaisons. Dans les expressions contenant des opérateurs Opérateurs de Opérateurs permettant de combiner des de diverses catégories, les opérateurs sont concaténation chaînes. évalués dans l'ordre suivant : opérateurs Opérateurs Opérateurs permettant d'effectuer des arithmétiques, puis opérateurs de comparaison et logiques opérations logiques. enfin opérateurs logiques. Les opérateurs de comparaison ont la même priorité ; c'est-à-dire qu'ils sont évalués dans leur ordre d'apparition, de gauche à droite. Les opérateurs arithmétiques et logiques sont évalués dans l'ordre de priorité ci-dessous : Ordres de priorité Arithmétique Comparaison Logique Élévation à une puissance (^) Égalité (=) Not Négation ( ) Inégalité (<>) And Multiplication et division (*, /) Infériorité (<) Or Division d'entiers (\) Supériorité (>) Xor Modulo arithmétique (Mod) Infériorité ou égalité (<=) Eqv Addition et soustraction (+, ) Supériorité ou égalité (>=) Concaténation de chaînes (&) Lorsqu'une même expression comprend une multiplication et une division, chaque opération est évaluée dans l'ordre d'apparition, de gauche à droite. Il en est de même des expressions contenant une addition et une soustraction. L'utilisation de parenthèses permet de modifier l'ordre de priorité afin qu'un élément d'une expression soit évalué avant les autres. Les opérations situées à l'intérieur de parenthèses sont toujours traitées avant les autres. La priorité des opérateurs s'applique cependant à l'intérieur des parenthèses. L'opérateur de concaténation de chaînes (&) n'est pas un opérateur arithmétique, mais sa priorité est inférieure à celle des opérateurs arithmétiques et supérieure à celle des opérateurs de comparaison. Procédures VBA Nous allons parler des deux collections qui sont composées d'instructions qui accomplissent des tâches, Les procédures Sub et les procédures Function. La seule différence entre une procédure Sub et une procédure Function est que la procédure Function renvoie une valeur après son exécution. Les procédures Sub réalisent des opérations mais ne retournent pas de valeur après exécution. Procédure Sub VBA Sub déclare le nom, les arguments et le code formant le corps d'une procédure Sub. Syntaxe :

75 [Private Public ] [Static] Sub name [(arglist)] [statements] [Exit Sub] [statements] End Sub La syntaxe de l'instruction Sub comprend les éléments suivants : Éléments de l'instruction Sub Élément Description Public Facultatif. Indique que la procédure Sub est accessible à toutes les autres procédures dans l'ensemble des modules. Dans un module contenant une instruction Option Private, la procédure n'est pas disponible en dehors du projet. Private Facultatif. Indique que la procédure Sub n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée. Static Facultatif. Indique que les variables locales de la procédure Sub sont conservées entre les appels. L'attribut Static n'a aucun effet sur les variables déclarées en dehors de la procédure Sub, même si elles sont utilisées dans cette dernière. name Nom de la procédure Sub. Respecte les conventions standard d'affectation de noms aux variables. arglist Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure Sub lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules. statements Facultatif. Tout groupe d'instructions à exécuter dans la procédure Sub. Remarques : En l'absence des mentions Public, Private, les procédures Sub sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Attention : Les procédures Sub peuvent être récursives ; en d'autres termes, elles peuvent faire appel à ellesmêmes pour exécuter une tâche. Cette caractéristique peut toutefois entraîner un dépassement de capacité de la pile. Le mot clé Static n'est généralement pas utilisé avec les procédures Sub récursives. Tout code exécutable doit figurer dans des procédures. Il n'est pas possible de définir une procédure Sub au sein d'une procédure Sub ou Function. Les mots clés Exit Sub entraînent la sortie immédiate d'une procédure Sub. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Sub. Une procédure Sub peut comporter plusieurs instructions Exit Sub en n'importe quel point. Tout comme la procédure Function, une procédure Sub constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement à la procédure Function, qui renvoie une valeur, il est impossible d'utiliser une procédure Sub dans une expression. Pour appeler une procédure Sub, utilisez son nom suivi d'une liste d'arguments (s il y en a). Les variables utilisées dans les procédures Sub appartiennent à deux catégories : les variables qui sont déclarées explicitement au sein de la procédure (à l'aide de l'instruction Dim ou de l'équivalent) et celles qui ne le sont pas. Les premières sont locales au niveau de la procédure. Les variables utilisées sans avoir été explicitement déclarées sont également locales au niveau de la procédure, à moins qu'elles ne soient explicitement déclarées à un niveau supérieur en dehors de la procédure. Attention : Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans cette dernière. Un conflit de nom peut toutefois survenir si un élément défini au niveau module porte le même nom. Si la procédure fait référence à une variable non déclarée portant le même nom qu'une autre procédure, constante ou variable, la procédure est supposée faire référence au nom de niveau module. Afin d'éviter ce type de conflit, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables, vous pouvez utiliser l'instruction Option Explicit. Note : Vous ne pouvez pas entrer dans une procédure Sub, ni en sortir, à l'aide des instructions GoSub, GoTo ou Return. Procédure Function VBA Déclare le nom, les arguments et le code formant le corps d'une procédure Function.

76 Syntaxe : [Public Private ] [Static] Function name [(arglist)] [As type] [statements] [name = expression] [Exit Function] [statements] [name = expression] End Function La syntaxe de l'instruction Function comprend les éléments suivants : Éléments de l'instruction Function Élément Description Public Facultatif. Indique que la procédure Function est accessible à toutes les autres procédures de tous les modules. Si cet élément est utilisé dans un module contenant un élément Option Private, la procédure n'est pas disponible en dehors du projet. Private Facultatif. Indique que la procédure Function n'est accessible qu'à d'autres procédures du module dans lequel elle a été déclarée. Static Facultatif. Indique que les variables locales de la procédure Function sont conservées entre les appels. L'attribut Static n'a pas d'effet sur les variables déclarées en dehors de la procédure Function, même si elles sont utilisées dans cette dernière. name Nom de la procédure Function. Respecte les conventions standard d'affectation de noms aux variables. arglist Facultatif. Liste de variables représentant des arguments qui sont passés à la procédure Function lorsqu'elle est appelée. Les variables multiples sont séparées par des virgules. type Facultatif. Type de données de la valeur renvoyée par la procédure Function ; elle peut être de type Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String, Objet, Variant. statements Facultatif. Tout groupe d'instructions à exécuter dans la procédure Function. expression Facultatif. Valeur renvoyée par la procédure Function. Remarques En l'absence des mentions Public, Private, les procédures Function sont publiques par défaut. Si le mot clé Static n'est pas utilisé, la valeur des variables locales n'est pas conservée entre les appels. Attention : Tout comme pour les procédures Sub, les procédures Function peuvent être récursives, c'est-à-dire qu elles peuvent s'appeler elles-mêmes pour accomplir une tâche déterminée. Cette caractéristique peut toutefois entraîner un dépassement de la capacité de la pile. Le mot clé Static n'est généralement pas utilisé avec des procédures Function récursives. Tout code exécutable doit figurer dans des procédures. Vous ne pouvez définir une procédure Function au sein d'une autre procédure Function ou Sub. L'instruction Exit Function entraîne la sortie immédiate d'une procédure Function. L'exécution du programme se poursuit à partir de l'instruction qui suit celle qui a appelé la procédure Function. Une procédure Function peut comporter plusieurs instructions Exit Function apparaissant en n'importe quel point. Tout comme une procédure Sub, une procédure Function constitue une procédure séparée pouvant accepter des arguments, exécuter une série d'instructions et modifier la valeur de ses arguments. Cependant, contrairement à une procédure Sub, vous pouvez utiliser une procédure Function à droite d'une expression, comme avec une fonction intrinsèque, telle que Sqr, Cos ou Chr, lorsque vous souhaitez utiliser la valeur renvoyée par la fonction. Vous appelez une procédure Function à l'aide du nom de la fonction suivi de la liste d'arguments entre parenthèses, dans une expression. Pour qu'une fonction renvoie une valeur, attribuez la valeur au nom de la fonction. Un nombre quelconque d'affectations de ce type peut apparaître n'importe où dans la procédure. Si aucune valeur n'est attribuée à l'argument name, la procédure renvoie une valeur par défaut : une fonction numérique renvoie la valeur 0, une fonction de type chaîne de caractères, une chaîne de longueur nulle ("") et une fonction de type Variant, la valeur Empty. Une fonction qui renvoie une référence d'objet renvoie Nothing si aucune référence d'objet n'est attribuée à l'argument name (à l'aide de l'instruction Set) à l'intérieur de la procédure Function.

77 L'exemple suivant montre comment attribuer une valeur de renvoi à une fonction BinarySearch. Dans ce cas, la valeur False est attribuée au nom de la fonction pour indiquer qu'une valeur n'a pas été trouvée. Function BinarySearch(...) As Boolean... ' Valeur introuvable. Renvoie la valeur False. If lower > upper Then BinarySearch = False Exit Function End If... End Function Les variables utilisées dans les procédures Function appartiennent à deux catégories : les variables qui sont déclarées explicitement dans la procédure et celles qui ne le sont pas. Les variables explicitement déclarées dans une procédure (à l'aide de l'instruction Dim ou d'une instruction équivalente) sont toujours locales au niveau de la procédure. Les autres variables utilisées mais qui ne sont pas déclarées explicitement dans une procédure sont également locales au niveau de la procédure, à moins qu'elles ne soient explicitement déclarées à un niveau plus élevé en dehors de la procédure. Attention : Une procédure peut utiliser une variable qui n'est pas explicitement déclarée dans la procédure mais un conflit de nom peut survenir si un élément que vous avez défini au niveau module possède le même nom. Si votre procédure se réfère à une variable non déclarée qui porte le même nom qu'une autre procédure, constante ou variable, votre procédure est supposée faire référence à ce nom de niveau module. Pour éviter ce genre de conflits, déclarez explicitement les variables. Pour imposer la déclaration explicite des variables, vous pouvez utiliser l'instruction Option Explicit. Attention : Visual Basic peut modifier l'ordre des expressions arithmétiques pour améliorer les performances internes. Évitez d'utiliser une procédure Function dans une expression arithmétique lorsque la fonction modifie la valeur des variables dans cette même expression. L OBJET DOCMD Vous pouvez utiliser les méthodes de l'objet DoCmd pour exécuter des actions Microsoft Access à partir de Visual Basic. Une action effectue des tâches telles que la fermeture de fenêtres, l'ouverture de formulaires et la définition de la valeur des contrôles. Utilisation de l'objet DoCmd Par exemple, vous pouvez utiliser la méthode OpenForm de l'objet DoCmd pour ouvrir un formulaire. La plupart des méthodes de l'objet DoCmd possèdent des arguments, dont certains sont obligatoires et d'autres sont facultatifs. Si vous omettez des arguments facultatifs, les arguments utilisent les valeurs par défaut pour la méthode particulière. Par exemple, la méthode OpenForm utilise sept arguments, mais seul le premier argument, FormName, est obligatoire. L'objet DoCmd ne prend pas en charge les méthodes correspondant aux actions suivantes : AjouterMenu. BoîteMsg. Utilisez la fonction MsgBox. ExécuterApplication. Utilisez la fonction Shell pour exécuter une autre application. ExécuterCode. Exécutez directement la fonction dans Visual Basic. EnvoiTouches. Utilisez l'instruction SendKeys. DéfinirValeur. Définissez directement la valeur dans Visual Basic. ArrêtToutesMacros. ArrêtMacro. Pour plus d'informations sur l'action Microsoft Access correspondant à une méthode DoCmd, recherchez le nom de l'action dans l'index de l'aide VBA Access. Limitation des méthodes Seules quelques méthodes, celles indispensables dans une application Access, seront traitées dans ce chapitre. Pour celles qui n'apparaissent pas, se reporter à l'aide Access sur DoCmd. Les méthodes de l'objet DoCmd traitées dans ce chapitre ne représentent pas l'ensemble des méthodes à disposition mais seulement les méthodes indispensables pour la marche normale d'une application.

78 Ouvrir formulaires et états VBA Seront traitées ici les méthodes d'ouverture des formulaires et des états qui sont les deux principales ouvertures d'objets utilisées par les développeurs débutants. La méthode OpenForm La méthode OpenForm exécute l'action OuvrirFormulaire dans Visual Basic. Syntaxe: DoCmd.OpenForm(<NomFormulaire>, <Afficher>, <NomFiltre>, <ConditionWhere>, <ModeDonnées>, <Modefenêtre>, <ArgOuverture>) Les paramètres pourront avoir les valeurs suivantes: NomFormulaire String obligatoire. Expression chaîne qui est le nom valide d'un formulaire dans la base de données en cours. Si vous exécutez du code Visual Basic contenant la méthode OpenForm dans une base de données bibliothèque, Microsoft Access recherche le formulaire portant ce nom dans la base de données bibliothèque, puis dans la base de données en cours. Afficher facultatif. Type d'affichage par constante AcFormView qui prendra une des valeurs suivantes : Valeurs de AcFormView Valeur de AcFormView Description acdesign Ouverture en mode création acformds Ouverture en mode feuille de données acformpivotchart ouverture en mode graphique croisé dynamique acformpivottable ouverture en mode tableau croisé dynamique acnormal Constante par défaut. Ouverture en mode Formulaire acpreview Ouverture en mode aperçu avant impression NomFiltre en cours. String facultatif. Expression chaîne qui est le nom valide d'une requête dans la base de données ConditionWhere String facultatif. Clause SQL WHERE valide sans le mot WHERE. ModeDonnées Constante AcFormOpenDataMode facultatif. Le mode de saisie des données pour le formulaire. S'applique uniquement aux formulaires ouverts en mode Formulaire ou Feuille de données. Valeurs de AcFormOpenDataMode Valeur Description L'utilisateur peut ajouter de nouveaux enregistrements mais il ne peut pas modifier acformadd ceux qui existent. acformedit L'utilisateur peut modifier les enregistrements existants et en ajouter de nouveaux. constante par défaut. Access ouvre le formulaire dans le mode de données défini acformpropertysettings par les propriétés AllowEdits, AllowDeletions, AllowAdditions et DataEntry du formulaire. acformreadonly L'utilisateur peut seulement afficher les enregistrements. ModeFenêtre Constante AcWindowMode facultatif. Le mode de fenêtre dans lequel s'ouvre le formulaire. Valeurs de AcWindowMode Valeur Description acdialog Les propriétés Modal et PopUp du formulaire sont réglées sur oui achidden Le formulaire est masqué. acicon Le formulaire s'ouvre sous forme réduite dans la barre des tâches Windows. acwindownormal Valeur par défaut. Le formulaire est ouvert dans le mode défini par ses propriétés

79 ArgOuverture Variant facultatif. Expression chaîne. Cette expression sert à définir la propriété OpenArgs du formulaire. Ce paramètre peut ensuite être utilisé par du code dans un module d'un formulaire, comme dans la procédure événementielle Open. Vous pouvez également faire référence à la propriété OpenArgs dans des macros et des expressions. Par exemple, supposez que le formulaire que vous ouvrez est un formulaire continu contenant une liste de clients. Si vous voulez activer l'enregistrement d'un client spécifique à l'ouverture du formulaire, vous pouvez spécifier le nom du client avec l'argument ArgOuverture, puis utiliser la méthode FindRecord pour activer l'enregistrement correspondant au client du nom spécifié. Remarques L'argument conditionwhere peut comporter jusqu'à 32 768 caractères. Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier argument spécifié. La méthode OpenReport La méthode OpenReport exécute l'action OuvrirEtat dans Visual Basic. Syntaxe: DoCmd.OpenReport(<ReportName>, <View>, <FilterName>, <WhereCondition>, <WindowMode>, <OpenArgs>) Les paramètres pourront avoir les valeurs suivantes : ReportName Variant requis. Une expression chaîne qui est le nom valide d'un état dans la base de données en cours. Si vous exécutez un code Visual Basic contenant la méthode OpenReport dans une base de données bibliothèque, Access recherche l'état sous ce nom, d'abord dans la base de données bibliothèque, puis dans la base de données en cours. View Constante AcView facultatif. La vue à appliquer à l'état spécifié. Valeurs de AcView Valeur Description acviewdesign Ouverture de l'état en mode création. Option par défaut. Imprime l'état acviewnormal immédiatement. acviewpivotchart Non prise en charge. acviewpivottable Non prise en charge. acviewpreview Ouverture en mode aperçu avant impression FilterName Variant facultatif. Une expression chaîne qui est le nom valide d'une requête dans la base de données en cours. WhereCondition mot WHERE. Variant facultatif. Une expression chaîne qui est une clause WHERE SQL valide sans le ModeFenêtre Constante AcWindowMode facultatif. Le mode dans lequel s'ouvre le formulaire. Valeurs de AcWindowMode Valeur Description acdialog Les propriétés Modal et PopUp de l'état sont réglées sur Oui. achidden L'état est masqué. acicon L'état s'ouvre sous forme réduite dans la barre des tâches Windows. acwindownormal Option par défaut. L'état est dans le mode défini par ses propriétés OpenArgs Variant facultatif. Définit la propriété OpenArgs. Remarques L'argument WhereCondition peut comporter jusqu'à 32 768 caractères.

80 Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un ou plusieurs arguments de fin vierges, n'utilisez pas de virgule à la suite des arguments spécifiés. Fermer formulaires et états VBA La méthode Close La méthode Close exécute l'action Enregistrer dans Visual Basic. Syntaxe: DoCmd.Close(<TypeObjet>, <NomObjet>, <Enregistrer>) Exemples: Cette commande ci-dessous ferme le formulaire «fclient» en enregistrant les modifications apportées à la structure du formulaire. DoCmd.Close acform, «fclient», acsaveyes TypeObjet objet acobjecttype facultatif. valeur AcObjectType acdataaccesspage acdefault (valeur par défaut) acdiagram acform acfunction acmacro acmodule acquery acreport acserverview acstoredprocedure actable NomObjet Variant facultatif. Expression chaîne qui correspond au nom valide d'un objet du type sélectionné par l'argument typeobjet. Par défaut l'objet actif sera utilisé. Enregistrer acclosesave facultatif.

81 Valeurs de AcCloseSave Valeur Description L'objet sera fermé, mais les modifications apportées à la structure de l'objet ne seront pas acsaveno enregistrées. Les données modifiées par l'objet seront bien sauvegardées. Valeur par défaut. En cas de modification de la structure de l'objet une confirmation sera acsaveprompt demandée par Access. L'objet sera fermé, les modifications apportées à la structure de l'objet seront enregistrées. acsaveyes Les données modifiées par l'objet seront sauvegardées. Remarques Si vous laissez vides les arguments typeobjet et nomobjet (la constante par défaut, acdefault, est choisie pour typeobjet), Access ferme la fenêtre active. Si vous spécifiez l'argument enregistrer et laissez vides les arguments typeobjet et nomobjet, vous devez inclure les virgules des arguments typeobjet et nomobjet. Si un formulaire renferme un contrôle lié à un champ dont la propriété Required a pour valeur «Oui», et si le formulaire est fermé à l'aide de la méthode Close sans entrer aucune donnée pour ce champ, aucun message d'erreur n'est affiché. Toute modification apportée à l'enregistrement est abandonnée. Lorsque le formulaire est fermé à l'aide du bouton Fermer de Windows, de l'action Close d'une macro, ou en cliquant dans le menu Fichier sur la commande Fermer, Access affiche une alerte. Copier des données vers Excel VBA La méthode TransferSpreadsheet exécute l'action TransférerFeuilleCalcul dans Visual Basic. Vous pouvez utiliser l'action TransférerFeuilleCalcul pour importer ou exporter des données entre la base de données Access(.mdb) active ou le projet Access (.adp) actif et un fichier de feuille de calcul. Vous pouvez également attacher les données d'une feuille de calcul Excel avec la base de données Access active. Avec une feuille de calcul attachée, vous pouvez afficher et modifier les données de la feuille de calcul avec Access tout en donnant un accès complet aux données depuis votre tableur Excel. Vous pouvez également vous attacher à des données d'un fichier de feuille de calcul Lotus 1-2-3, mais ces données sont en lecture seule dans Access. Syntaxe: DoCmd.TransferSpreadsheet([<TypeTransfert>], [<TypeFeuille>], <NomTable ou Nomrequête>, <NomFichier>, [<ContientNomsChamps>], [<Étendue>], [<UtiliserOA>]) TypeTransfert AcDataTransferType facultatif. Indique le type de transfert Valeurs de AcDataTransferType Valeur Description acexport Exportation acimport constante par défaut. Importation aclink Attache d'une table. N'est pas pris en charge pour les projets Microsoft Access (.adp). TypeFeuille AcSpreadSheetType facultatif. Type de feuille de données. Valeurs de AcSpreadSheetType acspreadsheettypeexcel3 acspreadsheettypeexcel4 acspreadsheettypeexcel5 acspreadsheettypeexcel7 acspreadsheettypeexcel8 valeur par défaut acspreadsheettypeexcel9 acspreadsheettypelotuswj2 - version japonaise uniquement acspreadsheettypelotuswk1 acspreadsheettypelotuswk3 acspreadsheettypelotuswk4 Vous pouvez attacher les données provenant d'une feuille de calcul Lotus 1-2-3, mais ces données ne sont accessibles qu'en lecture seule dans Access. Vous pouvez importer et attacher (en lecture seule) des fichiers

82 Lotus.WK4, mais vous ne pouvez pas exporter des données Access vers ce format de feuille de calcul. Microsoft Access ne prend désormais plus en charge l'importation, l'exportation et la liaison de données provenant de feuilles de calcul Lotus.WKS ou Excel version 2.0. au moyen de cette méthode. Si vous laissez cet argument vierge, la valeur par défaut (acspreadsheettypeexcel8) est choisie. NomTable Variant obligatoire. Expression chaîne qui correspond au nom de la table Access dans laquelle vous voulez importer des données, de laquelle vous voulez exporter les données ou à laquelle vous voulez attacher des données. Il peut s'agir également de la requête Sélection Access dont vous voulez exporter les résultats dans une feuille de calcul.si vous sélectionnez Importer dans l'argument Type transfert, Access ajoute les données de la feuille de données à cette table si la table existe déjà. Dans le cas contraire, Access crée une nouvelle table contenant les données de la feuille de calcul. Dans Access, vous ne pouvez pas utiliser une instruction SQL pour spécifier des données à exporter quand vous utilisez l'action TransférerFeuilleCalcul. Au lieu d'utiliser une instruction SQL, vous devez d'abord créer une requête et ensuite spécifier le nom de la requête dans l'argument Nom table. NomFichier Variant obligatoire. Expression chaîne qui représente le nom et le chemin du fichier de feuille de calcul dont vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel vous voulez attacher des données. Access crée une nouvelle feuille de calcul quand vous exportez des données depuis Access. Si le nom de fichier est identique à celui d'une feuille de données existante, Access remplace la feuille existante, à moins que vous n'exportiez vers un classeur d'excel version 5.0 ou ultérieure. Dans ce cas, Access copie les données exportées vers la nouvelle feuille de calcul disponible qui suit dans le classeur. Si vous importez de ou que vous vous liez à une feuille de calcul d'excel version 5.0 ou ultérieure, vous pouvez spécifier une feuille de calcul particulière avec l'argument Étendue. ContientNomsChamps Variant facultatif. Utilisez True pour utiliser les noms de champs de la première ligne de la feuille de calcul lors d'une importation, exportation ou attache. Utilisez False pour que Access considère la première ligne de la feuille de calcul comme étant des données normales. Si vous laissez cet argument vierge, la valeur par défaut (False) est choisie. Lorsque vous exportez les données d'une table ou d'une requête Sélection Access vers une feuille de calcul, les noms de champs sont insérés dans la première ligne de la feuille de calcul, quelle que soit la valeur de cet argument. Étendue Variant facultatif. Expression chaîne qui correspond à une plage valide de cellules ou au nom d'une plage de la feuille de calcul. Cet argument n'est valable que pour une importation. Laissez cet argument vierge pour importer la feuille de calcul entière. Lorsque vous effectuez une exportation vers une feuille de calcul, vous devez laisser cet argument vierge. Si vous tapez une plage, l'exportation échoue. Si vous importez de ou que vous vous attachez à une feuille de calcul d'excel version 5.0 ou ultérieure, vous pouvez préfixer la plage avec le nom du classeur et un point d'exclamation, comme par exemple : Budget!A1:C7. UtiliserOA Variant facultatif. Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier argument spécifié. Copier des données vers fichier texte VBA La méthode TransferText exécute l'action TransférerTexte dans Visual Basic. Vous pouvez utiliser l'action TransférerTexte pour importer ou exporter du texte entre la base de données Access (.mdb) active ou le projet Access (.adp) actif et un fichier texte. Vous pouvez également attacher les données d'un fichier texte à la base de données Access active. Avec un fichier texte attaché, vous pouvez afficher les données texte avec Access tout en offrant un accès complet aux données depuis votre programme de traitement de texte. Vous pouvez également importer de, exporter vers et vous attacher à une table ou une liste dans un fichier HTML (*.html). Si vous vous attachez à des données dans un fichier texte ou un fichier HTML, les données sont en lecture seule dans Access. Syntaxe: DoCmd.TransferText([<TypeTransfert>], [<NomSpécification>], [<NomTable ou NomRequête>], [<NomFichier>], [<ContientNomsChamps>], [<NomTableHTML>], [<PageCode>]) TypeTransfert constante AcTextTransferType facultatif.

83 Valeurs de AcTextTransferType Valeur Description acexportdelim Exportation texte (délimité) acexportfixed Exportation texte (longueur fixe) acexporthtml Exportation HTML acexportmerge Fusion avec Word acimportdelim valeur par défaut. Importation texte (délimité) acimportfixed Importation texte (longueur fixe) acimporthtml Importation HTML aclinkdelim Liaison texte (délimité) aclinkfixed Liaison texte (longueur fixe) aclinkhtml Liaison HTML Si vous laissez cet argument vide, la valeur par défaut (acimportdelim) est choisie. Vous pouvez également exporter des données vers un fichier de données de fusion de courrier Microsoft Word, que vous pouvez ensuite utiliser avec la fonction de fusion de Word pour créer des documents fusionnés, comme des lettres type et des étiquettes d'envoi. Seuls les types de transfert Importation texte (délimité), Importation texte (longueur fixe), Exportation texte (délimité), Exportation texte (longueur fixe) ou Fusion avec Word sont pris en charge dans un projet Access (.adp). NomSpécification Variant facultatif. Expression chaîne qui correspond au nom du format d'importation ou d'exportation que vous avez créé et enregistré dans la base de données en cours. Dans le cas d'un fichier texte de largeur fixe, vous devez spécifier obligatoirement un nom de fichier de spécification. Dans le cas des fichiers texte délimités et des fichiers de données de publipostage Microsoft Word, vous pouvez laisser cet argument vide afin de sélectionner les caractéristiques d'importation/exportation par défaut. Pour créer un fichier de spécification, utiliser le bouton Avancé dans un import ou export manuel. Attention, en version 2007 le fichier de spécification est obligatoire sinon une erreur d'exécution se déclenche. NomTable Variant facultatif. Expression chaîne qui correspond au nom de la table Microsoft Access dans laquelle vous voulez importer des données, de laquelle vous voulez exporter les données ou à laquelle vous voulez attacher des données. Il peut s'agir également d'une requête Access dont vous voulez exporter les résultats dans une feuille de calcul. Si vous indiquez Importation texte (délimité), Importation texte (longueur fixe) ou Importation HTML, Access ajoute les données texte à cette table si la table existe déjà. Dans le cas contraire, Access crée une nouvelle table contenant les données texte. Vous ne pouvez pas utiliser une instruction SQL pour spécifier des données à exporter quand vous utilisez l'action TransférerTexte. Au lieu d'utiliser une instruction SQL, vous devez d'abord créer une requête et ensuite spécifier le nom de la requête dans l'argument Nom table. NomFichier Variant facultatif. Expression chaîne qui représente le nom et le chemin du fichier texte dont vous voulez importer les données, dans lequel vous voulez exporter des données ou auquel vous voulez attacher des données. Indiquez le chemin d'accès complet. Access crée un nouveau fichier texte quand vous exportez des données depuis Access. Si le nom de fichier est le même que celui d'un fichier texte existant, Access remplace le fichier texte existant. Si vous voulez importer ou attacher une table ou une liste particulière dans un fichier HTML, vous pouvez utiliser l'argument Nom table HTML. Attention, en version 2003 et 2007, l'extension txt est obligatoire pour les fichiers texte. ContientNomsChamps Variant facultatif. Utilisez True pour utiliser les noms de champs de la première ligne du fichier texte lors d'une importation, exportation ou attache. Utilisez False pour que Access considère la première ligne du fichier texte comme étant des données normales. Si vous laissez cet argument vierge, la valeur par défaut (False) est choisie. Cet argument est ignoré pour les fichiers de données de publipostage MSWord, dans lesquels la première ligne doit toujours contenir les noms des champs. NomTableHTML Variant facultatif. Expression chaîne qui correspond au nom de la table ou de la liste dans le fichier HTML que vous voulez importer ou attacher. Cet argument n'est pas pris en compte sauf si l'argument typetransfert a pour valeur acimporthtml ou aclinkhtml. Si vous laissez cet argument vierge, la première table ou liste du fichier HTML est importée ou attachée. Le nom de la table ou de la liste dans le

84 fichier HTML est déterminé par le texte spécifié par la balise <CAPTION>, s'il en existe une. S'il n'y a pas de balise <CAPTION>, le nom est déterminé par le texte spécifié par la balise <TITLE>. Si plusieurs tables ou listes portent le même nom, Microsoft Access les distingue en ajoutant un numéro à la fin de chaque nom de table ou de liste. PageCode Variant facultatif. Valeur de type Long désignant le jeu de caractères de la page de codes. Jeu de caractères : groupement de caractères alphabétiques, numériques et autres qui présentent une certaine relation entre eux. Par exemple, le jeu de caractères ASCII standard comprend des lettres, des chiffres, des symboles et des codes de contrôle qui composent le système de codage ASCII. Page de codes : tableau qui met en relation les codes de caractères binaires utilisés par un programme avec les touches du clavier ou avec l' aspect des caractères à l' écran. Les pages de code constituent un moyen de prendre en charge les langues de différents pays. Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un argument de fin vierge, n'utilisez pas de virgule à la suite du dernier argument spécifié. Les données texte que vous ajoutez à une table Access existante doivent être compatibles avec la structure de la table. Chaque champ du texte doit être du même type de données que le champ correspondant dans la table. Les champs doivent être dans le même ordre (à moins d'avoir défini l'argument Contient noms des champs à Oui, auquel cas les noms des champs doivent correspondre aux noms des champs dans la table). Manipuler les fenêtres VBA Dimensions de la fenêtre VBA La méthode MoveSize exécute l'action DéplacerDimensionner dans Visual Basic. Vous pouvez utiliser l'action DéplacerDimensionner pour déplacer ou redimensionner la fenêtre active. Syntaxe: DoCmd.MoveSize [<Droite>],[<Bas>],[<Largeur>],[<Hauteur>] La méthode MoveSize prend les arguments suivants. Arguments de la méthode MoveSize Argument Description Droite Nouvelle position horizontale du coin supérieur gauche de la fenêtre, mesurée à partir du bord gauche de la fenêtre qui la contient. Bas Nouvelle position verticale du coin supérieur gauche de la fenêtre, mesurée à partir du bord supérieur de la fenêtre qui la contient. Largeur Nouvelle largeur de la fenêtre. Hauteur Nouvelle hauteur de la fenêtre. Si vous laissez un argument à blanc, Microsoft Access utilise le paramétrage actuel de la fenêtre. Vous devez saisir une valeur pour au moins un des arguments. Pour déplacer une fenêtre sans la redimensionner, saisissez des valeurs pour les arguments Droite et Bas mais laissez les arguments Largeur et Hauteur à blanc. Pour redimensionner une fenêtre sans la déplacer, saisissez des valeurs pour les arguments Largeur et Hauteur mais laissez à blanc les arguments Droite et Bas. Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un ou plusieurs arguments de fin vierges, n'utilisez pas de virgule à la suite des arguments spécifiés. Les unités des arguments sont exprimées en twips. Un twip est équivalant à 1/20e de point ou 1/1440e de pouce. Un centimètre contient 567 twips. Fenêtre maxi, mini et restaurer VBA Les commandes Maximize, Minimize et Restore permettent de gérer la taille de la fenêtre d'un objet formulaire ou état dans la fenêtre Access. Elles s'appliquent à la fenêtre Access qui contient les objets tels que les formulaires mais pas à la fenêtre application Access. La méthode Minimize exécute l'action Réduire dans Visual Basic. Vous pouvez utiliser l'action Réduire pour réduire la fenêtre active à une petite barre de titre dans le bas de la fenêtre de Microsoft Access. Vous pouvez utiliser cette action pour faire disparaître une fenêtre de l'écran en laissant l'objet ouvert. Vous pouvez également utiliser cette action pour ouvrir un objet sans afficher sa fenêtre. Pour afficher l'objet, utilisez l'action Agrandir (Maximize) ou Restaurer (Restore). L'action Minimize équivaut à cliquer sur le bouton

85 Réduire dans le coin supérieur droit de la fenêtre ou à cliquer sur Réduction dans le menu Système de la fenêtre. Vous pouvez utiliser l'action Restaurer pour restaurer une fenêtre réduite à sa taille antérieure. La méthode Maximize exécute l'action Agrandir dans Visual Basic. Vous pouvez utiliser l'action Agrandir pour augmenter la taille de la fenêtre active afin qu'elle remplisse la fenêtre Microsoft Access. Cette action va vous permettre de voir la plus grande partie possible de l'objet dans la fenêtre active. Cette action équivaut à cliquer sur le bouton Agrandir dans le coin supérieur droit de la fenêtre ou à cliquer sur Agrandissement dans le menu Système de la fenêtre. Vous pouvez utiliser l'action Restaurer pour restaurer une fenêtre agrandie à sa taille antérieure. La méthode Restore exécute l'action Restaurer dans Visual Basic. Vous pouvez utiliser l'action Restaurer pour restaurer à sa taille antérieure une fenêtre agrandie ou réduite. L'action Restaurer équivaut à cliquer sur le bouton Restaurer dans le coin supérieur droit ou à cliquer sur la commande Restaurer dans le menu Système de la fenêtre. Syntaxe: DoCmd.Maximize DoCmd.Minimize DoCmd.Restore Imprimer un objet VBA La méthode PrintOut exécute l'action Imprimer dans Visual Basic. Vous pouvez utiliser l'action Imprimer pour imprimer l'objet actif de la base de données ouverte. Vous pouvez imprimer des feuilles de données, des états, des formulaires, des pages d'accès aux données et des modules. Syntaxe: DoCmd.PrintOut([<Imprimer>], [<DePage>], [<APage>], [<QualitéImpression>], [<Copies>], [<CopiesTriées>]) Imprimer AcPrintRange facultatif. Indique le type d'impression. Valeurs de AcPrintRange Valeur Description acpages Impression d'une plage de pages acprintall valeur par défaut. Impression de l'objet complet. acselection Impression de la sélection DePage Variant facultatif. Expression numérique qui représente un numéro de page valide dans le formulaire actif ou la feuille de données active. Cet argument est obligatoire si vous spécifiez acpages pour l'argument Imprimer. ÀPage Variant facultatif. Expression numérique qui représente un numéro de page valide dans la feuille de données ou le formulaire actif. Cet argument est obligatoire si vous spécifiez acpages pour l'argument Imprimer. La valeur de ÀPage doit être égale ou supérieure à la valeur de DePage QualitéImpression Constante AcPrintQuality facultatif. Valeurs de AcPrintQuality Valeur Description acdraft Qualité Brouillon achigh constante par défaut. Qualité Haute aclow Qualité Basse acmedium Qualité Moyenne Copies Variant facultatif. Expression numérique. Si vous laissez cet argument vierge, la valeur par défaut (1) est choisie.

86 CopiesTriées Variant facultatif. Utilisez True pour trier les copies imprimées et False dans le cas contraire. Si vous laissez cet argument vierge, la valeur par défaut (True) est choisie. L'objet peut s'imprimer plus vite si cet argument est défini à False. Vous pouvez laisser un argument facultatif vierge au milieu de la syntaxe, mais vous devez inclure la virgule de l'argument. Si vous laissez un ou plusieurs arguments de fin vierges, n'utilisez pas de virgule à la suite des arguments spécifiés. Avec cette action, aucune boîte de dialogue Imprimer n'apparaît. Quitter MS-Access La méthode Quit vous permet de quitter Microsoft Access. Plusieurs options vous permettent de sauvegarder un objet de base de données avant de quitter Microsoft Access. Docmd.Quit(Option) Option Facultatif AcQuitOption. Option permettant de quitter. acquitoption peut être l'une de ces constantes acquitoption. acquitprompt Affiche une boîte de dialogue vous invitant à enregistrer tous les objets de base de données modifiés mais non sauvegardés. (Auparavant appelée acprompt). acquitsaveall par défaut Enregistre tous les objets sans afficher de boîte de dialogue. (Auparavant appelée acsaveyes). acquitsavenone Quitte Microsoft Access sans qu'aucun objet ne soit sauvegardé. (Auparavant appelée acexit). Remarque 1 La méthode Quit équivaut à cliquer sur la commande Quitter du menu Fichier. Il est possible de créer dans un formulaire une commande de menu personnalisée ou un bouton de commande à l'aide d'une procédure qui inclut la méthode Quit. Par exemple, vous pouvez insérer un bouton Quitter dans un formulaire et inclure une procédure dans l'événement Click du bouton qui utilise la méthode Quit en attribuant la valeur acquitsaveall à l'argument Option. Remarque 2 La méthode Quit de l'objet DoCmd a été ajoutée pour des raisons de compatibilité ascendante afin de pouvoir exécuter l'action Quitter dans du code Visual Basic dans Microsoft Access 95. Il vaut mieux que vous utilisiez plutôt la méthode Quit existante de l'objet Application. Exemples Application à l'objet Application. L'exemple suivant montre la procédure événementielle Click du bouton de commande AppExit. Après avoir cliqué sur ce bouton, une boîte de dialogue vous invitant à enregistrer les modifications avant de quitter Microsoft Access s'affiche. Private Sub AppExit_Click() Application.Quit acquitprompt End Sub Application à l'objet DoCmd. Cet exemple affiche une boîte de dialogue qui vous invite à enregistrer les objets modifiés avant de quitter Microsoft Access. DoCmd.Quit acquitprompt Supprimer un objet VBA La méthode DeleteObject exécute l'action DeleteObject dans Visual Basic. Vous pouvez utiliser l'action SupprimerObjet pour supprimer un objet de la base de données active. Syntaxe DoCmd.DeleteObject([<TypeObjet>], [<NomObjet>]))

87 TypeObjet Constante AcObjectType facultatif. Valeurs de AcObjectType Valeur Objet à supprimer acdataaccesspage Page d'accès aux données acdefault valeur par défaut acdiagram Schéma acform Formulaire acfunction Fonction acmacro Macro acmodule module acquery requête acreport Etat acserverview Vue serveur acstoredprocedure Procédure stockée actable Table NomObjet Variant facultatif. Expression chaîne qui est le nom valide d'un objet du type sélectionné avec l'argument typeobjet. Si vous exécutez du code Visual Basic contenant la méthode DeleteObject dans une base de données bibliothèque, Microsoft Access recherche un objet de ce nom d'abord dans la base de données bibliothèque, puis dans la base de données en cours. Si vous laissez les arguments typeobjet et nomobjet vierges (la constante par défaut acdefault est choisie pour typeobjet), Access supprime l'objet sélectionné dans la fenêtre Base de données, sans afficher un message d'avertissement quand il rencontre méthode DeleteObject. L OBJET RECORDSET Accès aux enregistrements L'accès à des enregistrements d'une table ou d'une requête est une des techniques de base d'access. Il n'existe pas de procédure ou de fonction où vous ne deviez pas rechercher ou sélectionner un enregistrement, lire les valeurs d'un champ ou écrire des données. La démarche est identique que les enregistrements soient le résultat d'une requête ou qu'ils résident dans une table. Par principe on ne travaillera pas directement dans la table de données mais avec une requête qui va filtrer les enregistrements et les présentera dans un ordre établi. L'objet RecordSet L'objet RecordSet représente un jeu d'enregistrements. Il peut provenir de n'importe quel endroit cela n'a pas d'importance. Il peut s'agir du résultat d'une requête ou d'une table. En ouvrant une table ou en exécutant une requête on ouvre une instance recordset. Pourquoi DAO? Ce cours étant destiné en priorité aux débutants, il apparaît plus aisé de démarrer les fonctions par DAO car certains des lecteurs pourront être appelés à réaliser des bases de données dans des versions d Access antérieures à Access 2000 où ils ne peuvent pas appliquer la technique ADO. Conventions d'appellation des objets Pour utiliser un objet recordset, nous devons utiliser d'autres objets tel que DataBase, Field, index etc... Pour bien reconnaître ces objets d'après leur nom il faut prendre l'habitude de les nommer de la même façon dans toutes les applications en respectant la casse. Db Objet Database Rs Objet RecordSet Fld Objet Field

88 Base active Pour ouvrir un recordset, il faudra indiquer un objet DataBase pour que Access puisse détecter la base contenant la table à ouvrir. S'il s'agit de la base active (la base dans laquelle vous évoluez) vous pouvez la nommer par la propriété CurrentDb. On peut également utiliser la propriété CodeDb. Convention de codification Pour nommer les champs d'enregistrement lors d'une lecture ou d'une écriture il y a plusieurs façons de procéder, toutes ayant le même résultat mais plus ou moins compréhensibles pour le lecteur. Pour accéder à un champ du recordset il faut utiliser la liste Fields qui est l'objet de liste contenant tous les champs de la table sous la forme d'objet Field. Pour identifier un champ on peut utiliser l'index ou le nom, ce dernier étant de loin préférable. Identification d'un champ : Rs.Fields(<Nom de champ>) ou Rs.Fields(<numéro index>) Pour obtenir la valeur contenu dans un champ on utilisera la propriété value. Rs.Fields(<Nom de champ>).value Si on tiens compte que la valeur de la propriété par défaut d'un champ d'un recordset est Value, on peut ne pas l'utiliser: <variable> = Rs.Fields(<Nom de champ>) Si on tient compte également que la valeur de la propriété par défaut de l'objet recordset est Fields, on peut ne pas l'utiliser: <variable> = Rs(<Nom de champ>) <variable> = Rs(<Numéro d'index>) Ces deux codifications seront seront donc utilisées dans ce site. Il sera possible également d'utiliser le! pour nommer un champ de recordset mais je trouve que cette dernière façon n'est pas dans la logique d'une programmation objet. <variable> = Rs(<Nom de champ>) peut donc s'écrire <variable> = Rs!<Nom de champ> Requête ou Table? Toutes les opérations réalisées sur les tables sont réalisables à l'aide de requêtes. Soit vous utilisez le nom d'une requête enregistrée soit l'instruction SQL de la requête directement dans l'ouverture de l'objet recordset. Le type adapté aux requêtes s'appelle Dynaset. La méthode d'utilisation des requêtes et des tables est identiques sauf que la méthode Seek ne fonctionne pas pour les requêtes, mais l'utilisation des clauses Where du sql et les méthodes Find permettent de réaliser la même fonction. La requête sélectionne à l'avance, dans la table, les enregistrements répondant aux critères et on n'a pas besoin de rechercher par Find les enregistrements répondant à ces critères. Ouverture d'un recordset L'ouverture d'un jeu d'enregistrement (recordset) doit être codifiée dans toutes vos applications. Il faut définir l'objet DataBase, ensuite l'objet RecordSet. Ensuite la base de données (DataBase) sera chargée et le recordset ouvert par la méthode OpenRecordSet. Lorsque le recordset sera ouvert il faudra contrôler s'il contient des enregistrements par la propriété BOF (Begin Of File, Début de Fichier). Pour la bonne compréhension du lecteur débutant j'ai supprimé tout ce qui concerne les bases ODBC et nous ne parlerons que des bases Microsoft Jet MDB. Syntaxe: <objet DataBase>.OpenRecordSet(source, type, options, lockedits) Procédure: Private Sub OuverturerecordSet() Dim Db As DAO.Database Dim Rs As DAO.Recordset Set Db = CurrentDb Set Rs = Db.OpenRecordset("Table1", dbopentable, dbseechanges, dbpessimistic) If Rs.BOF Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If

89 Do Until Rs.EOF Debug.Print Rs(0) Rs.MoveNext Loop Exit_Sub: Rs.Close Set Rs = Nothing Set Db = Nothing End Sub La syntaxe de la méthode OpenRecordSet comprend les éléments suivants : Paramètres de OpenRecordSet: Élément Description source Donnée de type String indiquant la source des enregistrements du nouvel objet Recordset. Il peut s'agir du nom d'une table, d'une requête ou d'une instruction SQL qui renvoie des enregistrements. type Facultatif. Constante indiquant le type d'objet Recordset à ouvrir. options Facultatif. Combinaison de constantes indiquant les caractéristiques du nouvel objet Recordset. lockedits Facultatif. Constante définissant le verrouillage de l'objet Recordset. Valeurs des paramètres de Type Type Description dbopentable Ouvre un objet Recordset de type Table. dbopendynaset Ouvre un objet Recordset de type Feuille de réponses dynamique (Dynaset), (Valeur par défaut). Vous pouvez modifier des contrôles dépendants basés sur une seule ou plusieurs tables avec une relation un-à-un. Pour des contrôles liés à des champs basés sur des tables avec une relation un-à-plusieurs, vous ne pouvez pas modifier les données du champ joint du côté «un» de la relation, sauf si la mise à jour en cascade est activée entre les tables. dbopensnapshot Ouvre un objet Recordset de type Instantané, Aucune table ou aucun contrôle correspondant à leurs champs ne peut être modifié. Si vous ouvrez un objet Recordset et si vous n'indiquez aucun type, OpenRecordSet crée un objet Recordset de type Table si possible. Si vous indiquez une table liée ou une requête, la méthode OpenRecordSet crée un objet Recordset de type Feuille de réponses dynamique (Dynaset). Options d'ouverture Options Description dbappendonly Permet aux utilisateurs d'ajouter de nouveaux enregistrements à l'objet Recordset, tout en leur interdisant de modifier ou de supprimer les enregistrements existants. dbseechanges Génère une erreur d'exécution si un utilisateur modifie les données en cours de modification par un autre utilisateur (objet Recordset de type Feuille de réponses dynamique (Dynaset) uniquement). Ce comportement peut s'avérer utile dans les applications dans lesquelles plusieurs utilisateurs bénéficient d'accès simultané en lecture/écriture aux mêmes données. dbdenywrite Interdit aux autres utilisateurs de modifier ou d'ajouter des enregistrements. dbdenyread Interdit aux autres utilisateurs de lire les données d'une table. dbconsistent Autorise uniquement les mises à jour cohérentes (objets Recordset Microsoft Jet de type Feuille de réponses dynamique (Dynaset)) Options de blocage lockedits Description dbpessimistic Utilise le verrouillage pessimiste afin de déterminer de quelle façon les modifications sont

90 dboptimistic apportées à l'objet Recordset dans un environnement multi-utilisateur. La page contenant l'enregistrement que vous modifiez est verrouillée dès que vous utilisez la méthode Edit. Si la version Access utilisée vous indique une erreur de variable non déclarée, remplacez dbpessimistic par sa valeur numérique : 2. Utilise le verrouillage optimiste afin de déterminer de quelle façon les modifications sont apportées à l'objet Recordset dans un environnement multi-utilisateur. La page contenant l'enregistrement n'est pas verrouillée tant que l'exécution de la méthode Update n'est pas terminée. Dans la pratique, l'ouverture d'un recordset va se résumer à l'indication de la table ou de la requête sans autre option: Set Rs = Db.OpenRecordset("Table1") Set Rs = Db.OpenRecordset("Requête1") Set Rs = Db.OpenRecordset("Select table1.* from table1") Fermeture du recordset Tout recordset ouvert dans un module doit être fermé, au plus tard lorsque l'application se termine mais le plus tôt possible dès que le recordset n'est plus utilisé, pour libérer l'espace disponible. Tout objet non fermé lors de la fermeture de l'application peut provoquer une fermeture incomplète et laisser Access dans les processus en exécution. Exemple: Private Sub OuverturerecordSet() Dim Db As DAO.Database Dim Rs As DAO.Recordset Set Db = CurrentDb Set Rs = Db.OpenRecordset("Table1", dbopentable, dbseechanges, dbpessimistic) If Rs.BOF Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Do Until Rs.EOF Debug.Print Rs(0) Rs.MoveNext Loop Exit_Sub: Rs.Close Set Rs = Nothing Set Db = Nothing End Sub Remarques: Attribuer à une variable objet la valeur Nothing (Set Rs = Nothing) produit le même résultat que la méthode Close. Dans l'exemple ci-dessus la méthode Rs.Close n'est pas nécessaire. Déplacements dans un recordset Il est important de savoir comment Access gère un recordset. Access utilise un pointeur qui se déplace sur les enregistrement et l'enregistrement sur lequel se trouve le pointeur devient l'enregistrement en cours (CurrentRecord). Ce pointeur se déplace parmi les enregistrements dès qu'un autre enregistrement est sélectionné. Il se déplace ainsi vers le début ou vers la fin du recordset et se place sur un enregistrement précis. Il n'existe qu'un seul pointeur qui indique en permanence le CurrentRecord. Toutes les actions sur un enregistrement sont appliquées au currentrecord. Pour vous déplacer dans un recordset vous avez quatre méthodes: MoveFirst, MoveLast, MoveNext et MovePrevious Qui passent respectivement au premier enregistrement, au dernier, au suivant ou au précédent dans un objet Recordset indiqué et le transforme en enregistrement actuel (CurrentRecord)

91 Syntaxe <variable recordset>.{movefirst MoveLast MoveNext MovePrevious} La variable recordset est une variable objet représentant un objet Recordset (Rs) ouvert par Set Rs = Db.OpenRecordset("Table1", dbopentable) comme dans l'exemple d'ouverture de recordset. Rs.MoveFirst déplace le pointeur sur le 1er enregistrement Rs.MoveLast déplace le pointeur sur le dernier enregistrement Rs.MoveNext déplace le pointeur sur l'enregistrement suivant Rs.MovePrevious déplace le pointeur sur l'enregistrement précédent tout déplacement sera suivi d'un test de début ou fin de fichier. MoveFirst et MovePrevious seront suivi de : If Rs.BOF Then... MoveLast et MoveNext seront suivis de : If Rs.EOF Then... Dans une boucle de lecture, EOF sera inclus dans la condition de la boucle. Remarques Lorsque vous modifiez l'enregistrement actuel, n'oubliez pas d'enregistrer les modifications à l'aide de la méthode Update avant de passer à un autre enregistrement sinon vos modifications seront perdues. Lorsque vous ouvrez un objet Recordset, le premier enregistrement est l'enregistrement actuel et la propriété BOF a la valeur False. Si l'objet Recordset ne contient aucun enregistrement, la propriété BOF a la valeur True, et il n'y a pas d'enregistrement actuel. Si le premier ou le dernier enregistrement est déjà en cours lorsque vous utilisez les méthodes MoveFirst ou MoveLast, il le demeure. Si vous utilisez la méthode MovePrevious quand le premier enregistrement est en cours, la valeur True est affectée à la propriété BOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode MovePrevious, une erreur se produit et la propriété BOF conserve la valeur True. Si vous utilisez la méthode MoveNext quand le dernier enregistrement est en cours, la valeur True est affectée à la propriété EOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode MoveNext, une erreur se produit et la propriété EOF conserve la valeur True. Si recordset fait référence à un objet Recordset de type Table, le mouvement suit l'index en cours. Vous pouvez définir l'index en cours à l'aide de la propriété Index. Si vous ne le définissez pas, l'ordre dans lequel les enregistrements sont renvoyés est indéfini. Vous pouvez employer la méthode MoveLast pour remplir entièrement un objet Recordset de type Feuille de données dynamique (Dynaset) ou Instantané, afin de fournir le nombre d'enregistrements de l'objet Recordset à ce moment. Toutefois, si vous utilisez la méthode MoveLast de cette façon, vous risquez de ralentir les performances de votre application. Il est recommandé d'utiliser la méthode MoveLast uniquement si vous souhaitez connaître le compte exact d'enregistrements d'un objet Recordset nouvellement ouvert. Vous ne pouvez pas recourir aux méthodes MoveFirst, MoveLast et MovePrevious pour un objet Recordset de type En avant seulement. Recherche d'enregistrements Pour trouver un enregistrement dans un recordset il n'est pas nécessaire d'utiliser les méthodes Move car celles-ci seraient trop longues et de plus il faudrait tester si le CurrentRecord est bien celui recherché. Nous disposons de quatre variantes de la méthode Find qui permet de se positionner sur un enregistrement satisfaisant à des conditions de recherche. Si la condition est réalisée, l'enregistrement devient le CurrentRecord (enregistrement actif). FindFirst Recherche le premier enregistrement à partir du premier jusqu'à la fin FindNext Recherche le suivant à partir du CurrentRecord jusqu'à la fin FinLast Recherche le dernier à partir de la fin jusqu'au début FinPrevious recherche le précédent à partir du CurrentRecord jusqu'au début Syntaxe: <objet recordsedt>.<méthode Find> <critère> Exemple: Private Sub OuverturerecordSet() Dim Db As DAO.Database

92 Dim Rs As DAO.Recordset Set Db = CurrentDb Set Rs = Db.OpenRecordset("select * from table1") If Rs.BOF Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Rs.FindFirst "[numéro] = 5" If Rs.NoMatch Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Me.Madate = Rs("madate") Exit_Sub: Set Rs = Nothing Set Db = Nothing End Sub Vérifiez toujours la valeur de la propriété NoMatch afin de déterminer si l'opération Find a réussi. En cas de réussite de la recherche, la propriété NoMatch prend la valeur False. En cas d'échec, la propriété NoMatch prend la valeur True et l'enregistrement actuel n'est pas défini. Dans ce cas, vous devez replacer le pointeur d'enregistrement actuel sur un enregistrement valide. Dans le cas d'un espace de travail ODBCDirect, les méthodes Find et Seek ne peuvent être appliquées à aucun type d'objet Recordset, car l'exécution d'une méthode Find ou Seek sur une connexion ODBC n'est pas très efficace sur réseau. Définissez plutôt la requête (c'est-à-dire, l'argument source de la méthode OpenRecordset) à l'aide d'une clause WHERE appropriée qui limite les enregistrements renvoyés à ceux répondant aux critères que vous utiliseriez normalement dans une méthode Find ou Seek. Utilisez le format de date américain (mois-jour-année) lorsque vous recherchez des champs qui contiennent des dates, même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, vous risquez de ne pas trouver les données. Utilisez la fonction Format de Visual Basic pour convertir la date. Exemple : rstemployees.findfirst "Ladate > #" & Format(mydate, 'm-d-yy' ) & "#" Les autres variantes de Find, si elles sont utilisées, devront avoir le même critère que le FindFirst initial. Création d'un enregistrement La création d'un enregistrement sera réalisée par la méthode AddNew et enregistré par la méthode Update. Syntaxe: <variable recordset>.addnew La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez ajouter un nouvel enregistrement. Exemple Dim Db As DAO.Database Dim Rs As DAO.Recordset Set Db = CurrentDb Set Rs = Db.OpenRecordset("select * from table1") Rs.AddNew Rs("numéro") = Me.Numéro Rs("Nomclient") = Me.NomClient Rs.Update Set Rs = Nothing Set Db = Nothing Remarques

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

94 Rs.Update Exit_Sub: Set Rs = Nothing Set Db = Nothing End Sub Remarques: L'enregistrement actuel le reste après utilisation de la méthode Edit. Si vous modifiez un enregistrement puis effectuez une opération qui vous fait passer à un autre enregistrement avant que vous ayez utilisé la méthode Update, les modifications sont perdues. D'autre part, si vous fermez l'objet recordset ou si vous mettez fin à la procédure qui déclare l'objet Recordset ou l'objet DataBase, les modifications de votre enregistrement sont ignorées. FONCTION MSGBOX Affiche un message dans une boîte de dialogue, attend que l'utilisateur clique sur un bouton, puis renvoie une valeur de type Integer qui indique le bouton choisi par l'utilisateur. Syntaxe MsgBox(prompt[, buttons] [, title] [, helpfile, context]) La syntaxe de la fonction MsgBox comprend les arguments nommés suivants : Élément prompt buttons title helpfile context Description 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)). 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. 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. 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. 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.

95 vbquestion 32 Affiche l'icône Requête d'avertissement. vbexclamation 48 Affiche l'icône Message d'avertissement. vbinformation 64 Affiche l'icône Message d'information. vbdefaultbutton1 0 Le premier bouton est le bouton par défaut. vbdefaultbutton2 256 Le deuxième bouton est le bouton par défaut. vbdefaultbutton3 512 Le troisième bouton est le bouton par défaut. vbdefaultbutton4 768 Le quatrième bouton est le bouton par défaut. vbapplicationmodal 0 Boîte de dialogue modale. L'utilisateur doit répondre au message affiché dans la zone de message avant de pouvoir continuer de travailler dans l'application en cours. vbsystemmodal 4096 Modal système. Toutes les applications sont interrompues jusqu'à ce que l'utilisateur réponde au message affiché dans la zone de message. vbmsgboxhelpbutton 16384 Ajoute le bouton Aide à la zone de message. VbMsgBoxSetForeground 65536 Indique la fenêtre de zone de message comme fenêtre de premier plan. vbmsgboxright 524288 Le teste est aligné à droite. vbmsgboxrtlreading 1048576 Indique que le texte doit apparaître de droite à gauche sur les systèmes hébraïques et arabes. Le premier groupe de valeurs (0 à 5) décrit le nombre et le type de boutons affichés dans la boîte de dialogue. Le deuxième groupe (16, 32, 48 et 64) décrit le style d'icône. Le troisième groupe (0, 256 et 512) définit le bouton par défaut. Enfin, le quatrième groupe (0 et 4 096) détermine la modalité de la zone de message. Au moment d'additionner ces nombres pour obtenir la valeur finale de l'argument buttons, ne sélectionnez qu'un seul nombre dans chaque groupe. Note Ces constantes sont indiquées par Visual Basic pour Applications. Vous pouvez par conséquent les utiliser n'importe où dans votre code à la place des valeurs réelles correspondantes. Valeurs renvoyées Constante Valeur Description vbok 1 OK vbcancel 2 Annuler vbabort 3 Abandonner vbretry 4 Réessayer vbignore 5 Ignorer vbyes 6 Oui vbno 7 Non Remarques Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue.

96 Si la boîte de dialogue est dotée d'un bouton Annuler, appuyer sur Échap équivaut à cliquer sur Annuler. Si la boîte de dialogue contient un bouton Aide, cela signifie qu'une aide contextuelle relative à la boîte de dialogue est disponible. Toutefois, aucune valeur n'est renvoyée tant que l'utilisateur n'a pas cliqué sur l'un des autres boutons. Note Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé, vous devez utiliser la fonction MsgBox dans une expression. Si vous voulez omettre certains arguments de position, vous devez quand même placer la virgule de séparation correspondante. Exemple Cet exemple utilise la fonction MsgBox pour afficher un message d'erreur grave dans une boîte de dialogue pourvue des boutons Yes et No. Le bouton No est spécifié comme réponse par défaut. La valeur renvoyée par la fonction MsgBox dépend du bouton sélectionné par l'utilisateur. Dans cet exemple, DEMO.HLP est un fichier d'aide contenant une section dont le numéro de contexte d'aide est 1000. Dim Msg, Style, Title, Help, Ctxt, Response, MyString Msg = "Souhaitez-vous continuer?" ' Définit le message. Style = vbyesno + vbcritical + vbdefaultbutton2 ' Définit les boutons. Title = "Démonstration de MsgBox " ' Définit le titre. Help = "DEMO.HLP" ' Définit le fichier d'aide. Ctxt = 1000 ' Définit le contexte de ' la rubrique. ' Affiche le message. Response = MsgBox(Msg, Style, Title, Help, Ctxt) If Response = vbyes Then ' L'utilisateur a choisi Oui. MyString = "Oui" ' Effectue une action. Else ' L'utilisateur a choisi Non. MyString = "Non" ' Effectue une action. End If FONCTION INPUTBOX Affiche une invite dans une boîte de dialogue, attend que l'utilisateur tape du texte ou clique sur un bouton, puis renvoie le contenu de la zone de texte sous la forme d'une valeur de type String. Syntaxe InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) La syntaxe de la fonction InputBox comprend les arguments nommés suivants : Élément prompt title default xpos ypos helpfile Description 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. 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. 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. 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. 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. Facultatif. Expression de chaîne indiquant le fichier d'aide à utiliser pour fournir une aide

97 contextuelle sur la boîte de dialogue. Si l'argument helpfile est défini, l'argument context doit l'être également. context Facultatif. Expression numérique indiquant le numéro de contexte attribué par l'auteur de l'aide à la rubrique appropriée. Si l'argument context est défini, l'argument helpfile doit l'être également. Remarques Lorsque les deux arguments helpfile et context sont définis, l'utilisateur peut appuyer sur F1 pour afficher la rubrique d'aide correspondant à l'argument context. Certaines applications hôtes, Microsoft Excel par exemple, peuvent ajouter automatiquement un bouton Aide à la boîte de dialogue. Si l'utilisateur clique sur OK ou appuie sur ENTRÉE, la fonction InputBox renvoie le texte contenu dans la zone de texte. Si l'utilisateur clique sur le bouton Annuler, la fonction renvoie une chaîne de longueur nulle (""). Note Si vous souhaitez préciser plus d'informations que celles fournies par le premier argument nommé, vous devez utiliser la fonction InputBox dans une expression. Si vous voulez omettre certains arguments de position, vous devez quand même placer la virgule de séparation correspondante. InputBox, fonction, exemple Cet exemple montre comment utiliser la fonction InputBox pour inviter l'utilisateur à saisir une valeur. Si vous omettez de spécifier les positions de x et de y, les deux axes correspondants sont automatiquement déterminés de manière à centrer la boîte de dialogue. La variable MyValue contient la valeur entrée par l'utilisateur si celui-ci clique sur OK ou appuie sur la touche ENTRÉE. Si l'utilisateur clique sur Annuler, une chaîne de longueur nulle est renvoyée. Dim Message, Title, Default, MyValue ' Définit le message. Message = "Entrez une valeur comprise entre 1 et 3" Title = "Démonstration de InputBox" ' Définit le titre. Default = "1" ' Définition la valeur par défaut. ' Affiche le message, le titre et la valeur par défaut. MyValue = InputBox(Message, Title, Default) ' Utilise le fichier d'aide et le contexte. ' Le bouton Aide est ajouté automatiquement. MyValue = InputBox(Message, Title,,,, "DEMO.HLP", 10) ' Affiche la boîte de dialogue sur la position 100, 100. MyValue = InputBox(Message, Title, Default, 100, 100) QUELQUES EXEMPLES PRATIQUES Créer une table locale DAO Cette fonction permet de créer une table locale sous DAO. Cocher la référence DAO3.6. Aucun paramètre n'est passé à la fonction car tous les paramètres sont dans cette fonction. Appel de la fonction: TableCreateDAO Fonction: Insérer ce code dans un module standard Public Function TableCreateDAO() Dim Db As DAO.Database Dim Tbl As DAO.TableDef Dim fld As DAO.Field Dim idx As DAO.Index

98 Dim Prp As DAO.Property Set Db = CurrentDb() ' Ouverture base de données Set Tbl = Db.CreateTableDef("NouvelleTable") 'Création d'une table Set fld = Tbl.CreateField("CodePays", dblong) 'création du premier champ fld.ordinalposition = 1 'champ position 1 fld.attributes = dbautoincrfield 'définition numéroauto Tbl.Fields.Append fld 'ajout du champ dans la table Set fld = Tbl.CreateField("NomduPays", dbtext) 'création du deuxième champ fld.ordinalposition = 2 'champ position 2 fld.size = 100 'taille 100 caractères fld.required = True 'valeur nulle interdite fld.allowzerolength = False 'chaine vide autorisée Tbl.Fields.Append fld 'ajout du champ dans la table Set idx = Tbl.CreateIndex("PrimaryKey") 'création d'un index idx.primary = True 'clé primaire idx.required = True idx.unique = True ' sans doublons Set fld = idx.createfield("codepays") 'définition du champ qui sert d'index idx.fields.append fld 'ajout du champ dans l'index Tbl.Indexes.Append idx 'ajout de l'index dans la table Db.TableDefs.Append Tbl 'ajoute la table à la base RefreshDatabaseWindow 'rafraichissement de la fenêtre base de données Set Tdf = Db.TableDefs("NouvelleTable")' entrée des propriétés caption et description Set Fld = Tbl.Fields("CodePays") Set prp = Fld.CreateProperty("Caption", dbtext) prp.value = "Clé d'accès" Fld.Properties.Append prp Set prp = Fld.CreateProperty("Description", dbtext) prp.value = "Clé d'accès code pays" Fld.Properties.Append prp Set Fld = Tbl.Fields("NomduPays") Set prp = Fld.CreateProperty("Caption", dbtext) prp.value = "Pays" Fld.Properties.Append prp Set prp = Fld.CreateProperty("Description", dbtext) prp.value = "Nom du pays" Fld.Properties.Append prp End Function N.B. : Ce code est un peu complexe que celui vu en auditoire. Mais, il a plus d options car il vous apprend beaucoup de choses à la fois. Merci de bien le comprendre. Création d'un enregistrement La création d'un enregistrement sera réalisée par la méthode AddNew et enregistré par la méthode Update. Syntaxe: <variable recordset>.addnew La variable recordset représente un objet Recordset pouvant être mis à jour et auquel vous souhaitez ajouter un nouvel enregistrement. Exemple Dim Db As DAO.Database Dim Rs As DAO.Recordset Set Db = CurrentDb

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

100 GoTo Exit_Sub End If Rs.FindFirst "[numéro] = 5" If Rs.NoMatch Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Rs.Edit Rs("madate")= Me.Madate Rs.Update Exit_Sub: Set Rs = Nothing Set Db = Nothing End Sub Remarques: L'enregistrement actuel le reste après utilisation de la méthode Edit. Si vous modifiez un enregistrement puis effectuez une opération qui vous fait passer à un autre enregistrement avant que vous ayez utilisé la méthode Update, les modifications sont perdues. D'autre part, si vous fermez l'objet recordset ou si vous mettez fin à la procédure qui déclare l'objet Recordset ou l'objet DataBase, les modifications de votre enregistrement sont ignorées. Recherche d'enregistrements Pour trouver un enregistrement dans un recordset il n'est pas nécessaire d'utiliser les méthodes Move car celles-ci seraient trop longues et de plus il faudrait tester si le CurrentRecord est bien celui recherché. Nous disposons de quatre variantes de la méthode Find qui permet de se positionner sur un enregistrement satisfaisant à des conditions de recherche. Si la condition est réalisée, l'enregistrement devient le CurrentRecord (enregistrement actif). FindFirst Recherche le premier enregistrement à partir du premier jusqu'à la fin FindNext Recherche le suivant à partir du CurrentRecord jusqu'à la fin FinLast Recherche le dernier à partir de la fin jusqu'au début FinPrevious recherche le précédent à partir du CurrentRecord jusqu'au début Syntaxe: <objet recordsedt>.<méthode Find> <critère> Exemple: Private Sub OuverturerecordSet() Dim Db As DAO.Database Dim Rs As DAO.Recordset Set Db = CurrentDb Set Rs = Db.OpenRecordset("select * from table1") If Rs.BOF Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Rs.FindFirst "[numéro] = 5" If Rs.NoMatch Then MsgBox "il n'y a pas d'enregistrements" GoTo Exit_Sub End If Me.Madate = Rs("madate") Exit_Sub: Set Rs = Nothing Set Db = Nothing End Sub

101 Vérifiez toujours la valeur de la propriété NoMatch afin de déterminer si l'opération Find a réussi. En cas de réussite de la recherche, la propriété NoMatch prend la valeur False. En cas d'échec, la propriété NoMatch prend la valeur True et l'enregistrement actuel n'est pas défini. Dans ce cas, vous devez replacer le pointeur d'enregistrement actuel sur un enregistrement valide. Dans le cas d'un espace de travail ODBCDirect, les méthodes Find et Seek ne peuvent être appliquées à aucun type d'objet Recordset, car l'exécution d'une méthode Find ou Seek sur une connexion ODBC n'est pas très efficace sur réseau. Définissez plutôt la requête (c'est-à-dire, l'argument source de la méthode OpenRecordset) à l'aide d'une clause WHERE appropriée qui limite les enregistrements renvoyés à ceux répondant aux critères que vous utiliseriez normalement dans une méthode Find ou Seek. Utilisez le format de date américain (mois-jour-année) lorsque vous recherchez des champs qui contiennent des dates, même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Jet ; sinon, vous risquez de ne pas trouver les données. Utilisez la fonction Format de Visual Basic pour convertir la date. Exemple : rstemployees.findfirst "Ladate > #" & Format(mydate, 'm-d-yy' ) & "#" Les autres variantes de Find, si elles sont utilisées, devront avoir le même critère que le FindFirst initial. Déplacements dans un recordset Il est important de savoir comment Access gère un recordset. Access utilise un pointeur qui se déplace sur les enregistrement et l'enregistrement sur lequel se trouve le pointeur devient l'enregistrement en cours (CurrentRecord). Ce pointeur se déplace parmi les enregistrements dès qu'un autre enregistrement est sélectionné. Il se déplace ainsi vers le début ou vers la fin du recordset et se place sur un enregistrement précis. Il n'existe qu'un seul pointeur qui indique en permanence le CurrentRecord. Toutes les actions sur un enregistrement sont appliquées au currentrecord. Pour vous déplacer dans un recordset vous avez quatre méthodes: MoveFirst, MoveLast, MoveNext et MovePrevious Qui passent respectivement au premier enregistrement, au dernier, au suivant ou au précédent dans un objet Recordset indiqué et le transforme en enregistrement actuel (CurrentRecord) Syntaxe <variable recordset>.{movefirst MoveLast MoveNext MovePrevious} La variable recordset est une variable objet représentant un objet Recordset (Rs) ouvert par Set Rs = Db.OpenRecordset("Table1", dbopentable) comme dans l'exemple d'ouverture de recordset. Rs.MoveFirst déplace le pointeur sur le 1er enregistrement Rs.MoveLast déplace le pointeur sur le dernier enregistrement Rs.MoveNext déplace le pointeur sur l'enregistrement suivant Rs.MovePrevious déplace le pointeur sur l'enregistrement précédent tout déplacement sera suivi d'un test de début ou fin de fichier. MoveFirst et MovePrevious seront suivi de : If Rs.BOF Then... MoveLast et MoveNext seront suivis de : If Rs.EOF Then... Dans une boucle de lecture, EOF sera inclus dans la condition de la boucle. Remarques Lorsque vous modifiez l'enregistrement actuel, n'oubliez pas d'enregistrer les modifications à l'aide de la méthode Update avant de passer à un autre enregistrement sinon vos modifications seront perdues. Lorsque vous ouvrez un objet Recordset, le premier enregistrement est l'enregistrement actuel et la propriété BOF a la valeur False. Si l'objet Recordset ne contient aucun enregistrement, la propriété BOF a la valeur True, et il n'y a pas d'enregistrement actuel. Si le premier ou le dernier enregistrement est déjà en cours lorsque vous utilisez les méthodes MoveFirst ou MoveLast, il le demeure. Si vous utilisez la méthode MovePrevious quand le premier enregistrement est en cours, la valeur True est affectée à la propriété BOF et l'enregistrement actuel n'est pas défini. Si vous utilisez de nouveau la méthode MovePrevious, une erreur se produit et la propriété BOF conserve la valeur True.

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