Vous êtes sur la page 1sur 235

A la fois simple, pratique et complet, ce livre sadresse aux dveloppeurs et aux utilisateurs avertis souhaitant crer des applications

professionnelles conviviales, fiables et performantes sous Access. Outre les lments de base du langage VBA vous permettant de crer vos
propres procdures et fonctions, vous apprendrez manipuler vos donnes en utilisant les objets DAO ou ADO et le langage SQL,
personnaliser vos formulaires et tats, concevoir un ruban Access spcifique votre application, piloter les autres applications Office 2007
via la technologie Automation, exporter des informations sur Internet (au format XML ou HTML) et utiliser les API Windows.
En plus des nombreux exemples fournis dans cet ouvrage - en tlchargement sur notre espace Livres (www.eni-livres.com) - le dernier
chapitre vous guide dans la cration dune mini-application Access.
Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11
Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non
destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou
reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette
reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal.
Copyright Editions ENI
VBAAccess2007
Programmer sous Access

MichleAMELOT
Rsum
L'auteur
Consultante et formatrice, Michle Amelot est spcialise dans la cration de logiciels spcifiques autour des technologies Microsoft.
Elle accompagne des quipes de dveloppement dans la conduite de leurs projets. Cest, entre autres, cette connaissance approfondie
des besoins des utilisateurs et des dveloppeurs, qui lui permet dans ses ouvrages de faciliter lapprentissage et la pratique de la
programmation en langage VBA.
- 1 - ENI Editions - All rigths reserved
Introduction
Access2007disposedulangagedeprogrammationVisualBasicEditionApplication(VBA)quiluipermetd'tendre
sesfonctionnalitspourvousoffrirlemeilleurdesesperformances.
C'est un langage puissant, qui ne prsente aucune difficult pour tre compris par les dbutants. Les fonctions
deVBAsontdrivesengrandepartiedeVisualBasicauxquelless'ajoutentdesinstructions(objets,mthodes,
fonctions...)spcifiques,ncessaireslamanipulationdesobjetsd'Access.
Pourbienexploiterlecontenudecemanuel,ilestimpratifd'avoirmanipulAccess2007entantqu'utilisateur,
c'estdiresavoirgrer(crer,modifier,supprimer,manipuler)lestables,lesrequtes,lesformulaires,lespages
d'accsauxdonnesetlestats.Desconnaissancesgnralesenprogrammationsontgalementprrequises.
- 1 - ENI Editions - All rigths reserved
Rappels
UnebaseAccessestconstitued'ununiquefichierportantl'extension.ACCDBetcontenantlesdiffrentsobjets
del'application.Cesobjetssont:
Lestables
Ellescontiennentlesdonnesdelabaseetpeuventtreenliaisonlesunesaveclesautres.
Lesrequtes
Ellespermettentd'effectuer:
- des slections et des tris sur les tables,
- des calculs simples et des analyses croises,
- des actions (ajout, suppression, mise jour d'enregistrements, cration de tables),
- des oprations SQL.
Lesformulaires
Ilssontutilisspourconsulteroumettrejourlesdonnes.
Lestats
Ilssontutilisspourimprimerdesrapports,depuislasimplelisted'unetablejusqu'desrapportspluscomplexes
comprenantdesregroupementsd'enregistrementsetdescalculs.
Lesmacros
Elles permettent l'automatisation de plusieurs tches avec un langage particulier mais ne permettent pas
d'atteindrelapuissancededveloppementdeVBA.
Lesmodules
Ils contiennent une partie du code VBA de l'application, savoir des dclarations, des fonctions, des
procdures...

- 1 - ENI Editions - All rigths reserved
PrincipesfondamentauxdeVBA
VBAprsenteunenvironnementdeprogrammationorientobjet.
Un objet est une entit autonome possdant des caractristiques (proprits : taille, couleur, valeur...) et des
comportements (mthodes) qui lui sont propres. Certains objets possdent une reprsentation visuelle
(Formulaire,Etats...),tandisqued'autresnesontaccessiblesqu'encodeVBA(DBEngine,Container...).
Laplupartdesobjetsvisuelsontlapossibilitderagirdesvnements(surouverture,aprsmisejour...).
La programmation VBA permet d'induire, en fonction des vnements, des comportements particuliers sur les
objets par le code : mthodes, procdures et fonctions. Par ce biais, elle facilite l'criture de code car elle
repose sur une conception modulaire. Elle permet ainsi une grande souplesse de fonctionnement et une
maintenanceplusaise.
Structured'unobjet

vnement:Actionutilisateurousystmeagissantsurunobjetetdclenchantlecodecorrespondant.
Mthode:Codeprdfiniserapportantuntyped'objet.
Procdure:Squenced'instructionsnerenvoyantpasdevaleur.
Fonction:Squenced'instructionsrenvoyantunevaleur.

- 1 - ENI Editions - All rigths reserved
Lesnouveautsd'Access2007
Access2007faitpartiedelasuitelogicielleMicrosoftOffice2007(galementappeleOffice12)etbnficiepar
consquentdelaplupartdesamliorationsdecetteversion:
- Nouvelle interface utilisateur : ruban et onglets regroupant toutes les commandes et remplaant les menus et barres d'outils.
- Partage efficace des informations entre applications Office (notamment change d'informations entre Access et Outlook et
Access et SharePoint).
- Thmes Office permettant de personnaliser aisment la prsentation des documents.
- Enregistrement des fichiers au format pdf et xps...
D'autresnouveautsonttapportesAccess2007:
- Nouveaux modles d'applications compltes ;
- Volet de navigation ;
- Tris et filtrages optimiss ;
- Dispositions permettant de personnaliser la prsentation des formulaires et tats;
- Nouveaux types de champs : champs plusieurs valeurs, type de donnes "Pice jointe" permettant de stocker des
informations provenant de tout type de fichier, texte enrichi dans les champs mmo...
Contrairementl'interfaced'Access,l'environnementdedveloppementaconservsesmenusetbarresd'outils.
Toutefois, la documentation en ligne a t considrablement amliore : aspect de Visual Studio, exemples de
codedetcheetmodleobjetenrichi(informationssurleschangementsparrapportauxversionsprcdentes).

- 1 - ENI Editions - All rigths reserved
PassagedesmacrosVBA
Lesmacrosreprsententunemanirefaciledegrerdesenchanementsd'actionssimples,telsquel'ouvertureet
lafermeturedeformulaires.
ToutefoisVBAprsentebiend'autresavantages:
- il facilite la maintenance des bases de donnes car les procdures vnementielles Visual Basic sont intgres dans la
dfinition du formulaire ou de l'tat,
- il conforte et amliore la gestion des erreurs,
- il permet d'accomplir des actions au niveau du systme,
- il autorise la manipulation d'un seul enregistrement la fois,
- il accepte le passage d'arguments au code en cours d'excution.
Toute macro peut tre convertie automatiquement en code VBA.
Conversiondemacrosdansunformulaireouuntat
I Dans le volet de navigation, cliquez avec le bouton droit de la souris sur le formulaire ou l'tat, puis cliquez sur Mode cration.
I Activez l'onglet Outils de base de donnes du ruban.
I Cliquez sur l'icne Convertir les macros de formulaire en Visual Basic ou Convertir les macros d'tat en Visual Basic situe en
bas droite du groupe Macros :

Labotededialoguesuivantes'affichealors :

I Dsactivez si vous le souhaitez les options proposes par dfaut. Il est toutefois recommand de conserver la gestion des erreurs
pour la fiabilit de l'application, et les commentaires pour simplifier la lecture du code.
I Cliquez sur Convertir pour continuer.
Conversiondemacrosglobales
I Dans le volet de navigation, slectionnez la macro que vous souhaitez convertir.
I Activez l'onglet Outils de base de donnes du ruban.
I Cliquez sur l'icne Convertir les macros en Visual Basic situe en bas droite du groupe Macros.
- 1 - ENI Editions - All rigths reserved
I Dans la bote de dialogue, slectionnez les options souhaites.
I Cliquez sur Convertir pour continuer : la macro est convertie en code VBA dans un module intitul "Macro convertie" suivi du nom
de la macro.
Lesmacrosetlascurit
Lesparamtresdescuritdesmacrospermettentdecontrlercequiseproduitlorsquevousouvrezunebase
dedonnesAccesscontenantunemacro.
Modificationdesparamtresdescurit
Par dfaut, lorsque vous installez Access, les macros sont dsactives. Si vous ouvrez un classeur contenant
desmacros,l'avertissementsuivantestaffichdanslabarredesmessages:

Sivouscliquezsur Options,unebotededialoguedescurits'affichepourvouspermettred'activerlesmacros
contenuesdansvotrebaseAccess.Vouspouvezalorsslectionnerl'optionActivercecontenuetcliquersurle
boutonOK:lesmacrossontalorsactivesetl'alertedescuritdisparat.
VouspouvezgalementmodifierlesparamtresdescuritpourtouteslesbasesdedonnesAccessdelafaon
suivante:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Paramtres des macros dans le menu de gauche.
En cas de changement des paramtres de scurit, la nouvelle option choisie s'appliquera toutes les bases de donnes Access
l'exclusion de la base actuellement active. Pour l'appliquer cette base, vous devez la fermer puis l'ouvrir nouveau.
Descriptiondesdiffrentesoptionsdescurit
Dsactivertouteslesmacrossansnotification
Touteslesmacrosettouteslesalertesdescuritsontdsactives.
Dsactivertouteslesmacrosavecnotification
Optionpardfaut.Lesmacrossontdsactivesmaisl'alertedescuritestaffiche.
Dsactivertouteslesmacrosl'exceptiondesmacrossignesnumriquement
Si les macros d'un classeur sont signes numriquement par un metteur approuv, les macros peuvent tre
excutes. Si l'metteur n'a pas t approuv, une notification est affiche : il est alors possible d'activer les
macros signes ou d'approuver l'metteur. Les macros non signes numriquement ne pourront pas tre
actives.
Activertouteslesmacros
Si cette option est slectionne, toutes les macros sont actives. Il n'est pas recommand d'utiliser ce
paramtreenpermanence.
Quelle que soit l'option choisie, si un logiciel antivirus fonctionnant avec Microsoft Office System 2007 est install, les classeurs
- 2 - ENI Editions - All rigths reserved
contenant des macros sont analyss avant d'tre ouverts.
Editeursapprouvs
LesapplicationsAccessdveloppespardesditeursapprouvssecaractrisentparlescritressuivants:
- Le code est sign par le dveloppeur l'aide d'une signature numrique ;
- La signature numrique est valide ;
- La signature numrique est effective (non expire) ;
- Le certificat associ la signature numrique a t mis par une autorit de certification reconnue.
PourajouterunditeurlalisteEditeursapprouvs:
I Activez l'option Dsactiver toutes les macros avec notification dans les paramtres de scurit (cf. Gnralits Passage des
macros VBA Les macros et la scuritModification des paramtres de scurit cidessus).
I Ouvrez une base de donnes Access dont le code est sign par un Editeur approuv.
I Cliquez sur le bouton de commande Approuver tous partir de l'diteur.

Vouspouveztoutmomentconnatrelalistedesditeursapprouvsdelafaonsuivante:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Editeurs approuvs dans le menu de gauche.
IlestgalementpossiblededsactiverunditeurapprouvencliquantsurleboutonSupprimer.
Emplacementsapprouvs
Toutfichierenregistrdansunemplacementapprouvpeuttreouvertsansl'interventionduCentredegestion
delaconfidentialit.
Vous pouvez tout moment ajouter un dossier dans la liste des Emplacements approuvs de la faon
suivante:
- 3 - ENI Editions - All rigths reserved
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Emplacements approuvs dans le menu de gauche.
I Cliquez sur Ajouter un nouvel enregistrement.
I Compltez les informations de la bote de dialogue Emplacement de Microsoft Office approuv.

I Cliquez sur le bouton OK pour ajouter l'emplacement.

- 4 - ENI Editions - All rigths reserved
L'environnementdedveloppementIDE
L'IDE (Integrated Development Environment) est l'environnement dans lequel vous pouvez saisir, modifier et
testervotrecodeVBA.CetenvironnementestgalementappelVBE(VisualBasicEditor).
L'IDEmetvotredispositiondenombreuxoutilsquifacilitentlaprogrammationetlamiseaupointducodeVBA :
outilsdedbogage,assistancelasaisie,explorateurd'objets...
- En utilisant la combinaison de touches Ctrl F11.
- En cliquant sur l'icne situe dans l'onglet Outils de base de donnes.
- En slectionnant une procdure vnementielle depuis une feuille de proprits dans un formulaire ou un tat.
Fentre de l'environnement IDE

Toutes les fentres de l'environnement IDE peuvent tre affiches partir du menu Affichage.
Labarred'outilsStandard(1)


1 Afficher Access
2 Insrer un module, un module de classe ou une procdure (Function ou Sub)
3 Enregistrer
4 Couper
- 1 - ENI Editions - All rigths reserved
5 Copier
6 Coller
7 Rechercher
8 Annuler
9 Rtablir
10 Excuter
11 Arrt
12 Rinitialiser
13 Mode cration
14 Afficher l'explorateur de projets
15 Afficher la fentre Proprits
16 Afficher l'explorateur d'objets
17 Afficher la bote outils
18 Aide sur Microsoft Visual Basic
19 Position courante dans la fentre de Code
L'Explorateurdeprojet(2)
Tous les modules de la base de donnes ou du projet VBA sont affichs dans l'explorateur de projets, selon une
structurearborescente.Ilssontregroupsentroisensembles:
- les modules de formulaires ou d'tats,
- les modules standards,
- les modules de classe indpendants.
LafentreProprits(3)
Elle permet d'afficher les proprits des diffrents modules. Pour afficher les proprits d'un formulaire ou d'un
tat, celuici doit tre ouvert dans Access si ce n'est pas le cas, slectionnez le formulaire ou l'tat dans
l'explorateurdeprojetetchoisissezl'optionObjetdumenuAffichage.
LafentreCode(4)
Danscettefentresetrouventdeuxzonesdelistedroulantes :
- la zone objet (10) affiche la liste les objets du module,
- la zone procdure (11) affiche les procdures ou les vnements de l'objet slectionn dans la zone objet. Les vnements
dj utiliss apparaissent en gras.
Lecomplmentautomatiqued'instructions(5)
Le complment automatique d'instructions prsente les informations qui sont le complment logique de
l'instructionauniveaudupointd'insertion.
Par exemple, la liste droulante des mthodes et proprits disponibles pour un objet s'affiche automatiquement
lorsquevoustapezlenomdel'objetsuivid'unpoint.
Si cette liste n'est pas active, slectionnez Options dans le menu Outils et cochez la case Complment
automatiquedesinstructionsdel'ongletditeur.
LafentreExcution(6)
Ellepermetd'afficherlesvaleursdesvariables,delesmodifieretd'excuterdesinstructions.
Les fentres Excution, Variables locales et Espions sont utilises lors du dbogage de l'application.
- 2 - ENI Editions - All rigths reserved
LafentreVariableslocales(7)
Ellecontienttouteslesvaleursdesvariablesaccessiblesdanslaporteencours.
LafentreEspions(8)
Elleaffichelesvaleursdesvariablesquionttdfiniescommevariablesespions.
L'Explorateurd'objets(9)
Ilpermetdevisualiser,pourchaqueobjet,sesproprits,mthodesetconstantes.

- 3 - ENI Editions - All rigths reserved
Configurationdel'diteurVBA
Paramtragedescouleursdel'diteur
Lesmotscls,lesfonctionsetlesinstructionsVBAsontaffichesenbleu,lesobjets,mthodesetpropritsen
noiretlescommentairesenvert.Lesinstructionscontenantdeserreurssontmisesenvidenceenrouge.
Vous pouvez modifier le style (couleurs, police, taille) des diffrentes parties du code. Pour cela, slectionnez
OptionsdanslemenuOutilsetcliquezsurl'ongletFormatdel'diteur.

Paramtragedelaprsentationducode
Diffrents outils, comme la vrification automatique de la syntaxe, la dclaration obligatoire des variables, le
complmentautomatiqued'instructions...facilitentlasaisieetlamiseaupointducodeVBA.
Pouractivercesoutils,slectionnezOptionsdanslemenuOutilsetcliquezsurl'ongletditeur.
- 1 - ENI Editions - All rigths reserved


- 2 - ENI Editions - All rigths reserved
Rfrenceauxobjets
Pour pouvoir utiliser un objet d'accs aux donnes, un objet d'automation, ou un contrle ActiveX spcifique,
vous devez rfrencer la bibliothque d'objet correspondante. Une bibliothque d'objets est gnralement un
fichierDLLouOCXquicontientlecodedel'objet.
Pouractiverunerfrenceunebibliothque,slectionnezl'optionRfrencesdanslemenuOutils.

Vous pouvez ajouter des rfrences en cliquant sur le bouton de commande Parcourir.

- 1 - ENI Editions - All rigths reserved
Crationd'uneprocdureenVBA
Cettesectionvavousguiderpaspasdanslacrationd'unepremireprocdureenVBA.
Cette procdure demande l'utilisateur de saisir une date sous forme abrge (19/06/07), contrle la date et
l'affichedansunformatdatecomplet(mardi19juin2007).
tape1:crationd'unnouveaumodule
DepuisAccess:
I Activez l'onglet Crer du ruban.
I Cliquez sur la flche situe en bas de l'icne Macro puis choisissez l'option Module.

Depuisl'environnementVBE:
I Slectionnez l'option Module du menu Insertion
ou
depuis la fentre Explorateur de projets, cliquez avec le bouton droit de la souris et slectionnez Insertion puis Module partir du
menu contextuel.
tape2:attribuerunnomaumodule
Pardfaut,lemodulecrestintitulModule1(ouModulesuividupremiernumrodisponiblesid'autresmodules
ontdjtscrsetnonrenomms).
Pourmodifierlenomdumodule :
I Slectionnez le module dans la fentre Explorateur de projet.
I Dans la fentre Proprits (cliquez sur F2 si la fentre Proprits n'est pas affiche), modifiez la valeur de la proprit (Name).

tape3:Crationd'uneprocdure
I Double cliquez sur le module pour afficher la fentre de VBA associe.
I Saisissez le code suivant dans la fentre VBA:
- 1 - ENI Editions - All rigths reserved

I Cliquez sur l'icne de la barre d'outils Standard pour enregistrer la procdure.
tape4:Testdelaprocdure
Pourexcuterlecodedelaprocdure :
I Positionnez le curseur de la souris sur le code de la procdure saisie.
I Cliquez sur l'icne de la barre d'outils Standard ou utilisez la touche F5.
I Saisissez une date dans la bote de dialogue affiche et cliquez sur le bouton de commande OK :

Lemessagesuivantestalorsaffich:
- 2 - ENI Editions - All rigths reserved

I Cliquez sur le bouton de commande OK.
Le jour de la semaine tant un lundi, le message suivant apparat :


- 3 - ENI Editions - All rigths reserved
Recommandations
Afin d'optimiser les performances de VBA, certaines techniques peuvent contribuer acclrer la vitesse
d'excutiondevotrecode.
- Les variables doivent toujours tre explicitement dclares.
- Le type des variables doit tre le plus spcifique possible.
- Pour faire rfrence aux proprits, contrles et objets d'accs aux donnes, les variables sont prconises.
- Le mot rserv Me doit tre utilis pour faire rfrence au formulaire ou l'tat au sein d'une procdure vnementielle.
- L'emploi des constantes est recommand chaque fois que possible.
- Les modules doivent tre organiss pour ne pas surcharger la mmoire. Un module est mis en mmoire uniquement si une de
ses procdures est appele par d'autres codes.
- Le code doit tre rgulirement compil.
- 1 - ENI Editions - All rigths reserved
Lesmodules
Ondistinguetroistypesdemodules:
- les modules Microsoft Access Objets de classe,
- les modules standards,
- les modules de classe indpendants.
Lalistedecesmodulesestaffichedefaonhirarchiquedansl'explorateurdeprojetsdel'interfaceVBA.

Si l'explorateur de projet n'est pas affich, choisissez l'option Explorateur de projets du menu Affichage ou utilisez le raccourci-
clavier CtrlR.
Les modules Microsoft Access Objets de classe contiennent les procdures vnementielles associes aux
formulairesettats.
Lesmodulesstandards (ou modules) sont composs d'une ou de plusieurs procdures pouvant tre appeles
endenombreusescirconstancespartirdesdiffrentsmodules.
Seuls les modules standards apparaissent dans la liste des modules du volet de navigation.
Il est recommand de regrouper dans un ou plusieurs modules les procdures "utilitaires" pouvant tre utilises par diffrentes
applications (ex: traitement des dates). Ces modules pourront ensuite tre exports dans d'autres bases Access partir de l'option
Exporter un fichier du menu Fichier.
Lesmodulesdeclasseindpendantssontutilisslorsdelacrationdeclassesd'objets.Laprogrammation
based'objetsseradtailledanslechapitreObjetsetcollections.
LeslmentsdulangageVisualBasicdcritsdanscechapitrepeuventtreutilissdanslesdiffrentsmodules.

- 1 - ENI Editions - All rigths reserved
Lesprocdures
Les procdures sont des sousprogrammes qui permettent de dcomposer une tche de programmation
complexeenunesuitedetchespluspetitesetplussimples.
Elles permettent d'organiser le code l'intrieur des modules afin d'obtenir un code plus facile maintenir et
facilementrutilisable.
DansVBAAccess2007,ilexistetroistypesdeprocdures:
- les procdures Sub (pour sub routine) appeles sousprogrammes,
- les procdures Function appeles fonctions,
- les procdures Property appeles procdures de proprit.
Dans ce chapitre, nous utiliserons uniquement les procdures Sub et Function qui sont les plus courantes (les
procduresdepropritserontprsentesdanslechapitre Objetsetcollections).
Ilexistedespointscommunsentrecesdeuxprocdures :
- elles contiennent des instructions et/ou des mthodes VBA,
- elles acceptent des arguments,
- elles peuvent tre appeles depuis d'autres fonctions ou procdures Sub.
Certainescaractristiquessontspcifiquesauxfonctions:
- elles peuvent retourner des valeurs,
- elles peuvent tre appeles depuis une macro.
LesprocduresSub
IlexistedeuxtypesdeprocduresSub:
- les procdures Sub gnrales
- les procdures Sub vnementielles.
Une procdureSubgnrale est une procdure dclare dans un module standard ou au niveau gnral d'un
moduledeformulaireoud'tat.L'appeld'unetelleprocdureestexplicitementdfinidanslecodeduprogramme.
Exemple
Cette procdure gnrale demande l'utilisateur de confirmer son souhait de quitter l'application, et quitte Access si l'utilisateur
rpond Oui.
Ce code peut tre appel partir de tout bouton de commande ou option de menu permettant de quitter l'application.
Private Sub Quitter_Appli()
If Msgbox ("Voulez-vous quitter l'application ?",_
VbQuestion + VbYesNo) = vbYes Then
Quit
End If
End Sub
- 1 - ENI Editions - All rigths reserved
Une procdureSubvnementielleestuneprocdureassocieunvnementd'unobjet.D'ailleurssonnom
est compos du nom de l'objet activ, suivi du caractre soulign (_) et du nom de l'vnement. L'appel d'une
telleprocdureestimplicite,c'estdirequelaprocduren'estexcutequelorsquel'vnementassocialieu.
Exemple
Cette procdure vnementielle permet d'afficher le formulaire "Employs" lorsque l'utilisateur clique sur un bouton de commande
cmdEmploys.
Certaines procdures Sub vnementielles peuvent tre gnres automatiquement partir d'assistants (ex : assistant boutons de
commande).
LesprocduresFunction
Les procduresFunction,pluscourammentappeles fonctions,renvoientunevaleur,tellequelersultatd'un
calcul.Lavaleurretournedoitporterlenomdelafonction.
Ce sont les seules procdures pouvant tre appeles depuis une macro.
Le langage Visual Basic comporte de nombreuses fonctions intgres telles que les fonctions se rapportant aux
dates(day,week,year,format...).
Enplusdecesfonctionsintgres,vouspouvezcrervospropresfonctionspersonnalises.
Exemple
Cette fonction demande l'utilisateur de confirmer son souhait de quitter l'application, et renvoie True si l'utilisateur rpond Oui et
False sinon.
Dclarationdesprocdures
Syntaxed'uneprocdureSub
[Private | Public | Friend] [Static] Sub NomProc
([liste d'arguments])
<Squences d'instructions>
End Sub
Syntaxed'uneprocdureFunction
[Private | Public | Friend] [Static] Function
NomProc ([liste d'arguments]) [As Type]
<Squences d'instructions>
End Function
PourcreruneprocdureSubouFunction,vousdevezrespecterlestapessuivantes:
- dterminez la porte de la procdure,
- dclarez la procdure en fonction de son type avec le mot cl Sub ou Function, suivi du nom de la procdure,
Private Sub cmdEmploys_Click()
Docmd.OpenForm "Employs"
End Sub
Function Quitter_Appli() As Boolean
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
Quitter_Appli = True
Else
Quitter_Appli = False
End If
End Function
- 2 - ENI Editions - All rigths reserved
- dfinissez les arguments que vous voulez passer en paramtres la procdure en les indiquant entre parenthses aprs le nom
de la procdure,
- s'il s'agit d'une fonction, prcisez ventuellement le type de la valeur retourne aprs le mot cl As,
- rdigez le code permettant d'effectuer le traitement souhait. Utilisez ventuellement Exit Sub ou Exit Function pour sortir de
la procdure. S'il s'agit d'une fonction, affectez le rsultat au nom de la fonction,
- terminez la procdure par End Sub ou End Function.
Portedesprocdures
Laported'uneprocduredfinitl'tenduedesonutilisation.
Uneprocdurepublique(dclareaveclemotclPublic)peuttreappeledepuistoutmodule,touteprocdure
vnementielleoutoutemacrodelabasededonnes.
Uneprocdure prive(dclareaveclemotcl Private)nepeuttreappelequedepuisuneprocdureausein
dummemodule.
LaprocdureFriendestutiliseuniquementdanslesmodulesdeclasse.
LemotclStaticindiquequelesvariableslocalesdelaprocduresontprservesentrelesappels.
Enl'absencedesmentionsPublic,PrivateouFriend,lesprocduressontpubliquespardfaut.
Argumentsdesprocdures
Les arguments sont utiliss pour transmettre aux procdures des paramtres sous forme de donnes. Le nombre
d'argumentspeutvarierdezroplusieurs.
Pour dclarer un argument, vous pouvez simplement spcifier son nom. Nanmoins, la syntaxe complte de
dclarationd'unargumentestlasuivante:
[Optional] [ByVal | Byref] [ParamArray]
<variable> [As type]
Optional:indiquequel'argumentestfacultatif.Touslesargumentsfacultatifsdoiventtresituslafindela
listedesargumentsettredetypevariant.
Byval:indiquequel'argumentestpassparvaleur.Laprocdureaccdeunecopiedelavariablesavaleur
initialen'estdoncpasmodifieparlaprocdure.
Byref (option par dfaut):indiquequel'argumentestpassparrfrence.Laprocdurepeutainsiaccder
lavariableproprementditesavaleurrellepeut,decefait,tremodifieparlaprocdure.
ParamArray:utilisuniquementpourledernierargumentdelaliste,indiquequeceluiciestuntableaufacultatif
d'lmentsdetypeVariant.IlnepeuttreutilisaveclesmotsclsByVal,ByRefouOptional.
Variable:prciselenomdel'argument.Pourlesvariablestableau,ilnefautpasprciserlesdimensions.
Type:prciseletypededonnesdel'argumentpasslaprocdure(Byte,Boolean,Integer,Long...).
Lesargumentsnomms
Lepassaged'argumentsuneprocdureentenantcomptedeleurordred'apparitionestparfoisdifficilemettre
enuvre,notammentlorsquecertainsparamtressontfacultatifs.Demme,lalisibilitdesappelsdeprocdures
comportantplusieursparamtresn'estpastoujoursvidente.
Les arguments nomms facilitent le passage des arguments en prsentant les avantages suivants:
- 3 - ENI Editions - All rigths reserved
- l'ordre des arguments nomms n'a pas d'importance,
- les arguments facultatifs peuvent tre omis.
Lasyntaxedesargumentsnommsest :
NomArgument := Valeur
Exemple
peut tre transform en :
De mme l'ordre des paramtres peut tre modifi:
Appeld'uneprocdure
Syntaxe
[Call] NomProc [liste d'arguments]
SilemotclCallestindiqu,vousdevezplacerlalisted'argumentsentreparenthses.
Pourstockerlersultatd'unefonctiondansunevariable,utilisezlasyntaxesuivante:
<variable> = NomProc ( [liste d'arguments] )
Exemplesdeprocdures
Lorsquel'utilisateurcliquesurleboutondecommandecmdCalculduformulairedesaisied'unefacture,lemontant
delaremisedoittrecalculdelafaonsuivante:
- 5% du montant de la facture si celuici est suprieur ou gal 5000,
- 2% du montant de la facture si celuici est compris entre 1000 et 5000,
- 0 si le montant de la facture est infrieur 1000.
Procdurevnementielle
La fonction Remise est appele, avec comme argument, le montant de la facture (contenu dans la zone de texte txtMntFact du
formulaire). La remise calcule sera directement affiche dans la zone de texte txtMntRem.
Fonction
If MsgBox("Voulez-vous quitter l'application ?", _
vbYesNo + vbQuestion, "Gestion des ventes") = vbYes Then
Application.Quit
End If
If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _
Buttons:=vbYesNo + vbQuestion, _
Title:="Gestion des ventes") = vbYes Then
Application.Quit
End If
If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _
Title:="Gestion des ventes", _
Buttons:=vbYesNo + vbQuestion) = vbYes Then
Application.Quit
End If
Private Sub cmdCalcul_Click()
txtMntRem = Remise (txtMntFact)
End Sub
- 4 - ENI Editions - All rigths reserved
Si le montant de la facture est infrieur 1000, Remise conserve sa valeur initiale, soit zro.
LafonctionMsgBox
Cettefonctionafficheunmessagedansunebotededialogue,ventuellementaccompagnd'uneicneetdeun
troisboutons.
Syntaxedel'instruction
Utiliselorsqu'iln'yaqu'unseulbouton.
MsgBox <message> [, [<type>][, <titre>]]
Syntaxedelafonction
Utiliselorsqu'ilyaplusd'unbouton.Ellepermetdesavoirquelboutonatactivgrcesavaleurderetour.
MsgBox (<message> , [<boutons>][, <titre>]
[,helpfile, context])
message :Textedumessagedanslabotededialogue.
boutons : Expression numrique qui reprsente la somme des valeurs spcifiant les boutons afficher, le style
d'icneutiliser,l'identitduboutonpardfaut,ainsiquelamodalit.
titre:Textedanslabarredetitre.
helpfile:Fichierd'aideutiliser.
Context:Rubriquedel'aideconcerne.
Valeursdel'argumentBoutons
Private Function Remise(Montant as Currency) as Currency
Const Taux1 = 0.05
Const Taux2 = 0.02

If Montant >= 5000 then
Remise = Montant * Taux1
Else
If Montant >= 1000 then
Remise = Montant * Taux2
End If
End If
End Function
Constante
symbolique
Valeur Signification
Nombreettypedeboutons
vbOKOnly 0 AfficheleboutonOKuniquement.
vbOKCancel 1 AffichelesboutonsOKetAnnuler.
vbAbortRetryIgnore 2 Affiche les boutons Abandonner,
RecommenceretIgnorer.
vbYesNoCancel 3 Affiche les boutons Oui, Non et
Annuler.
vbYesNo 4 AffichelesboutonsOuietNon.
vbRetryCancel 5 Affiche les boutons Recommencer et
Annuler.
vbMsgBoxHelpButton 16384 Afficheunboutond'aide.
Typed'icne
- 5 - ENI Editions - All rigths reserved
Lesvaleursderetourpossiblessontgalementdfiniespardesconstantes :
Exemples: utilisation de la fonction MsgBox
ou
vbCritical 16
Affichel'icne .
vbQuestion 32
Affichel'icne .
vbExclamation 48
Affichel'icne .
vbInformation 64
Affichel'icne .
Boutonpardfaut
vbDefaultButton1 0 Premierbouton.
vbDefaultButton2 256 Deuximebouton.
vbDefaultButton3 512 Troisimebouton.
vbDefaultButton4 768 Quatrimebouton.
Modalit
vbApplicationModal 0 Applicationmodale.
L'utilisateur doit rpondre au message
affich dans la zone de message avant
de pouvoir continuer travailler dans
l'applicationencours.
vbSystemModal 4096 Systmemodal.
Toutes les applications sont
interrompues jusqu' ce que l'utilisateur
rponde au message affich dans la
zonedemessage.
Prsentation
vbMsgBoxHelpButton 16384 Ajoute le bouton "Aide" la zone de
message.
vbMsgBoxSetForeground 65536 Affiche la fentre message au premier
plan.
vbMsgBoxRight 524288 Aligneletextedroite.
vbMsgBoxRtlReading 1048576 Dfinit un ordre de lecture de droite
gauche pour les systmes hbreux et
arabes.
Constante Valeurderetour Boutonchoisi
vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Recommencer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non
StrRep = MsgBox ("Voulez-vous continuer ?", 292, _
"Confirmation")
StrRep = MsgBox ("Voulez-vous continuer ?", _
vbYesNo + vbQuestion + vbDefaultButton2, _
- 6 - ENI Editions - All rigths reserved

Utilisation de l'instruction MsgBox


"Confirmation")
MsgBox "Rsultat faux",vbCritical,"Erreur"
- 7 - ENI Editions - All rigths reserved
Lesvariables
Lestypesdevariables
Lesvariablespermettentdestockerdesvaleursintermdiairestoutmomentdel'excutionducodeVBAafinde
lesexploiterultrieurementpoureffectuerdescalculs,descomparaisons,destests
Les variables sont identifies par un nom, permettant de faire rfrence la valeur qu'elles contiennent, et un
typedterminantlanaturedesdonnesqu'ellespeuventstocker.
Numriques
Chanesdecaractres
LetypeestString.Ilexistedeuxtypesdechanes:
- les chanes de longueur variable peuvent contenir environ 2 milliards (2
31
) de caractres.

- Les chanes de longueur fixe peuvent contenir de 1 environ 64000 (2
16
) caractres.

Exemple
Boolen
>
Type tendue Taille
en
octets
Byte 0255 1
Integer
(entier)
3276832767 2
Long
(entierlong)
2147483648
2147483647
4
Single
(relsimple
virgule
flottante)
3,402823E381,401298E45
(valeursngatives)
1,401298E453,402823E38
(valeurspositives)
4
Double
(reldouble
virgule
flottante)
1,79769313486231E308
4,94065645841247E324
(valeursngatives)
4,94065645841247E324
1,79769313486231E308
(valeurspositives)
8
Currency
(montaire
virgulefixe)
922337203685477,5808
922337203685477,5807
8
Decimal +/79 228 162 514 264 337 593 543950 335
sanssparateurdcimal
+/7,9228162514264337593543950335
avec 28 chiffres droite du sparateur
dcimal le plus petit nombre diffrent de zro
est+/0.0000000000000000000000000001
12
'Chane de longueur variable
Dim Adresse As String
'Chane de longueur fixe (20 caractres)
Dim Nom As String * 20
- 1 - ENI Editions - All rigths reserved
Letypeest Boolean.LavariablepeutprendrelavaleurTrue(Vrai)ouFalse(Faux)quiestsavaleurpardfaut.
Elleoccupedeuxoctets.
Date
Le type est Date. La variable peut prendre les valeurs de date et d'heure du 1er janvier 100 au 31 dcembre
9999.Elleoccupehuitoctets.
Variant
Letypeest Variant.Lavariablepermetdestockerdesvaleursdedonnesdetoutessortes:dates,nombres
virgule flottante, chanes de caractres, rfrences des objets... Elle occupe seize octets, plus un octet par
caractresilavaleurestunechane.
Objet
Le type est Object. La variable permet de stocker la rfrence un objet sous forme d'une adresse de quatre
octets.
C'estuntypegnrique,maispourobtenirdesperformancessuprieures,ilestsouhaitabled'utiliserpluttlenom
del'objettelqu'ilestdfinidanslazoneClassesdel'explorateurd'objets.
Exemple
Ouverture de base de donnes Access en utilisant le type gnrique Objet ou partir de l'objet Database.
Dfiniparl'utilisateur
Cetypeestutilissurtoutpourladclarationdevariablescontenantplusieurstypesd'informations.Ladfinition
dutypenepeutsefairequedanslasectiondedclarationd'unmodule.
Exemples
Dclaration d'un nouveau type Employs :
Utilisation du type Employs :
Lesdclarationsdevariables
Ilexistedeuxfaonsdedclarerdesvariables:implicitementetexplicitement.
Dclarationimplicite
Ds que VBA rencontre une variable qui n'a pas fait l'objet d'une dclaration explicite, il la dclare de faon
impliciteenluidonnantuntypeVariant.
Dim dbsEmp As Object
Dim dbsArt As Database
Set dbsEmp = OpenDatabase("C:\Application\" _
& "Employs.accdb")
Set dbsArt = OpenDatabase("C:\Application\" _
& "Articles.accdb")
Public Type Employs
Matricule As String * 5
Nom As String * 20
Age As Integer
Service As String * 10
End Type
Dim NewEmploy As Employs
NewEmploy.Matricule = "15253"
...
- 2 - ENI Editions - All rigths reserved
LetypeVariantpermetdestockersuccessivementdanslammevariabledesvaleursdetypediffrent.Letype
delavariablevolueenfonctiondelavaleurquiluiestaffecte.
Dclarationexplicite
Lavariableestdclareavantsonutilisation.
Ilestpossibled'imposerladclarationexplicitedesvariablesenutilisantdanslasectiondedclarationdechaque
module, l'instructionOptionExplicit.PourquecetteinstructionsoitdfiniepardfautdansVBA,activezl'option
DclarationdesvariablesobligatoiredumenuOutilsOptionsongletditeur.
Les dclarations explicites de variables peuvent se faire dans la section de dclarations des modules, ou dans le
corpsd'uneprocdureoud'unefonction.
Ladclarationestraliseparl'unedesquatreinstructionssuivantesutilisantlammesyntaxe:
- au niveau d'une procdure, d'une fonction ou d'un module :
Dim <Nomvariable> [As Type]
Static <Nomvariable> [As Type]
- au niveau d'un module :
Private <Nomvariable> [As Type]
Public <Nomvariable> [As Type]
chaquefoisquel'instructionDimestexcute,lavariableestrinitialise(0pournumrique,videpourString,
EmptypourVariant).S'ilestncessairedegarderlaprcdentevaleur,ilfaututiliserStaticlaplacedeDim.
Si aucun type n'est prcis (ex : dim var), le type par dfaut Variant est affect la variable.
Laportedesvariables
Une variable est dite localeunefonctionouuneprocdure,sielleestdclaredanslecorpsdelafonction
oudelaprocdureavec Dimou Static.Cettevariablen'estpasconnue(visible)endehorsdelafonctionoude
laprocdure.
Unevariablepeuttrevisibledetouteslesprocduresoufonctionsd'unmodule(standard,declasse,formulaire
outat),sielleestdclaredanslasectiondedclarationdumoduleavecPrivate(ouDim).
Unevariableest publiquetoutel'application(c'estdirevisibledepuisn'importequelendroitdel'application),
sielleestdclaredanslasectiondedclarationd'unmoduleavecl'instructionPublic.
Pour faire rfrence, partir d'un module, une variable publique se trouvant dans un autre module de formulaire ou d'tat, il convient
d'utiliser la syntaxe suivante :
Forms!<NomFormulaire>.<NomVariable>
Private Sub Affectation()

' Le type de la variable devient String
var = "Bonjour"
MsgBox TypeName(var)

' Le type de la variable devient Integer
var = 12
MsgBox TypeName(var)

' Le type de la variable devient Double
var = 6.55957
MsgBox TypeName(var)

' Le type de la variable devient Boolean
var = True
MsgBox TypeName(var)

End Sub
- 3 - ENI Editions - All rigths reserved
Reports!<NomEtat>.<NomVariable>
Lestableaux
Untableausedclaredelammefaonquelesvariables,avecdesinstructionsDim,Static,PrivateouPublic.
Un tableau est une variable comportant plusieurs compartiments permettant de stocker autant de valeurs. Par
opposition,unevariableclassiquedsigneuncompartimentdestinuneseulevaleur.
On peut faire rfrence au tableau globalement ou accder individuellement ses lments en utilisant des
indices.
Quel que soit le type des lments, un tableau ncessite 20 octets de mmoire, auxquels viennent s'ajouter
quatreoctetspourchaquedimensionetlenombred'octetsoccupsparlesdonnes.
Siletypededonnesn'estpasspcifi,leslmentsdutableaudclarprennentletypeVariant.
Le premier poste d'un tableau se voit attribuer l'indice 0 par dfaut. Toutefois, il est possible de mettre cette
valeurpardfaut1enutilisant,ensectiondedclaration,l'instructionOptionBase1.
L'utilisationd'uneclauseTopermetgalementdedfinirexplicitementlesindicesdedbutetdefin.
Exemples
Dclaration de diffrents tableaux:

Utilisation d'un tableau deux dimensions.
L'exemple suivant permet de crer une table de multiplication : chaque lment du tableau Multiplie est gal au rsultat de la
multiplication de ses indices. Chaque ligne de la table est affiche dans la fentre excution (mthode Print de l'objet Debug).
' 12 lments indics de 0 11
Dim Remise (11) As Single
' 12 lments indics de 1 12
Dim Frais (1 To 12) As Single
' 2 dimensions : la premire indice de 0 10 et
' la seconde de 1 15
Dim Train (10,1 To 15) As String
Option Base 1
' 12 lments indics de 1 12
Dim Frais (12)
Sub Affiche_Tableau()
Dim Multiplie(1 To 10, 1 To 10) As Integer
Dim i, j As Integer
Dim strResult As String

' 1re ligne de la table de multiplication
For i = 1 To 10
strResult = Format(i, "000") & " "
Next i
Debug.Print strResult
' Initialisation du tableau
For i = 1 To 10
strResult = Format(i, "00")
For j = 1 To 10
Multiplie(i, j) = i * j
strResult = strResult & " " & Format(Multiplie(i, j),
"000")
Next j
Debug.Print strResult
Next i

' Renvoie le rsultat de 4 * 7
MsgBox "4 * 7 = " & Multiplie(4, 7)

' Renvoie le rsultat de 7 * 4
MsgBox "7 * 4 = " & Multiplie(7, 4)

- 4 - ENI Editions - All rigths reserved
Rsultat dans la fentre d'excution.

Lestableauxdynamiques
Il s'agit de tableaux dont les dimensions sont dfinies l'excution. Ils permettent l'optimisation de la place
occupeenmmoire.
Dclaration :
Utilisation :
Avant de l'utiliser, il faut le dimensionner l'aide de l'instruction Redim :
Il est possible d'utiliser l'instruction ReDimpourmodifierletableaudynamiqueaussisouventquencessaire.Par
dfaut,lesvaleursprsentesdansletableausontcrases.L'instructionReDim Preservepermetd'tendreun
tableautoutenconservantlesvaleursexistantes.
Lesconstantes
Uneconstantereprsenteunevaleurnumriqueoudetypechanequinedoitpastremodifie.
L'instruction Constpermetdedclareruneconstanteetdedfinirsavaleurfixe.Unefoisdclare,laconstante
nepeuttremodifienirecevoirunenouvellevaleur.
Ladclarationd'uneconstanteestralisedansuneprocdureoudanslasectiondclarationd'unmodule.
Lesconstantesdeniveaumodulesontprivespardfaut.
Pourdclareruneconstantedeniveaumodulepublique,ilestncessairedefaireprcderl'instructionConst du
motclPublic.
Exemple
Lesconstantesintrinsques

End Sub
Dim Tableau ()
ReDim Tableau (15 To 50)
ReDim Preserve Tableau (15 To 70)
acForm
vbCurrency
- 5 - ENI Editions - All rigths reserved
Lesconstantesintrinsquessontdesconstantesmisesdispositionparlesapplicationsellesmmes. C'est ainsi
qu'Access2003possdesespropresconstantesintrinsquesquisontvisiblespartirdel'explorateurd'objets.
UneconstanteintrinsquepeuttreutilisedansunemacrooudansducodeVisualBasic.
Les constantes intrinsques sont caractrises par un prfixe de deux lettres identifiant la bibliothque d'objets
oestdfinielaconstante.
Prfixedesconstante
Les constantes de la bibliothque Visual Basic sont dcrites dans l'annexe B de cet ouvrage. Pour utiliser les constantes de Microsoft
Office, vous devez slectionner la rfrence "Microsoft Office 12.0 Object Library" (option Rfrences du menu Outils).
Il existe plusieurs catgories de constantes intrinsques (constantes d'action, constantes de procdures vnementielles...).
Exemple
L'exemple suivant montre comment afficher un formulaire et le personnaliser. Il utilise les constantes strNomAppli et strNomSoc
dclares dans le code et plusieurs constantes intrinsques.

Rsultat dans Access : affichage du formulaire employ personnalis.
Bibliothque Prfixe Exemples
Microsoft
Access
ac acForm,acNormal
VisualBasic vb
vbCurrency,
vbYellow
Microsoft
Office
mso msoSortByFileName
- 6 - ENI Editions - All rigths reserved


- 7 - ENI Editions - All rigths reserved
Lesstructuresdedcision
Ilestsouventncessairedetesterdesconditionsspcifiquesavantd'excuterdesinstructions.
Les structures de dcisions, appeles aussi alternatives ou branchements conditionnels, permettent, au terme
d'unevaluation,d'opterpourunblocdecodeouunautre.
Ondistinguedeuxinstructionsdebranchementconditionnel :
- If ... Then ... Else
- Select ... Case
La fonction IIf peut galement tre utilise pour dfinir une valeur en fonction d'une condition.
L'instructionIF
I If
Permetd'excuterdesinstructionsenfonctiondursultatd'unecondition.
LesinstructionsIf...Then...Elsepeuventtreimbriquesautantdefoisquencessaire.
La syntaxe multiligne, avec une indentation approprie, prsente l'avantage d'une plus grande lisibilit.
Syntaxe1(suruneligne)
If <cond.> Then <inst.> [Else <inst.>]
<inst.>peuttreconstitudeplusieursinstructionssparesparlecaractre(:).
Syntaxe2(surplusieurslignes)
If <condition 1> Then
<squence d'instructions 1>
[ElseIf <condition 2> Then
<squence d'instructions 2>]
[Else
<squence d'instructions 3>]
End If
Autrepossibilit
If <condition 1> Then
<squence d'instructions 1>
[Else
If <condition 2> Then
<squence d'instructions 2>
[Else
<squence d'instructions 3>]
End If]
End If
Exemple
Affiche le rsultat de la comparaison entre A et B:
If A>B Then
MsgBox "A>B"
Else
If A = B Then
MsgBox "A=B"
Else
- 1 - ENI Editions - All rigths reserved
L'instructionSelectCase
I Select Case
Excutedessquencesd'instructionsspcifiesenfonctiondelavaleurd'uneexpression.
L'instructionSelectCasepermetderemplaceravantageusementleElseIfdansdesinstructionsIf...Then...Else
lorsdelacomparaisonentreuneexpressionetplusieursvaleurs.
Syntaxe
Select Case <expression tester>
[Case <liste d'expressions 1>
<squence d'instructions 1>]
[Case <liste d'expressions 2>
<squence d'instructions 2>]
[Case Else
<squence d'instructions 3>]
End Select
<liste d'expression>peutprendrelesformessuivantes:
- valeur (ex : Case 10)
- liste de valeurs (ex : Case 1, 5, 10)
- plage de valeurs (ex : Case 1 To 5)
- expression conditionnelle (ex : Case Is >= 5)
Exemple
Affiche un commentaire sur la temprature.
LafonctionIIf
I IIf
Retourneunevaleurenfonctiond'unecondition.
Syntaxe
IIf (<condition>, <valeur si vrai>, <valeur si faux>)
MsgBox "A<B"
End If
End If
Select Case Temprature
Case 0
MsgBox "Glace"
Case 1 To 10
MsgBox "Froid"
Case 11 To 16
MsgBox "Frais"
Case 17, 18, 19
MsgBox "Temprature intrieure " _
& "d'une maison en hiver"
Case 20 To 25
MsgBox "Agrable"
Case Is > 25
MsgBox "Chaud"
Case Else
MsgBox "Temprature non refrence"
End Select
- 2 - ENI Editions - All rigths reserved
Exemple
Ilestpossibled'imbriquerplusieursappelsdefonctionIIf.
Exemple

Dim bln As Boolean
bln = IIf(A = B, True, False)
Dim IntI As Integer
IntI = IIf(A = B, IIf(B = C, 1, 0), 0)
- 3 - ENI Editions - All rigths reserved
Lesstructuresenboucles
Lesstructuresenboucles(ourptitives)permettentderpterl'excutiond'unensembled'instructions.
Ondistingueplusieurstypesdestructuresenboucles:
Do...Loop
While...Wend
For...Next
For Each...Next
Do...LoopetWhile...Wendrptentuntraitementjusqu'cequ'unecertaineconditionsoitralise.
For...Nexteffectueuntraitementunnombredefoisdonn,enfonctiond'uncompteur.
ForEach...Nextpermetdeparcourirleslmentsd'unecollection.
L'instructionDo...Loop
I Do...Loop
Excute une squence d'instructions tant que (While) ou jusqu' ce que (Until) la condition spcifie soit
vrifie.
Syntaxe1
Squenced'instructionsventuellementnonexcute(conditiontesteavantlasquence).
Do [{While | Until} <condition>]
<squence d'instructions>
[Exit Do]
[<squence d'instructions>]
Loop
Syntaxe2
Squenced'instructionsexcuteaumoinsunefois(conditiontesteaprslasquence).
Do
<squence d'instructions>
[Exit Do]
[<squence d'instructions>]
Loop [{While | Until} <condition>]
Exit Do est souvent utilis aprs l'valuation d'une condition interne la boucle et permet de sortir de la boucle sans que la condition
de contrle de la boucle ne soit vrifie.
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
Dim intCpt As Integer
Dim FraisAnnuel As Currency

FraisAnnuel = 0
IntCpt = 0
Do
IntCpt = IntCpt + 1
FraisAnnuel = FraisAnnuel + FraisMensuel (IntCpt)
Loop Until IntCpt = 12

- 1 - ENI Editions - All rigths reserved
L'instructionWhile...Wend
I While...Wend
Excuteunesquenced'instructionstantquelaconditionspcifieestvrifie.
Syntaxe
While <condition>
<squence d'instructions>
Wend
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
L'instructionFor...Next
I For...Next
Permetderpterl'excutiond'unesquenced'instructionsenfonctiond'uncompteur.
Syntaxe
For <compteur> = <dbut> To <fin> [Step <incrment>]
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next [<compteur> [,<compteur2>] [, ...]]
Exit For souvent place aprs l'valuation d'une condition, permet de sortir prcocement de la boucle.
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
LemotclSteppermetd'incrmenteroudedcrmenterlavariabledecompteurd'unpasspcifi.
Exemple
La variable de compteur j est incrmente de 5 chaque itration. la fin de la boucle, total correspond la somme de 5, 10, 15,
MsgBox "Frais Annuels = " & FraisAnnuel
Dim intCpt As Integer
Dim FraisAnnuel As Currency

FraisAnnuel = 0
intCpt = 1
While intCpt <= 12
FraisAnnuel = FraisAnnuel + FraisMensuel (intcpt)
intCpt = intCpt + 1
Wend

MsgBox "Frais Annuels = " & FraisAnnuel
Dim intCpt As Integer
Dim FraisAnnuel As Currency

FraisAnnuel = 0
For intCpt = 1 To 12
FraisAnnuel = FraisAnnuel + FraisMensuel (intCpt)
Next

MsgBox "Les frais annuels sont de :" & FraisAnnuel
- 2 - ENI Editions - All rigths reserved
et 20.
L'instructionForEach...Next
I For Each ... Next
Permetdeparcourirtousleslmentsd'untableauoud'unecollection.
Syntaxe
For Each <lment> In <tableau>/<collection>
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next [lment]
Exemple
Affiche les frais de chaque mois (cf. exemple For Next):

Dim j As Integer
Dim total As Integer

total = 0
For j = 5 To 20 Step 5
total = total + j
Next j

MsgBox "Le total est de " & total
Dim Frais As Currency

For Each Frais In FraisMensuel
MsgBox Frais
Next
- 3 - ENI Editions - All rigths reserved
Lesoprateurs
Les oprateurs permettent d'effectuer des oprations arithmtiques sur des variables et/ou des constantes, de
comparerdesvariablesentreelles,detesterplusieursconditions...
Ondistingueplusieurscatgoriesd'oprateurs:
- les oprateurs arithmtiques,
- les oprateurs de comparaison,
- les oprateurs logiques,
- l'oprateur de concatnation.
L'oprateur d'affectation est le signe d'galit. La valeur de l'expression situe droite du signe gal est affecte la variable situe
gauche du signe. (exemple : IntA = 12, 12 est affect la variable IntA, IntA = IntB * 12, la valeur d'IntB multiplie par 12 est affecte
IntA).
Lesoprateursarithmtiques
Ilspermettentd'effectuerdescalculsarithmtiquespartirdevariableset/oudeconstantesnumriques.
Oprateur Calculralis
+ Addition
Soustraction
/ Divisionaveccommersultatunnombrevirguleflottante
Mod Restedeladivisiondedeuxnombres
\ Divisionaveccommersultatunnombreentier
* Multiplication
^ lvationlapuissance
Lesoprateursdecomparaison
Ilspermettentdecomparerdeuxvaleursnumriquesoudeuxchanesdecaractres.
Oprateur Calculralis
< Infrieur
<= Infrieurougal
> Suprieur
>= Suprieurougal
= gal
<> Diffrentde
L'instructionOptioncompareutiliseauniveaumodulepermetdedfinirlamthodedecomparaisonpardfaut
- 1 - ENI Editions - All rigths reserved
qu'ilconvientd'utiliserlorsdelacomparaisondechanesdecaractres.Ellepeutprendretroisvaleurs:
CompareBinary
(option par dfaut) fournit des comparaisons de chanes bases sur un ordre de tri driv de la reprsentation
binaireinternedescaractres :
A<B<E<Z<a<b<e<z<<<<<...
CompareText
fournit des comparaisons de chanes bases sur un ordre de tri qui ne distingue pas les majuscules des
minuscules:
(A=a)<(=)<(B=b)<(E=e)<(=)<(Z=z)<(=)...
CompareDatabase
fournit des comparaisons de chanes bases sur l'ordre de tri dtermin par l'identificateur de paramtres
rgionauxdelabasededonnescourante.
Lesoprateurslogiques
Ilspermettentdetestersimultanmentdeux(ouplusieurs)valeursboolennesouexpressionsrenvoyantcetype
valeur.Ilssontgnralementutilissavecl'instructionIf.
Oprateur Calculralis
And Si toutes les expressions ont la valeur True, le rsultat est True. Si l'une des expressions a la
valeurFalse,lersultatestFalse.
Or Sil'uneaumoinsdesexpressionsapourvaleurTrue,lersultatestTrue(ouinclusif).
Xor SiuneetuneseuledesexpressionsapourvaleurTrue,lersultatestTrue(ouexclusif).
Not Renvoielecontrairedel'expression.
Eqv RenvoieTruesilesdeuxexpressionssontidentiques.
Exemple
(A>=1)And(A<=9)renvoieTruesiAestcomprisentre1et9,
Not(A>=10)renvoieTruesiAeststrictementinfrieur10,
(A>0)Or(B>0)Or(C>0)renvoieTruesiaumoinsl'unedesvaleursestpositive.
L'oprateurdeconcatnation
L'oprateurdeconcatnationestlesigne&.Ilpermetd'assemblerdeschanesdecaractres,desvaleursetdes
expressions.Lersultatestunechanedecaractres.
Exemple
Concatnation du nom et du prnom spars par un espace:
Prioritdesoprateurs
Lorsque plusieurs oprateurs sont contenus dans une mme expression, chacun est valu dans un ordre
prdfini,appelprioritdesoprateurs.
StrNomPre = Nom & " " & Prenom
- 2 - ENI Editions - All rigths reserved
Les oprateurs sont valus dans l'ordre suivant : oprateurs arithmtiques, oprateurs de comparaison,
oprateurs logiques. Les oprateurs de comparaison ont la mme priorit c'estdire qu'ils sont valus dans
leurordred'apparition,degauchedroite.
Lesoprateursarithmtiquesetlogiquessontvalusdansl'ordredeprioritcidessous(prioritdcroissantede
gauchedroite):
Arithmtique :^,*,/,Mod,+,
Logique :Not,And,Or,Xor,Eqv
Exemple
L'expression "3 + 4 * 5" donne comme rsultat 23. La multiplication (4*5) est effectue avant l'addition ( + 3):
L'utilisation de parenthses permet de modifier l'ordre de priorit afin qu'un lment d'une expression soit valu avant les autres. Les
oprations situes l'intrieur de parenthses sont toujours traites avant les autres. Exemple : l'expression "(3 + 4) * 5" renvoie 35.
L'addition est effectue en priorit. Il est conseill d'utiliser des parenthses pour une meilleure lisibilit du code.

- 3 - ENI Editions - All rigths reserved
Lesrglesd'critureducode
Lescommentaires
Lescommentairespermettentdedocumenterunprogrammeafindelerendrepluslisible.
Syntaxe
Rem <commentaire>
ou
'<commentaire>
Exemple
Lecaractredecontinuation
UneinstructionVBApeuttrecritesurplusieurslignesenutilisantuncaractredecontinuation:lecaractre
desoulignement(_)prcdd'unespace.
Exemple
Bien sr, cet exemple n'est pas digne d'une programmation structure, mais il met en vidence le fait qu'il est
possibledescinderunelignedecoden'importequelendroit.
L'indentation
Ilestimportantd'alignersurlemmeretraitlesinstructionsdemmeniveau.L'entteetlepieddeprocdure
tantalignsgauche,lecontenudoittredcald'uncrandroitel'aided'unetabulation.
Cesindentationsarentlastructuredelaprocdurequidevientainsipluslisible.
Lesnomsdesprocdures,variablesetconstantes
Lesnomsdesprocdures,variablesetconstantesdoiventrespecterlesrglessuivantes:
- ils doivent commencer par une lettre.
- Ils ne doivent pas contenir plus de 255 caractres.
'=======================================================================
Rem Procdure permettant de comparer deux zones
Rem de texte txtA et txtB
'=======================================================================
Private Sub cmdRsultat_Click ()
'si txtA suprieur txtB
If txtA > txtB Then
lblRsultat.Caption = "A>B"
Else
'si txtA gal txtB
If txtA = txtB Then
lblRsultat.Caption = "A=B"
Else
'txtA infrieur txtB
lblRsultat.Caption = "A<B"
End If
End If
End Sub
If A _
> _
b then _
- 1 - ENI Editions - All rigths reserved
- Ils peuvent tre composs de lettres, de chiffres et du caractre "blanc soulign"(_).
- Ils ne peuvent comprendre ni caractres de ponctuation ni espaces.
- Ils ne doivent pas correspondre des mots rservs.
- Ils doivent tre uniques l'intrieur d'une mme porte.
Exemples

Nbclient
Nb_client
Nbclient1
- 2 - ENI Editions - All rigths reserved
Lesconventionsd'appellation
Il est recommand d'utiliser des conventions d'appellation pour les variables, les contrles et les objets. Elles
permettent de standardiser le code et par consquent de le rendre plus lisible et plus facile maintenir par
diffrentsdveloppeurs.
Conventiond'appellationdesvariables
Ilestrecommandd'utiliserdeuxprfixes:
- le premier pour prciser la porte de la variable : g pour globale, m pour module, aucun prfixe pour locale,
- le deuxime pour prciser son type.
Exemple
gstrNomvariable globale de type String
intQuantitvariable locale de type Integer
Typedevariable Prfixe
Boolen bln
Byte byt
Currency cur
Date,heure dtm
Double dbl
Error err
Typedevariable Prfixe
Integer int
Long lng
Object obj
Single sng
String str
Dfiniparl'utilisateur udt
Variant var
Conventiond'appellationdescontrles
Delammefaonquepourlesvariables,lesnomsdecontrlesdesformulairesetdestatsdoiventtreprfixs
selonleurtype.
Contrle Prfixe
DonnesADO ado
- 1 - ENI Editions - All rigths reserved
Casecocher chk
Zonedelistemodifiable(combo) cbo
Boutondecommande cmd
Cadre(frame) fra
Grouped'option grp
Image img
tiquette lbl
Boutond'option opt
Zonedetexte txt
Conventiond'appellationdesobjets
LesobjetsAccessoulesvariablesobjetsserapportantauxobjetsAccesspeuventaussitreprfixs.
Contrle Prfixe
Table tbl
Requte qry
Formulaire frm
tat rpt
Macro mac
Index idx
Champ fld
Collection col
Proprit pty
Pagesd'accsauxdonnes pag
- 2 - ENI Editions - All rigths reserved
Prsentation
VBA Access est un langage de programmation orient objet, mme s'il ne dispose pas de toutes les
fonctionnalitsdeslangagesdecetype.
LaplupartdeslmentsmanipulsdansAccesssontdesobjets:lestables,leschamps,lesenregistrements,les
formulaires...
Les objets sont organiss selon un modle hirarchique : certains objets contiennent des objets qui en
contiennent euxmmes d'autres... Par exemple, l'objet Application est compos de plusieurs objets Form
(formulaires de l'application), qui sont euxmmes composs de plusieurs objets Control (contrles d'un
formulaires).
Unensembled'objetsdemmenatureconstitueunecollection(collection Forms:ensembledesformulairesou
objetsFormdel'application).
Un objet dispose d'un ensemble de caractristiques appeles proprits (ex : taille, couleur pour un contrle
dans un formulaire...) et de comportements ou actions appeles mthodes (ex : la mthode close de l'objet
Formulaire permet de fermer celuici). Il rpond des vnements provoqus par l'utilisateur (ex : clic sur un
boutondecommande)ouparlesystme.
Les classes sont des modles permettant de crer des objets de mme nature. Les objets issus d'une mme
classe hritent systmatiquement de toutes les mthodes, proprits et vnements de leur classe d'origine. Il
estpossibledecrerdesclassesd'objetsavecVBAAccessenutilisantdesmodulesdeclasse.
Ilexisteplusieursensemblesd'objetsdansAccess:
- les objets gnraux (formulaires, tats ...),
- les objets d'accs aux donnes (modle DAO),
- les objets de donnes ActiveX (modle DAO).
Chaque ensemble peut tre reprsent sous forme d'un modle hirarchique. Ce chapitre dcrit plus
particulirement les objets gnraux d'Access, les objets d'accs aux donnes seront abords dans le chapitre
suivant.

- 1 - ENI Editions - All rigths reserved
Lemodleobjetd'Access
Lediagrammeciaprspermetdedistinguerlesprincipauxobjetsglobauxd'Access.

Principalescollections

CommandBars Collection d'objets CommandBar qui reprsentent les
barresdecommandesdel'applicationactive.
COMAddIns Collection d'objets COMAddIn qui fournissent des
informations sur un complment COM inscrit dans le
RegistreWindows.
Forms Collection contenant tous les formulaires (objets Form)
ouverts dans la base de donnes active. Pour rpertorier
tous les formulaires de la base de donnes, qu'ils soient
ouverts ou ferms, utilisez la collection AllForms de l'objet
- 1 - ENI Editions - All rigths reserved
Autrescollections

ObjetsduModle
CurrentProject.
Reports Collection contenant tous lestats (objets Report) ouverts
dans la base de donnes active. Pour rpertorier tous les
tatsdelabasededonnes,qu'ilssoientouvertsouferms,
utilisezlacollectionAllReportsdel'objetCurrentProject.
Modules Collection contenant tous les modules standards et
modulesdeclasseouvertsdanslabasededonnesactive.
References Collection contenant toutes les rfrences des
bibliothques d'objets appartenant d'autres applications
(fichiers dll, contrles ActiveX...) actuellement slectionnes
(les rfrences sont slectionnes partir de la bote de
dialogueRfrencedumenuOutils).
Printers Collection contenant les objets Printer reprsentant toutes
lesimprimantesdisponiblessurlesystme.
DependencyObjects Collection des objets Access contenus dans un objet
DependencyInfo (informations de dpendance d'un objet
AccessObject). Pour renvoyer une collection Dependency
Objects, utilisez la proprit Dependants ou Dependencies
del'objetDependencyInfo.
AccessObjects
Properties
Collection d'objets AccessObjectsProperty reprsentant
unecaractristiqueintgreoudfinieparl'utilisateurd'un
objetAccessObject(objetAccess).
SmartTags Collection d'objets SmartTag reprsentant une balise
active associe un contrle dans un formulaire, un
rapportouunepaged'accsauxdonnes.
SmartTagActions Collectiond'actionspourunebaliseactiveindividuelleou
pouruntypedebaliseactive.Lesactionsdebaliseactive
sont des processus programms dans des balises actives
qui permettent aux utilisateurs d'effectuer certaines
fonctions lies la balise active. Par exemple, pour une
balise active, une action peut consister accder un
site Web, tandis qu'une autre action insre des
informations de contact provenant de MicrosoftOutlook,
et qu'une autre encore affiche une carte et des
instructionsdeconduite.
SmartTagProperties Collection d'objets SmartTagProperty reprsentant les
proprits lies une balise active. Pour renvoyer la
collection SmartTagProperties d'une balise active, utilisez
lapropritPropertiesdel'objetSmartTag.
ImportExport
Specifications
Collection d'objets contenant toutes les informations dont
Access a besoin pour effectuer automatiquement une
oprationd'importationoud'exportation.
AnswerWizard Objetreprsentantl'aideintuitivedeMicrosoftOffice.
Application Objet faisant rfrence l'application Microsoft Access
active.
Assistant Objet reprsentant le Compagnon Office de Microsoft. Vous
pouvez utiliser la proprit Visible pour afficher le
Compagnon,lapropritOnpouractiverleCompagnon,etla
propritFileNamepourmodifierleCompagnon.
AutoCorrect Objet reprsentant les options de correction automatique
d'Access.
DBEngine Objet reprsentant le moteur de base de donnes Microsoft
Jet. En tant qu'objet principal la racine de la hirarchie,
l'objet DBEngine contient et contrle tous les autres objets
- 2 - ENI Editions - All rigths reserved

d'accsauxdonnes.
DependencyInfo Objet reprsentant les informations de dpendance d'un
objetAccess.
DoCmd Objet permettant de convertir en Visual Basic des actions
Macro. La plupart des actions macros peuvent tre ainsi
traduitesenVBA.
FileDialog Objet permettant d'accder des fonctionnalits similaires
celles des botes de dialogue standards Ouvrir et
Enregistrer.
LanguageSettings Objet renvoyant des informations sur les paramtres
linguistiquesdel'application.
Screen Objet permettant d'accder au formulaire, l'tat ou au
contrleactuellementactif.
TempVar Objet permettant d'changer facilement des donnes entre
desprocduresVBAetdesmacros.
VBE Objet reprsentant l'diteur Microsoft Visual Basic dition
Applications.
CurrentProject Objet regroupant plusieurs collections d'objets Access
spcifiques(AllForms:collectiondetouslesformulairesde
labase)...
CurrentData Objet regroupant plusieurs collections d'objets Access
d'accs aux donnes. (AllTables : collection de toutes les
tablesdelabase)...
- 3 - ENI Editions - All rigths reserved
Principesd'utilisationdesobjetsetdescollections
Lesproprits
Les proprits servent dcrire un objet. Certaines proprits sont en lecture seule et ne peuvent donc pas
tremodifiesparducodeVBA.
Syntaxe
{<objet> | <variable objet>}.<proprit>
Exemple
Propritsreprsentantdesobjets
Les objets globaux et les objets instancis dans le code partir de classes fournies par VBA possdent des
propritsdontlavaleurestmisejourautomatiquementparlesystme.
Lesmthodes
Lesmthodespermettentd'effectuerdesactionspropresauxobjets.
Dim strVersion As String
' Rcupration de la proprit version
' de l'objet application
' Cette proprit est en lecture seule
strVersion = Application.Version
' Modification du pointeur de la souris
' 0 : pointeur par dfaut - 11 : Sablier
If Screen.MousePointer = 0 Then
Screen.MousePointer = 11
Else
Screen.MousePointer = 0
End If
End Sub
Proprit De l'objet Contenu
ActiveControl Screen Contrle actif.
ActiveDataAccessPage Screen Page active ou page contenant le
contrle actif.
ActiveForm Screen Formulaire actif.
ActiveReport Screen tat actif.
Application Objets multiples L'objet Application d'Access.
DBEngine Application L'objet DBEngine.
Form Contrle
sous-formulaire
Objet Form associ au contrle de
sous-formulaire.
Me Form ou Report L'objet Form ou Report dont le code
est en cours d'excution.
Module Form ou Report Module de l'objet Form ou Report.
Parent Objets multiples Objet ou collection qui contient l'objet.
PreviousControl Screen L'objet Control prcdemment actif.
RecordsetClone Form Un Recordset clone du jeu
d'enregistrements sous-jacent du
formulaire.
Report Contrle
sous-tat
Objet Report associ au contrle de
sous-tat.
Section Form, Report Section d'un formulaire ou
d'un tat.
- 1 - ENI Editions - All rigths reserved
Ellesseprsententcommedesprocdures:
- elles peuvent ou non utiliser des arguments,
- certaines mthodes peuvent renvoyer une valeur au mme titre que les procdures Function, d'autres non au mme titre que
les procdures Sub.
Syntaxedemthodenerenvoyantpasdevaleur
{<objet> | <variable objet>}.<mthode> [<Liste d'arguments>]
Exemple
Lesdiffrentsargumentsdelamthodedoiventtresparspardesvirgules.Siunargumentfacultatifn'estpas
dfiniexplicitement,lamthodeutiliseraunevaleurpardfaut.
Syntaxedemthoderenvoyantunevaleur
<variable> = {<objet> | <variable objet>}.<mthode>
([<Liste d'arguments>])
Exemple
Lesvnements
Un vnement est une action spcifique qui se produit sur un objet. Microsoft Access est en mesure de
rpondreplusieurstypesd'vnements :ouvertureoufermeturedeformulaires,clicsdesouris,modificationde
donnes,etc.Lesvnementsrsultentgnralementd'uneactiondel'utilisateur.
L'utilisation d'une procdure vnementielle vous permet d'associer votre propre code en rponse un
vnementquiseproduitdansunformulaire,untat,uncontrle...
Exemple
Lorsque l'utilisateur clique sur le bouton de commande "Quitter", une bote de dialogue demandant une confirmation est affiche.
' Modification de l'option "Compacter lors de la
fermeture"
' Mthode SetOption ne renvoyant pas de valeur
Application.SetOption "Auto Compact", True
Private Sub cmdMethodes_Click()
' Variable boolenne
Dim blnCompact As Boolean
' Rcupration de l'option
' "Compacter lors de la fermeture"
' Mthode GetOption renvoyant une valeur boolenne
blnCompact = Application.GetOption("Auto Compact")
' Modification de l'option
' Mthode SetOption ne renvoyant pas de valeur
If blnCompact Then
Application.SetOption "Auto Compact", False
MsgBox "La base ne sera pas compacte lors de la
fermeture", _
vbExclamation
Else
Application.SetOption "Auto Compact", True
MsgBox "La base sera compacte lors de la fermeture", _
vbExclamation
End If
End Sub
Private Sub cmdQuitter_Click()
' Demande l'utilisateur de confirmer
- 2 - ENI Editions - All rigths reserved
La gestion des vnements tant l'un des aspects les plus importants dans le dveloppement d'applications Access, le chapitre
Gestion des vnements est entirement consacr ce sujet.
Lescollections
Pourfairerfrenceunobjetd'unecollection,vouspouvezutiliserl'unedessyntaxessuivantes:
NomCollection!NomObjet
NomCollection![NomObjet]
NomCollection("NomObjet")
NomCollection(var)
ovarreprsenteunevariabledetypestringcontenantlenomdel'objet.
NomCollection(index)
oindexreprsentelenumrod'indexdel'objetdanslacollection.
Afin d'assurer une meilleure lisibilit du code, il est conseill d'utiliser toujours la mme syntaxe. Les 3
ime
et 5
ime
syntaxes sont
recommandes car elles permettent d'activer l'assistant de l'diteur de code. De plus la syntaxe5 est trs utile pour parcourir les
objets d'une collection.
Attention le premier lment de la plupart des collections a pour index 0. N'utilisez les index que pour parcourir une collection. vitez
par exemple Me.controls(5) pour faire rfrence un contrle car l'index du contrle peut changer si le formulaire est modifi.
Exemple
Collectionspardfaut
Dfinition
' son souhait de quitter l'application
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub
Private Sub cmdCollections_Click()
Dim ctl As Control
Dim intI As Integer

' Ouvre le formulaire "Employes"
' et le masque (proprit Visible)
DoCmd.OpenForm "Employes"
Forms("Employes").Visible = False

' Fait rfrence au contrle Prnom
' du Formulaire "Employes"
' Collections Forms et Controls
MsgBox Forms("Employes").Controls("Prnom").Value
MsgBox Forms!Employes.Controls![Prnom].Value

' Date de cration d'une table de la base courante
' Collections AllTables
MsgBox CurrentData.AllTables![Employes].DateCreated
MsgBox CurrentData.AllTables("Employes").DateCreated
MsgBox CurrentData.AllTables(0).DateCreated
' Modifie la police et de la couleur de tous les
contrles
' "zones de texte" du formulaire
For intI = 0 To Forms("Employes").Controls.Count - 1
Set ctl = Forms("Employes").Controls(intI)
If TypeOf ctl Is TextBox Then
ctl.ForeColor = vbRed
ctl.FontItalic = True
ctl.FontBold = True
End If
Next intI

' Affiche le formulaire
Forms("Employes").Visible = True
End Sub
- 3 - ENI Editions - All rigths reserved
Une collection par dfaut est une collection contenant des objets auxquels il est possible de faire rfrence
traverslenomdel'objetconteneurdelacollection,c'estdiresansfairerfrencelacollectionellemme.
Objetspossdantunecollectionpardfaut



Exemple
Rfrence au contrle txtDateDeb du formulaire Formations (la collection Controls est la collection par dfaut d'un formulaire).
Affichageautomatiqued'instructions
L'diteur VBA dispose d'une technologie permettant de vous assister lors de l'utilisation d'objets. Ds que vous
tapez un nom d'objet reconnu par VBA suivi d'un point, la liste droulante des mthodes et proprits de cet
objetestalorsaffiche.Sivousslectionnezunemthode,l'assistantvousaidegalementsaisirlesdiffrents
argumentsqu'ellecomporte.
Exemple
I Tapez le nom d'objet DoCmd suivi d'un point, la liste droulante suivante est affiche.
Objet Collection par dfaut
Container Documents
Database
TableDefs
DBEngine
Workspaces
Form
Controls
Group Users
Index Fields
QueryDef Parameters
Recordset Fields
Relation Fields
Report Controls
TableDef Fields
User Groups
Workspace Databases
Forms![Formations].[txtDateDeb].Value
Ou
Forms!Formations.txtDateDeb.Value
ou
Forms!Formations!txtDateDeb.Value
- 4 - ENI Editions - All rigths reserved

L'icne reprsente les mthodes, l'icne reprsente les proprits.
Vous pouvez faire dfiler les lments de la liste droulante en tapant les premires lettres de la mthode,
proprit ou collection recherche ou l'aide de l'ascenseur. Pour slectionner un lment de la liste, double
cliquezdessus.
Tapez un point si vous venez de slectionner un objet et si vous souhaitez voir la liste des proprits et
mthodes s'y rapportant. Si vous avez slectionn une mthode, tapez un espace pour saisir la liste des
paramtresdelamthode.
Pourpoursuivrel'exemple :
I Slectionnez la mthode OpenForm.
I Puis tapez un espace:

Lalistedesargumentsdelamthodeestalorsafficheets'adapteaufuretmesurequevouslessaisissez.
Les arguments facultatifs sont entre crochets. L'argument courant est en gras. Si pour un argument donn, il
existeunelistedevaleursprdfinies,lalistedroulantedesconstantescorrespondantesestalorsaffiche.
I Saisissez maintenant le nom du paramtre transmis dans la fonction, savoir strFormName, suivi d'une virgule et de l'argument
acNormal, et de 3 virgules (pour les deux arguments optionnels).
- 5 - ENI Editions - All rigths reserved

Dansl'exemplelalistedesvaleurspossiblespourl'argumentDataModeestaffiche.
Pour obtenir la liste des proprits et mthodes d'un objet, vous pouvez galement procder de la faon suivante :
- placez le curseur derrire le point (situ aprs le nom de l'objet),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les proprits/mthodes du menu contextuel ou utilisez
le raccourci-clavier Ctrl J.


De mme, pour obtenir la liste des constantes disponibles comme argument d'une mthode, vous pouvez procder de la faon
suivante :
- placez le curseur la place de l'argument (aprs la mthode ou aprs une virgule),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les constantes du menu contextuel.

- 6 - ENI Editions - All rigths reserved
Instructionsutilisesaveclesobjets
L'instructionWith
L'instructionWithpermetd'accderplusieursfoisaummeobjetenlenommantuneseulefois.
Elleoffreplusieursavantages:
- optimisation du temps d'excution du code,
- gain de temps sur le travail d'criture,
- meilleure lisibilit du code.
Syntaxe
With <objet>
<code utilisant des mthodes et proprits>
<se rapportant l'objet>
End With
Exemple
L'instructionForeach...Next
L'instructionForEach...Nextpermetdepasserenrevuelesobjetsd'unecollectionouleslmentsd'untableau.
Syntaxe
For Each <lment > In {<tableau>|<collection>}
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next <lment>
Exemple
L'exemple suivant permet d'affecter une couleur de police chaque contrle du formulaire "employ" en fonction de son type
(proprit ControlType). Il utilise la collection par dfaut de l'objet Form (Screen.ActiveForm quivaut
Screen.ActiveForm.Controls).
' Ouvre le formulaire "Employes"
DoCmd.OpenForm "Employes"
' Modifie le titre du formulaire
' Positionne le curseur sur le nom
With Forms("Employes")
.Caption = "FICHE DE L'EMPLOYE " & _
.Controls("Prnom").Value & " " & _
UCase(.Controls("Nom").Value)
.Controls("Nom").SetFocus
End With
Dim ctl As Control
' Parcours des contrles du formulaire actif
For Each ctl In Screen.ActiveForm
With Ctl
Select Case ControlType
' Etiquettes
Case acLabel
.ForeColor = vbBlue
' Zones de texte
Case acTextBox
.ForeColor = vbYellow
' Listes droulantes
Case acListBox, acComboBox
.ForeColor = vbRed
- 1 - ENI Editions - All rigths reserved
L'instructionIfTypeOf
L'instructionIfTypeOfpermetdetesterletyped'unobjet.
Syntaxe
If TypeOf <objet> Is <TypeObjet> Then
<code utilisant des mthodes et proprits>
<se rapportant l'objet>
End If
Exemple
L'instructionSet
L'instructionSetpermetd'attribuerunerfrenced'objetunevariable,appelevariableobjet.
Cetteinstructionpeuttreutilisepourcrerunerfrenceversunnouvelobjet(enutilisantventuellementune
mthodepermettantdecrerl'objet)oupouraffecterunerfrenceunobjetdjexistant.
Syntaxes
Crationd'unerfrenceversunnouvelobjet
Set <NomObjet> = New <expression objet>
ou
Set <NomObjet> = <mthode permettant de crer l'objet>

<NomObjet> nomdelavariableobjet
<expression objet> nomd'unobjetoud'unevariableobjetdemmetype
Le mot cl New permet de crer une nouvelle instance de la classe. Si la variable objet contient dj une rfrence, cette dernire est
alors perdue.
Vous ne pouvez utiliser le mot cl New pour rfrencer un objet que si le composant ActiveX de l'objet fournit une bibliothque de type
(ex : objets ADO, objets Excel...).
Affectationd'unerfrenceunobjetexistant
Set <NomObjet> = <expression objet>
<NomObjet> nomdelavariableobjet
<expression objet> nomd'unobjetoud'unevariableobjetdemmetype
Rinitialisationdesvariablesobjets
Set <NomObjet> = Nothing
Nothing permet de rinitialiser la variable objet et de librer l'ensemble des ressources systme et mmoire
associescetobjet.
Exemples :
Cration de rfrences vers de nouveaux objets.
Les exemples 1 et 2 permettent de crer une nouvelle table et de l'ajouter la base de donnes courante. Pour excuter ces
exemples, vous devez slectionner la rfrence Microsoft DAO 3.6 Object Library au projet (Outils Rfrences).
Exemple 1 : utilisation du mot cl New
End Select
End With
Next ctl
If TypeOf ctl Is acListBox Then ...
- 2 - ENI Editions - All rigths reserved
Exemple 2 : mme traitement en utilisant des mthodes
Dim tbl As Object
Dim tdfClient As DAO.TableDef
Dim fld As DAO.Field

' Vrifie si la table existe dj
' et propose de la supprimer
For Each tbl In CurrentData.AllTables
If tbl.Name = "CLIENTS" Then
If MsgBox("La table existe dj." & _
" Voulez-vous la supprimer ?", _
vbYesNo & vbQuestion) = vbYes Then
DoCmd.DeleteObject acTable, "CLIENTS"
Else
Exit Sub
End If
End If
Next tbl

' Cre la dfinition de table
Set tdfClient = New DAO.TableDef
tdfClient.Name = "CLIENTS"
' Cre le 1er champ
Set fld = New DAO.Field
With fld
.Name = "Cli_Nom"
.Type = dbText
.Size = 40
End With
tdfClient.Fields.Append fld
' Cre le 2me champ
Set fld = New DAO.Field
With fld
.Name = "Cli_Effectif"
.Type = dbInteger
End With
tdfClient.Fields.Append fld
' Ajoute la table la base de donne courante
Application.CurrentDb.TableDefs.Append tdfClient
' Rinitialise les variables objet
Set tdfClient = Nothing
Set fld = Nothing
Dim tbl As Object
Dim tdfClient As DAO.TableDef
Dim fld As DAO.Field

' Vrifie si la table existe dj
' et propose de la supprimer
For Each tbl In CurrentData.AllTables
If tbl.Name = "CLIENTS" Then
If MsgBox("La table existe dj." & _
" Voulez-vous la supprimer ?", _
vbYesNo + vbQuestion) = vbYes Then
DoCmd.DeleteObject acTable, "CLIENTS"
Else
Exit Sub
End If
End If
Next tbl

' Cre la dfinition de table
Set tdfClient = CurrentDb.CreateTableDef("Clients")
With tdfClient
' Cre le 1er champ
Set fld = .CreateField("Cli_Nom", dbText, 40)
.Fields.Append fld
' Cre le 2me champ
.Fields.Append .CreateField("Cli_Effectif", dbInteger)
End With
' Ajoute la table la base de donne courante
CurrentDb.TableDefs.Append tdfClient
' Rinitialise les variables objet
Set fld = Nothing
Set tdfClient = Nothing
- 3 - ENI Editions - All rigths reserved
Exemple 3 :
Cration d'un formulaire avec une zone de texte et une tiquette
Formulaire cr par ce code :


' Objet Formulaire
Dim frmEmploye As Form
' Nom du formulaire
Dim strName As String
' Objet contrle
Dim ctl As Control
' Cration d'un nouveau formulaire
Set frmEmploye = Application.CreateForm
With frmEmploye
' Titre du formulaire
.Caption = "Employes"
' Largeur et hauteur du formulaire
.Width = 5000
.Section(acDetail).Height = 2000
' Supprime les boutons de dplacement
.NavigationButtons = False
' Supprime le slecteur d'enregistrement
.RecordSelectors = False
' Centre le formulaire dans l'application
.AutoCenter = True
' Nom du formulaire
strName = frmEmploye.Name
End With

' Ajout de la zone de texte Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acTextBox, , "", "", 2000, 500, 2500, 300)
' Mise en forme de la zone de texte
With ctl
' Nom de la zone de texte
.name = "txtNom"
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlack
.FontBold = True
End With

' Ajout de l'tiquette Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acLabel, , "", "", 500, 500, 1500, 300)
' Mise en forme de l'tiquette
With ctl
' Nom de l'tiquette
.Name = "lblNom"
' Titre de l'tiquette
.Caption = "Nom de l'employ : "
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlue
End With

' Sauvegarde du formulaire
DoCmd.Save , "Fiche_Employe"
Docmd.Close
- 4 - ENI Editions - All rigths reserved

- 5 - ENI Editions - All rigths reserved
Lesclassesd'objets
Description
Une classe est en quelque sorte un moule d'o naissent les objets. Par exemple, il est possible de raliser de
petits santons en pltre avec un moule adquat. On peut dire que tous les santons raliss sont des Objets,
chacund'euxpouvantavoirtermedescouleursetunhabillagediffrents,etquelesmoulessontdesClasses.
Ainsi, les objets issus d'une mme classe hritent systmatiquement de toutes les mthodes (codes), les
proprits (donnes) et les vnements de leur classe d'origine. Par la suite, les caractristiques et le
comportementdechacund'euxpourronttreadaptsenfonctiondesbesoinsdel'application.
Enfait,toutobjetAccessestissud'uneclasse.
Lesmodulesdeclasse
Les modules de classe vous permettent de crer et de manipuler dans vos applications vos propres types
d'objets.
Lesmodulesdeclassesprsententlescaractristiquessuivantes:
- ils portent le nom de l'objet,
- ils comportent des procdures publiques Sub et Function correspondant aux mthodes propres de l'objet,
- ils comportent des procdures Property Get permettant de lire les valeurs de proprits de l'objet et des procdures Property
Set/Property Let permettant de fixer les valeurs de ces proprits.
Une fois l'ensemble de ces procdures dcrites au sein du module de classe, il est possible de crer un nouvel
objetdutypedfini.Pourcelailsuffitdecrerunenouvelleinstancedelaclasseparlebiaisd'unevariableobjet
dutypedelaclasse :
Dim<nomdel'objet>AsNew<nomdelaclasse>
Les modules de classe sont peu utiliss en programmation VBA. Ils s'adressent avant tout aux dveloppeurs
confirms.
Exempledemodulesdeclasse
Cet exemple vous guidera pas pas dans la cration et l'utilisation d'un module de classe. Le module cr
permettrad'afficherlesmessagesutilisateurs.
Cemodulecomporteleslmentssuivants:
- une mthode Confirmation qui affiche une bote de dialogue invitant l'utilisateur rpondre par "oui" ou "non" une
question, et rcupre la rponse de l'utilisateur,
- deux proprits : la proprit IsBeep indique si un beep doit tre mis avant l'affichage du message, la proprit Title
contient le titre de la bote de dialogue.
Exemple
Pourcrerunmoduledeclasse :
I slectionnez l'option Module de classe du menu Insertion.
- 1 - ENI Editions - All rigths reserved

I Dfinissez ensuite le nom de la classe dans le champ Name.

I Si la fentre Proprits n'est pas affiche, choisissez l'option Fentre proprits du menu Affichage ou utilisez le raccourci
clavier F4.
I Dfinissez les variables ncessaires pour l'utilisation des proprits dans le module de classe Message. La variable strTitle est
associe la proprit Title, la variable blnBeep la proprit IsBeep.
I Crez les proprits IsBeep et Title en utilisant l'option Procdure du menu Insertion.

Pour chaque proprit, les procdures Property Get et Property Set sont cres :
I Modifiezles afin d'obtenir le code suivant :
Option Compare Database
Option Explicit
' Emission d'un beep
Dim blnBeep As Boolean
' Titre de la fentre MsgBox
Dim strTitle As String
- 2 - ENI Editions - All rigths reserved
I Crez maintenant la mthode confirmation en utilisant l'option Procdure du menu Insertion.

I Modifiez la procdure Confirmation afin d'obtenir le code suivant.
Nousvoyonsquecettemthodeutiliselesdeuxvariables strTitleet blnBeep.Lamthodeatcreentant
quefonctioncarellerenvoielarponsedel'utilisateursouslaformed'unevariableboolenne.
Maintenantquecetteclasseestcre,nousallonsl'utiliserpartird'unformulaire.
I Crez pour cela un formulaire Employs avec deux boutons de commande cmdFermer et cmdQuitter.
I Affectez le code cidessous aux vnements click.
Public Property Get IsBeep() As Boolean
IsBeep = blnBeep
End Property
________________________________________________________________________

Public Property Let IsBeep(ByVal blnNewValue As Boolean)
blnBeep = blnNewValue
End Property
________________________________________________________________________

Public Property Get Title() As String
Title = strTitle
End Property
________________________________________________________________________

Public<+>Property Let Title(ByVal strNewValue As String)
strTitle = strNewValue
End Property
Public Function Confirmation(strMsg) As Boolean
If MsgBox(strMsg, vbYesNo, strTitle) = vbYes Then
Confirmation = True
Else
Confirmation = False
End If
If blnBeep Then Beep
End Function
Private Sub CmdFermer_Click()
' Objet message
Dim msg As New Message

' Pas d'mission de beep
msg.IsBeep = False
- 3 - ENI Editions - All rigths reserved
I Testez ensuite le formulaire.
La bote de message affiche par la mthode Confirmation utilise les deux proprits et renvoie la rponse de
l'utilisateur.
Il est possible d'enrichir le module de classe Message en dfinissant de nouvelles proprits et de nouvelles mthodes (ex :
messages d'erreur...).

' Titre de la bote de dialogue
msg.Title = "Application Gestion du personnel"
' Demande de confirmation
If msg.Confirmation("Voulez-vous fermer " _
& "le formulaire " & Me.Caption & " ?") Then
DoCmd.Close
End If
End Sub
_______________________________________________________________

Private Sub CmdQuitter_Click()
' Objet message
Dim msg As New Message

' Emission d'un beep
msg.IsBeep = True
' Titre de la bote de dialogue
msg.Title = "Application Gestion du personnel"
' Demande de confirmation
If msg.Confirmation("Voulez-vous quitter " _
& "l'application ? ") Then
DoCmd.Quit
End If

End Sub
- 4 - ENI Editions - All rigths reserved
L'explorateurd'objets
Prsentation
Compte tenu du nombre important d'objets Access et de leur diversit, il est utile de pouvoir rechercher
rapidementdesinformationsserapportantauxobjets.
L'explorateurd'objetspermetd'afficherdesinformationsrelativesauxobjets,mthodes,proprits,vnements
etconstantes.
Vouspouvezl'afficherdediffrentesfaons:
- choisissez l'option Explorateur d'objets du menu Affichage,
- utilisez le raccourciclavier F2,
- cliquez sur l'icne .

1.Listedesbibliothquesd'objetsactuellementcharges.
2.lmentrecherch:objet,proprit,collection,vnement,mthode...
3. Rsultat de la recherche : liste des classes d'objets (objets et collections) et des membres les composant
(objet, collection, proprit, vnement ou mthode). Le mot recherch peut tre dans la liste des classes ou
danscelledesmembres.
- 1 - ENI Editions - All rigths reserved
4.Objetsdelabibliothque laclassed'objetslectionnedanslalisteRsultatestencadre.
5.Mthodes,proprits,vnementsetconstantesserapportantl'objetslectionnouencadrdanslaliste
degauche.LemembreslectionndanslalisteRsultatestencadr.
6.Dtaildel'lmentslectionn.
Recherchedansl'explorateurd'objets
Poureffectuerunerecherchedansl'explorateurd'objets,procdezdelamaniresuivante:
I Saisissez le mot recherch dans la 2
me
liste droulante.

I Cliquez sur l'icne .
I Si la fentre des Rsultats affiche plusieurs lignes, dplacezvous sur celle qui vous intresse (la partie basse de la fentre est
alors ractualise).
Le module de classe cr prcdemment apparat dans la liste des classes avec les mthodes et proprits
rattaches.


- 2 - ENI Editions - All rigths reserved
Propritsetmthodesd'objetsAccess
Cette partie dcrit les proprits et mthodes des objets couramment utiliss dans Access. Les objets Form et
ReportserontdcritsdanslechapitrePersonnalisationdesformulairesettats.
Pour obtenir la liste exhaustive des objets, des proprits et mthodes, vous pouvez rechercher dans l'aide VBA
Accessouutiliserl'explorateurd'objets.
L'objetApplication
L'objetApplicationfaitrfrencel'applicationMicrosoftAccessactive.
Proprits
Mthodes
AutomationSecurity
Renvoie ou dfinit une constante MsoAutomationSecurity
qui reprsente le mode de scurit utilis par Microsoft
Accesslorsqu'ilouvredesfichiersparprogrammation.
BrokenReference
Renvoie une valeur de type Boolean indiquant si la base de
donnes active possde des rfrences rompues vers des
basesdedonnesoudesbibliothquesdetypes.
Build
Renvoie une valeur de type Long qui reprsente le numro
de la copie de Microsoft Office Access 2007 actuellement
installe.
CodeContextObject
Renvoie l'objet dans lequel une macro ou du code
Visual Basicestencoursd'excution.
CurrentObjectName
Retourne le nom de l'objet base de donnes actif (table,
requte,formulaire,tat,macro,module).
CurrentObjectType
Retourneletypedel'objetbasededonnesactif.
FeatureInstall
SpcifieoudterminelamaniredontMicrosoftAccessgre
les appels de mthodes et de proprits qui ncessitent des
fonctionnalitsnoninstalles.
IsCompiled
Retourne une valeur de type boolen qui indique si le projet
VisualBasicsetrouvedansuntatcompil.
MenuBar
Dtermine la barre de menus utiliser pour la base de
donnes.
Name
Retournelenomdel'application("MicrosoftAccess").
Parent
Permetdefairerfrencel'objetpre.
ProductCode
Dtermine l'identificateur universel unique de Microsoft
Access.
ShortcutMenuBar
Spcifie le menu contextuel qui apparat lorsque l'utilisateur
cliqueavecleboutondroitdelasouris.
UserControl
Permet de dterminer si l'application Microsoft Access en
cours a t lance par l'utilisateur ou par une autre
applicationaumoyendel'automation.
Version
RetournelenumrodeversiondeMicrosoftAccess.
Visible
Permetdemasquerl'application.
AccessError
Retourne la chane descriptive associe une erreur
Microsoft AccessouuneerreurDAO.
AddToFavorites
Ajoute une adresse de lien hypertexte dans le dossier
Documentsfavoris.
BuildCriteria
Permetdeconstruirefacilementlescritresd'unfiltre.
- 1 - ENI Editions - All rigths reserved
CloseCurrentDatabase
Ferme une base de donnes Access partir d'une autre
application utilisant la technologie Automation (application
Excel par exemple). La base de donnes doit avoir t
pralablement ouverte, par cette mme application, au
moyendelamthodeOpenCurrentDatabase.
ColumnHistory
Fournitl'historiquedesvaleursquionttstockessansun
champMmo.
CompactRepair
Compacteetrparelabasededonnes(.mdb)ouleprojet
Microsoft Access (.adp) spcifis. Renvoie un Boolean
prenantlavaleurTruesil'oprationarussi.
ConvertAccessProject
Convertit la version du fichier Microsoft Access spcifi
dansuneautreversion.
CreateAccessProject
PermetdecrerunnouveauprojetMicrosoftAccess(.adp)
surdisque.
CreateAdditionalData
Permet de crer un objet AdditionalData pouvant tre
utilis pour ajouter des tables et des requtes
supplmentaires dans la table parente qui est en cours
d'exportationparlamthodeExportXML.
CreateControl
Permet de crer un contrle dans le formulaire ouvert
spcifi.
CreateForm
Permetdecrerunformulaireetretourneunobjetdetype
Form.
CreateGroupLevel
Permet de spcifier un champ ou une expression sur lequel
(ou laquelle) seront regroupes ou tries les donnes d'un
tat.
Create
NewWorkgroupFile
Creunnouveaufichierdegroupedetravailpourpermettre
aux utilisateurs d'accder de manire scurise une base
dedonnes.
CreateReport
Permetdecreruntatetretourneunobjettat.
CreateReportControl
Permetdecreruncontrledansuntatouvert.
CurrentDb
Renvoie une variable objet faisant rfrence la base de
donnesactuellementouvertedansMicrosoft.
CurrentUser
Permetderetournerlenomdel'utilisateuractueldelabase
dedonnes.
DefaultWorkspace
Clone
Cre un nouvel objet Workspace sans obliger l'utilisateur
seconnecternouveau.
DeleteControl
Permet de supprimer un contrle dtermin dans un
formulaire.
DeleteReportControl
Permetdesupprimeruncontrledtermindansuntat.
Echo
SpcifiesiMicrosoftAccessdoitredessinerl'cran.
ExportXML
Permet d'exporter des donnes XML, des schmas et des
informations de prsentation partir de Microsoft SQL
Server 2000 Desktop Engine (MSDE 2000), Microsoft SQL
Server, version 6.5 ou ultrieure, ou encore du moteur de
basededonnesMicrosoftJet.
FollowHyperLink
OuvreledocumentoulapageWebspcifiparuneadresse
delienhypertexte.
GetOption
Retourne la valeur en cours d'une option de la bote de
dialogueOptions.
HyperlinkPart
Renvoie les informations relatives aux donnes stockes
souslaformedelienhypertexte.
ImportNavigationPane
Chargeuneconfigurationenregistreduvoletdenavigation
partirdudisque.
ImportXML
Permet d'importer des donnes XML et/ou des informations
de prsentation dans Microsoft SQL Server 2000 Desktop
Engine (MSDE 2000), Microsoft SQL Server, version 7.0 ou
ultrieure, ou encore dans le moteur de base de donnes
MicrosoftJet.
- 2 - ENI Editions - All rigths reserved
Exemple
Bouton de commande permettant de quitter Access en sauvegardant tous les objets.
Exemple
Le code suivant permet de modifier les couleurs par dfaut des feuilles de donnes (contenues dans l'onglet Feuilles de donnes de
la bote de dialogue Options d'Access).
Fonctionsapplicablesunjeud'enregistrements
LoadCustomUI
ChargelecodeXMLquireprsenteunrubanpersonnalis.
LoadPicture
ChargeuneimagedansuncontrleactiveX.
NewAccessProject
Permet de crer et d'ouvrir un nouveau projet Microsoft
Access(.adp)commeprojetAccessactif.
Nz
Transforme une valeur nulle en zro, chane vide ou une
autrevaleurspcifie.
NewCurrentDatabase
Cre une nouvelle base de donnes dans la fentre
MicrosoftAccess.
OpenCurrentDatabase
Ouvre une base de donnes Access comme base de
donnes courante partir d'une autre application utilisant
latechnologieAutomation(applicationExcelparexemple).
Quit
PermetdequitterAccess.
RefreshDatabase
Window
Permet de mettre jour la fentre Base de donnes
lorsqu'une table, une requte, un formulaire, un tat, une
macro ou un module ont t crs, supprims ou
renomms.
RefreshTitleBar
ActualiselabarredetitredeMicrosoftAccess.
Run
Permetd'excuteruneprocdureFunctionouSubspcifie
parMicrosoftAccessoudfinieparl'utilisateur.
RunCommand
Permet d'excuter une commande intgre de menu ou de
barred'outils.
SetDefaultWorkgroup
File
Dfinitlefichierspcificommefichierdegroupedetravail.
SetHiddenAttribute
Activel'attributcachd'unobjetAccess.
SetOption
Dfinit la valeur en cours d'une option dans la bote de
dialogueOptions.
SysCmd
Permet d'afficher une jauge de progression ou un texte
spcifi facultatif dans la barre d'tat, de retourner des
informations sur Microsoft Access et les fichiers associs,
ou l'tat d'un objet de base de donnes spcifi (objet
ouvert,nouveau,oumodifimaisnonenregistr).
TransformXML
Applique une feuille de style XSL (eXtensible Stylesheet
Language) un fichier de donnes XML et crit le langage
XMLquienrsultedansunfichierdedonnesXML.
Sub cmdQuitter_Click()
Application.Quit acSaveYes
End Sub
With Application
' Police bleue fonc
.SetOption "Default Font Color", 4
' Arrire plan : blanc
.SetOption "Default Background Color", 15
' Quadrillage bleu clair
.SetOption "Default Gridlines Color", 12
End With
- 3 - ENI Editions - All rigths reserved
Cesfonctionssontgnralementutilisesdanslesformulairesettats:
L'objetDoCmd
L'objetDoCmdpermetd'excuterpartirdeVisualBasiclaplupartdesactionsexcutablesvialesmacros.
chaque action macro correspond une mthode. Les arguments de l'action deviennent les arguments de la
mthode.L'objetDoCmdnedisposepasdeproprits.
Les actions macro correspondant aux mthodes sont indiques entre parenthses.
Excutiond'actions
Donnesdesformulairesettats
DAvg
Calcule la moyenne d'un ensemble de valeurs dans un jeu
d'enregistrements.
DCount
Dtermine le nombre d'enregistrements dans un jeu
d'enregistrements.
DFirst Renvoielepremierenregistrementd'unjeud'enregistrements.
DLast
Renvoieledernierenregistrementd'unjeud'enregistrements.
DLookUp
Recherchelavaleurd'unchampparticulierquifaitpartied'un
jeud'enregistrements.
DMin
Dtermine la valeur minimale d'un champ pour un jeu
d'enregistrements.
DMax
Dtermine la valeur maximale d'un champ pour un jeu
d'enregistrements.
DStDev
valuel'carttypepourunchantillondepopulationpourun
jeud'enregistrements.
DstDevP
Estime l'carttype d'une population dans un jeu
d'enregistrements.
DSum
Calcule la somme d'un ensemble de valeurs dans un jeu
d'enregistrements.
DVar
value la variance pour un chantillon dans un jeu
d'enregistrements.
DVarP
Calcule la variance d'une population dans un jeu
d'enregistrements.
Eval
value une expression (combinaison d'oprateurs, de noms
de champ, de fonctions, de littrales et de constantes) et
retourne le rsultat sous la forme d'une chane de caractre
oud'unevaleurnumrique.
CancelEvent
(AnnulerEvnement)
Annuleunvnement.
Quit
(Quitter)
QuitteACCESS.
RunCommand
(ExcuterCommande)
Excuteunecommanded'unmenuoud'unebarred'outils.
RunMacro
(ExcuterMacro)
Excuteunemacro.
RunSql
(ExcuterSql)
ExcuteunordreSQL.
ApplyFilter
(AppliquerFiltre)
Appliqueunfiltreunetable,unformulaire,untat.
FindNext
(TrouverSuivant)
Continuelarecherche.
FindRecord
(TrouverEnregistrement)
Recherched'unenregistrement.

- 4 - ENI Editions - All rigths reserved


Import/Exportdedonnes
Manipulationd'objets
GotoControl
(AtteindreContrle)
Dplacelefocussuruncontrle.
GotoPage
(AtteindrePage)
Dplace le focus sur le premier contrle de la page indique
duformulaireactif.
GotoRecord
(AtteindreEnregistrement)
Atteintunenregistrement.
SearchForRecord
(TrouverEnregistrement)
Permetderechercherunenregistrementspcifiquedansune
table,unerequte,unformulaireouuntat.
CopyDatabaseFile
(CopierFichierBaseDeDonnes)
Copie la base de donnes connecte au projet actif un
fichier de base de donnes Microsoft SQL Server pour
l'exporter.
OutputTo
(CopierVers)
Permet d'exporter un objet Access (table, formulaire) dans
une autre base Access ou un autre type de fichier (Excel,
XML...).
SendObject
(EnvoyerObjet)
Envoieunobjetverslamessagerie.
TransferDatabase
(TransfrerBase)
Importeouexporteunebasededonnes.
TransferSpread
Sheet
(TransfrerFeuilleCalcul)
Importeouexporteunefeuilledecalcul.
TransferShare
PointList
(TransfrerListeSharePoint)
Permet d'importer ou de lier des donnes partir d'un site
MicrosoftWindowsSharePointServices3.0.
TransferSQL
Database
(TransfrerBaseDeDonnesSQL)
Transfre l'intgralit de la base de donnes Microsoft SQL
ServerspcifieversuneautrebasededonnesSQLServer.
TransferText
(TransfrerTexte)
ImporteouexportedutexteauformatASCII.
Close
(Fermer)
Fermeunobjet(formulaire,tat...).
CloseDatabase
(FermerBaseDonnes)
Fermelabasededonnesouvertedansl'interfaceAccess.Si
la base de donnes contient des objets qui n'ont pas t
enregistrslorsquevousutilisezlamthodeCloseDatabase,
des botes de dialogues identiques celles qui s'affichent
lorsque vous cliquez sur Fermer la base de donnes
apparaissent.
CopyObject
(CopierObjet)
Permet de copier un objet Access dans la mme base ou
dansuneautrebase.
DeleteObject
(SupprimerObjet)
Supprimeunobjet.
Maximize
(Agrandir)
Agranditunefentre.
Minimize
(Rduire)
Rduitunefentreenicne.
MoveSize
(DplacerDimensionner)
Dplaceoudimensionneunefentre.
OpenDataAccess
Page
(OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
OpenDiagram
(OuvrirSchma)
Ouvreunschmadebasededonnes.

- 5 - ENI Editions - All rigths reserved


Modificationdel'interfaceAccess
Divers
OpenForm
(OuvrirFormulaire)
Ouvreunformulaire.
OpenFunction
(OuvrirFonction)
Ouvre une fonction utilisateur dans une base de donnes
MicrosoftSQLServerpourl'afficherdansMicrosoftAccess.
OpenModule
(OuvrirModule)
OuvreunmoduleVBA.
OpenQuery
(OuvrirRequte)
Ouvreunerequte.
OpenReport
(OuvrirEtat)
Ouvreuntat.
OpenStored
Procedure
(OuvrirProcdureStocke)
Ouvre une procdure stocke en mode Feuilles de donnes,
enmodeCrationouenAperuavantimpression.
OpenTable
(OuvrirTable)
Ouvreunetable.
OpenView
(OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
PrintOut
(Imprimer)
Imprimesurpapier.
Rename
(Renommer)
Renommeunobjet.
RepaintObject
(RedessinerObjet)
Redessineunobjet(formulaire...).
Requery
(Actualiser)
Metjourlesdonnesdel'cran(relancelarequtesource
del'objet).
Restore
(Restaurer)
Redonneunefentresataillenormale.
Save
(Enregistrer)
Enregistrel'objetspcifioul'objetactif.
SelectObject
(SlectionnerObjet)
Slectionneunobjetdebasededonnes.
ShowAllRecords
(AfficherTousEnreg)
Dsactiveunfiltreetraffichetouslesenregistrements.
AddMenu
(AjouterMenu)
Permetdecrerunebarredemenuouunmenucontextuel.
Hourglass
(Sablier)
Affichelepointeurdesourisensablierounon.
LockNavigation
Pane
(VerrouillerVoletNavigation)
Permet d'empcher les utilisateurs de supprimer des objets
de base de donnes qui sont affichs dans le volet de
navigation.
SetDisplayed
Categories
(AccderA)
Prcise les catgories qui sont affiches sous Atteindre la
catgoriedanslabarredetitreduvoletdenavigation.
SetMenuItem
(DfinirElmentMenu)
Permet de dfinir l'tat (actif ou inactif, coch ou non
coch) d'lments de menu personnalis ou global pour la
fentreactive.
SetWarnings
(Avertissements)
Active/dsactive l'affichage des messages d'avertissement
standards.
ShowToolbar
(AfficherBarreOutils)
Affiche/masqueunebarred'outils.
Beep
(Bip)
Emetunbipsonore.

- 6 - ENI Editions - All rigths reserved


Actionsdemacrosnonprisesencompteparl'objetDoCmd
Les actions ArrtToutesMacros et ArrtMacro n'ont pas d'quivalent en Visual Basic.
L'objetScreen
L'objet Screen fait rfrence l'objet actif qu'il s'agisse d'un formulaire, d'une page d'accs aux donnes, d'un
tatoud'uncontrle.
L'objet Screen est surtout utilis dans les procdures vnementielles de ses diffrents objets (Control, Data
AccessPage,Form,Report).Cetobjetnecomportequedesproprits :
Proprits
Exemple
ClearMacroError
(EffacerMacroErreur)
Supprime les informations relatives une erreur stockes
dansunobjetMacroErreur.
DoMenuItem
(AfficherBarreOutils)
Affiche la commande de menu approprie pour Microsoft
Access.
Echo
(Echo)
Masque ou affiche les rsultats d'une macro lors de son
excution.
PlainText
Supprime la mise en forme de texte enrichi d'une chane et
renvoieunechanedetextesansmiseenforme.
RunSavedImport
Export
(ExcuterImportationExportationSauvegarde)
Excute une spcification d'importation ou d'exportation
enregistre, cre partir de l'Assistant Importation ou de
l'AssistantExportation.
SetDefault
WorkgroupFile
Dfinit le fichier spcifi comme fichier de groupe de travail
pardfaut.
SetHiddenAttribute
Activel'attributcachd'unobjetAccess.
SingleStep
(PasAPas)
Suspend l'excution de la macro active et ouvre la bote de
dialoguePaspas.
BoiteMsg
Utilisezlafonctionoul'instructionMsgBox.
ExcuterApplication
UtilisezlafonctionShell.
ExcuterCode AppelezdirectementlafonctiondansVisualBasic.
EnvoiTouches
Utilisezl'instructionSendKeys.
ActiveControl
Fournitunerfrenceaucontrleactif.
ActiveData
AccessPage
Fournitunerfrencelapaged'accsauxdonnesactive.
ActiveDataSheet Fournitunerfrencelafeuillededonnesactive.
ActiveForm
Fournitunerfrenceauformulaireactif.
ActiveReport
Fournitunerfrencel'tatactif.
Application
Permetd'accderl'objetApplicationetsesproprits.
MousePointer
Permetdespcifierletypedepointeurdesouris.
Parent
Fournitunerfrenceaupre(objetconteneur)d'uncontrle,
d'unesection,d'unsousformulaire...
PreviousControl
Fournit une rfrence au dernier contrle actif avant le
contrleencours.
- 7 - ENI Editions - All rigths reserved
LacollectionReferences
La collection References contient les objets Reference correspondant aux bibliothques d'objets provenant
d'autresapplications.
Pour ajouter (ou supprimer) une rfrence une bibliothque d'objets, choisissez l'option Rfrences du menu
Outils.
Lafentresuivantevouspermetalorsdeslectionnerlesrfrencessouhaites:

Proprits
Mthodes
' Affiche sub cmd Screen-click le nom du contrle
prcdent
Dim ctl As Control
Set ctl = Screen.PreviousControl
MsgBox ctl.Name
' Transforme le pointeur de souris en sablier
Screen.MousePointer = 11
' Raffiche le pointeur par dfaut
Screen.MousePointer = 0

' Affiche le nom du formulaire actif
Dim frm As Form
Set frm = Screen.ActiveForm
MsgBox frm.Name
' Modifie le titre du formulaire
frm.Caption = "Formulaire de saisie des employs"
End Sub
Count
Dterminelenombred'objetsrfrences.
Parent
Nonutilise.
AddFromFile
Cre une rfrence une bibliothque partir d'un nom de
fichier.
AddFromGuid
Cre une rfrence une bibliothque partir de son GUID
(identificateurglobaluniquedansleregistreWindows).
Item
Renvoie une rfrence en fonction de sa position dans la
collectionRfrences.
- 8 - ENI Editions - All rigths reserved
Propritsdel'objetReference
Exemple
LacollectionPrinters
La collection Printerscontientdesobjets Printerreprsentantchacununeimprimantedisponiblesurlesystme
encours.
L'objet Printer n'existait pas dans les versions prcdentes d'Access.
Propritsdel'objetPrinter
Remove
SupprimeunobjetrfrencedanslacollectionReferences.
BuiltIn
Indiquesiunerfrencepardfautquiestncessairepourle
bonfonctionnementd'Access.
FullPath
Renvoie le chemin d'accs et le nom du fichier de la
bibliothquerfrence.
Guid
Renvoie le GUID, identificateur de la bibliothque dans le
RegistreWindows.
IsBroken
Indiquesiunerfrencevalideestaffectel'objetdansle
RegistreWindows.
Kind
Indiqueletypederfrence.
Major
Indique le numro de version principal de l'application
laquelleestassocielarfrence.
Mineur
Indiquelenumrodeversionmineurdel'application.
Name
Indiquelenomdelarfrence.
Private Sub cmdReferences_Click()
Dim ref As Reference
Dim i As Integer

' Affiche le nombre total de rfrences
MsgBox "Le nombre total de rfrences est de : " &
References.Count
' Parcourt les rfrences et affiche leur nom et chemin
d'accs
i = 0
For Each ref In Application.References
MsgBox " Nom : " & ref.Name & " " & Chr(13) & Chr(13) _
& " Chemin : " & ref.FullPath
Next ref

' Ajoute les bibliothques d'objet Excel et Word
' Erreur si bibliothque dj rfrence
On Error Resume Next
Application.References.AddFromFile "Excel.exe"
Application.References.AddFromFile "MsWord.olb"
On Error GoTo 0
' Affiche le nombre total de rfrences
MsgBox "Le nombre total de rfrences est de : " &
References.Count
End Sub
BottomMargin
Margebassed'unepageimprime.
ColorMode
Indique si l'imprimante doit imprimer en couleur
(acPRCMColor)ounon(acPRCMMonochrome).
ColumnSpacing
Indique l'espacement vertical des sections Dtail d'un
formulaire.
Copies
Indiquelenombredecopiesimprimer.
DataOnly
Permet de n'imprimer que les donnes d'une table ou d'une
requteenmodeFeuillededonnes.
- 9 - ENI Editions - All rigths reserved
Les autres proprits (ColumnSpacing, RowSpacing, ItemSizeHeight...) permettent d'effectuer le formatage de la section Dtail
d'un formulaire ou d'un tat.
DefaultSize
Renvoie la valeur True si la taille de la section de dtail en
mode Cration est utilise lors de l'impression d'un tat ou
d'unformulaire.
DeviceName
Renvoie une valeur de type String qui indique le nom du
priphriqued'impressionspcifi.
DriverName
Indiquelenomdupiloteutilisparl'imprimante.
Duplex
Indique la manire dont l'imprimante gre l'impression recto
verso.
ItemLayout
Indique si l'imprimante trace les colonnes horizontalement,
puis verticalement, ou bien verticalement puis
horizontalement.
ItemsAcross
Renvoie ou dfinit une valeur de type Long indiquant le
nombre de colonnes imprimer dans le cas d'tats ou
d'tiquettessurplusieurscolonnes.
ItemSizeHeight
Renvoie ou dfinit une valeur de type Long indiquant la
hauteurdelasectiondtailled'unformulaireoud'untaten
twips.
ItemSizeWidth
Renvoie ou dfinit une valeur de type Long indiquant la
largeurdelasectiondtailled'unformulaireoud'untaten
twips.
LeftMargin
Margegauched'unepageimprime.
Orientation
Indique l'orientation de l'impression (acPRORPortrait ou
acPRORLandscape).
PaperBin
Indiquelebacquedoitutiliserl'imprimante.
PaperSize
Indiquelatailledepapierutiliserlorsdel'impression.
Port
Indiqueleportauquelestconnectel'imprimante.
PrintQuality
Indique la rsolution utiliser par l'imprimante pour les
travauxd'impression.
RightMargin
Margedroited'unepageimprime.
RowSpacing
Renvoie ou dfinit une valeur de type Long qui reprsente
l'espacementhorizontaldessectionsdtaillesentwips.
TopMargin
Margehauted'unepageimprime.
- 10 - ENI Editions - All rigths reserved
Objetsd'accsauxdonnesDAOetADO
Lesobjetsd'accsauxdonnessonttrsutiles:ilspermettent,viaVBA,demanipulerlesdonnes(recherches,
misesjour,ajoutsd'enregistrements...)debasesdedonneslocalesoudistantes.
Dans les versions antrieures Access 2000, le seul modle d'accs aux donnes tait le modle DAO:Data
AccessObjects.
AvecAccess2000estapparulemodleADO :ActiveXDataObjects.
Microsoftrecommanded'utiliserlemodleADOpourlesraisonssuivantes :
- meilleure prise en charge de SQL Server,
- meilleures performances en environnement client/serveur,
- code VBA plus court et plus simple.
Si vous dveloppez unenouvelleapplication, vous pouvez utilisez le modle ADO mme si votre application
accde une base de donnes locale de type Access. Si vous souhaitez par la suite migrer vos donnes sous
MSDE(MicrosoftDataEngine)ouSQLServer,votrecodefonctionneradefaonoptimale.
Sivousfaitesvoluer uneapplicationexistanteutilisantlemodleDAO,ilestpossibledemodifiervotrecode
afindetransformerlesobjetsDAOenobjetsADO.
- 1 - ENI Editions - All rigths reserved
Lemodled'accsauxdonnesDAO
Prsentation
La bibliothque d'objets DAO (Data Access Objects) prend en charge deux environnements de bases de donnes
diffrents,appelsespacesdetravail :
- les espaces de travail Microsoft Jet: ils permettent d'accder des bases de donnes de type Access, des serveurs de bases
de donnes ODBC (Open Database Connectivity) et des bases de donnes externes telles que dBASE, Microsoft Excel et
Paradox accessibles via un pilote ISAM (Indexed Sequential Access Method),
- les espaces de travail ODBCDirect: ils permettent d'accder des serveurs de base de donnes ODBC de faon "directe",
c'estdire sans charger le moteur de base de donnes Microsoft Office 12. Cet espace de travail est par consquent
recommand pour excuter des requtes, des procdures stockes, ou des fonctions spcifiques ODBC sur un serveur distant
de type SQL Server.
Pour pouvoir utiliser la bibliothque d'objets DAO, il est ncessaire de cocher la rfrence Microsoft DAO 3.6
Object Library dans la liste des rfrences aux bibliothques d'objets (pour afficher cette liste, slectionnez
l'optionRfrencesdumenuOutils).
Si cette rfrence n'est pas disponible, vous devez slectionner le fichier DAO360.dll partir du bouton de
commande Parcourir. Ce fichier est gnralement situ dans le rpertoire "C:\Program Files\Fichiers
communs\MicrosoftShared\DAO".
Le fichier d'aide DAO360.chm, situ dans le rpertoire C:\Program Files\Fichiers Communs\Microsoft
Shared\Office12\1036vouspermetd'obtenirdesinformationsdtaillessurl'utilisationdumodleDAO.
HirarchiedesobjetsDAO
- 1 - ENI Editions - All rigths reserved

- 2 - ENI Editions - All rigths reserved
Descriptiondescollections
Unecollectionexistepourchacundestypesd'objetDAO,l'exceptiondel'objetDBEngine.
Toute collection inclut tous les objets d'un type donn. Par exemple, la collection DataBases contient tous les
objetsDataBaseouverts.
ToutobjetDAOpossdeunecollectionProperties,l'exceptiondesobjetsError.
La plupart des objets DAO disposent de collections par dfaut. Par exemple, la collection par dfaut d'un objet
RecordsetestlacollectionFields.Lecodepeutainsitresimplifi.
Containers:EnsembledesobjetsContainerd'unebasededonnes.
Databases:Contienttouteslesbasesdedonnes(objetsDataBase)ouvertesdansunWorkspace.
Documents:EnsembledesobjetsDocumentd'unContainer.
Errors:Ensembledeserreurs(Error)dumoteurd'accsauxdonnes(DBEngine).
Fields : Ensemble des champs (Field) d'une table (TableDef), d'une requte (QueryDef), d'un index (Index),
d'unjeud'enregistrements(Recordset)oud'unerelation(Relation).
Groups : Ensemble des groupes d'utilisateurs (Group) d'un Workspace ou ensemble des groupes d'utilisateurs
(Group)auxquelsappartientunutilisateur(User).
Indexes:Ensembledesindex(Index)d'unetable(TableDef).
Parameters:Ensembledesparamtres(Parameter)d'unerequte(QueryDef).
Properties:Ensembledesproprits(Property)d'unobjet.
QueryDefs:Contienttouteslesdfinitionsderequte(QueryDef)d'unebasededonnes(Database).
Recordsets:Ensembledesjeuxd'enregistrementsouverts(Recordset)d'unebasededonnes(Database).
Relations:Ensembledesrelations(Relation)d'unebasededonnes(Database).
TableDefs:Contienttouteslesdfinitionsdetable(TableDef)d'unebasededonnes(Database).
Users:Ensembledesutilisateurs(User)d'unWorkspaceoud'ungrouped'utilisateurs(Group).
Workspaces:ContienttouslesobjetsWorkspaceactifs.
Proprits
Count :Renvoielenombred'lmentsdanslacollection.
Item :Renvoieunmembrespcifiqued'unecollectionenfonctiondesapositionoudesacl.
Toutes les collections peuvent utiliser ces proprits.
Exemple
Liste des tables de la base de donnes courante.
Dim intI As Integer
For intI = 0 To CurrentDb.TableDefs.Count - 1
MsgBox CurrentDb.TableDefs.Item(intI).Name
Next intI
- 3 - ENI Editions - All rigths reserved
Mthodes
Append:Ajouteunobjetlacollection.
Delete:Supprimeunobjetdelacollection.
Refresh:Ractualiselecontenudelacollection.
Les collections Errors, Databases, Containers, Documents, Parameters et Recordsets ne peuvent utiliser
lesmthodesAppendetDelete.Leurcontenuestdirectementgrparlemoteurdelabasededonnes.
L'objetDBEngine
Ilreprsentelemoteurd'accsauxdonnesMicrosoftJet.Ilcontientetcontrlel'ensembledesobjetsDAO.
Proprits
DefaultType:Dfinitletyped'espacedetravail,MicrosoftJetouODBCDirect.
DefaultUser etDefaultPassword:Nomd'utilisateuretmotdepasseutilissparlemoteurdebasededonnes
MicrosoftJetquandunobjetWorkspaceestcrsansnomd'utilisateurnimotdepassespcifique.
InitPath:DfinitourenvoiedesinformationssurlaclduregistreWindowsquicontientdesvaleursrelativesau
moteurdebasededonnesMicrosoftJet.
SystemDB : Dfinit ou renvoie le chemin d'accs au fichier d'informations sur le groupe de travail en cours
(MDW).
Version:Valeurquiindiquelaversiondelabasededonnesoudumoteurdebasededonnesassocil'objet.
Mthodes
CompactDatabase:Compacteunebasededonnesferme.
CreateWorkspace:CreunnouvelobjetWorkspace.
Idle : Interrompt le traitement, permettant ainsi au moteur de base de donnes Microsoft Jet de terminer les
tchesenattente.
SetOption:Permetdemodifiertemporairementlesoptionsdumoteurd'accsauxdonnesMicrosoftJet.
Collections
Workspaces,Properties,Errors
Exemple
Compactage de la base de donnes Devis en Devis2.
Affichage de la version du moteur Microsoft Jet.
LesobjetsWorkspace
DBEngine.CompactDatabase "c:\devis\devis.accdb", _
"c:\devis\devis2.accdb"
MsgBox "Numro de version du moteur Microsoft Jet :" &
DBEngine.Version,_
vbExclamation
- 4 - ENI Editions - All rigths reserved
UnobjetWorkspace(espacedetravail)permetdedfinirunesessiondetravailpourunutilisateur.
Proprits
Name:Renvoielenomdel'objetWorkspace.
Type:Renvoieoudfinitletypedeconnexiondel'objetWorkspace(constantedbUseJetsil'objetWorkspaceest
connectaumoteurdebasesdedonnesMicrosoftJet,constantedbUseODBCsil'objetWorkspaceestconnect
unesourcededonnesODBC).
UserName:Renvoielenomdupropritairedel'objetWorkspace.
Autresproprits
DefaultCursorDriver,IsolateODBCTrans,LoginTimeout
Mthodes
BeginTrans:Dmarreunenouvelletransaction.
Close:FermeleWorkspace.
CommitTrans:Termineetvalidelatransactionencours.
CreateDatabase:CreunnouvelobjetDatabase.
CreateGroup:Creunnouveaugrouped'utilisateurs.
CreateUser:Creunnouvelutilisateur.
OpenDatabase:Ouvreunebasededonns.
RollBack:Annuleettermineunetransactionencoursetymetfin.
Collections
Databases,Users,Groups,Properties
Exemple
Ouverture de la base de donnes Devis dans l'espace de travail actif.
LesobjetsDatabase
UnobjetDatabasereprsenteunebasededonnesouverte.
Proprits
CollatingOrder:Dfinitlamthodedecomparaisondeschanesdecaractresselonlalangue.
Connect:Dterminelesinformationsncessairesl'ouvertured'unebasededonnesexterneoul'attachement
d'unetabled'unebaseexterne.
DesignMasterID:DtermineleGUIDdelastructurematred'unjeuderplicas.
Name:Renvoielenomdelabase.
Dim wrk As Workspace
Dim dbs As Database
Set wrk = DBEngine.Workspaces(0)
Set dbs = wrk.OpenDatabase("C:\devis\devis.accdb")
- 5 - ENI Editions - All rigths reserved
RecordsAffected:Indiquelenombred'enregistrementsaffectsparladerniremthodeExecute.
Replicable:Indiquesilabasededonnespeutfairel'objetd'unerplication.
ReplicaID:Renvoiel'identifiantd'unrplica.
Transactions:Indiquesilabasededonnesdelaconnexionprendencomptelestransactions(ODBCDirect).
Updatable:Indiquesilesmodificationsdel'objetDatabasesontautorises.
Version:Identifielaversionduformatdelabasededonnes.
V1xNullBehavior:IndiquesileschanesdelongueurnullesontconvertiesenvaleursdetypeNull.
Mthodes
Close:Fermel'objetDatabase.
CreateProperty:CreunnouvelobjetProperty.
CreateQueryDef:CreunnouvelobjetQueryDef.
CreateRelation:CreunnouvelobjetRelation.
CreateTableDef:CreunnouvelobjetTableDef.
Execute:ExcuteunerequteactionouuneinstructionSQL.
MakeReplica:CreunRplicadelabasededonnes.
NewPassword:DfinitunnouveaumotdepassepourunebasededonnesMicrosoftJet.
OpenRecordset:CreunnouvelobjetRecordset.
PopulatePartial:SynchroniselesmodificationsapportesunRplicapartielparrapportunRplicaintgral.
Synchronize:SynchronisedeuxRplica.
Collections
TableDefs,QueryDefs,Relations,Containers,Recordsets,Properties
Exemple
Initialisation d'une rfrence sur la base de donnes courante.
Ouverture d'une base de donnes externe.
Cration d'un objet RecordSet de type table en lecture seule sur la table Clients de la base de donnes courante.
Dim dbDevis as DAO.Database
Set dbDevis = CurrentDb()
Dim dbsDevis as DAO.Database
Set dbsDevis = DBEngine.OpenDatabase _
("C:\Clients\Clients.accdb")
Dim dbs As Database
Dim rstCli As DAO.Recordset
Set dbs = CurrentDb
- 6 - ENI Editions - All rigths reserved
LesobjetsRecordset
UnobjetRecordsetreprsentelesenregistrementsd'unetableouceuxissusd'unerequte.
Ilexistequatretypesd'objetsRecordset:
Les types d'objets Recordset concerns par chaque proprit ou mthode sont reprsents par T (Table), D (Dynaset), S (Snapshot),
F (Forward Only).
Proprits
AbsolutePosition:Dterminelapositionrelatived'unenregistrementdansunrecordset(DS).
BOF:IndiqueunpositionnementaudbutduRecordset(DSTF).
Bookmark:Renvoieoudfinitunsignetquiidentifiedefaonuniqueunenregistrement(DST).
Bookmarkable:IndiquesileRecordsetprendenchargelessignets(DST).
CacheStart:Dfinitourenvoielesignetdupremierenregistrementplacerenmmoirecache(D).
DateCreated:Renvoieladateetl'heuredecrationdelatablesousjacente(T).
EditMode:Indiquel'tatdemodificationdel'enregistrementencours(DT).
EOF:IndiqueunpositionnementlafinduRecordset(DSTF).
Filter:Permetdedfinirlefiltreappliquer(DSF).
Index:Dfinitl'indexutiliser(T).
LockEdits:Dfinitlaconditiondeverrouillage(DTS).
LastModified:Renvoieunsignetindiquantledernierenregistrementmodifi(DT).
LastUpdated:Renvoieladateetl'heuredederniremodificationdelatabled'originesousjacente(T).
Name:RenvoielenomduRecordset(DSTF).
Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable, _
dbReadOnly)
Recordset Dfinition Intrt Constante
de dclaration
Table Reprsente une table. Permet d'utiliser les index. dbOpenTable
Dynaset
(feuille
de rponse
dynamique)
Reprsente le rsultat
d'une requte dont les
enregistrements peuvent
tre mis jour.
Permet de travailler sur les
donnes provenant de
plusieurs tables.
dbOpen
Dynaset
Recordset Dfinition Intrt Constante
de dclaration
ForwardOnly
(En Avant
seulement)
Idem Snapshot mais
dfilement des
enregistrements
uniquement vers l'avant.
Rapidit dbOpen
ForwardOnly
Snapshot
(instantan)
Reprsente le rsultat
d'une requte en lecture
seule.
Rapidit par rapport au
Dynaset.
dbOpen
Snapshot
- 7 - ENI Editions - All rigths reserved
NoMatch:Indiquesil'enregistrementrecherchattrouv(DST).
PercentPosition : Retourne la position en cours d'un enregistrement en pourcentage du nombre total
d'enregistrements(DST).
RecordCount:Indiquelenombred'enregistrementssollicits(DSTF).
Restartable : Indique si le Recordset prend en charge la mthode Requery qui excute nouveau la requte
sousjacente(DSFT).
Sort:Dfinitl'ordredetri(DS).
Transactions:IndiquesileRecordsetsupportelestransactions(DTSF).
Type:IndiqueletypedeRecordset(DSTF).
Updatable:Indiquelesmisesjourautorises(DTSF).
ValidationText:Spcifielemessaged'erreursilaconditiondevalidationestfausse(DSTF).
ValidationRule:SpcifielaconditiondevalidationduRecordset(DSTF).
Mthodes
AddNew:Creunnouvelenregistrement(DT).
CancelUpdate:Annulelesmisesjourenattente(DT).
Clone:CreunecopieduRecordset(DST).
Close:FermeleRecordset(DSTF).
CopyQueryDef:Creunecopiedel'objetQueryDefassociauRecordset(DSF).
Delete:Supprimel'enregistrementcourant(DT).
Edit:Passel'enregistrementcourantenmodeEdition(DT).
FindFirst:Localiselepremierenregistrementrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindLast:Localiseledernierenregistrementrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindNext:Localisel'enregistrementsuivantrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindPrevious:Localisel'enregistrementprcdentrpondantaucritreetenfaitl'enregistrementcourant(DS).
GetRows:Extraitplusieurslignesd'unRecordsetetlescopiedansuntableau(DSTF).
MoveFirst:Localiselepremierenregistrementetenfaitl'enregistrementcourant(DST).
MoveLast:Localiseledernierenregistrementetenfaitl'enregistrementcourant(DST).
MoveNext:Localisel'enregistrementsuivantetenfaitl'enregistrementcourant(DST).
MovePrevious:Localisel'enregistrementprcdentetenfaitl'enregistrementcourant(DST).
Move:Changelapositiondel'enregistrementcourant(DST).
OpenRecordset:CreunnouveauRecordset(DST).
- 8 - ENI Editions - All rigths reserved
Requery:Metjourlesenregistrementsd'unRecordsetenrexcutantlarequtesousjacente(DSF).
Seek:LocaliseparrapportunIndexslectionn,lepremierenregistrementrpondantauxcritresspcifiset
enfaitl'enregistrementcourant(T).
Update:Metjourl'enregistrement(DT).
Exemple
Transformation en majuscules des caractres du champ Cli_Societe dans la table Clients.
Utilisation de la mthode Seek: recherche d'un client partir de son code.
Utilisation de la mthode Find : recherche des clients dont le nom de Socit commence par une valeur donne.
Dim dbs As Database
Dim rstCli As DAO.Recordset

' Cration du Recordset
Set dbs = CurrentDb
Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable)
rstCli.MoveFirst
' Parcourt des enregistrements
With rstCli
Do Until .EOF
.Edit
rstCli("Cli_Societe") = UCase(rstCli("Cli_Societe"))
' Mise jour
.Update
' Enregistrement suivant
.MoveNext
Loop
End With
rstCli.Close
Dim dbs As Database
Dim rstCli As DAO.Recordset
Dim strCodeCli As String

' Cration du Recordset
Set dbs = CurrentDb
Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable)

With rstCli
' Saisie du code client
strCodeCli = InputBox("Saisissez le code client")
' Index courant : cl primaire
.Index = "PrimaryKey"
' Recherche
.Seek "=", strcodecli
' Enregistrement non trouv
If .NoMatch Then
MsgBox "Client non trouv"
Else
' Enregistrement trouv
MsgBox "Socit : " & rstCli("Cli_Societe")
End If
End With
rstCli.Close
Dim dbs As DAO.Database
Dim rstCli As DAO.Recordset
Dim strSoc As String
Dim strCrit As String

' Cration du Recordset
Set dbs = CurrentDb
Set rstCli = dbs.OpenRecordset("Clients", dbOpenSnapshot)

With rstCli
' Saisie du code client
strSoc = InputBox("Saisissez les 1re lettres de la
Socit")
- 9 - ENI Editions - All rigths reserved
LesobjetsTabledef
Un objet TableDef reprsente la dfinition enregistre d'une table ou d'une table attache cre dans une base
externe.
Proprits
Attributes : Dtermine les caractristiques de la table dcrite par l'objet TableDef (exclusivit, attachement,
systme...).
ConflictTable : Renvoie le nom de la table de conflits contenant les enregistrements entrs en conflit pendant
uneoprationdesynchronisation.
Connect:Retournelesinformationssurlasourcedel'objetTableDef.
DateCreated:Indiqueladateetl'heuredecrationdelatablesousjacente.
KeepLocal:Dterminesilatablenedoitpasfairepartied'uneoprationderplication.
LastUpdated:Indiqueladateetl'heuredederniremodificationdelatablesousjacente.
Name:Renvoielenomdelatable.
RecordCount:Indiquelenombred'enregistrementsdanslatable.
Replicable:Dterminesilatabledoitfairepartied'uneoprationderplication.
ReplicaFilter:Dfinitlesenregistrementsd'unetabledevantfairepartied'uneoprationderplication.
SourceTableName:Spcifielenomdelatableattache.
Updatable:Indiquesilamodificationdelastructureestautorise.
ValidationText:Spcifielemessaged'erreursilaconditiondevalidationestfausse.
ValidationRule:Spcifielaconditionrespecterpourlavalidationdel'objet.
Mthodes
CreateField:Creunnouveauchamp(Field).
CreateIndex:CreunnouvelIndex.
CreateProperty:CreunnouvelobjetProperty.
OpenRecordset:CreunnouveauRecordset.
.MoveLast
' Recherche
strCrit = "Cli_Societe Like '" & strSoc & "*'"
.FindFirst strCrit
' Enregistrement non trouv
If .NoMatch Then
MsgBox "Client non trouv"
Else
' Si trouve : recherche des suivants
Do While True
MsgBox rstCli("Cli_Societe")
.FindNext strCrit
If .NoMatch Then Exit Do
Loop
End If
End With
- 10 - ENI Editions - All rigths reserved
RefreshLink:Metjourlesinformationspartird'unetableattache.
Collections
Fields,Indexes,Properties
Exemple
Ajout d'un champ de type Mmo dans la table Clients.
LesobjetsFieldetIndex
I Field
Un objet Field reprsente un champ d'une table (TableDef), d'une relation (Relation), d'une requte (QueryDef), d'un jeu
d'enregistrements (Recordset) ou d'un index (Index).
Proprits
AllowZeroLength:Dfinitsiunechanevideestautorisecommevaleurduchamp.
Attributes:Indiquecertainescaractristiquesduchamp.
CollatingOrder:Spcifielescaractristiquesdecomparaisondechanesdecaractresetl'ordredetri.
DataUpdatable:Indiquesilechamppeuttremisjour.
DefaultValue:Dfinitlavaleurpardfautduchamp.
FieldSize:Renvoielatailled'unchampMemoouBinaireLong(ObjetOLE).
ForeignName : Spcifie, dans une Relation,lenomduchampd'unetableexterne(tablelie)quicorrespond
unchamp(clprimaire)delatablesource(tablederfrence).
Name:Renvoielenomduchamp.
OrdinalPosition:Spcifiel'ordred'affichagedeschamps.
Required:Dfinitsilechampdoitcontenirobligatoirementunevaleur.
Size:Dfinitourenvoielatailleduchamp.
SourceField:Indiquelenomduchampsourcedesdonnes.
SourceTable:Indiquelenomdelatablesourcedesdonnes.
Type:Indiqueletypededonneduchamp.
Value:Renvoielavaleurduchamp.
ValidationText:Spcifielemessaged'erreurrenvoysilaconditiondevalidationduchampestfausse.
ValidationOnSet:Spcifiesilavalidationdevaleurduchampestimmdiatelorsdesamodification.
Dim dbs As DAO.Database
Dim tdf As DAO.Tabl eDef
Dim fld As DAO.Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs("Clients")
Set fld = tdf.CreateField("Cli_Comment", dbMemo)
tdf.Fields.Append fld
- 11 - ENI Editions - All rigths reserved
ValidationRule:Spcifielaconditiondevalidationduchamp.
Mthodes
AppendChunk:Ajoutedesdonnesd'uneexpressionchaneunchampdetypeMemoouObjetOLE.
CreateProperty:CreunnouvelobjetProperty.
GetChunk:Littoutouunepartied'unchampMemoouObjetOLE.
Collections
Properties
Exemple
Affiche la liste de tous les champs (nom et type) de la table Clients dans la fentre Excution.
I Index
Un objet Index reprsente un index associ un objet TableDef ou Recordset de type table.
Proprits
Clustered:Indiquesil'indexreprsentel'indexderegroupementd'unetable.
DistinctCount:Renvoielenombredevaleursuniquespourcetindexdanslatableassocie.
Foreign:Indiquesil'indexestuneclexternedelatable.
IgnoreNulls : Indique s'il y a cration d'une entre d'index pour les enregistrements dont les champs indexs
contiennentlavaleurNull.
Name:Renvoielenomdel'index.
Primary:Indiquesil'indexestlaclprimaire.
Required:Dfinitsitousleschampsdel'indexdoiventcontenirobligatoirementunevaleur.
Unique:Indiquesilesvaleursdel'indexsontuniques(pasdedoublons).
Mthodes
CreateField:Creunnouveauchamppourl'index.
CreateProperty:Creunenouvelleproprit.
Collections
Fields,Properties
Exemple
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs("Clients")
For Each fld In tdf.Fields
Debug.Print fld.Name & " " & fld.Type
Next
- 12 - ENI Editions - All rigths reserved
Cration de l'index Societe sur le champ Cli_Societe de la table Clients.
LesobjetsQueryDefetParameter
I QueryDef
L'objet QueryDef reprsente la dfinition enregistre d'une requte dans une base de donnes.
Proprits
Connect:Donnelesinformationssurlabasededonnesutilisedanslarequte.
DateCreated:Indiqueladateetl'heuredecrationdelarequte.
KeepLocal:Dterminesilarequtedoitfairepartieounond'uneoprationderplication.
LastUpdated:Indiqueladateetl'heuredederniremisejourdelarequte.
MaxRecords:Dfinitlenombremaximumd'enregistrementsquelarequtedoitretourner.
Name:Renvoielenomdelarequte.
RecordsAffected:Indiquelenombred'enregistrementsaffectsparladerniremthodeExecute.
Replicable:Dterminesilarequtedoitfairepartied'uneoprationderplication.
ReturnsRecords:Indiquesilarequtearetourndesenregistrements.
SQL:Dfinitourenvoiel'instructionSQLassocielarequte.
Type:Dfinitletypedelarequte(slection,ajout...).
Updatable:Indiquesilesmisesjoursontautorisestraverslarequte.
Mthodes
Close:Fermelarequte.
CreateProperty:Creunenouvelleproprit.
Execute:LanceunerequteActionouexcuteuneinstructionSQL.
OpenRecordset:CreunnouveauRecordset.
Collections
Fields,Parameters,Properties
Exemple
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim idx As DAO.Index

Set dbs = CurrentDb
Set tdf = dbs.TableDefs("Clients")
Set idx = tdf.CreateIndex("Societe")
Set fld = idx.CreateField("Cli_Societe")
idx.Unique = False
idx.Fields.Append fld
tdf.Indexes.Append idx
- 13 - ENI Editions - All rigths reserved
Cration d'une nouvelle requte base sur une instruction SQL.
I Parameter
Un objet Parameter reprsente un paramtre d'un objet QueryDef paramtr.
Proprits
Name:Dfinitourenvoielenomduparamtre.
Type:Dfinitourenvoieletypededonnesduparamtre.
Value:Dfinitourenvoielavaleurduparamtre.
Collections
Properties
Exemple
Cration d'une requte paramtre et affichage du nombre de paramtres.
LesobjetsRelation
UnobjetRelationreprsenteunerelationentreleschampsdedeuxobjetsTableDef.
Proprits
Attributes:Indiquecertainescaractristiquesdelarelation(unplusieurs,intgrit...).
ForeignTable:Dfinitourenvoielenomdelatableexterne.
Name:Dfinitourenvoielenomdelarelation.
PartialReplica : Dfinit si la relation doit tre prise en compte pour le remplissage d'un Rplica partiel partir
d'unRplicaintgral.
Table:DfinitourenvoielenomdelaTableDefouduQueryDefsource.
Mthodes
CreateField:CreunnouvelobjetField.
Dim dbs As Database
Dim qdf As QueryDef

Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("Liste des " _
& "employs tris par date d'embauche")
qdf.SQL = "Select * from Employes " _
& "Order by [Date Embauche]"
Dim dbs As Database
Dim qdf As QueryDef
Dim prm As Parameter

Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("Liste des Employs" _
& " embauchs une priode donne")
qdf.SQL = "Select * from Employes Where " _
& "[Date embauche] >= [Entrez la date de dbut] " _
& " And [Date embauche] <= [Entrez la date de fin] "
MsgBox qdf.Parameters.Count
- 14 - ENI Editions - All rigths reserved
Collections
Fields,Properties
Exemple
Enregistrement dans une table des diffrentes relations et de leurs proprits. La table Relations contient 3 champs texte
(Rel_Source, Rel_Externe, Rel_Typerel et 3 champs boolen (Rel_Integrite, Rel_Maj_Cascade, Rel_Sup_Cascade).
Visualisation dans Access de la table RELATIONS mise jour :

LesobjetsContaineretDocument
I Container
Un objet Container reprsente l'ensemble des informations portant sur une base de donnes et sur chaque type d'objets qu'elle
contient.
Proprits
AllPermissions:Retournetouteslesautorisationsquis'appliquentlaproprit UserNamedel'objetContainer
encours.
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim rel As Relation

' Cration du Recordset
' et suppression des enregistrements existants
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Relations", dbOpenTable)
Do While Not rst.EOF
rst.Delete
rst.MoveNext
Loop

' Stockage des diffrentes relations du modle
' relationnel dans la table Relations
For Each rel In dbs.Relations
rst.AddNew
rst("REL_SOURCE") = rel.Table
rst("REL_EXTERNE") = rel.ForeignTable
If rel.Attributes And dbRelationUnique Then
rst("REL_TYPEREL") = "1 1"
Else
rst("REL_TYPEREL") = "1 n"
End If
rst("REL_INTEGRITE") = IIf(rel.Attributes And _
dbRelationDontEnforce, False, True)
rst("REL_MAJ_CASCADE") = IIf(rel.Attributes And _
dbRelationUpdateCascade, True, False)
rst("REL_SUP_CASCADE") = IIf(rel.Attributes And _
dbRelationDeleteCascade, True, False)
rst.Update
Next
rst.Close
- 15 - ENI Editions - All rigths reserved
Inherit : Indique si les nouveaux objets Document hriteront, ou non, d'une valeur pour la proprit
Permissions.
Name:Indiquelenomducontainer.
Owner:Indiquelepropritaireducontainer.
Permissions : Dfinit les permissions d'un utilisateur ou d'un groupe d'utilisateurs identifis par la proprit
UserNamedel'objetContainer.
UserName:Dfinitlenomdel'utilisateur.
Exemple
Affichage de la liste des noms de tous les objets Container de la base dans la fentre Excution.

I Document
Un objet Document reprsente l'ensemble des informations portant sur un type d'objet (base de donnes, table, requte ou relation
enregistre).
Proprits
AllPermissions(3.0) : Retourne toutes les autorisations qui s'appliquent la proprit UserName en cours de
l'objetDocument.
Container:Retournelenomdel'objetContainerauquelappartientleDocument.
DateCreated:Retourneladateetl'heuredecrationdelatablesousjacente.
KeepLocal:Dterminesiledocumentdoitounonfairepartied'uneoprationderplication.
LastUpdated:Renvoieladateetl'heuredederniremodificationdelatablesousjacente.
Name:RenvoielenomduDocument.
Owner:RenvoielenomdupropritaireduDocument.
Permissions : Dfinit les permissions de l'utilisateur ou du groupe d'utilisateurs identifis par la proprit
UserNamedel'objetDocument.
Dim dbs As DAO.Database
Set dbs = CurrentDb
Dim ctn As Container
For Each ctn In dbs.Containers
Debug.Print ctn.Name
Next
- 16 - ENI Editions - All rigths reserved
Replicable:Dterminesiledocumentdoitfairepartied'uneoprationderplication.
UserName:Dfinitlenomdel'utilisateur.
Collections
Properties
Exemple
Affichage de la liste de tous les formulairesdans la fentre Excution.
LesobjetsGroupetUser
I User
Un objet User reprsente un compte utilisateur avec ses autorisations.
Proprits
Name:Dfinitourenvoielenomducompteutilisateur.
PID:Renvoielenumrod'identificationpersonnelducompteutilisateur.
PassWord:Renvoielemotdepasseducompteutilisateur.
Mthodes
CreateGroup:CreunnouvelobjetGroup.
NewpassWord:Dfinitunnouveaumotdepassepourl'utilisateur.
Collections
Groups,Properties
I Group
Un objet Group reprsente un groupe d'utilisateurs possdant les mmes autorisations.
Proprits
Name:Dfinieourenvoielenomdugrouped'utilisateurs.
PID:Dfinitlenumropersonnelducomptedegroupe.
Mthodes
CreateUser:CreunnouvelobjetUser.
Dim dbs As DAO.Database
Dim ctn As Container
Dim doc As Document

Set dbs = CurrentDb
For Each ctn In dbs.Containers
If ctn.Name = "Forms" Then
For Each doc In ctn.Documents
Debug.Print doc.Name
Next
End If
Next
- 17 - ENI Editions - All rigths reserved
Collections
Users,Properties
Exemple
Pour chaque groupe, affichage dans la fentre Excution des noms de groupes et d'utilisateurs du groupe.
L'objetError
UnobjetErrorreprsenteledtaild'uneerreurd'accsauxdonnes.
Proprits
Description:Renvoieletextedel'erreur.
HelpContext:Fournitunidentificateurdecontexted'aide,souslaformed'unevariabledechane,correspondant
unerubriqued'unfichierd'aideMicrosoftWindows.
HelpFile:Indiquelechemind'accscompletaufichierd'aideconsidr.
Number:Retournelenumrodel'erreur.
Source:Fournitlenomdel'objetoudel'applicationquiagnrl'erreur.
Exemple
Dclenchement intentionnel d'une erreur et affichage de toutes les proprits de l'objet Error.
Dim wrk As Workspace
Dim usr As User
Dim grp As Group
Set wrk = DBEngine.Workspaces(0)
For Each grp In wrk.Groups
Debug.Print grp.Name
With grp
For Each usr In .Users
Debug.Print usr.Name
Next
End With
Next
Private Sub cmdErreur_Click()

On Error GoTo Gest_Erreur
' Dclenche intentionnellement une erreur
DBEngine.Workspaces(0).OpenDatabase _
("C:\Devis\devis1.accdb")
Exit Sub

Gest_Erreur:
Dim strError As String
Dim errLoop As Variant

' Parcourt les lments de la collection Errors
' Affiche un message avec la description de l'erreur
For Each errLoop In Errors
With errLoop
strError = _
"Erreur #" & .Number & vbCr
strError = strError & _
" " & .Description & vbCr
strError = strError & _
"(Source: " & .Source & ")" & vbCr
strError = strError & _
"Appuyez sur F1 pour afficher " & _
"la rubrique " & .HelpContext & vbCr
strError = strError & _
- 18 - ENI Editions - All rigths reserved
Lemessageaffichestlesuivant:

LesobjetsProperty
UnobjetPropertyreprsenteunepropritd'unobjet.
Proprits
Inherited:Indiquesilapropritesthrite.
Name:Dfinitourenvoielenomdelaproprit.
Type:Dfinitourenvoieletypedelaproprit.
Value:Dfinitourenvoielavaleurdelaproprit.
Exemple
Affichage du nom et de la valeur de chaque proprit d'un objet Recordset dans la fentre Excution.
"dans le fichier " & .HelpFile & "."
End With
MsgBox strError
Next

End Sub
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim prp As DAO.Property
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Clients")
' Parcourt les proprits
For Each prp In rst.Properties
On Error Resume Next
Debug.Print prp.Name & ":" & prp.Value
Next
- 19 - ENI Editions - All rigths reserved

- 20 - ENI Editions - All rigths reserved
Lemodled'accsauxdonnesADO
Prsentation
La bibliothque d'objets ADO (ActiveX Data Objects) vous permet d'crire une application qui accde des
donnessituessurunserveurdebasesdedonnesetdelesmanipulerparlebiaisd'unfournisseurOLE DB.
ADOal'avantaged'trefaciled'emploi,performant,etd'utiliserpeudemmoireetd'espacedisque.ADOoffreles
fonctionnalitsdebasepermettantdecrerdesapplicationsclient/serveuretdesapplicationsWeb.
Pour pouvoir utiliser la bibliothque d'objets ADO, il est ncessaire de cocher la rfrence Microsoft ActiveX
DataObjects2.xLibrary dans la liste des rfrences aux bibliothques d'objets. Si cette rfrence n'est pas
disponible,vousdevezslectionnerlefichierMSADO15.dllpartirduboutondecommandeParcourir.Cefichier
estgnralementsitudanslerpertoire"C:\ProgramFiles\Fichierscommuns\System\ADO".
VouspouvezgalementutiliserlesextensionsADOenslectionnantlarfrenceMicrosoftADOExt2.xforDLL
and Security (fichier MSADOX.DLL). Ces extensions vous permettent d'accder des objets complmentaires
(catalog,users,views...)aumodleADO.
Lefichierd'aideADO210.chmvouspermetd'obtenirdesinformationsdtaillessurl'utilisationdesmodlesADO.
ADOetOLEDB
OLE DB est une technologie permettant un accs uniforme aux donnes stockes dans diverses sources
d'informations : bases de donnes relationnelles ou non relationnelles, messageries, systmes de fichiers
Quasimenttouteslesdonnesdel'entreprisesontaccessiblesparOLEDB.
ADO (ActiveX Data Objects) est l'interface de programmation utilise pour accder aux donnes de tous les
fournisseursdedonnesOLEDB.
Architecturetechnologique

*Microsoft Office 12.0 Access Database Engine OLE DB Provider remplace Microsoft Jet4.0 OLE DB Provider.
Les fournisseurs de donnes ou Providers sont des pilotes permettant de communiquer avec les sources de donnes.
HirarchiedesobjetsADO
- 1 - ENI Editions - All rigths reserved

ModledebasedeprogrammationADO
ADOvouspermetd'excuterlasquenced'actionssuivante:
- tablir une connexion une base de donnes OLE DB ou ODBC au moyen de l'objet Connection.
- crer une commande permettant d'envoyer une requte SQL au serveur en utilisant l'objet Command,
- excuter la commande. Si la commande renvoie des lignes, les stocker dans un objet Recordset,
- exploiter les donnes de l'objet Recordset: trier, filtrer, modifier, supprimer les enregistrements,
- 2 - ENI Editions - All rigths reserved
- mettre jour les donnes: valider les modifications ventuelles de l'objet Recordset, incorporer les mises jour dans une
transaction,
- si une transaction a t utilise: accepter ou rejeter les mises jour apportes au cours de cette dernire.
Exemple
DescriptiondesobjetsADO
Connection:Reprsenteuneconnexionavecunesourcededonnes.
Command:Dfinitunecommandespcifiqueexcutersurunesourcededonnes.
Recordset:Reprsentelejeud'enregistrementscompletd'unetabledebasesdedonnesoulesrsultatsd'une
commande(ex :rsultatsd'unerequteSQL).
Record:FonctionneessentiellementcommeunobjetRecordsetd'uneseuleligne.Lasourcedesdonnesdans
un objet Record peut tre une commande qui renvoie une ligne de donnes partir du fournisseur. L'utilisation
d'objetsRecordlaplaced'objetsRecordsetpourrecevoirlesrsultatsd'unerequterenvoyantuneseuleligne
dedonnesliminelachargedetraitementliel'instanciationdel'objetRecordset,lequelestpluscomplexe.
Stream:Fournitlemoyendelire,crireetgrerunfluxd'octetsconstitudetexteoudedonnesbinaires.
LescollectionsADO
Parameters:CollectiondetouslesobjetsParameterd'unobjetCommand.L'objetParameterreprsenteun
paramtre ou argument associ un objet Command bas sur une requte paramtre ou une procdure
stockeparamtre.
Properties : Collection de tous les objets Property pour un objet donn (Connection, Command,
Recordset).L'objetPropertyreprsenteunecaractristiquedynamiqued'unobjetADOdfiniparl'utilisateur.
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

' Etape 1 : tablir une connexion une source de
donnes
' SQL Server au moyen de la technologie OLEDB
cnn.Open "Provider=SQLOLEDB.1;Data Source=SRV;" _
& "Initial Catalog=Devis;" _
& "Integrated Security=SSPI;Persist Security Info=False;"

' Etape 2 : crer une commande
Set cmd.ActiveConnection = cnn
cmd.CommandText = "SELECT * FROM Clients"

' Etape 3 : excuter la commande
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockBatchOptimistic

' Etape 4 : manipuler les donnes
rs.Filter = "CLI_VILLE LIKE 'Nantes'"
Do While Not rs.EOF
rs("CLI_PAYS") = "F"
rs.MoveNext
Loop

' Etape 5 : mettre jour les donnes modifies
cnn.BeginTrans
rs.UpdateBatch

' Etape 6 : terminer la mise jour de la base SQL
If MsgBox("Confirmez-vous les mises jour ?", _
vbYesNo) = vbYes Then
cnn.CommitTrans
Else
cnn.RollbackTrans
End If
- 3 - ENI Editions - All rigths reserved
Errors : Collection de tous les objets Error crs en rponse un chec unique li au fournisseur OLE DB.
L'objetErrorcontientdesinformationsrelativesuneerreurd'accsauxdonnes.
Fields:CollectiondetouslesobjetsFieldcorrespondunecolonne(ouchamp)d'unobjetRecordset.
LesobjetsConnection
Mthodes
BeginTrans :Commenceunenouvelletransaction.
Cancel : Interrompt et annule l'excution d'une requte lance en mode asynchrone l'aide des mthodes
ExecuteouOpen.
Close:Fermeuneconnexionouverteainsiquetouslesobjetsdpendantdecelleci.
CommitTrans:Enregistrelesmodificationseffectuessurlesdonnesetarrtelatransactionencours.
Execute:Excutelarequte,l'instructionSQL,laprocdurestockeouletextepropreaufournisseurOLEDB.
Open:Ouvreuneconnexionunesourcededonnes,afindepouvoirexcuterdescommandes.
OpenSchema :Obtientdesinformations,enprovenancedufournisseurOLE DB,relativesauschmadelabase
dedonnes.
RollbackTrans : Annule les modifications effectues sur les donnes durant la transaction en cours et arrte
celleci.
Proprits
Attributes : Dfinit ou renvoie une ou plusieurs caractristiques d'un objet Connection. La valeur par dfaut
estzro.
CommandTimeout : Indique le dlai respecter, en secondes, lors d'une tentative d'excution d'une
commandeavantd'interromprecettetentativeetdegnrerunmessaged'erreur.Lavaleurpardfautest30.
ConnectionString : Dfinit ou renvoie les informations utilises pour tablir une connexion avec la source de
donnes.
ConnectionTimeout : Indique le dlai respecter, en secondes, lors d'une tentative de connexion avant d'y
mettreuntermeetdegnrerunmessaged'erreur.Lavaleurpardfautest15.
CursorLocation:Dfinitourenvoieletypedecurseurutiliserpardfautpourcetteconnexion(curseurct
clientoucurseurctserveur).
DefaultDatabase:Indiquelabasededonnespardfautd'unobjetConnection.
IsolationLevel:Indiqueleniveaud'isolationd'unobjetConnection.
Mode:Indiquelesautorisationsdemodificationdedonnesd'unobjetConnection.
Provider:IndiquelenomdufournisseurOLEDBdel'objetConnection.
State:Indiquesil'objetConnectionestouvertouferm.Enlectureseule.
Version:Indiquelenumrodeversiond'ADO.Enlectureseule.
Exemple
- 4 - ENI Editions - All rigths reserved
Cration d'une rfrence sur la base de donnes courante.
Ouverture d'une base de donnes externe.
Utilisation des mthodes CommitTrans et RollbackTrans pour confirmer ou annuler la mise jour d'enregistrements.
LesobjetsCommand
Mthodes
Cancel : Interrompt et annule l'excution d'une requte lance en mode asynchrone l'aide de la mthode
Execute.
CreateParameter:CreunnouvelobjetParameteretspcifiesesproprits.
Execute : Excute la requte, l'instruction SQL ou la procdure stocke spcifie par la proprit
CommandText.
Proprits
ActiveConnection:Indiquel'objetConnectionauquelestassocielacommande.
CommandText:ContientletextedelacommandeenvoyeraufournisseurOLEDB.
CommandTimeout : Indique le dlai (en secondes) respecter, lors d'une tentative d'excution de la
commandeavantd'interromprecettetentativeetdegnrerunmessaged'erreur.Lavaleurpardfautest30.
CommandType:Indiqueletypedel'objetCommand.
Name:Indiquelenomdel'objetCommand.
Dim cncDevis as ADODB.Connection
Set cncDevis = CurrentProject.Connection
Dim cncDevis as ADODB.Connection
Set cncDevis = New ADODB.Connection
cncDevis.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source = C:\Devis\Devis.accdb"
Dim cnc As ADODB.Connection
Dim strSQL As String
Dim strMessage As String

' Ouvre la connexion.
Set cnc = CurrentProject.Connection
' Dbut de la transaction
cnc.BeginTrans

' Requtes SQL de mises jour
strSQL = "UPDATE CLIENTS SET CLI_PAYS = 'France'" _
& "WHERE CLI_VILLE = 'Paris'"
cnc.Execute strSQL
strSQL = "UPDATE CLIENTS SET CLI_PAYS = 'Espagne'" _
& "WHERE CLI_VILLE = 'Madrid'"
cnc.Execute strSQL

' Demande l'utilisateur s'il veut valider les mises jour
If MsgBox("Confirmez-vous la mise jour des pays ?", vbYesNo) _
= vbYes Then
' Enregistre les modifications
cnc.CommitTrans
Else

' Annule les modifications
cnc.RollbackTrans
End If
- 5 - ENI Editions - All rigths reserved
Prepared:Indiques'ilfautenregistreruneversioncompiledelacommandesurleserveuravantexcution.
State:Indiquesil'objetCommandestouvertouferm.Enlectureseule.
Exemple
Utilisation de l'objet Command pour crer un jeu d'enregistrements.
LesobjetsRecordset
Mthodes
AddNew:CreunnouvelenregistrementpourunobjetRecordsetpouvanttremisjour.
Cancel:Annulel'excutiond'uneoprationOpenasynchroneenattente.
CancelBatch:Annuleunemisejourparlotsenattente.
CancelUpdate : Annule toutes les modifications apportes l'enregistrement en cours ou un nouvel
enregistrementavantd'appelerlamthodeUpdate.
Clone:CreunobjetRecordsetendoublepartird'unobjetRecordsetexistant.
Close:Fermel'objetRecordsetouvertainsiquetouslesobjetsdpendantdeceluici.
CompareBookmarks:Comparedeuxsignetsetrenvoieunevaleurindiquantleurspositionsrelatives.
Delete:Supprimel'enregistrementencoursouungrouped'enregistrements.
Find:RecherchedansunobjetRecordsetl'enregistrementcorrespondantdescritresspcifiques.
GetRows:Extraitplusieursenregistrementsd'unobjetRecordsetetlesplacedansuntableau.
GetString:RenvoieunobjetRecordsetsousformedechane.
Move:Dplacelapositiondel'enregistrementencoursdansunobjetRecordset.
MoveFirst : Dplace la position de l'enregistrement en cours jusqu'au premier enregistrement de l'objet
Recordset.
MoveLast:Dplacelapositiondel'objetencoursjusqu'audernierenregistrementdansl'objetRecordset.
Dim cnc As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset

' Ouvre la connexion
cnc.Open "Provider=Microsoft.Jet.OLEDB.4.0.;" _
& "Data Source = C:\Devis\Devis.mdb"
' Excute la commande Select
Set cmd.ActiveConnection = cnc
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT * FROM CLIENTS WHERE " _
& " CLI_VILLE = 'Paris'"

Set rst = cmd.Execute
' Affiche le nom de la Socit
' dans la fentre Excution
Do While Not rst.EOF
Debug.Print rst("CLI_SOCIETE")
rst.MoveNext
Loop
rst.Close
cnc.Close
- 6 - ENI Editions - All rigths reserved
MoveNext : Dplace la position de l'enregistrement en cours jusqu' l'enregistrement suivant dans l'objet
Recordset.
MovePrevious:Dplacelapositiondel'enregistrementencoursjusqu'l'enregistrementprcdentdansl'objet
Recordset.
NextRecordset : Renvoie le jeu d'enregistrements suivant dans le cas d'une commande comportant plusieurs
requtesd'extraction.
Open:Ouvreuncurseurquireprsentelesenregistrementsd'unetableoulesrsultatsd'unerequte.
Requery:Metjourlesdonnesd'unobjetRecordsetenrexcutantlarequtesurlaquellel'objetestbas.
Resync:Actualiselesdonnesdel'objetRecordsetencourspartirdelabasededonnessousjacente.
Save:Enregistrel'objetRecordsetdansunfichier.
Seek:Recherchedansl'indexd'unobjetRecordsetunenregistrementcorrespondantunevaleur,etremplace
l'enregistrementencoursparceluitrouv.(Ils'agitd'unenouvellefonctionnalitd'ADO2.1).
Supports:DterminesiunobjetRecordsetprendenchargeuntypedefonctionnalitparticulier.
Update:Enregistrelesmodificationsapportesl'enregistrementencoursdel'objetRecordset.
UpdateBatch:Enregistretouteslesmisesjourparlotsenattentesurledisque.
Proprits
AbsolutePage :Indiquelapagedel'enregistrementencours.
AbsolutePosition:Indiquelapositionordinaledel'enregistrementencoursdansunobjetRecordset.
ActiveCommand:Indiquel'objetCommandquiacrl'objetRecordsetcorrespondant.Enlectureseule.
ActiveConnection:IndiquequelobjetConnectionappartientl'objetRecordset.
BOF : Indique si le pointeur d'enregistrement est positionn avant le premier enregistrement de l'objet
Recordset.Enlectureseule.
Bookmark:Renvoieunsignetquiidentifiedemanireuniquel'enregistrementencoursdansl'objet Recordset
oudplacel'enregistrementencourssurunenregistrementidentifiparunsignetvalide.
CacheSize:Indiquelenombred'enregistrementsd'unobjetRecordsetstockenmmoirecache.
CursorLocation:Dfinitourenvoieletypedecurseurutiliserpardfautpourcetteconnexion(curseurct
clientoucurseurctserveur).
CursorType:IndiqueletypedecurseurutilispourcetobjetRecordset.
DataMember:Indiquelenomdumembrededonnesextrairedel'objetdfiniparlapropritDataSource.En
lectureseule.
DataSource : Indique qu'un objet contenant des donnes doit tre reprsent comme objet Recordset. En
lectureseule.
EditMode:Indiquelestatutdemodificationdel'enregistrementencours.Enlectureseule.
EOF : Indique si le pointeur d'enregistrement est positionn aprs le dernier enregistrement dans l'objet
Recordset.Enlectureseule.
- 7 - ENI Editions - All rigths reserved
Filter:DfinitunfiltrededonnesdansleRecordset.
Index:Indiquelenomdel'indexencourspourleRecordset.
LockType:Indiqueletypedeverrouillagedesenregistrementslorsdesmodifications.
MarshalOptions:Indiquelesenregistrementsrenvoyerauserveur.
MaxRecords : Indique le nombre maximal d'enregistrements renvoyer un objet Recordset pour une mme
requte.Lavaleurpardfautestzro(aucunelimite).
PageCount:Indiquelenombredepagesdedonnescontenuesdansl'objetRecordset.Enlectureseule.
PageSize:Indiquelenombred'enregistrementscontenusdansunepageduRecordset.
Properties:RfrencelaCollectiondesobjetsPropertydel'objetRecordsetencours.
RecordCount:Indiquelenombreactueld'enregistrementsdansl'objetRecordset.Enlectureseule.
Sort:Spcifieunouplusieursnomsdechampsselonlesquelsl'objetRecordsetesttri,etdterminel'ordrede
tridechaquechamp.
Source:Indiquelasourcedesdonnesd'unobjetRecordset.
State:Indiquel'tatduRecordset :ouvert,fermouoprationasynchroneencours.Enlectureseule.
Status : Indique le statut de l'enregistrement en cours en ce qui concerne les mises jour par lots ou autres
oprationsglobales.Enlectureseule.
StayInSync:Indique,dansunobjet Recordsethirarchique,silaligneparentdoitchangerlorsquel'ensemble
desenregistrementsenfantssousjacentschange.Enlectureseule.
Exemple
Transformation en majuscules des caractres du champ Cli_Societe dans la table Clients.
Utilisation de la mthode Seek : recherche d'un client partir de son code.
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset

' Cration du Recordset
Set cnc = CurrentProject.Connection
rstCli.Open "Select * From Clients", cnc, _
adOpenKeyset, adLockOptimistic
' Parcours des enregistrements
With rstCli
Do Until .EOF
rstCli("Cli_Societe") = _
UCase(rstCli("Cli_Societe"))
' Mise jour
.Update
' Enregistrement suivant
.MoveNext
Loop
End With
rstCli.Close
cnc.Close
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
Dim strCodeCli As String

' Cration du Recordset
Set cnc = CurrentProject.Connection
- 8 - ENI Editions - All rigths reserved
Utilisation de la mthode Find : recherche des clients dont le nom de Socit commence par une valeur donne.
LacollectionFields
Mthodes
Append:AjouteunobjetFieldunecollectionFields.
Delete:SupprimeunobjetFielddelacollectionFields.
Refresh:MetjourlesobjetsFielddanslacollectionFields.
LesobjetsField
Mthodes
AppendChunk:AjoutedesdonnesunobjetFielddetypebinaireoudegrandetaille.
rstCli.Open "Clients", cnc, adOpenKeyset, _
adLockReadOnly, adCmdTableDirect
With rstCli
' Saisie du code client
strCodeCli = _
InputBox("Saisissez le code client")
' Index courant : cl primaire
.Index = "PrimaryKey"
' Recherche
.Seek strCodeCli, adSeekFirstEQ
' Enregistrement non trouv
If .EOF Then
MsgBox "Client non trouv"
Else
' Enregistrement trouv
MsgBox "Socit : " & rstCli("Cli_Societe")
End If
End With
rstCli.Close
cnc.Close
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
Dim strSoc As String
Dim strCrit As String
Dim bkm As Variant

' Cration du Recordset
Set cnc = CurrentProject.Connection
rstCli.Open "Clients", cnc, adOpenKeyset, _
adLockReadOnly, adCmdTableDirect
With rstCli
' Saisie du code client
strSoc = InputBox("Saisissez les 1res " _
& "lettres de la Socit")
' Recherche
strCrit = "Cli_Societe Like '" & strSoc & "%'"
.Find strCrit, , adSearchForward
' Enregistrement non trouv
If .EOF Then
MsgBox "Client non trouv"
Else
' Si trouve : recherche des suivants
Do While Not .EOF
MsgBox rstCli("Cli_Societe")
' Position en cours.
bkm = .Bookmark
.Find strCrit, 1, adSearchForward, bkm
Loop
End If
End With
rstCli.Close
cnc.Close
- 9 - ENI Editions - All rigths reserved
GetChunk:Renvoietoutouunepartieducontenud'unobjetFielddetypebinaireoudegrandetaille.
Proprits
ActualSize:Indiquelalongueurdelavaleurd'unchamp.Enlectureseule.
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetField.
DefinedSize:Indiquelatailledel'objetField.Encritureseule.
Name:Indiquelenomdel'objetField.
NumericScale:Indiquel'chelledesvaleursnumriquesdel'objetField.Encritureseule.
OriginalValue:Indiquelavaleurdel'objetFieldavantmodification.Enlectureseule.
Precision:Indiqueledegrdeprcisiondesvaleursdetypenumriquedansl'objetField.Enlectureseule.
Properties:ComprendtouslesobjetsPropertyd'unobjetField.
Type:Indiqueletypededonnesdel'objetField.
UnderlyingValue:Indiquelavaleurencoursdel'objetFielddanslabasededonnes.Enlectureseule.
Value :Indiquelavaleurdel'objetField.
LacollectionParameters
Mthodes
Append:AjouteunobjetParameterlacollectionParameters.
Delete:SupprimeunobjetParameterdelacollectionParameters.
Refresh:MetjourlesobjetsParameterdanslacollectionParameters.
Exemple
Affichage de la liste de tous les champs (nom et type) de la table Clients dans la fentre Excution.
LesobjetsParameter
Mthodes
AppendChunk:AjoutedesdonnesunobjetParameterdetypebinaireoutextedegrandetaille.
Proprits
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetParameter.
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
Dim fld As ADODB.Field

' Cration du Recordset
Set cnc = CurrentProject.Connection
rstCli.Open "Employes", cnc, adOpenKeyset, adLockReadOnly, _
adCmdTableDirect
For Each fld In rstCli.Fields
Debug.Print fld.Name & " " & fld.Type
Next
rstCli.close
- 10 - ENI Editions - All rigths reserved
Direction : Indique si l'objet Parameter correspond un paramtre d'entre, de sortie, ou les deux, ou si le
paramtreestletypederetourd'uneprocdurestocke.
Name:Indiquelenomdel'objetParameter.
NumericScale:Indiquel'chelledesvaleursnumriquesdel'objetParameter.
Precision:IndiqueledegrdeprcisiondesvaleursdetypeNumericdel'objetParameter.
Properties :ComprendtouslesobjetsPropertyd'unobjetParameter.
Size:Indiquelataillemaximale,enoctetsouencaractres,d'unobjetParameter.
Type:Indiqueletypededonnesdel'objetParameter.
Value:Indiquelavaleurattribuel'objetParameter.
LacollectionProperties
Mthodes
Refresh:MetjourlesobjetsPropertydanslacollectionPropertiespartirdesinformationsdufournisseur.
LesobjetsProperty
Proprits
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetProperty.
Name:Indiquelenomdel'objetProperty.Enlectureseule.
Type:Indiqueletypededonnesdel'objetProperty.
Value:Indiquelavaleurdel'objetProperty.
LacollectionErrors
Mthodes
Clear:Supprimel'ensembledesobjetsErrordelacollectionErrors.
Refresh:MetjourlesobjetsErrorpartirdesinformationsdufournisseurOLEDB.
Proprits
Count:Indiquelenombred'objetsErrordelacollectionErrors.Enlectureseule.
Item:Permetl'indexationdelacollectionErrorsafinderfrencerunobjetErrorspcifique.Enlectureseule.
LesobjetsError
Proprits
Description:Renvoielachanedescriptiveassociel'objetError.Enlectureseule.
HelpContext:IndiqueleContextIDdufichierd'aideassocil'objetError.Enlectureseule.
HelpFile:Indiquelenomdufichierd'aideassocil'objetError.Enlectureseule.
- 11 - ENI Editions - All rigths reserved
NativeError:Indiquelecoded'erreurspcifiquedufournisseurassocil'objetError.Enlectureseule.
Number:Indiquelenumroidentifiantdemanireuniquel'erreurporteparl'objetError.Enlectureseule.
Source:Indiquelenomdel'objetoudel'applicationl'origined'uneerreur.Enlectureseule.
SQLState:IndiquelavaleurrenvoyeparlefournisseurOLEDB.Chanedecinqcaractresconformelanorme
SQLANSI.Enlectureseule.
- 12 - ENI Editions - All rigths reserved
Prsentation
LelangageSQL(StructuredQueryLangageoulangagederequtestructur)estunlangaged'interrogationet
degestiondebasesdedonnesrelationnelles.
Access 2007 utilise SQL comme langage de requte. Lorsque vous crez une requte en mode Cration de
requte,AccessconstruitentchedefondlesinstructionsSQLquivalentes.Enfait,laplupartdesproprits
delarequteenmodeCrationderequteontdesclausesquivalentesetdesoptionsaccessiblesenlangage
SQL.
Ilestpossibled'afficheroudemodifierl'instructionSQLcorrespondantunerequteenpassantenmodeSQL.
Exemple
I Ouvrez une requte existante en mode cration.

I Cliquez ensuite sur l'option Mode SQL de l'icne Affichage.

Vous obtenez alors l'instruction SQL correspondant votre requte :
- 1 - ENI Editions - All rigths reserved

Cette manipulation est trs intressante notamment si vous n'tes pas coutumier du langage SQL : vous pouvez crer vos requtes
dans Access et rcuprer l'instruction SQL gnre pour l'inclure dans votre code VBA.
CertainesrequtesSQL,nommesrequtesspcifiquesSQL,nepeuventtrecresdanslagrilledecration
derequtesmaisdoiventtresaisiesdirectementenmodeSQL.Ils'agit :
- des "requtes directes" qui vous permettent de travailler directement avec les tables sur le serveur,
- des "requtes dfinition des donnes" qui vous permettent de crer, supprimer ou modifier la structure des tables,
- des "requtes Union" qui vous permettent de regrouper les champs de deux tables (ou plus) dans un mme champ rsultat de
la requte. Ces requtes sont trs utiles pour fusionner des enregistrements provenant de tables diffrentes.

- 2 - ENI Editions - All rigths reserved
LangageSQLetVBA
Les requtes SQL s'intgrent parfaitement VBA et peuvent tre utilises partir des mthodes de diffrents
objets:
- mthode OpenRecordset des objets DataBase et Connection,
- mthode CreateQueryDef des objets DataBase et Connection,
- mthode Execute des objets Command et Connection,
- etc.
LesrequtesSQLsontaussitrsutilisesdanslesformulaires :
- proprit RecordSource d'un formulaire ou d'un tat,
- proprit RowSource d'une liste droulante,
- etc ...
LaplupartdecespropritspeuventtremodifiesparducodeVBA.
Lesavantagesdel'utilisationd'instructionsSQLenVBAsontlessuivants :
Vitessed'excution:uneinstructionSelectestplusrapidequeleparcourssquentield'unetable.
Performance accrue : en mode client/serveur, les requtes sont compiles par le SGBD qui optimise leurs
performances.
Maintenanceplusfacile:lecodedesinstructionsSQLestpluscourt,doncpluslisiblequel'quivalentVBA.
Standardisation:lelangageSQLestlestandardd'interrogationdesbasesdedonnesrelationnelles.

- 1 - ENI Editions - All rigths reserved
DescriptiondulangageSQL
L'instructionSELECT
SELECT est l'instruction SQL la plus utilise : elle correspond la requte Slection sous Access. Elle permet
d'extrairedeschampsd'unensembled'enregistrementsrpondantcertainscritres.
Syntaxe
SELECT [ALL | DISTINCT] <liste de champs>
FROM <liste de tables>
[WHERE... ]
[GROUP BY...]
[HAVING... ]
[ORDER BY... ]
All (valeurpardfaut):Touslesenregistrementsrpondantauxcritressontprisencompte.
Distinct :Lesenregistrementspourlesquelsleschampsslectionnscontiennentdesdonnesendoublesont
omis.
<liste de champs> : Liste des champs slectionns, spars par des virgules, en respectant la syntaxe
suivante :
*|table.*|[table.]champ1[ASalias1][,
[table.]champ2[ASalias2][,...]]
* :Indiquequetousleschampsdela(des)table(s)spcifie(s)sontslectionn(s).
alias1, alias2 : Indiquent les noms utiliser comme enttes de colonne la place des noms de colonnes
originauxdanstable.
<liste de tables> :Nomdelaoudestablescontenantlesdonnesextraire.Silarequteutiliseplusieurs
tables,lemodedejointuredoitgalementtreprcisdanslaclauseFROM.
Exemples
LaclauseFROM
LaclauseFROMspcifielestablesoulesrequtesdontsontextraiteslesdonnes.
Syntaxe
FROM table1 [ LEFT | RIGHT | INNER ] JOIN table2
ON table1.champ1 <Oprateur de comparaison> table2.champ2
[ LEFT | RIGHT | INNER ] :Ces oprateurs permettent de dfinir le type de jointure entre les tables.
LEFT JOIN : Utilisez une opration LEFT JOIN pour crer une jointure externe gauche. Le rsultat de la jointure externe gauche
comprend tous les enregistrements issus de la premire table (celle de gauche: <table1>) mme ceux pour lesquels il n'existe pas
de valeur correspondante dans la deuxime table (celle de droite: <table2>).
RIGHT JOIN : Utilisez une opration RIGHT JOIN pour crer une jointure externe droite. Le rsultat de la jointure externe droite
comprend tous les enregistrements issus de la deuxime table (celle de droite: <table2>) mme ceux pour lesquels il n'existe pas
de valeur correspondante dans la premire table (celle de gauche: <table1>).
- SELECT * FROM Produits
- SELECT Produits.* FROM Produits
- SELECT Prod_ref, Prod_desig, Prod_prix, Prod_tva
FROM Produits
- SELECT Prod_ref As Reference, Prod_desig As Designation,
Prod_Prix as Prix, Prod_tva as Tva From Produits
- 1 - ENI Editions - All rigths reserved
INNER JOIN : Utilisez INNER JOIN pour crer une jointure ne comprenant que les enregistrements dans lesquels les donnes des
champs relis sont identiques.
<oprateur de comparaison> : Utilisez tout oprateur de comparaison relationnelle tel que: =, <, >, <=, >=,<> (diffrent de).
L'oprateur = est le plus couramment utilis.
Exemples
Liste des commandes avec le nom et le n de tlphone du messager.
Premier exemple
Seules les commandes auxquelles un messager a t affect sont slectionnes.
Deuxime exemple
Toutes les commandes sont slectionnes.
LaclauseWHERE
LaclauseWHEREpermetdefiltrerlesenregistrementspartirdecritres.
LesconditionsdelaclauseWHEREs'exprimentaveclesoprateurssuivants :
- oprateurs de comparaison: =, <, >, <=, >=, <> (diffrent de), Is [Not] Null, [Not] In, Between.
- oprateurs logiques : And, Or, Not.
Exemples
LaclauseGROUPBY
LaclauseGROUPBYcorrespondaux"Totaux"desrequtesAccess(appelsRegroupementsdanslesanciennes
versions).Ellepermetderegrouperdesdonnessurunouplusieurschamps.Elleestprincipalementutilisepour
effectuerdesfonctionsd'agrgationSQLtellesqueSum(somme),Count(compte),Avg(moyenne)...
Exemples
Cette requte renvoie le nombre de commandes passes par client.
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateEnvoi,
Messagers.
Mes_Nom, Messagers.Mes_Telephone
FROM Commandes INNER JOIN Messagers ON Commandes.Cde_NumMess
=
Messagers.Mes_NumMes
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateEnvoi,
Messagers.Mes_Nom, Messagers.Mes_Telephone
FROM Commandes LEFT JOIN Messagers ON Commandes.Cde_NumMess
= Messagers.Mes_NumMes
SELECT * FROM Produits WHERE [Prod_Prix] = 500
SELECT * FROM Produits WHERE [Prod_Prix]
BETWEEN 100 AND 200
SELECT * FROM Clients WHERE [Cli_pays] IN
('France','Italie','Espagne')
SELECT Clients.Cli_Societe, Count(Commandes.Cde_Numcde) AS
Nb_Cdes
- 2 - ENI Editions - All rigths reserved
Cette requte renvoie le montant total de chacune des commandes.
LaclauseHAVING
La clause HAVING spcifie les enregistrements regroups afficher dans une instruction SELECT dote d'une
clause GROUP BY. Une fois le regroupement effectu suivant la liste des champs du GROUP BY, seuls sont
conservslesenregistrementsquivrifientlaconditionspcifiedanslaclauseHAVING.
Exemple
Cette requte extrait les commandes dont le montant total est suprieur 10000 .
LaclauseORDERBY
La clause ORDER BY trie, par ordre croissant ou dcroissant, les enregistrements rsultants d'une requte en
fonctionduoudeschampsspcifis.
Syntaxe
[ORDER BY champ1 [ASC | DESC ][, champ2 [ASC | DESC ]][, ...]]]
ASC:Ordrecroissant.
DESC:Ordredcroissant.
Exemple
Cette requte renvoie le nombre de commandes passes par client, tri par ordre dcroissant du nombre de commande.
L'instructionUPDATE
L'instruction UPDATE correspond une requte de Mise jour qui modifie les valeurs des champs dans la table
spcifie,pourlesenregistrementsquirpondentaucritrefourni(facultatifs).
Syntaxe
UPDATE table
SET champ1 = nouvellevaleur1[, champ2 = nouvellevaleur2]...
[WHERE critre]
FROM Clients INNER JOIN Commandes ON Clients.Cli_NumCli=
Commandes.Cde_CodeCli
GROUP BY Clients.Cli_Societe
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateCde,
Sum([Cde_Prix]*[Cde_Qte]) AS TotalCde
FROM Commandes INNER JOIN [Dtails commandes] ON
Commandes.Cde_Numcde = [Dtails commandes].Cde_NumCde
GROUP BY Commandes.Cde_Numcde, Commandes.Cde_DateCde
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateCde,
Sum([Cde_Prix]*[Cde_Qte]) AS TotalCde
FROM Commandes INNER JOIN [Dtails commandes] ON
Commandes.Cde_Numcde = [Dtails commandes].Cde_NumCde
GROUP BY Commandes.Cde_Numcde, Commandes.Cde_DateCde
HAVING (Sum([Cde_Prix]*[Cde_Qte])>10000)
SELECT Clients.Cli_Societe, Count(Commandes.Cde_Numcde) AS
Nb_Cdes
FROM Clients INNER JOIN Commandes ON
Clients.Cli_NumCli=Commandes.Cde_CodeCli
GROUP BY Clients.Cli_Societe
ORDER BY Count(Commandes.Cde_Numcde) DESC
- 3 - ENI Editions - All rigths reserved
Si aucune clause Where n'est spcifie, tous les enregistrements sont mis jour.
Exemple
Cette requte modifie le code pays de tous les enregistrements de la table Clients.
Cette requte modifie dans la table Clients le code pays des enregistrements des clients dont la ville est 'Marseille'.
L'instructionDELETE
L'instruction DELETE correspond une requte Suppression qui supprime des enregistrements dans la table
mentionnedanslaclauseFROM,selonlescritresfournis(facultatifs).
Syntaxe
DELETE FROM table
[WHERE critres]
Si aucune clause Where n'est spcifie, tous les enregistrements sont supprims.
Exemple
Cette requte supprime les commandes antrieures 2007.
L'instructionINSERTINTO
L'instructionSQLINSERTINTOcorrespondunerequteAjoutquiajoutedesenregistrementsdansunetable.
Syntaxe
Requte Ajout avec un seul enregistrement :
INSERT INTO <TableDestination> [(champ1[, champ2[, ...]])]
VALUES (valeur1[, valeur[, ...]])
Cette requte doit contenir le mme nombre de valeurs, du mme type et dans le mme ordre, que de colonnes valoriser.
Requte Ajout avec un ou plusieurs enregistrements :
INSERT INTO <TableDestination> [(champ1[, champ2[, ...]])]
SELECT [<Tablesource>.]champ1[, champ2[, ...]]
FROM <liste de tables>
L'instruction SELECT doit renvoyer autant de valeurs, dans le mme ordre et du mme type que les colonnes valoriser (champs de
l'instruction INSERT).
Exemples
Ajout d'un enregistrement dans la table Clients.
UPDATE Clients SET Clients.Cli_pays = 'F'
UPDATE Clients SET Clients.Cli_Pays = 'F'
WHERE Clients.Cli_ville='Marseille'
DELETE FROM Commandes
WHERE ((Commandes.Cde_DateCde) < #1/1/2007#)
INSERT INTO Clients ( Cli_CodeCLi, Cli_societe, Cli_ville,
Cli_pays )
- 4 - ENI Editions - All rigths reserved
Ajout des enregistrements de la table Prospects dans la table Clients.
Autresinstructions
Requtesd'interrogation
TRANSFORM:Creunerequteanalysecroise.Cetteinstructionestutiliselorsdelacrationd'unerequte
partirdel'assistantRequteanalysecroised'Access.
UNION : Cre une requte qui fusionne les rsultats de deux, ou plusieurs, requtes ou tables indpendantes.
Lesstructuresdestableset/oudesrequtesfusionnesdoiventtreidentiques.
Crationetgestiondetables
CREATETABLE:Creunenouvelletable.
CREATEINDEX:Creunnouvelindexpourunetableexistante.
ALTERTABLE:Modifielastructured'unetable.
DROPTABLE:Supprimeunetabledelabasededonnes.
DROPINDEX:Supprimeunindexd'unetable.
Crationetgestiond'utilisateursetdegroupes
CREATEUSER:Creunouplusieursnouveauxutilisateurs.
ADDUSER:Ajouteunouplusieursutilisateursungrouped'utilisateursexistant.
DROPUSER:Supprimeunouplusieursutilisateurs.
CREATEGROUP:Creunouplusieursnouveauxgroupes.
DROPGROUP:Supprimeunouplusieursgroupesd'utilisateurs.
GRANT:Attribuedesprivilgesspcifiquesunutilisateurouungrouped'utilisateursexistant.
REVOKE:Retiredesprivilgesspcifiquesunutilisateurouungrouped'utilisateursexistant.
Vous pouvez obtenir de plus amples informations au sujet du langage SQL et de ses instructions, partir de la rubrique "Rfrence
de Microsoft jet SQL", du sommaire de l'aide Access.

VALUES ('ENI','Editions ENI', 'Nantes','F').
INSERT INTO Clients
SELECT Prospect.*
FROM Prospect
- 5 - ENI Editions - All rigths reserved
Exemplesd'utilisationderequtesSQL
Afindedmontrerl'intrtdulangageSQL,lesexemplessuivantsproposentdeuxprocduresquivalentes:l'une
utiliselelangageSQL,l'autrenon.
Pour raliser ces exemples vous devez crer une table Clients avec un champ nomm Cli_Societe, et saisir
quelquesenregistrementsdanscettetable.VouspouvezgalementimporterlatableClientsdelabaseexemple
Comptoir.mdb livre avec Access 2003 et renommer les champsSocit en Cli_Societe, Pays en Cli_Pays et
VilleenCli_Ville.
Misejourd'enregistrements
Lecodedel'exemplesuivantpermetdemodifierlecontenud'unchampdansunetablepourdesenregistrements
rpondantcertainscritres.
Code VBA utilisant une requte SQL de type UPDATE.
Code VBA quivalent sans requte SQL.
Chargementd'unelistedroulante
Le code de l'exemple ciaprs permet d'afficher dans une liste droulante (contrle zone de liste) le nom des
clientsdontlenomdeSocitcommenceparunelettredonne(lalettreestsaisiedansunezonedetexte).
Pourtestercetexemplevousdevez:
- crer un formulaire nomm Clients.
- Ajouter les contrles suivants dans ce formulaire:
- une zone de texte nomm txtNomSoc.
Private Sub Maj_Pays()
Dim cncDevis As ADODB.Connection
Dim strSQL As String
' Mise jour du code pays dans la table clients
Set cncDevis = CurrentProject.Connection
strSQL = "UPDATE Clients SET " _
& "Clients.CLI_PAYS = 'F' " _
& "WHERE Clients.CLI_VILLE = 'Marseille'"
cncDevis.Execute strSQL
End Sub
Private Sub Maj_Pays1()
Dim cncDevis As ADODB.Connection
Dim rstClient As ADODB.Recordset

' Ouverture d'un jeu d'enregistrement
Set cncDevis = CurrentProject.Connection
Set rstClient = New ADODB.Recordset
rstClient.Open "CLIENTS", cncDevis, adOpenForwardOnly,
adLockOptimistic

' Parcours squentiel de la table Clients
Do While Not rstClient.EOF
If rstClient("CLI_VILLE") = "Marseille" Then
rstClient("CLI_PAYS") = "F"

rstClient.Update
End If
rstClient.MoveNext
Loop

End Sub
- 1 - ENI Editions - All rigths reserved
- Une zone de liste nomme lstSoc.
- Un bouton de commande cmdListe1.
Code VBA utilisant une requte SQL de type SELECT. Le contenu de la liste est le rsultat de la requte SQL.
Code VBA quivalent sans requte SQL. La liste est renseigne partir d'une liste de valeur.
Les exemples prcdents permettent de constater que le code utilisant SQL est plus court et son excution plus rapide, ce qui peut
s'avrer trs intressant par exemple si la table client contient un nombre important d'enregistrements.
Private Sub cmdListe1_Click()
Dim strSQL As String

' Contrle du nom saisi
If txtNomSoc = "" Then
MsgBox "Vous devez saisir au moins une lettre",
vbExclamation
txtNomSoc.SetFocus
Exit Sub
End If

' Proprits de la liste droulante
' La liste contient une requte
Me.lstSoc.RowSourceType = "Table/Requte"
strSQL = "SELECT Clients.CLI_SOCIETE FROM Clients " _
& "WHERE (Clients.CLI_SOCIETE Like '" & Me.txtNomSoc &
"*')"
Me.lstSoc.RowSource = strSQL
' Ractualisation des donnes de la liste
Me.lstSoc.Requery

End Sub
Private Sub cmdListe1_Click()
Dim cncDevis As ADODB.Connection
Dim rstClient As ADODB.Recordset
Dim strNomSoc as String
' Contrle du nom saisi
If txtNomSoc = "" Or IsNull(txtNomSoc) Then
MsgBox "Vous devez saisir au moins une lettre",
vbExclamation
txtNomSoc.SetFocus
Exit Sub
End If

' Initialisation de la liste droulante
' La liste contient une liste de valeurs
Me.lstSoc.RowSourceType = "Liste valeurs"
Me.lstSoc.RowSource = ""
Me.lstSoc.Requery
' Ouverture d'un jeu d'enregistrement
Set cncDevis = CurrentProject.Connection
Set rstClient = New ADODB.Recordset
rstClient.Open "CLIENTS", cncDevis, adOpenForwardOnly, _
adLockOptimistic
' Parcours squentiel de la table et ajout d'lments la
liste
Do While Not rstClient.EOF
If Left(rstClient("CLI_SOCIETE"), 1) = Left(Me.txtNomSoc, _
Len(Me.txtNomSoc)) Then
strNomSoc = rstClient("CLI_SOCIETE")
Me.LstSoc.AddItem strNomSoc
End If
rstClient.MoveNext
Loop
rstClient.close

End Sub
- 2 - ENI Editions - All rigths reserved
Prsentation
Dfinition
Unvnementestissud'uneactiondel'utilisateuroudusystmesurunobjet.Ildclenchel'excutionducode
correspondantlaprocdurevnementielledel'objetactiv.

L'utilisation d'une procdure vnementielle ou d'une macro permet d'ajouter la rponse propre l'application
unvnementseproduisantdansunformulaire,untatouuncontrle.
AssociationdecodeVBAunvnement
VouspouvezaffecteruncodeVBAl'vnementd'unobjetdedeuxfaons :
- partir de l'onglet vnement de la fentre des proprits de l'objet dans Access.

- partir des listes droulantes d'objets et d'vnements dans l'diteur Visual Basic
- 1 - ENI Editions - All rigths reserved


- 2 - ENI Editions - All rigths reserved
Catgoriesd'vnements
Leslistesd'vnementssuivantessontclassespartypeetcomportent:
- le nom de l'vnement,
- le nom de la proprit correspondante dans la fentre des proprits de l'objet (entre parenthses),
- la description de l'vnement,
- la mention Annulation indique si l'vnement peut tre annul ou pas. L'annulation d'un vnement fait l'objet du paragraphe
Annulation d'un vnement.
EvnementsdetypeFentre
Open:(Surouverture)
Seproduitl'ouvertureduformulairemaisavantquelepremierenregistrementsoitaffich.
Seproduitl'ouvertured'untat,maisavantsonimpression.
Annulation:Oui
Load:(Surchargement)
Seproduitl'ouvertureduformulairelorsquelepremierenregistrementestaffich.
Annulation:Non
Resize:(Surredimensionnement)
Seproduitlorsdupremieraffichageduformulaireetlorsdesmodificationsdesataille.
Annulation:Non
UnLoad:(Surlibration)
Se produit lors de la fermeture et lorsque les enregistrements sont librs, mais avant que le formulaire ne
disparaisse.
Annulation:Oui
Close:(Surfermeture)
Seproduitlorsqueleformulaireoul'tatdisparatlafermeture.
Annulation:Non
EvnementsdetypeFocus
Lesvnementsdetype"focus"peuvents'appliquerauxformulaires(Activate,Deactivate,GotFocus,LostFocus)
ouauxcontrles(Enter,Exit,SetFocus,LostFocus).
On dit qu'un objet a le focus lorsqu'il peut recevoir une saisie de l'utilisateur via des actions la souris ou au
clavier.Lesobjetsquiontlefocussontappelsobjetsactifs(ActiveFormouActiveControl).
La mthode SetFocus permet de donner le focus un contrle ou un formulaire.
Activate:(Suractiv)
Seproduitlorsquelafentreduformulaireoudel'tatdevientactive.
Annulation:Non
Deactivate:(Surdsactiv)
Seproduitlorsdel'activationd'uneautrefentre,maisavantqu'ellenesoitactive.
Seproduitgalementlorsdelafermeturedelafentre.
- 1 - ENI Editions - All rigths reserved
Annulation:Non
Enter:(Surentre)
Seproduitavantqu'uncontrleneprennelefocuspartird'unautrecontrleoul'ouvertureduformulaire.
Annulation:Non
Exit:(Sursortie)
Se produit avant qu'un contrle ne perde le focus au profit d'un autre contrle du formulaire ou d'un autre
formulaire.
Annulation:Oui
GotFocus:(Surrceptionfocus)
Seproduitlorsqu'uncontrleouunformulairesanscontrleactifreoitlefocus.
Annulation:Non
LostFocus:(Surpertefocus)
Seproduitlorsqu'uncontrleouunformulaireperdlefocus.
Annulation:Non
EvnementsdetypeDonnes
Les vnements de type "donnes" s'appliquent aux formulaires associs une source de donnes (proprit
RecordSourcerenseignepartird'unnomdetableoud'unerequte)etauxcontrlesassocisunchampdela
sourcededonnesduformulaire(propritControlSourcerenseigne).
AfterInsert:(Aprsinsertion)
Seproduitaprsl'ajoutd'unnouvelenregistrementdanslatable.
Annulation:Non
AfterUpdate :(AprsMAJ)
Seproduitaprslamisejourd'uncontrleoud'unenregistrementavecdesdonnesmodifies.
Annulation:Non
AfterDelConfirm:(Aprssuppression)
Seproduitaprsquel'utilisateuraitrpondulademandedesuppressiondesenregistrements.
Annulation:Non
BeforeInsert:(Avantinsertion)
Se produit lors de la frappe du premier caractre d'un nouvel enregistrement, mais avant l'ajout rel de
l'enregistrement.
Annulation:Oui
BeforeUpdate :(AvantMAJ)
Seproduitavantlamisejourd'uncontrleoud'unenregistrementavecdesdonnesmodifies.
Annulation:Oui
BeforeDelConfirm:(Avantsuppression)
Seproduitaprsquel'utilisateuraitsupprimdesenregistrements,etavantqu'Accessnedemandeconfirmation.
Annulation:Oui
NotInList:(Surabsencedansliste)
- 2 - ENI Editions - All rigths reserved
Seproduitlorsdelasaisied'unevaleurnefigurantpasdansunelisteetlorsquelapropritlimiteunelisteest
vraie.
Annulation:Non
Current:(Suractivation)
Seproduitlorsquelefocuspassed'unenregistrementl'autre.
Seproduitgalementl'ouvertureavantquelepremierenregistrementnedevienneceluiencours.
Annulation:Non
Change:(Surchangement)
Seproduitlorsdelamodificationducontenud'unezonetexteoulistemodifiable(clavieroumacro/VisualBasic).
Annulation:Non
Updated:(SurMAJ)
Seproduitlorsquelesdonnesd'unobjetOLEonttmodifies.
Annulation:Non
Delete:(Sursuppression)
Seproduitavantlasuppressioneffective.Lorsdel'appuisur[Suppr]parexemple.
Annulation:Oui
Dirty:Seproduitlorsquelecontenud'unformulaireoulapartietexted'unezonedelistemodifiablechange.
Seproduitgalementlorsdupassaged'unepageuneautredansuncontrleOnglet.
Annulation:Oui
EvnementsdetypeSouris
Click:(Surclic)
Seproduitlorsdel'appuisurleboutongauchedelasourissuruncontrleouunezonevierged'unformulaire.
Annulation:Non
DblClick:(Surdoubleclic)
Se produit lors de deux appuis sur le bouton gauche de la souris sur un contrle ou une zone vierge d'un
formulaire.
Annulation:Oui
MouseDown:(Sursourisappuye)
Seproduitlorsdel'appuisurunboutondelasourissuruncontrleouunformulaire.
Annulation:Oui
MouseMove:(Sursourisdplace)
Seproduitlorsquel'utilisateurdplacelasourissurunformulaireouuncontrle.
Annulation:Non
MouseUp:(Sursourisrelche)
Seproduitlorsquel'utilisateurrelcheleboutondelasourissuruncontrleouunformulaire.
Annulation:Non
EvnementsdetypeClavier
- 3 - ENI Editions - All rigths reserved
KeyDown:(Surtoucheappuye)
Seproduitlorsdel'appuisurunetoucheoulorsdel'excutiondeSendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentKeycode
delaprocdureKeyDowndel'objet.
Annulation:Non
KeyPress:(Surtoucheactive)
Se produit lors de l'appui sur une touche mettant un caractre ANSI standard ou lors de l'excution de
SendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentkeyAscii
delaprocdureKeyPressdel'objet.
Annulation:Oui(parmacroouVBA)
KeyUp:(Surtoucherelche)
Seproduitlorsquel'utilisateurrelchelatoucheoulorsdel'excutiondeSendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentKeyCode
delaprocdureKeyUpdel'objet.
Annulation:Non
La proprit KeyPreview (aperu des touches) d'un formulaire dtermine si les procdures vnementielles de clavier du niveau
formulaire sont appeles avant celles du niveau contrle. Vous pouvez utiliser la proprit KeyPreview pour crer une procdure de
gestion du clavier au niveau d'un formulaire.
Exemple
L'exemple suivant montre comment afficher un formulaire lorsque l'utilisateur tape sur la touche [F1], et ce quel que soit le contrle
actif.
vnementsdetypeImpression
Cesvnementss'appliquentauxtatsAccess.
Format:(Auformatage)
SeproduitlorsqueMicrosoftAccessdterminequellesdonnesappartiennentquellessections.
Annulation:Oui
Print:(Surimpression)
Seproduitlorsdelamiseenformedesdonnesd'unesectionpourimpression.
Annulation:Oui
Retreat:(Aureformatage)
SeproduitlorsqueMicrosoftAccessretourneunesectionprcdentependantlamiseenformed'untat.
Private Sub Form_Load()
KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As
Integer)
' Si la touche est F1, le formulaire Recherche est
affich
' KeyCode est rinitialis pour ne pas afficher l'aide
Access
If KeyCode = vbKeyF1 Then
DoCmd.OpenForm "Recherche"
KeyCode = 0
End If
End Sub
- 4 - ENI Editions - All rigths reserved
Annulation:Non
NoData:(Suraucunedonne)
SeproduitlorsqueMicrosoftAccessamisenformeuntatenvuedesonimpressionetqueceluicinecontient
aucunedonne.
Annulation:Oui
Page:(Surlapage)
SeproduitaprsqueMicrosoftAccessaitmisenformeunepaged'untatenvuedesonimpression,maisavant
quelapagenesoitimprime.
Annulation:Non
Les vnements Format, Print et Retreat s'appliquent aux sections des tats.
vnementsdetypeFiltre
ApplyFilter:(Surfiltreappliqu)
Seproduitlorsquel'utilisateurappliqueunfiltre.
Annulation:Oui
Filter:(Surfiltre)
Seproduitlorsquel'utilisateurcreunfiltre.
Annulation:Oui
vnementsdetypeErreuretMinuterie
Error:(Surerreur)
Seproduitlorsqu'uneerreursurvient.
Annulation:Non
Timer:(Surminuterie)
Seproduitlorsqu'undlaispcifis'estcoul.
Annulation:Non

- 5 - ENI Editions - All rigths reserved
Annulationd'unvnement
Dans certains cas, il est souhaitable de pouvoir annuler un vnement. Pour cela, il existe deux faons de
procder:
- en spcifiant le nom d'une macro, contenant l'action AnnulerEvnement, comme paramtre de la proprit de type vnement
correspondante, par exemple pour annuler la mise jour d'un contrle ou pour placer le nom de la macro contenant l'action
AnnulerEvnement sur sa proprit AvantMAJ. L'action AnnulerEvnement en Visual Basic utilise la mthode CancelEvent
de l'objet Docmd.
- en donnant la valeur True l'argument Cancel d'une procdure vnementielle.
Exemple
Si la date est incorrecte, l'vnement Exit (Sortie) est annul : le curseur reste positionn sur le champ.
Tous les vnements ne sont pas annulables (voir tableaux des catgories d'vnements prcdents).

Private Sub txtDateFin_Exit(Cancel As Integer)

If IsNull(txtDateFin) Then Exit Sub

' La date doit tre correcte
If Not IsDate(txtDateFin) Then
MsgBox "Date incorrecte", vbCritical
Cancel = True
Exit Sub
End If

' La date de fin doit tre >= date de dbut
If DateValue(txtDateFin) < DateValue(txtDateDeb) Then
MsgBox "Date de fin antrieure la date de dbut",
vbCritical
Cancel = True
Exit Sub
End If

End Sub
- 1 - ENI Editions - All rigths reserved
Squencestypesd'vnements
Une action utilisateur ou systme gnre directement un vnement, mais plusieurs vnements sousjacents
peuventtreactivs.
Voiciquelquessquencestypesd'enchanementsd'vnements:
Ouvertured'unformulaire:
OpenLoadResizeActivateCurrent
Fermetured'unformulaire:
UnLoadDeactivateClose
Entredansuncontrle:
EnterGotFocus
Sortied'uncontrle:
ExitLostFocus
Passaged'unformulaireunautre:
Deactivate(form1)Activate(form2)
Modificationd'unezonedetexte:
KeyDownKeyPressChangeKeyUp
Misejourd'uncontrle:
KeyDown KeyPress Change KeyUp Exit(Zone1) LostFocus(Zone1) Enter(Zone2)
GotFocus(Zone2)
Misejourd'unenregistrement:
KeyDown KeyPress Change KeyUp BeforeUpdate(Zonedetexte) AfterUpdate(Zone
detexte)BeforeUpdate(Formulaire)AfterUpdate(Formulaire)
Introductiondanslepremierchampd'unnouvelenregistrement:
KeyDownKeyPressBeforeUpdate(Formulaire)ChangeKeyUp
Suppressiond'enregistrements:
DeleteCurrentBeforeDelConfirmAfterDelConfirm

- 1 - ENI Editions - All rigths reserved
Lesvnementsdemisejour
DansMicrosoftAccesslesvnementsdemisejourinterviennentdeuxniveaux :
- mise jour d'un contrle,
- mise jour d'un enregistrement.
Danslecasd'unemisejourd'uncontrle,cesontlesvnementsBeforeUpdateetAfterUpdateducontrle
luimmequisontexcuts.
Dans le cas d'une mise jour d'enregistrement, ce sont les vnements BeforeUpdate et AfterUpdate du
formulairequisontexcuts.
Lesvnements"misejourdescontrles"sontexcutsavantlesvnements"misejourduformulaire".
- 1 - ENI Editions - All rigths reserved
Lesdiffrentstypesd'erreur
Ondistinguediffrentstypesd'erreurdanslelangageVBA :
- les erreurs de syntaxe,
- les erreurs de compilation,
- les erreurs d'excution,
- les erreurs de logique.
Leserreursdesyntaxe
LeserreursdesyntaxepeuventtredcelesautomatiquementlorsdelasaisieducodedansVBA.
Pouractiverlavrificationdesyntaxe,danslemenuOutils:
I Slectionnez Options.
I Puis slectionnez l'onglet diteur et cochez la case Vrification automatique de la syntaxe.
Exemple

Les erreurs de syntaxe non corriges provoqueront une erreur de compilation (cf.message affich).
Leserreursdecompilation
LeserreursdecompilationsontdceleslorsqueAccesstentedecompilervotrecode.
LecodeVBApeuttrecompildedeuxfaons:
- la demande de l'utilisateur en slectionnant l'option Compiler du menu Dbogage. Dans ce cas le code est entirement
compil.
- Automatiquement lors de l'excution du code. Dans ce cas, le code contenu dans les procdures n'est compil que lors du
premier appel de la procdure. Les procdures non appeles ne seront pas compiles.
Il est recommand de compiler le programme avant de l'excuter afin de gagner du temps sur la mise au point.
- 1 - ENI Editions - All rigths reserved
Exemple

Ilestpossibled'viterleserreursd'excutionduesdesvariablesnondclaresenutilisantl'instructionOption
Explicit.Sivoustentezd'utiliserunevariablenondclare,uneerreurseproduitlorsdelacompilation.
Leserreursd'excution
Les erreurs d'excution sont dceles lorsque Access lance l'excution de votre code. Une instruction, une
opration, un appel de fonction... invalides provoquent une erreur d'excution. Par exemple, l'utilisation d'une
variable non dclare ou un calcul effectu sur une variable comportant une valeur non numrique peuvent
provoqueruneerreurd'excution.
Exemple
La variable dblRayon transmise comme argument contient une valeur non numrique.
- 2 - ENI Editions - All rigths reserved

Leserreursdelogique
Leserreursdelogiquesontliesdeserreursderaisonnementouunemauvaisetraductiond'unraisonnement
encodeVBA.Parexempleunalgorithmedecalculpeutproduireuneerreurdersultatsi,lorsdesatranscription
enVBA,uneoprationestomiseoumaltraduite,ousil'algorithmeesterron.
Leserreursdelogiquesontlesplusdifficilesdtecter.Ellesn'entranentgnralementpasd'erreurd'excution,
maisproduisentunrsultatdiffrentdeceluiattendu.
Dansl'exemplecitprcdemment,silavaleurdePiestfausseoulaformuledecalculduvolumeincorrecte,la
valeurretourneparVolSphereseraerrone.

- 3 - ENI Editions - All rigths reserved
DbogageavecVBA
Prsentation
Le mode dbogage permet, entre autres, de dtecter et de corriger interactivement les erreurs autorisant ainsi
lapoursuitedel'excutionduprogramme.
Lorsqu'une erreur d'excution se produit, un code erreur est affich, l'excution du programme est interrompue
parAccessetlemodedbogageestactiv.
Aveclesdiffrentsoutilsdedbogage,onpeut :
- excuter le code pas pas,
- ajouter des points d'arrt,
- connatre tout moment la valeur d'une variable ou d'une expression,
- modifier interactivement le code,
- etc.
Labarred'outilsDbogage
Labarred'outilsDbogagepermetd'accderdirectementauxdiffrentsoutilsdedbogage.

1. Mode cration : Active ou dsactive le mode cration.
2. Excuter (F5) : Excute le code de la procdure en cours, la feuille UserForm active ou une macro.
3. Arrt (Ctrl Pause) : Interrompt l'excution du programme en cours et passe en mode Arrt.
4. Rinitialiser : Efface le contenu des variables et rinitialise le projet.
5. Basculer le point d'arrt (F9) : Dfinit ou supprime un point d'arrt sur la ligne en cours; le code est excut jusqu'au point
d'arrt, puis passe en mode dbogage.
6. Pas pas dtaill (F8] : Excute le code, instruction par instruction, en parcourant la procdure en cours et des procdures
appeles.
7. Pas pas principal (Shift F8) : Excute le code, instruction par instruction, uniquement pour la procdure en cours (les
instructions des procdures appeles sont excutes en continu).
8. Pas pas sortant (Ctrl Shift F8) : Excute en continu les lignes restantes de la procdure en cours.
9. Fentre variable locales : Affiche les valeurs des variables locales de la procdure.
10. Fentre excution (raccourci-clavier CtrlG) : Affiche la fentre excution permettant d'excuter interactivement une instruction.
11. Fentre espions : Affiche la liste des variables espions.
12. Espion express (Shift F9) : Affiche la valeur actuelle de l'expression slectionne.
- 1 - ENI Editions - All rigths reserved
13. Pile des appels: Affiche la liste des appels de procdure dont l'excution est en cours.
L'objetDebug
L'objet Debug permet d'envoyer des donnes pour affichage dans la fentre Excution au moment de
l'excution.
Mthodes
Print :Affichedutexteoulersultatdel'valuationd'uneexpressiondanslafentreExcution.
Assert :Suspendl'excutiondemanireconditionnelle,laligneoapparatlamthode.
Exemple

VolSphere = 4 / 3 * Pi * ((dblRayon) ^ 3)
Debug.print dblRayon
Debug.Assert VolSphere > 0
- 2 - ENI Editions - All rigths reserved
GestiondeserreursparVBA
Principe
Lorsqu'uneerreurd'excutionseproduit,uncodeerreurestgnrparAccess.Lagestiondeserreursconsiste
identifierl'erreureninterceptantsoncodeetlatraiterpour,parexemple:
- afficher un message plus explicite que celui dfini par le systme,
- corriger ventuellement l'erreur.
Le systme de gestion des erreurs d'Access offre deux possibilits pour intercepter l'erreur selon l'endroit o elle
s'estproduite:
- dans la procdure vnementielle Error d'un formulaire ou d'un tat, si l'erreur a t provoque au niveau de l'interface de
Microsoft Access ou du moteur Microsoft Jet,
- en utilisant l'instruction On Error si l'erreur a eu lieu dans du code VBA.
Afin de pouvoir traiter les erreurs, il est ncessaire d'en connatre la liste. La liste des codes erreur est dtaille en Annexe A.
LaprocdurevnementielleError
LaprocdurevnementielleErrorpossdedeuxarguments:
Sub Form_Error (DataErr As Integer, Response As Integer)
DataErr :Contientlecodedel'erreur.
Response : Permet d'afficher (acDataErrDisplay) ou non (acData ErrContinue) le message d'erreur standard
d'Access.
Exemple
L'exemple suivant permet d'intercepter une erreur et de remplacer le message standard d'Access (ex : un index ou une cl principale
ne peut contenir de valeur nulle : correspondant au numro d'erreur 3058), par un message spcifique.
L'instructionOnError
OnErrorGoTo
L'instructionOnErrorGoToindiqueunesquenced'instructionsexcuterencasd'erreur.Cetteinstructiondoit
treplaceavantlesinstructionspouvantdclencheruneerreur.
Syntaxe
On Error {GoTo <tiquette>| GoTo 0}
<tiquette> :Nomdel'tiquetteindiquantledbutdelasquenced'instructions.Unetiquetteestcompose
d'unnomcommenantparunelettreetdusignedeuxpoints(:).
Ex:Gest_erreur:
La squence d'instructions appele pour grer les erreurs est place en gnral la fin de la procdure ou de la
Sub Form_Error (DataErr As Integer,Response As Integer)
'Index Null
If DataErr = 3058 Then
MsgBox "Un employ doit avoir un numro"
'le message standard d'Access ne s'affiche pas
Response = acDataErrContinue
End If
End Sub
- 1 - ENI Editions - All rigths reserved
fonction et prcde d'une instruction Exit Sub ou Exit Function afin d'viter son excution s'il n'y a pas
d'erreur.
0 :Dsactiveletraitementd'erreurs.
D'autre part, dans la squence d'instructions de traitement d'erreurs, il est ncessaire d'indiquer quel endroit
doitreprendrel'excutiondelaprocdureoufonctionaprsletraitementdel'erreur.Pourcela,ilfaututiliserl'une
desinstructionssuivantes:
Resume :Reprendl'excutionduprogrammel'instructionquiaprovoqul'erreur.
Resume Next :Reprendl'excutionduprogrammel'instructionquisuitcellequiaprovoqul'erreur.
Resume <tiquette> :Reprendl'excutionduprogrammel'tiquettedfinie.
Exemple
L'objetErr
L'objetErrcontientdesinformationspermettantdeconnatrel'originedel'erreur.
Proprits
Description:Renvoieunechainedecaractresexpliquantl'originedel'erreur.
HelpContext:Renvoiel'identificateurdecontexteassociunerubriqued'unfichierd'aide.
HelpFile:Renvoieunechanedecaractrescontenantlechemind'accscompletaufichierd'aide.
LastDLLError:Renvoieuncoded'erreursystmeproduitparunappelunebibliothquedeliaisonsdynamiques.
Number:Renvoieunevaleurnumriqueindiquantlenumrodel'erreur.
Source:Renvoieunechanedecaractrescontenantlenomdel'objetoudel'applicationquiagnrl'erreur.
Mthodes
Clear:Effacedemanireexplicitelecontenudel'objetErr.
Raise:Permetdegnrerdeserreursd'excution.
Exemple
Le code suivant permet d'afficher un message donnant des informations sur la nature de l'erreur.
Sub MaProcdure()
On Error GoTo Erreur
...
Exit Sub
Erreur:
Select Case Err
Case 11
'Division par Zro
MsgBox ...
...
Resume Next
Case 13
'Types incompatibles
...
End Select
End Sub
- 2 - ENI Editions - All rigths reserved

Exemple de bote de message renvoye lorsqu'une erreur se produit:

- 3 - ENI Editions - All rigths reserved
Prsentation
Le langage VBA permet de personnaliser vos formulaires et tats lors de leur excution. Vous pourrez, par
exemple,effectuerlesoprationssuivantes:
- Modifier l'apparence d'un contrle dans un formulaire ou un tat (couleur, taille, position...).
- Ajouter ou supprimer des contrles dans un formulaire ou un tat.
- Enchaner des formulaires partir de boutons de commandes.
- Afficher ou imprimer un tat,
- Appliquer des filtres sur les enregistrements d'un tat ou d'un formulaire.
- Etc.
Les assistants "Boutons de commande" et "Zones de liste droulante" gnrent automatiquement du code VBA
dans des procdures vnementielles. Ils constituent des premiers exemples simples de personnalisation de
formulairesetd'tats.
Vous trouverez d'autres exemples de personnalisation de formulaires et d'tats dans la "mini application" dcrite au chapitre Code
d'une mini-application.

- 1 - ENI Editions - All rigths reserved
Personnalisationdesformulaires
Un objet Form fait partie de la collection Forms qui reprsente tous les formulaires actuellement ouverts.
L'objetActiveForm(Screen.ActiveForm)etl'objetMedsignentleformulaireactif.
N'utilisez le mot rserv Me pour reprsenter un objet Form ou Report dans du code que si vous faites rfrence ce formulaire ou
tat partir du code dans le module de classe. Si vous y faites rfrence partir d'un module standard ou d'un autre module du
formulaire ou de l'tat, vous devez utiliser la rfrence complte du formulaire ou de l'tat.
Syntaxes
Pourfaire rfrenceunformulaire,vousdisposezdesdiffrentessyntaxes,permettantdefairerfrence
unobjetd'unecollection,suivantes :
Forms!<Nomformulaire>
ex: Forms!Commandes
Forms![<Nomformulaire>]
ex: Forms![Commandes]
Forms("<Nomformulaire>")
ex: Forms("Commandes")
Forms(<Index>)
ex: Forms(0)
La syntaxe Forms![<Nomformulaire>] est la plus couramment utilise.
Si un nom de formulaire contient un espace, la premire syntaxe ne fonctionne pas.
Utilisez toujours la mme syntaxe afin de faciliter la lecture du code.
Il est prfrable de rfrencer un formulaire spcifique par son nom plutt que par son index, car ce dernier peut changer.
Pour faire rfrence un sousformulaire partir d'un formulaire, vous devez utiliser le nom du contrle
contenantlesousformulairesuividumotclForm.
Exemple
PropritsdisponiblesenmodeCration
Pour connatre le nom VBA et la description d'une proprit disponible en mode cration, vous devez vous
positionnerdanslafentrePropritsdel'objetFormulaireetcliquersurlatoucheF1.
[sFrmParticipant].Form!txtNbStag
[sFrmFormations].Form.RecordSource = strSQL
[sFrmFormations].Form.Requery
- 1 - ENI Editions - All rigths reserved

Propritsdel'ongletFormat
- 2 - ENI Editions - All rigths reserved

1. Caption Chanedecaractres
2. DefaultView Octet
0Formulaireunique(modesimple)
1Formulairescontinus(modecontinu)
2Feuillededonnes
3Tableaucroisdynamique
4Graphiquecroisdynamique
5Formulairedoubleaffichage
3. AllowFormView Boolen
4. AllowDatasheetView Boolen
5. AllowPivotTableView Boolen
6. AllowPivotChartView Boolen
7. AllowLayoutView Boolen
8. Picture Chanedecaractres
- 3 - ENI Editions - All rigths reserved
9. PictureTiling Boolen
10. PictureAlignment Octet
0 Hautgauche
1 Hautdroite
2 Centr
3 Basgauche
4 Basdroite
5 Centreduformulaire
11. PictureType Octet
0Intgr(ouincoropor)
1Attach(ouli)
12. PictureSizeMode Octet
0 Dcoupage
1 Echelle
2 Zoom
13. Width Relsimple
14. AutoCenter Boolen
15. AutoResize Boolen
16. FitToScreen Boolen
17. BorderStyle Octet
0 Aucun
1 Fin
2 Dimensionnable
3 Traitdoublefixe
18. RecordSelectors Boolen
19. NavigationButtons Boolen
20. NavigationCaption Boolen
21. DividingLines Boolen
22. ScrollBars Octet
0 Aucun
1 Horizontale
2 Verticale
3 Lesdeux
23. ControlBox Boolen
24. CloseButton Boolen
25. MinMaxButtons Octet
0 Aucun
1 Minactiv
2 Maxactiv
3 Lesdeuxactivs
26. Moveable Boolen
27. SplitFormSize Entierlong
28. SplitFormOrientation Octet
0 Enhaut
1 Enbas
- 4 - ENI Editions - All rigths reserved
Propritsdel'ongletDonnes

2 Agauche
3 Adroite
29. SplitFormSplitterBar Boolen
30. SplitFormDatasheet Octet
0 Modifautorise
1 Lectureseule
31. SplitFormPrinting Octet
0 Formulaireuniquement
1 Feuillededonnesuniquement
32. SplitFormSplitterBarSave Boolen
33. SubdatasheetExpanded Boolen
34. SubdatasheetHeight Boolen
35. GridX Entier
36. GridY Entier
37. LayoutForPrint Boolen
38. Orientation
0 Degauchedroite
1 Dedroitegauche
39. PaletteSource Chanedecaractres
1. RecordSource Chanedecaractres
2. TypeRecordSet Octet
0 Feuillederponsedynamique
1 Feuillerp.Dyn(MAJglobale)
2 Instantan
3. FetchDefaults Boolen
4. Filter String
5. FilterOnLoad Boolen
6. OrderBy String
7. OrderByOnLoad Boolen
- 5 - ENI Editions - All rigths reserved
Propritsdel'ongletvnement

8. DataEntry Boolen
9. AllowAdditions Boolen
10. AllowDeletions Boolen
11. AllowEdits Boolen
12. AllowFilters Boolen
13. RecordLocks Boolen
1. OnCurrent Chanedecaractres
2. OnLoad Chanedecaractres
3. OnClick Chanedecaractres
4. BeforeUpdate Chanedecaractres
5. AfterUpdate Chanedecaractres
6. BeforeInsert Chanedecaractres
7. AfterInsert Chanedecaractres
8. BeforeDelConfirm Chanedecaractres
9. OnDelete Chanedecaractres
10. AfterDelConfirm Chanedecaractres
11. OnDirty Chanedecaractres
12. OnGotFocus Chanedecaractres
13. OnLostFocus Chanedecaractres
14. OnDblClick Chanedecaractres
- 6 - ENI Editions - All rigths reserved

15. OnMouseDown Chanedecaractres
16. OnMouseUp Chanedecaractres
17. OnMouseMove Chanedecaractres
18. OnKeyUp Chanedecaractres
19. OnKeyDown Chanedecaractres
20. OnKeyPress Chanedecaractres
21. OnUndo Chanedecaractres
22. OnOpen Chanedecaractres
23. OnClose Chanedecaractres
24. OnResize Chanedecaractres
25. OnActivate Chanedecaractres
26. OnDeactivate Chanedecaractres
27. OnUnload Chanedecaractres
28. OnError Chanedecaractres
29. MouseWheel Chanedecaractres
30. OnFilter Chanedecaractres
31. OnApplyFilter Chanedecaractres
32. OnTimer Chanedecaractres
33. TimerInterval Chanedecaractres
34. SelectionChange Chanedecaractres
35. BeforeRender Chanedecaractres
36. AfterFinalRender Chanedecaractres
- 7 - ENI Editions - All rigths reserved
Propritsdel'ongletAutres

37. AfterRender Chanedecaractres
38. AfterLayout Chanedecaractres
39. OnConnect Chanedecaractres
40. OnDisconnect Chanedecaractres
41. BeforeQuery Chanedecaractres
42. Query Chanedecaractres
43. DataChange Chanedecaractres
44. DataSetChange Chanedecaractres
45. CommandExecute Chanedecaractres
46. CommandBeforeExecute Chanedecaractres
47. CommandChecked Chanedecaractres
48. DataSetChange Chanedecaractres
49. ViewChange Chanedecaractres
50. PivotTableChange Chanedecaractres
51. BeforeScreenTip Chanedecaractres
52. KeyPreview Chanedecaractres
1. Popup Boolen
2. Modal Boolen
3. DisplayOnSharePointSite Octet
0 Nepasafficher
1 Suivreleparamtredelatable
4. Cycle Octet
0 Touslesenregistrements
1 Enregistrementencours
2 Pageencours
5. RibbonName Chanedecaractres
6. ToolBar Chanedecaractres
- 8 - ENI Editions - All rigths reserved
PropritsnondisponiblesenmodeCration
Propritsserapportantaumoded'affichageduformulaire
CurrentView:Retournelemoded'affichageencoursduformulaire.
OpenArgs : Retourne l'expression chane spcifie dans l'argument OpenArgs de la mthode OpenForm qui a
ouvertleformulaire.
Page:Spcifielenumrodelapageencours.
Section:Identifieunesectionetpermetd'accderauxpropritsdecettesection.
SelHeight : Spcifie ou dtermine le nombre de lignes slectionnes (enregistrements) dans le rectangle de
slectionencours.
SelLeft:Spcifieoudterminequellecolonne(champ)figureleplusgauchedanslerectangledeslectionen
cours.
SelTop:Spcifieoudterminequelleligne(enregistrement)figuretoutenhautdurectangledeslection.
SelWidth : Spcifie ou dtermine le nombre de colonnes (champ) slectionnes dans le rectangle de slection
encours.
Propritsserapportantauxenregistrementsetleurmisejour
BatchUpdates :Indiquesileformulairespcifiprendenchargelesmisesjourparlotsdetransactions.
BookMark:Dfinitunsignetquiidentifiedefaonuniqueunenregistrement.
CurrentRecord:Permetd'identifierl'enregistrementencours.
Dirty:Permetdedterminersil'enregistrementencoursasubidesmodificationsdepuissaderniresauvegarde.
NewRecord:Dterminesil'enregistrementencoursestunnouvelenregistrement.
RecordSet : Dtermine ou renvoie l'objet DAO Recordset reprsentant la source d'enregistrement d'un
formulaire.
RecordSourceQualifer : Renvoie ou dfinit une chane de caractres indiquant le nom du propritaire de la
sourced'enregistrementsSQLServerpourleformulaire.
Propritsserapportantlaprsentationduformulaire
CurrentSectionLeft:Dtermineladistanceentwipsentrelecoinsuprieurgauchedelasectionencoursetle
coinsuprieurgaucheduformulaire(twip:unitdemesurequivalente1/20depointou1/1440depouce.
Uncentimtrecontient567twips).
CurrentSectionTop:Reprsenteladistanceen twipsentrelecoinsuprieurdelasectionencoursetlecoin
7. ShortcutMenu Boolen
8. MenuBar Chanedecaractres
9. ShortcutMenuBar Chanedecaractres
10. HelpFile Chanedecaractres
11. HelpContextID Entierlong
12. HasModule Boolen
13. FastLaserPrinting Boolen
14. Tag Chanedecaractres
- 9 - ENI Editions - All rigths reserved
suprieurduformulaire.
DataSheetBackColor:Spcifieoudterminelacouleurd'arrireplandelatotalitd'unefeuillededonnes.
DatasheetBorderLineStyle :Indiquelestyledetraitutiliserpourlaborduredelafeuillededonnes.
DatasheetCellsEffect : Permet de spcifier si les effets spciaux s'appliquent aux cellules d'une feuille de
donnes.
DatasheetColumnHeaderUnderlineStyle :Indiquelestyledetraitutiliserpourlebordinfrieurdesenttes
decolonnedelafeuillededonnes.
DataSheetFontHeight:Spcifielatailleenpointsutilisepourafficheretimprimerlesnomsdeschampsetles
donnesenmodeFeuillededonnes.
DataSheetFontItalic:MetenitaliquelesnomsdechampsetlesdonnesenmodeFeuillededonnes.
DataSheetFontName:Spcifielapoliceutilisepourafficheretimprimerlesnomsdeschampsetlesdonnes
enmodeFeuillededonnes.
DataSheetFontUnderline :SoulignelesnomsdechampsetlesdonnesenmodeFeuillededonnes.
DataSheetFontWeight : Spcifie l'paisseur de la police utilise pour afficher et imprimer les caractres des
nomsdechampsetdesdonnesenmodeFeuillededonnes.
DataSheetForeColor:Spcifieoudterminelacouleurdutextedelatotalitd'uneFeuillededonnes.
DatasheetGridlinesBehavior:PermetdespcifierletypedequadrillagedevantapparatreenmodeFeuillede
donnes.
DatasheetGridlinesColor:Permetdespcifierlacouleurduquadrillaged'unefeuillededonnes.
HorizontalDatasheetGridlineStyle : Indique le quadrillage horizontal utiliser pour la bordure de la feuille de
donnes.
InsideHeight:Dterminelahauteur(entwips)delafentrecontenantunformulaire.
InsideWidth:Dterminelalargeur(entwips)delafentrecontenantunformulaire.
Pages:Indiquelenombretotaldepages.
Painting:Permetdespcifiersileformulairedoittreredessin.
PaintPalette:Spcifielapalettedevanttreutiliseparleformulaire.
PictureData : Permet de copier l'image du formulaire dans un autre objet qui reconnat la proprit Image
(Picture).
VerticalDatasheetGridlineStyle : Indique le quadrillage vertical utiliser pour la bordure de la feuille de
donnes.
WindowHeight:Indiquelahauteurd'unformulaireexprimeentwips.
WindowLeft :Indiquelapositionl'cran,entwips,dubordgaucheduformulaire.
WindowTop :Indiquelapositionl'cran,entwips,dubordsuprieurduformulaire.
WindowWidth:Renvoielalargeurd'unformulaireexprimeentwips.
Propritsrenvoyantunobjet
- 10 - ENI Editions - All rigths reserved
Application :Permetd'accderl'objetApplicationd'Access.
ChartSpace :RenvoieunobjetChartSpacequireprsentel'espacegraphique.
Form:Permetdefairerfrenceunformulaireassociuncontrlesousformulaire.
Module:Permetdespcifierunmoduledeformulaire.LesmthodesInsertLines,DeleteLinesetReplaceLinede
l'objetModulepermettentdemodifierlecontenud'unmoduledecode.
Parent:Permetdefairerfrencel'objetpre.
PivotTable :RenvoieunobjetPivotTablequireprsenteleconteneurd'unelistedetableaucroisdynamique.
Printer :RenvoieoudfinitunobjetPrinterquireprsentel'imprimantepardfautdusystmeactuel.
RecordsetClone:Permetdefairerfrencel'objetRecordsetduformulaire.
Propritsrelativesl'impressionduformulaire
PrtDevMode : Permet de dfinir ou d'obtenir des informations relatives au mode du priphrique d'impression
spcifi.
PrtDevNames:Permetdedfiniroud'obtenirdesinformationsrelativesl'imprimantechoisie.
PrtMip:Dfinitouretournedesinformationssurlemodedupriphriquespcifi.
UseDefaultPrinter :Indiquesileformulaireutilisel'imprimantepardfautdusystme.
MthodesdesobjetsForm
Mthodes
GotoPage:Dplacelefocussurlepremiercontrledelapageindique.
Move:Dplaceet/ouredimensionneleformulaireauxcoordonnesindiquesparlesvaleursdesarguments.
Recalc:Recalculeimmdiatementlescontrlesduformulaire.
Refresh : Met jour les donnes du formulaire afin qu'elles contiennent les dernires modifications
ventuellementeffectuespard'autresutilisateurs.
Repaint:Effectuetouteslesmisesjourenattenteduformulaire.
Requery:Metjourlesdonnesduformulairespcifi.
SetFocus:Donnelefocusauformulaire.
UnDo:Restaureunformulairetelqu'iltaitavantd'tremodifi.
Exemple
Affichage de la fiche Client en fonction du nom de la Socit slectionne dans une zone de liste.
Private Sub lstRechCli_AfterUpdate()
Dim rs As Object

' Recherche l'enregistrement correspondant
' au client slectionn
Set rs = Me.Recordset.Clone
rs.FindFirst "[Cli_CodeCLi] = '" & Me![lstRechCli] & "'"
- 11 - ENI Editions - All rigths reserved
Affectation d'un filtre en fonction du contenu d'une case cocher : slection des clients franais, trangers ou de tous les clients.

If Not rs.EOF Then Me.Bookmark = rs.Bookmark

End Sub
Private Sub chkPays_AfterUpdate()

Select Case chkPays

' Clients franais
Case 1
Me.FilterOn = True
Me.Filter = "[Cli_Pays] = 'France'"
Me.Refresh

' Clients hors France
Case 2
Me.FilterOn = True
Me.Filter = "[Cli_Pays] <> 'France'"
Me.Refresh
' Tous les clients
Case 3
Me.FilterOn = False
Me.Refresh

End Select
End Sub
- 12 - ENI Editions - All rigths reserved
Personnalisationdestats
Un objet Reportfaitpartiedelacollection Reportsquireprsentetouslestatsactuellementouverts.L'objet
ActiveReport(Screen.ActiveReport)etl'objetMedsignentl'tatactif.
Syntaxes
Pourfairerfrenceuntat,vousdisposezdesmmessyntaxesquepourlesformulaires.
Exemple
PropritsdisponiblesenmodeCration
Propritsdel'ongletProprits

Reports![ListeCde]
Reports("ListeCde")
Reports![ListeCde]![DateCde]
1. Caption Chanedecaractres
2. DefaultView Octet
0 Modesimple
1 Modecontinu
2 Feuillededonnes
3 Tableaucroisdynamique
- 1 - ENI Editions - All rigths reserved
4 Graphiquecroisdynamique
5 Formulairedoubleaffichage
3. AlloReportView Boolen
4. AllowLayoutView Boolen
5. Picture Chanedecaractres
6. PictureTiling Boolen
7. PictureAlignement Octet
0 Suprieurgauche
1 Suprieurdroit
2 Centr
3 Infrieurgauche
4 Infrieurdroit
5Centreformulaire
8. PictureType Octet
0 Intgr(ouincorpor)
1 Attach(ouli)
9. PictureSizeMode Octet
0 Dcoupage
1 Echelle
2 Zoom
10. Width Entier
11. AutoCenter Boolen
12. AutoResize Boolen
13. BorderStyle Octet
0 Aucun
1 Fin
2 Dimensionnable
3 Traitdoublefixe
14. ScrollBars Octet
0 Aucun
1 Horizontale
2 Verticale
3 Lesdeux
15. ControlBox Boolen
16. CloseButton Boolen
17. MinMaxButtons Octet
0 Aucun
1 Minactiv
2 Maxactiv
3 Lesdeuxactivs
18. Moveable Boolen
19. GridX Entier
20. GridY Entier
21. LayoutForPrint Boolen
22. GrpKeepTogether Octet
- 2 - ENI Editions - All rigths reserved
Propritsdel'ongletDonnes

Propritsdel'ongletvnement
0 Parpage
1 Parcolonne
23. PicturePages Octet
0 Touteslespages
1 Premirepage
2 Pasdepage
24. PageHeader Octet
0 Touteslespages
1 Sansentted'tat
2 Sanspiedd'tat
3 Sansentte/piedd'tat
25. PageFooter Octet
0 Touteslespages
1 Sansentted'tat
2 Sanspiedd'tat
3 Sansentte/piedd'tat
26. Orientation Octet
0 Degauchedroite
1 Dedroitegauche
27. PaletteSource Chainedecaractres
1. RecordSource Chanedecaractres
2. Filter Chanedecaractres
3. FilterOnLoad Boolen
4. OrderBy String
5. OrderByOnLoad Boolen
6. AllowFilters Boolen
- 3 - ENI Editions - All rigths reserved

1. OnCurrent Chanedecaractres
2. OnLoad Chanedecaractres
3. OnNoData Chanedecaractres
4. OnClick Chanedecaractres
5. OnGotFocus Chanedecaractres
6. OnLostFocus Chanedecaractres
7. OnDblClick Chanedecaractres
8. OnMouseDown Chanedecaractres
9. OnMouseUp Chanedecaractres
10. OnMouseMove Chanedecaractres
11. OnKeyUp Chanedecaractres
12. OnKeyDown Chanedecaractres
13. OnKeyPress Chanedecaractres
14. OnOpen Chanedecaractres
15. OnClose Chanedecaractres
16. OnResize Chanedecaractres
17. OnActivate Chanedecaractres
18. OnDeactivate Chanedecaractres
19. OnUnload Chanedecaractres
20. OnError Chanedecaractres
21. MouseWheel Chanedecaractres
22. OnFilter Chanedecaractres
- 4 - ENI Editions - All rigths reserved
Propritsdel'ongletAutres

23. OnApplyFilter Chanedecaractres
24. OnTimer Chanedecaractres
25. TimerInterval Chanedecaractres
26. OnPage Chanedecaractres
27. KeyPreview Boolen
1. PopUp Boolen
2. Modal Boolen
3. DisplayOnSharePointSite Octet
0 Nepasafficher
1 Suivreleparamtredelatable
4. DateGrouping
0 ParamtresUS
1 Paramtressystme
5. Cycle
0 Touslesenregistrements
1 Enregistrementencours
2 Pageencours
6. RecordLocks Boolen
7. RibbonName Chanedecaractres
8. ToolBar Chanedecaractres
9. MenuBar Chanedecaractres
10. ShortcutMenuBar Chanedecaractres
11. HelpFile Chanedecaractres
12. HelpContextID Entierlong
13. HasModule Boolen
14. FastLaserPrinting Boolen
15. Tag Chanedecaractres
- 5 - ENI Editions - All rigths reserved
Propritsnondisponiblesenmodecration
Propritsserapportantaumoded'affichagedel'tat
Moveable :Indiquesil'tatpeuttredplacparl'utilisateur.
Page:Indiquelenumrodepageencours.
Propritsserapportantauxenregistrementsetleurmisejour.
CurrentRecord:Identifiel'enregistrementencours.
Dirty:Permetdedterminersil'enregistrementencoursasubidesmodificationsdepuissaderniresauvegarde.
HasData:Indiquesil'tatestdpendantd'unjeud'enregistrementsvide.
RecordSourceQualifier : Renvoie ou dfinit une chane de caractres indiquant le nom du propritaire de la
sourced'enregistrementsSQLServerpourl'tat
Propritsserapportantlaprsentationdel'tat
DrawMode : Spcifie comment le crayon (la couleur utilise pour le dessin) affecte les couleurs d'arrireplan
surl'tatlorsquevousutilisezlesmthodesLine,CircleouPSetpourdessinersuruntatimprimer.
DrawStyle:SpcifielestyledetraitlorsquevousutilisezlesmthodesLine et Circlepourimprimerdestraits
suruntat.
DrawWidth : Spcifie la largeur de trait pour les mthodes Line, Circle et PSet lorsque vous imprimez des
lignessuruntat.
FillColor:Permetdespcifierlacouleurdelatramedesrectanglesetdescerclesdessinsdansuntatl'aide
desmthodesLineetCircle.
FillStyle:Spcifiesiuncercleouuntraitdessinl'aidedelamthodeCircleouLineesttransparent,opaque
ouavecunmotifdetrame.
FontBold : Spcifie si une police doit apparatre en gras lors de l'impression de contrles d'tats ou lors de
l'utilisationdelamthodePrintdansuntat.
Left:Dfinitlapositiongauchedel'tat.
Painting:Permetdespcifiersil'tatdoittreredessin.
PaintPalette:Spcifielapalettedevanttreutiliseparl'tat.
ScaleLeft : Spcifie les units des coordonnes horizontales reprsentant le bord gauche d'une page lorsque
vous utilisez les mthodes Circle, Line, PSet ou Print pour l'impression ou l'aperu d'un tat ou pour son
enregistrementsousformedefichier.
ScaleMode : Spcifie l'unit de mesure pour les coordonnes d'une page quand vous utilisez les mthodes
Circle,Line,PSetouPrintpourl'impressionoul'aperud'untatousonenregistrementsousformedefichier.
ScaleTop : Spcifie les units des coordonnes verticales reprsentant le bord suprieur d'une page lorsque
vous utilisez les mthodes Circle, Line, PSet ou Print pour l'impression ou l'aperu d'un tat ou pour son
enregistrementsousformedefichier.
ScaleWidth:Spcifielenombred'unitsutilisesdanslalargeurdelapagelorsquevousutilisezlesmthodes
Circle,Line,PSetouPrintpourl'impressionoul'aperud'untatousonenregistrementsousformedefichier.
- 6 - ENI Editions - All rigths reserved
Top:Dfinitlapositionhautedel'tat.
WindowLeft :Indiquelapositionl'cran,entwips,dubordgauchedel'tat.
WindowTop :Indiquelapositionl'cran,entwips,dubordsuprieurdel'tat.
Propritsrenvoyantunobjet
Application:Permetd'accderl'objetApplicationd'Access.
Module : Permet de spcifier un module d'tat. Les mthodes InsertLines, DeleteLines et ReplaceLine de
l'objetModulepermettentdemodifierlecontenud'unmoduledecode.
Parent:Permetdefairerfrencel'objetpre.
Printer :RenvoieoudfinitunobjetPrinterquireprsentel'imprimantepardfautdusystmeactuel.
Recordset:Dtermineourenvoiel'objetDAORecordsetreprsentantlesenregistrementsd'untat.
Shape : Renvoie une chane reprsentant la commande de type Shape permettant d'effectuer le tri et le
regroupementdel'tatspcifi.Enlectureseule.
Report:Permetdefairerfrencel'tatassociuncontrle soustat.
Propritsrelativesl'impressiondel'tat
CurrentX:Permetdespcifierlacoordonnehorizontaledudbutdelaprochainemthoded'impressionoude
dessind'untat.
CurrentY : Permet de spcifier la coordonne verticale du dbut de la prochaine mthode d'impression ou de
dessind'untat.
MoveLayout:SpcifiesiMicrosoft Accessdoitpasserlapositiond'impressionsuivantesurlapage.
NextRecord:Spcifiesiunesectiondoitpasserl'enregistrementsuivant.
Pages:Indiquelenombretotaldepages.
PrintCount : Renvoie le nombre d'valuations de la proprit SurImpression (OnPrint) pour la section en cours
d'untat.
PrintSection:Spcifiesiunesectiondoittreimprime.
PrtDevMode:Permetdedfinirouderestituerdesinformationsrelativesaumodedupriphriqued'impression
spcifi.
PrtDevNames:Permetdedfinirouderetournerdesinformationsrelativesl'imprimantechoisie.
PrtMip:Dfinitouretournedesinformationssurlemodedupriphriquespcifi.
UseDefaultPrinter:Indiquesil'tatutilisel'imprimantepardfautdusystme.
Autresproprits
FormatCount:Permetdedterminerlenombred'valuationsdelapropritAuFormatage(OnFormat)pourla
sectionencoursdansuntat.
GroupLevel:Faitrfrenceauniveauderegroupementsurlequelporteleregroupementouletrid'untat.
Hwnd : Retourne le descripteur (une valeur unique de type Entier long) attribu la fentre en cours par
- 7 - ENI Editions - All rigths reserved
Microsoft Windows.
PictureData:Permetdecopierl'imagedel'tatdansunautreobjetquireconnatlapropritImage(Picture).
Section:Identifieunesectionetpermetd'accdersesproprits.
Mthodes
Circle:Permetdedessineruncercleouuneellipse.
Line:Permetdedessinerdeslignesoudesrectangles.
Move :Dplaceet/ouredimensionnel'tatauxcoordonnesindiquesparlesvaleursdesarguments.
Print:Envoieletextedfinil'objetReport.
Pset:Dtermineunpointdel'tatpourmodifiersacouleur.
Scale:Dfinitlesystmedecoordonnes.
TextHeight:Retournelahauteurd'unechaneimprimer.
TextWidth :Retournelalargeurd'unechaneimprimer.

- 8 - ENI Editions - All rigths reserved
LesobjetsControl
Unobjet ControlfaitpartiedelacollectionControlsquireprsentetouslescontrlesd'unformulaire,d'untat
ou d'un sousformulaire. L'objet ActiveControl (Screen.ActiveControl ou <NomFormulaire>.ActiveControl)
dsignelecontrleactif.
Syntaxes
Vouspouvezrfrenceruncontrledefaonimplicite:
<Formulaire>|<Etat>!<NomContrle> ex: Me!DateCde
<Formulaire>|<Etat>![<NomContrle>] ex: Me![DateCde]
<Formulaire>|<Etat>("<NomContrle>") ex: Me("DateCde")
<Formulaire>|<Etat>.<NomContrle> ex: Me.DateCde
ouexplicitementcommemembredelacollectionControls :
<Formulaire>|<Etat>.Controls{("<contrle>")|!<contrle>|
(<index contrle>)}
ex:
Me.Controls!DateCde
Me.Controls![DateCde]
Me.Controls("DateCde")
Me.Controls(0)
Chaque contrle a ses proprits, mthodes et vnements particuliers. Seules les proprits et mthodes
communestouslescontrlessonticirpertories.
Pour rfrencer un contrle du formulaire ou de l'tat actif, le mot cl Me n'est pas obligatoire. Vous pouvez directement utiliser le
nom du contrle.
Propritscommuneslaplupartdescontrles
Application:Permetd'accderl'objetApplicationdeMicrosoftAccess.
Form:Permetdefairerfrenceauformulairecontenantlecontrle.
Hyperlink:Renvoieunerfrenceunobjetlienhypertexte.
Object:PermetderetournerunerfrenceunobjetActiveXassociunobjetOLEliouincorpordansun
contrle.
ObjectVerbs:PermetdedterminerlalistedesactionsOLEprisesenchargeparunobjetOLE.
OldValue:Renvoielavaleurnonmodified'uncontrledpendant(anciennevaleur).
Parent:Permetdefairerfrencel'objetpred'uncontrle.
Report:Permetdefairerfrencel'tatcontenantlecontrle.
Mthodescommuneslaplupartdescontrles
Requery:Recalculelavaleurd'uncontrle.
SetFocus:Donnelefocusuncontrle.
SizeToFit:Ajusteuncontrleautexteoul'imagequ'ilcontient.
UnDo:Restaureuncontrletelqu'iltaitavantd'tremodifi.
LamthodeMove
- 1 - ENI Editions - All rigths reserved
La mthode Move est disponible pour la plupart de contrles (CheckBox, ComboBox, CommandButton,
Image,Label,Line,TexteBox...).
Elle permet de dplacer et/ou redimensionner le contrle en fonction des coordonnes indiques par les valeurs
desarguments.
SyntaxedelamthodeMove
<expression>.Move(<Gauche>, <Haut>, <Largeur>, <Hauteur>)
<expression> :Dsigneuncontrle,tatouformulaire.
Gauche : Obligatoire. Position l'cran, en twips, du bord gauche de l'objet par rapport au bord gauche de la
fentredeMicrosoftAccess.
Haut : Facultatif. Position l'cran, en twips, du bord suprieur de l'objet par rapport au bord suprieur de la
fentredeMicrosoftAccess.
Largeur :Facultatif.Largeurdsire,entwips,del'objet.
Hauteur :Facultatif.Hauteurdsire,entwips,del'objet.

- 2 - ENI Editions - All rigths reserved
Lescontrlesd'Access
Prsentation
MicrosoftAccess2007estpourvud'unnombreintressantdecontrlesfacilitantl'laborationd'uneapplication.
Ces contrles sont placs dans des formulaires ou dans des tats de faon aboutir l'interface dsire.
Chacun d'eux possde ses propres caractristiques (proprits), ses propres comportements (mthodes) ainsi
qu'une liste d'vnements auxquels ils peuvent ragir, tout cela accessible par l'intermdiaire de l'explorateur
d'objets.
Ondistinguedeuxtypesdecontrles:
- les contrles intrinsques, directement intgrs au moteur Access,
- les contrles ActiveX, chacun d'eux faisant l'objet d'un fichier OCX.
Lescontrlesintrinsquesfigurenttousdanslaboteoutils.
LescontrlesActiveXpeuventtreslectionnsparl'intermdiairedel'outil delaboteoutils,quilistetous
les contrles ActiveX prsents sur le systme. Ils fonctionnent de la mme manire que les contrles
intrinsques et sont implants dans le systme par l'installation de nouveaux logiciels ou par l'achat de
bibliothquesdecontrlesActiveX.
La version Office 2007 Professionnel permet notamment l'utilisation du contrle Calendrier qui facilite l'affichage
etlamisejourd'uncalendrier.
ListedescontrlesAccess2007
PouraccderauxcontrlesdepuisunformulaireouuntatouvertenModeCration,activezl'onglet Crer du
ruban:lalistesdescontrlesetdesoutilsdemiseenformeestalorsdisponibledepuislegroupeContrles.

Nom du contrle Typed'objetVBA
1. Logo Image
2. Titre TextBox
3. Numrodepage TextBox
4. DateetHeure TextBox
5. Zonedetexte TextBox
6. Etiquette Label
7. Boutondecommande CommandButton
8. Zonedelistedroulante ComboBox
9. Zonedeliste ListBox
10. SousFormulaire/SousEtat SubForm/SubReport
- 1 - ENI Editions - All rigths reserved
11. Trait Line
12. Rectangle Rectangle
13. Cadred'objetdpendant BoundObjectFrame
14. Grouped'options OptionGroup
15. Casecocher CheckBox
16. Cased'option OptionButton
17. Boutonbascule ToggleButton
18. Contrleonglet TabControl
19. Page Page
20. Graphique Chart
21. Cadred'objetindpendant UnboundObjectFrame
22. Image Image
23. Sautdepage PageBreak
24. Lienhypertexte Label
25. Picejointe Attachment
- 2 - ENI Editions - All rigths reserved
Lesoptionsdedmarrage
Lesoptionsdedmarraged'Access2007permettentdedfinirl'aspectetlecomportementd'uneapplicationlors
desonouverture.
Pourmodifierlesoptionsdedmarrage:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (en bas de la bote de dialogue).
I Slectionnez la catgorie Base de donnes active.
Labotededialoguesuivanteestalorsaffiche:

Certaines de ces options correspondent des proprits de la base de donnes courantes (objet Database) et
peuventtremodifiesaumoyendulangageVBA:
PropritVBA Type
1. AppTitle String
2. AppIcon String
3. UseAppIconForFrmRpt Boolen
4. StartupForm String
5. StartupShowStatusBar Boolen
6. AllowSpecialKeys Boolen
7. AutoCompact Boolen
- 1 - ENI Editions - All rigths reserved
Pour modifier une proprit l'aide du langage VBA, vous devez utiliser la collection Properties de l'objet
Database.Silapropritn'apasdjtdfinie,vousdevezlacreraumoyendelamthodeCreateProperty.
L'exemple suivant permet de modifier certaines options de dmarrage.


8. RemovePersonalInformation Boolen
9. ThemedFormControls Boolen
10. StartupShortcutMenuBar String
11. AllowFullMenus Boolen
12. AllowShortcutMenus Boolen
Sub modifieOptions()
Dim intX As Integer
' Titre de l'application
intX = AddAppProperty("AppTitle", DB_Text, _
"Gestion des Formations")
' Icne de l'application
intX = AddAppProperty("AppIcon", DB_Text,
"C:\Formations\Formation.bmp")
' Option "Utiliser comme icne de formulaire ou
d'tat"
intX = AddAppProperty("UseAppIconForFrmRpt", DB_BOOLEAN,
1)
' Option "Compacter lors de la fermeture"
intX = AddAppProperty("Auto Compact", DB_BOOLEAN, 1)
End Sub
Function AddAppProperty(strName As String, _
varType As Variant, varValue As Variant) As Integer
Dim dbs As Object, prp As Variant
Const conPropNotFoundError = 3270

' Modifie la valeur de la proprit
Set dbs = CurrentDb
On Error GoTo AddProp_Err
dbs.Properties(strName) = varValue
AddAppProperty = True
AddProp_Bye:
Exit Function
AddProp_Err:
' En cas d'erreur, ajoute la proprit
' au moyen de la mthode CreateProperty
If Err = conPropNotFoundError Then
Set prp = dbs.CreateProperty(strName, varType, varValue)
dbs.Properties.Append prp
Resume
Else
AddAppProperty = False
Resume AddProp_Bye
End If
End Function
- 2 - ENI Editions - All rigths reserved
Personnalisationduruban
Prsentation
DansAccess2007,ilestpossibledepersonnaliserintgralementl'apparencedurubanaumoyendulangageXML.
Celangagepermet:
- de masquer les onglets existants,
- de crer de nouveaux onglets, groupes de commandes et commandes,
- de personnaliser la prsentation des commandes l'aide d'icnes,
- d'associer des macros ou du code VBA aux commandes,
- d'afficher des commandes intgres Access.
Le code XML peut tre stock diffrents emplacements mais il est fortement recommand de le stocker dans
unetablesystmedelabasededonnes.LesrubanscrsenlangageXMLpeuventtreassocisl'application
Accessouuniquementcertainsformulairesettats.
Configurationd'Accesspourlapersonnalisationduruban
AfindepouvoircrerettesteraumieuxvotrecodeXML,ilestrecommanddemodifierlesoptionssuivantes :
Affichagedestablessystmesdanslevoletdenavigation
Par dfaut, les tables systmes ne sont pas affiches dans le volet de navigation. Par consquent vous ne
pourrezpasaccderlatablesystmepermettantdestockervotrecodeXML.
Pourmodifiercetteoption:
I Cliquez avec le bouton droit sur la barre de navigation situe en haut du volet de navigation.
I Slectionnez l'option Options de navigation dans le menu contextuel.
I Dans la bote de dialogue Options de navigation, activez l'option Afficher les objets systme, puis cliquez sur le bouton de
commande OK.
Affichagedesmessagesd'erreurscontenuesdanslecodeXML
Par dfaut, les messages d'erreurs dtects dans le code XML ne sont pas affichs. De ce fait, si votre code
XMLcontientdeserreurs,lerubannepourratreaffichetilseradifficiled'identifierlacausedel'erreur.
Pourmodifiercetteoption:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Avanc dans le menu de gauche.
I Activez l'option Afficher les erreurs du complment d'interface utilisateur situ sous Gnral.
I Cliquez sur le bouton de commande OK.
Si une erreur est dtecte lors de l'excution du code XML permettant de gnrer le ruban personnalis, une
message d'erreur est affich. Le message indique les numros de ligne et de colonne du code concern par
- 1 - ENI Editions - All rigths reserved
l'erreurainsiqueledescriptifdel'erreur.
Exemple:

Crationd'unetablesystmeUSysRibbons
LatablesystmeUSysRibbonspermetdestockerlecodeXMLpermettantdecrerunouplusieursrubans.
Pourcrercettetable:
I Activez l'onglet Crer.
I Dans le groupe Tables, cliquez sur Cration de table.
I Insrez les champs suivants:
RibbonIdNumroAuto
RibbonName Texte sur 255 caractres
RibbonXML Mmo
I Slectionnez le champ RibbonId et cliquez sur la commande Cl primaire (situe dans le groupe Outils de l'onglet Cration).
I Cliquez sur Enregistrer depuis la barre d'outils Accs rapide.
I Nommez la nouvelle table UsysRibbons.
AjoutducodeXMLdepersonnalisationlatableUSysRibbons
PourassocierducodeXMLvotretable UsysRibbons,lasolutionlaplussimpleestdegnrerunformulairede
saisie.Pourcela :
I Slectionnez la table UsysRibbons dans le volet de navigation.
I Activez l'onglet Crer, puis cliquez sur Formulaire dans le groupe Formulaires.
I Saisissez le nom du ruban et le code XML associ dans le formulaire.
Exemple :
Le code XML suivant permet de masquer les onglets Crer et Donnes externes du Ruban:
- 2 - ENI Editions - All rigths reserved

Afin de faciliter la saisie et la lecture du code XML, vous pouvez utiliser un diteur XML (ex : Visual Web Developper Express
tlchargeable depuis le site de Microsoft) pour crer votre code et le copier ensuite dans la table UsysRibbon.
Associationdurubanl'applicationactive
I Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Base de donnes active dans le menu de gauche.
I Inscrivez le nom du ruban (ex : ruban1) dans la liste Nom du ruban situe sous Options de la barre d'outils et du ruban.

I Cliquez sur le bouton de commande OK. Le message suivant est alors affich :

Fermezvotrebasededonnesetouvrezlanouveauafind'activerlenouveauruban.
Le code XML du ruban est excut l'ouverture de la base de donnes. Pour tester les modifications apportes votre code XML,
vous devez systmatiquement fermer puis rouvrir votre base de donnes.
Associationdurubanunformulaireouuntat
I Ouvrez le formulaire ou l'tat en Mode cration.
I Affichez la feuille de proprit du formulaire ou de l'tat.
I Sous l'onglet Autre de la feuille de proprit, cliquez sur la liste Nom du ruban et slectionnez le ruban afficher lors de
l'ouverture du formulaire ou de l'tat.
- 3 - ENI Editions - All rigths reserved

I Enregistrez puis fermez votre formulaire.
I Ouvrez le formulaire en Mode Formulaire: le ruban slectionn est alors affich. la fermeture du formulaire, le ruban associ
l'application sera restaur.

- 4 - ENI Editions - All rigths reserved
PrsentationdulangageXML
LelangageXML
LelangageXML(eXtensibleMarkupLanguage)estlelangagestandarddedescriptionetd'changededonnes,
utilisnotammentsurleweb.
ToutcommelelangageHTML,lelangageXMLutilisedesbalises(ou"tags")pourdlimiteruncontenu.Unebalise
estfacilementidentifiablecarellecommenceparlecaractre<etsetermineparlecaractre>(lesbalisesde
findecontenucommencentpar/).
ElmentsXMLutilisspourpersonnaliserleruban
LesprincipalesbalisesXMLutilisesdanslecodeXMLd'unruban
Lespropritsassociesauxobjetsduruban
Les proprits suivantes permettent de personnaliser les diffrents contrles affichs dans le ruban (bouton de
commande,menudroulant)
Nomdebalise Description
<customUI> Baliseprincipaled'unrubanpersonnalis
<ribbon> Balisecontenantladescriptionduruban
<OfficeMenu>
Menu accessible depuis le bouton Microsoft
Office
<tab> Ongletdansleruban
<group> Groupedansunongletdansleruban
<labelControl> Etiquette(titreouintitul)
<button> Boutondecommande
<splitButton> Boutondemenu
<toggleButton> Boutonbascule
<menu> Menudroulant
<dynamicMenu> Menudroulantdynamique
<gallery> Galerieoupalettedechoix
<dialogBoxLauncher>
Bouton dclenchant l'ouverture d'une bote
dedialogue
Proprit Description
Id Identifiantuniqued'uncontrlepersonnalis.
idMso
Identifiant unique d'un contrle standard
Microsoft.
enabled
"true"silecontrleestaccessbile,"false"sinon.
Lavaleurpardfautest"true".
insertBeforeMso Placel'objetavantuncontrleOfficeexistant.
insertAfterMso Placel'objetaprsuncontrleOfficeexistant.
imageMso Nomdel'imageutiliserpourlecontrle.
itemSize Tailledeslmentsdumenu.
label Texteaffichsurlecontrle.
onAction MacrooucodeVBAassociaucontrle.
screentip Titredel'infobulleducontrle.
supertip Texteapparaissantdansl'infobulleducontrle.
size Tailleducontrle("normal"ou"large").
showImage
"true" si l'image du contrle est affiche, "false"
sinon.Lavaleurpardfautest"true".
- 1 - ENI Editions - All rigths reserved
Lespropritssuivantespermettentdepersonnaliserleruban :

showLabel
"true"sil'intitulducontrleestaffiche,"false"
sinon.Lavaleurpardfautest"true".
visible
"true" si le contrle est visible, "false" sinon. La
valeurpardfautest"true".
OnLoad
Macro ou code VBA associ au chargement du
ruban.
startFromScratch
"true" si le ruban personnalis doit remplacer le
ruban standard d'Access. Si "false", les
nouveaux onglets s'ajoutent aux onglets du
rubanAccess.
- 2 - ENI Editions - All rigths reserved
Exemplederubanpersonnalis
L'exempledecodeXMLdcritdanscechapitrepermetdecrerlerubanprsentcidessous:



CodeXMLdurubanpersonnalis
<customUI
xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="Initialisation">
ribbon startFromScratch="true">
' Modification du menu Microsoft Office
<officeMenu>
' Cration d'un bouton de menu
<splitButton id="spltListe1"
insertBeforeMso="FileCloseDatabase">
<menu id="spltMenu"
itemSize="large" label="Listes de formulaires">
<button id="Option1" label="Toutes les listes"
imageMso="FileCreateDocumentWorkspace"
onAction="OuvreListes"/>
<button id="Option2" label="Liste des Clients"
imageMso="DirectRepliesTo"
onAction="OuvreListeClients"/>
<button id="Option3" label="Liste des Employs"
imageMso="DistributionListAddNewMember"
onAction="OuvreListeEmployes"/>
<button id="Option4" label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction="OuvreListeFournisseurs"/>
</menu>
</splitButton>

- 1 - ENI Editions - All rigths reserved

' Masque les boutons standards du menu Microsoft Office
<button idMso="FileNewDatabase" visible="false"/>
<button idMso="FileOpenDatabase" visible="false"/>
<button idMso="FileSaveAsMenuAccess" visible="false"/>
</officeMenu>

' Cration d'onglets personnaliss
<tabs>
' Onglet Listes
<tab id="Listes" label="Listes">

' Groupe Etiquette
<group id="grpListes1" label="Etiquettes">
<labelControl id="lbl1" label="Liste des Clients"/>
<labelControl id="lbl2" label="Liste des Employs"/>
<labelControl id="lbl3" label="Liste des Fournisseurs"/>
</group>

' Groupe de boutons
<group id="grpBoutons" label="Groupe de boutons">
<button id="btn1" label="Toutes les listes"
imageMso="FileCreateDocumentWorkspace"
onAction="OuvreListes"
size="large"/>

<button id="btn2" label="Liste des Clients"
imageMso="DirectRepliesTo"
onAction="OuvreListeClients"
size="normal"/>

<button id="btn3" label="Liste des Employs"
imageMso="DistributionListAddNewMember"
onAction="OuvreListeEmployes"
size="normal"/>

<button id="btn4" label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction="OuvreListeFournisseurs"
size="normal"/>
</group>

' Groupe bouton d'options
<group id="grpSplit" label="Bouton d'options">
<splitButton id="spl1" size="large">
<button id="btnSplit" label="Listes"
onAction = "OuvreListes"
imageMso="DistributionListSelectMembers"/>
<menu id="mnuSplit" label="Menu" itemSize="large">
<button id="btnSplit1" label="Listes des Clients"
imageMso="DirectRepliesTo"
onAction = "OuvreListeClients"/>
<button id="btnSplit2" label="Liste des Employs"
imageMso="DistributionListAddNewMember"
onAction = "OuvreListeEmployes"/>
<button id="btnSplit3" label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction = "OuvreListeFournisseurs"/>
<button id="btnSplit4" label="Toutes les listes"
imageMso="DistributionListSelectMembers"
onAction = "OuvreListes"/>
</menu>
</splitButton>
</group>

' Groupe bouton bascule
<group id="grptb1" label="Bouton Bascule">
<toggleButton id="tb1" label="Afficher/Masquer les listes"
imageMso="PictureBrightnessGallery"
size="large"
onAction = "AffichageListes">
</group>

' Groupe Menus
<group id="grpMenus" label="Menus">
<menu id="menu1" label="Menu 1"
imageMso="DistributionListSelectMembers">
<button id="btnMenu1"
label="Liste des Clients"
onAction = "OuvreListeClients"/>
- 2 - ENI Editions - All rigths reserved
CodeVBAappelparlescommandesdurubanpersonnalis
LecodeVBAsuivantestappelaumoyendespropritsOnActiondesdiffrentscontrles.
<button id="btnMenu2"
label="Liste des Employs "
onAction = "OuvreListeEmployes"/>
<button id="btnMenu3"
label="Liste des Fournisseurs"
onAction = "OuvreListeFournisseurs"/>
<button id="btnMenu4"
label="Toutes les listes"
onAction = "OuvreListes"/>
</menu>

<menu id="menu2"
label="Menu 2"
itemSize="large"
imageMso="DistributionListSelectMembers">
<button id="btnMenu5"
label="Liste des Clients"
imageMso="DirectRepliesTo"
onAction = "OuvreListeClients"/>
<button id="btnMenu6"
label="Liste des Employs "
imageMso="DistributionListAddNewMember"
onAction = "OuvreListeEmployes"/>
<button id="btnMenu7"
label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction = "OuvreListeFournisseurs"/>
<button id="btnMenu8"
label="Toutes les listes"
imageMso="DistributionListSelectMembers"
onAction = "OuvreListes"/>
</menu>
</group>
</tab>

' Onglet Outils Access
<tab id="tabAccess" label="Outils Access">
<group idMso="GroupPrintPreviewPrintAccess"/>
<group id="grpExport" label="Export">
<button idMso="ExportExcel" label="ExportExcel"
screentip="Export Excel"
supertip="Cliquez ici pour exporter au format Excel"/>
<button idMso="FileSaveAsPdfOrXps" label="Export PDF"
screentip="Export PDF"
supertip="Cliquez ici pour exporter au format PDF"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Option Compare Database
Option Explicit
________________________________________________________________________

Sub Initialisation(ruban As IRibbonUI)
' Message de bienvenue
MsgBox "Bienvenue dans l'application NorthWind 2007"
' Verrouille le volet de navigation
DoCmd.LockNavigationPane True
End Sub
________________________________________________________________________

Sub OuvreListes(ctl As IRibbonControl)
' Ouvre les 3 formulaires Listes
DoCmd.OpenForm "Liste des clients"
DoCmd.OpenForm "Liste des employs"
DoCmd.OpenForm "Liste des fournisseurs"
End Sub
________________________________________________________________________

Sub OuvreListeClients(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des clients"
- 3 - ENI Editions - All rigths reserved

End Sub
________________________________________________________________________

Sub OuvreListeEmployes(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des employs"
End Sub
________________________________________________________________________

Sub OuvreListeFournisseurs(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des fournisseurs"
End Sub
________________________________________________________________________

Sub AffichageListes(ctl As IRibbonControl, blnActif As Boolean)
' Affiche ou masque les formulaires
If blnActif Then
DoCmd.OpenForm "Liste des clients"
DoCmd.OpenForm "Liste des employs"
DoCmd.OpenForm "Liste des fournisseurs
Else
DoCmd.Close acForm, "Liste des clients"
DoCmd.Close acForm, "Liste des employs"
DoCmd.Close acForm, "Liste des fournisseurs"
End If
End Sub
- 4 - ENI Editions - All rigths reserved
ImagesdelagaleriedesicnesMicrosoftOffice
Les noms des images utilises pour personnaliser le ruban (ex : FileCreateDocumentWorkspace,
DirectRepliesTo...),correspondentl'intituldel'icnedanslagaleriedesicnesMicrosoftOffice.
Pourconnatrelalistedesnomsd'icnesdelagalerieMicrosoftOffice:
I Ouvrez dans Excel 2007 le fichier Office2007IconsGallery.xlsm (fichier livr avec les exemples ou tlchargeable sur le site de
Microsoft).
I Activez l'onglet Dveloppeur.
I Cliquez sur l'un des boutons "Galerie" pour afficher la liste des icnes.
I Lorsque vous survolez une icne, son nom est affich dans l'infobulle associe:

Sil'ongletDveloppeurn'estpasaffichdansExcel:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Excel (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Standard dans le menu de gauche.
I Activez l'option Afficher l'onglet Dveloppeur dans le ruban situ sous Meilleurs options pour travailler avec Excel.
I Cliquez sur le bouton OK : l'onglet Dveloppeur a t ajout au ruban d'Excel, droite de l'onglet Affichage.
- 1 - ENI Editions - All rigths reserved
LatechnologieAutomation
Prsentation
Automation, appele galement OLE (Object Linking and Embedding) ou OLE Automation, est une technologie
permettantdemanipulerlesobjetsd'uneautreapplicationdirectementpartird'AccessoudeVBAAccess.
Pour fonctionner, Automation ncessite un client et un serveur appel serveur OLE. Le serveur est
l'applicationoulecomposantquifournitlesservicesauclient.Leclient(appelgalementcontrleur)utiliseces
services pour piloter l'application serveur et manipuler ses objets. Par exemple si vous lancez un publipostage
WordpartirdeVBAAccess,AccessestleclientetWordleserveurOLE.
Une bibliothqued'objets est un fichier, dot gnralement d'une extension olb, fournissant les informations
permettant de manipuler les objets mis disposition par un serveur. Vous pouvez utiliser l'Explorateur d'objets
pourexaminerlecontenud'unebibliothqued'objets.
Pour avoir accs aux objets d'une autre application, vous devez rfrencer sa bibliothque d'objets de la faon
suivante:
I Dans un module, slectionnez le menu Outils Rfrences.
LabotededialogueRfrencess'afficheavectouslesserveursOLEenregistrsdanslabasederegistre.

I Activez la rfrence voulue.
l'aide de l'explorateur d'objets, il est simple de consulter la liste des objets, mthodes et proprits d'un serveur OLE.
UtilisationdelatechnologieAutomation
Pourpouvoirmanipulerlesobjetsd'uneautreapplication,vousdevezprocderdelafaonsuivante :
- dfinissez dans le code VBA une variable objet,
- utilisez les fonctions CreateObject ou GetObject pour faire rfrence l'objet.
Exemple
- 1 - ENI Editions - All rigths reserved
LancementdeWord.
ou
RfrenceundocumentWordexistant.
LesparagraphessuivantsdcriventcommentpiloterdiffrentslogicielsdelasuiteMicrosoftOfficeenutilisantla
technologieAutomation.
Les objets, collections, mthodes et proprits des modles objet de la suite Microsoft Office tant trs nombreux, seuls les plus
utiliss sont dcrits dans les paragraphes suivants.

Dim AppWord as Object
Set AppWord = CreateObject("Word.Application")
Dim appWord As New Word.Application
Dim DocWord As New Word.Document
Set DocWord = GetObject("C:\Clients\relance.docx")
- 2 - ENI Editions - All rigths reserved
PiloterWorddepuisAccess
LemodleObjetWord
ExtraitdumodleObjetWord:

ObjetsetcollectionsWord
Documents:Collectiondetouslesclasseurs(objetsDocument)ouverts.
- 1 - ENI Editions - All rigths reserved
Dictionaries:Collectiondetouslesdictionnairespersonnelsactifs(objetsDictionary).
EmailOptions:ObjetcontenantlesattributsglobauxqueMicrosoftWordutiliselorsquevouscrezetmodifiez
desmessageslectroniquesetdesrponsescesmessages.
FileConverters : Collection de tous les convertisseurs de fichier (objets FileConvert) disponibles pour ouvrir et
enregistrerdesfichiers.
FontNames:Objetcontenantlalistedesnomsdetouteslespolicesdisponibles.
Languages : Collection des langues (objets Language) utilises dans Word pour les vrifications linguistiques
etlamiseenforme.
ListGalleries : Collection des trois premiers onglets (objets ListGallery) de la bote de dialogue Puces et
numros.
MailMessage : Objet reprsentant le message lectronique actif si Word est votre diteur de courrier
lectronique.
Options : Reprsente les options d'application et de document de Word. La plupart des proprits de l'objet
OptionscorrespondentdeslmentsdelabotededialogueOptions(menuOutils).
Selection:Reprsentelaslectionencoursd'unefentreoud'unvolet.
System:Contientdesinformationssurlesystmedevotreordinateur.
Templates:Collectiondetouslesmodles(objetsTemplate)actuellementdisponibles.
LacollectionDocuments
Mthodes
LacollectionDocumentsestconstituedetouslesobjetsDocumentouvertsdansWord.
Add:CreunnouveauDocumentetl'ajoutelacollectionDocuments.
Ex:Documents.Add Template:="Normal"
Close:FermetouslesdocumentsWordouverts.
Ex :Documents.Close
Open:OuvreleDocumentspcifietl'ajoutelacollectionDocuments.
Ex :Documents.Open _
FileName:="C:\Clients\Relance.doc", _
ReadOnly:=True
Save :Enregistretouslesdocumentsouverts.
Ex :Documents.Save
LesobjetsDocument
UnobjetDocumentpermetdefairerfrenceundocumentWord.
ActiveDocumentdsigneledocumentactif.
Mthodes
Activate:Activeundocumentdjouvert.
Ex:Documents("Achats.doc").Activate
Close:FermeundocumentWordouvert.
Ex:Documents("Achats.doc").Close
ou ActiveDocument.Close
- 2 - ENI Editions - All rigths reserved
PrintPreview:AfficheundocumentenmodeAperuavantimpression.
Ex :ActiveDocument.PrintPreview.
Range:RenvoieunobjetRange(Plage).
Ex :ActiveDocument.Range(0, 50).Bold = True
Save:Enregistreundocument.
Ex :ActiveDocument.Save
SaveAs:Enregistreundocumentsousunnouveaunomet/ousousunnouveauformat.
Ex :ActiveDocument.SaveAs FileName:=strDocName
Objetsetcollections
Characters:Collectiondescaractressitusdansundocument,uneplageouuneslection.
MailMerge:FusionetpublipostagedansWord.
PageSetup:Descriptiondelamiseenpage.
Ex :ActiveDocument.PageSetup.RightMargin = InchesToPoints(1)
Paragraphs:Collectiondesparagraphesd'undocument.
SmartTags : Collection des balises actives (objets SmartTag) d'un document ou d'une plage de texte au sein
d'undocument.
Words:Collectiondesmotsdudocument.
Ex : ActiveDocument.Words.Count
Exemples
Miseengrasdescaractresd'undocumentWord.
Lancementd'unpublipostage
Le code suivant permet de gnrer une lettre de relance pour les clients ayant une commande livre et non
rgle.Lepublipostagefaitappellarequte"CommandesNonRgles"delabaseClients.mdb.
Private Sub Word_EnGras()
Dim AppWord As New Word.Application

With AppWord
.Documents.Open CurrentProject.Path & "\Relance.docx"
.ActiveDocument.Select
.Selection.Font.Bold = True
.ActiveDocument.Close wdSaveChanges
.Quit
End With

End Sub
Private Sub Relances()
Dim AppWord As Word.Application
Dim DocWord As Word.Document
Dim m_Provider As String

' Lancement de Word
Set AppWord = New Word.Application
AppWord.Visible = True

' Ouverture de la lettre type
Set DocWord = AppWord.Documents.Open(CurrentProject.Path & _
"\Relance.docx")

' Provider = Base Access Clients.mdb
m_Provider = "Microsoft.ACE.OLEDB.12.0;Password="""";User
- 3 - ENI Editions - All rigths reserved

ID=Admin;" _
& "Data Source=" & CurrentProject.Path & "\Clients.accdb;
" _
& "Mode=Read;"

' Prparation du publipostage pour les commandes non
rgles
With DocWord.MailMerge
.OpenDataSource Name:= _
CurrentProject.Path & "\Clients.accdb", _
ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True,
AddToRecentFiles:=False, _
Connection:=" & m_Provider & ", _
SQLStatement:="SELECT * FROM `COMMANDES NON REGLEES`"
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
' Lancement du publipostage
.Execute
End With

End Sub
- 4 - ENI Editions - All rigths reserved
PiloterExceldepuisAccess
LemodleObjetExcel
ExtraitdumodleObjetExcel :

ObjetsetcollectionsExcel
Workbooks:Collectiondetouslesclasseurs(objetsWorkbook)ouverts.
Worksheets:Collectiondetouteslesfeuillesdecalculs(objetsWorksheet)d'unclasseur.
Charts:Collectiondetouteslesfeuillesgraphiques(objetsChart)d'unclasseur.
CustomViews :Collectiondevuespersonnalises(objetsCustomView)d'unclasseur.
Names : Collection de tous les objets Name dans l'application ou le classeur. Chaque objet Name reprsente
unnomdfinipouruneplagedecellules.
SmartTagOptions:Objetreprsentantlesoptionsrelativesauxbalisesactives.
- 1 - ENI Editions - All rigths reserved
Ex :activationdesbalisesactives
ActiveWorkbook.SmartTagOptions _
.EmbedSmartTags = True
Styles:Collectiondetouteslesdescriptionsdestyles(objetsStyle)d'unclasseur.
LacollectionWorkbooks
LacollectionWorkbooksestconstituedetouslesclasseursouverts.
Add:Creunnouveauclasseurquidevientleclasseuractifetl'ajoutelacollectionWorkbooks.
Ex:Workbooks.Add
Close:FermetouslesclasseursExcelouverts.
Ex :Worksheets.Close
Open:Ouvreleclasseurspcifiquidevientleclasseuractifetl'ajoutelacollectionWorkbooks.
Ex :Workbooks.Open Filename:="C:\Devis\devis.xls"
Save:Enregistretouslesclasseursouverts.
Ex :Workbooks.Save
LesobjetsWorkbook
UnobjetWorkbookpermetdefairerfrenceunclasseurExcel.
LapropritActiveWorkbookdsigneleclasseuractif.
Activate:Activeunclasseurdjouvert.
Ex:Documents("Achats.xlsx").Activate
Close:FermeunclasseurExcelouvert.
Ex:Documents("Achats.xlsx").Close
ou ActiveDocument.Close
PrintPreview:Affichelafeuilleactived'unclasseurenmodeAperuavantimpression.
Ex :ActiveWorkbook.PrintPreview
Save:Enregistreunclasseur.
Ex :ActiveWorkbook.Save
SaveAs:Enregistreunclasseursousunnouveaunomet/ousousunnouveauformat.
Ex :ActiveWorkbook.SaveAs FileName:= "Devis.xlt"
EcriturededonnesdansdescellulesExcel
Lecodesuivantpermetd'afficherlalistedescommandesnonrgles.
Private Sub ExportXLS_Commandes()

' Objets Access
Dim dbsClients As DAO.Database
Dim rstCommandes As DAO.Recordset
Dim fld As DAO.Field

' Objets Excel
Dim appExcel As Excel.Application
Dim wbkCommandes As Excel.Workbook
Dim wksCommandes As Excel.Worksheet

' Variables de boucles
Dim intLig As Integer
Dim intCol As Integer

' Cration du classeur Excel
- 2 - ENI Editions - All rigths reserved

Set appExcel = CreateObject("Excel.application")
Set wbkCommandes = appExcel.Workbooks.Add
Set wksCommandes = appExcel.ActiveSheet
appExcel.Visible = True

' Ouverture de la table Commandes
Set dbsClients = DBEngine.OpenDatabase(CurrentProject.Path _
& "\Clients.accdb")
Set rstCommandes = dbsClients.OpenRecordset _
("COMMANDES NON REGLEES", dbOpenDynaset)

' Mise jour de la feuille active
With wksCommandes

' En-ttes de colonnes renseignes partir des noms
de champs
intCol = 1
For Each fld In rstCommandes.Fields
.Cells(1, intCol).Value = fld.Name
intCol = intCol + 1
Next fld

' Parcours des enregistrements
' Ajout d'une ligne par enregistrement
intLig = 2
Do While Not rstCommandes.EOF
intCol = 1
For Each fld In rstCommandes.Fields
.Cells(intLig, intCol).Value = rstCommandes(intCol - 1)
intCol = intCol + 1
Next fld
intLig = intLig + 1
rstCommandes.MoveNext
Loop
' Affectation d'un nom la feuille Excel
.Name = "Liste des commandes non rgles"
End With

' Fermeture des objets Access
rstCommandes.Close
dbsClients.Close

' Activation du classeur dans Excel
appExcel.ActiveWindow.Activate

End Sub
- 3 - ENI Editions - All rigths reserved
PiloterOutlookdepuisAccess
LemodleObjetOutlook
ExtraitdumodleObjetOutlook :

Exemple :affichagedescontactsOutlook
Cet exemple permet d'afficher la liste des contacts Outlook (nom et adresse email) dans une zone de liste d'un
formulaireAccess.
Pourtestercetexemplevousdevez:
- crer un nouveau formulaire,
- 1 - ENI Editions - All rigths reserved
- ajouter au formulaire une zone de liste lstContacts et un bouton de commande cmdContacts.

Private Sub CmdContacts_Click()
Dim objOle As Outlook.Application
Dim objNamespace As Namespace
Dim objAddrList As AddressList
Dim objAddrEntries As AddressEntries
Dim objAdrEntry As AddressEntry
Dim i As Integer

' Initialisation de la liste droulante
With Me.lstContacts
.ColumnCount = 1
.RowSourceType = "Liste valeurs"
.RowSource = ""
End With

' Application Outlook
Set objOle = CreateObject("Outlook.Application")

' Ouverture du carnet d'adresses Contacts
Set objNamespace = objOle.GetNamespace("MAPI")
Set objAddrList = objNamespace.AddressLists("Contacts")
Set objAddrEntries = objAddrList.AddressEntries

' Accs au premier contact
Set objAdrEntry = objAddrEntries.GetFirst

' Ajout des contacts dans la liste
For i = 1 To objAddrEntries.Count
With Me.lstContacts
.AddItem objAdrEntry.Name
End With

' Contact suivant
Set objAdrEntry = objAddrEntries.GetNext
Next i

End Sub
- 2 - ENI Editions - All rigths reserved
LeprotocoleDDE
DDE (Dynamic Data Exchange) est un protocole d'change dynamique de donnes entre deux applications
Windows, l'une appele Client ou Destination, l'autre appele Serveur ou Source. Le lien est rompu si l'une
desdeuxapplicationsvienttreferme.
UneliaisonDDEcomprendtroisphasesprincipales:
- initialisation: l'application destination recherche l'application source et tablit avec elle un canal de communication (liaison).
- conversation: des donnes sont changes sur le canal.
- clture: le canal de communication est ferm.
L'initialisation
I DDEInitiate
La fonction DDEInitiate permet d'initialiser la conversation entre deux applications. Elle renvoie le numro de
canalsilacommunicationaputretablie,sinonuneerreurseproduit.
Syntaxe
DDEInitiate (<application>,<sujet>)
Application :Nomdel'applicationSource.
Sujet :Groupededonnesutiliser.
Exemple
Laliaison
I DDE
La fonction DDE permet d'entamer une conversation DDE avec une autre application, de demander cette
derniredeslmentsd'informationpourlesafficherdansuncontrlefigurantsurunformulaireousuruntat.
Syntaxe
DDE(<Application>, <Rubrique>, <Elment>)
Application :Expressionchaneidentifiantuneapplication.
Rubrique :Fichierdocumentoufichierdedonnes.
Elment :Rfrenceunedonnedel'applicationSource.
Exemple
I DDESend
'cre un lien DDE avec la feuille feuil1 d'Excel
canal = DDEInitiate ("Excel","Feuil1")
' Affecte le contenu de la cellule L1C1 une zone
' de texte via sa proprit Source Contrle.
=DDE("excel","classeur1","L1C1")
- 1 - ENI Editions - All rigths reserved
La fonction DDESend permet d'entamer une conversation DDE avec une autre application, et d'envoyer un
lmentd'informationcetteapplicationdepuisuncontrlesitusurunformulaireousuruntat.
Syntaxe
DDESend(<Application>, <Rubrique>, <Elment>, <Donnes>)
Application :Expressionchaneidentifiantuneapplication.
Rubrique :Fichierdocumentoufichierdedonnes.
Elment :Rfrenceunedonnedel'applicationSource.
Donnes :Chaneouexpressioncontenantlesdonnesenvoyerapplication.
Exemple
I DDEPoke
L'instructionDDEPokeenvoiedesinformationsl'applicationSourcesuruncanalouvert.
Syntaxe
DDEPoke(<Numro de canal>, <lment>, <Donne>)
Numro de canal :NdecanalretournparlafonctionDDEInitiate.
lment :Rfrenceunedonnedel'applicationSource.
Donne :Donneenvoyerl'applicationSource.
Exemple
I DDERequest
LafonctionDDERequestdemandedesinformationsl'applicationSource.
Syntaxe
DDERequest(<Numro de canal>, <lment>)
Numro de canal :NducanalretournparlafonctionDDEInitiate.
lment :Rfrenceunedonnedel'applicationSource.
Exemple
I DDEExecute
' Affecte la cellule L1C1 le contenu du contrle
' Ville via la proprit Source Contrle d'une zone '
de texte.
=DDESend("excel","classeur1","L1C1",[Ville])
'envoie la valeur 15 dans la cellule L1C1

DDEPoke canal,"L1C1","15"
'affecte le contenu de la cellule L1C1
' la variable montant
montant = DDERequest (canal,"L1C1")
- 2 - ENI Editions - All rigths reserved
L'instructionDDEExecuteenvoieunechanedecommandesl'autreapplicationencoursdeliaison.
Syntaxe
DDEExecute(<Numro de canal>, <Commande>)
Numro de canal :NducanalretournparlafonctionDDEInitiate.
Commande :Chanecontenantunecommandereconnueparl'autreapplication.
Exemple
Laclture
I DDETerminate
L'instructionDDETerminatefermelecanaldecommunicationDDE.
Syntaxe
DDETerminate(<Numro de canal>)
Numro de canal :NducanalretournparlafonctionDDEInitiate.
Exemple
I DDETerminateAll
L'instructionDDETerminateAllfermetouslescanauxdecommunicationDDE.
Syntaxe
DDETerminateAll
'Cre une nouvelle feuille de calcul.
DDEExecute Canal,"[New(1)]"
DDETerminate canal
- 3 - ENI Editions - All rigths reserved
ImportetexportdedonnesauformatXML
Le langage XML (eXtensible Markup Language)estlelangagestandarddedescriptionetd'changededonnes
sur le Web, tandis que HTML (HyperText Markup Language) est le langage standard de cration et d'affichage
depagesWeb.
XSL (eXtensible Stylesheet Language) est une instance de XML permettant de contrler la prsentation des
documentsXML.
MicrosoftAccess2007offrelapossibilitd'importeroud'exporterdesdonnessouslaformed'unfichierXMLet
desprsentationssouslaformed'unfichierXSL.
En VBA, vous pouvez utiliser les mthodes ImportXML et ExportXML de l'objet Application pour importer ou
exporterdesdonnesauformatXML.
LamthodeExportXML
La mthode ExportXML permet d'exporter les donnes et/ou la prsentation d'un objet Access spcifi. Il est
possibled'exporterauformatXMLlesobjetsAccesssuivants :
- tables,
- requtes,
- formulaires,
- tats,
- pages d'accs aux donnes.
Syntaxe
Application.ExportXML(<ObjectType>, <DataSource>,
[<DataTarget>], [<SchemaTarget>],
[<PresentationTarget>], [<ImageTarget>], [<Encoding>],
[<OtherFlags>])
ObjectType : Obligatoire. Type d'objet Access exporter (acExportDataAccessPage, acExportForm,
acExportReport...).
DataSource :Obligatoire.Chanedecaractresindiquantlenomdel'objetAccessexporter.
DataTarget :Facultatif.Chanedecaractresindiquantlenomdefichieretlechemindesdonnesexportes.
Sicetargumentestomis,lesdonnesnesontpasexportes.
SchemaTarget : Facultatif. Chane de caractres indiquant le nom de fichier et le chemin des informations sur
les schmas exports. Si cet argument est omis, ces informations sont incorpores dans le document des
donnes.
PresentationTarget : Facultatif. Chane de caractres indiquant le nom de fichier et le chemin des
informationsdeprsentationexportes.Sicetargumentestomis,cesinformationsnesontpasexportes.
ImageTarget :Facultatif.Chanedecaractresindiquantlecheminpourlesimagesexportes.Sicetargument
estomis,lesimagesnesontpasexportes.
Encoding :Facultatif.Indiquel'encodagedetexteutiliserpourlefichierXMLexport.
OtherFlags : Facultatif. Entier long qui reprsente la somme des valeurs d'options dcrites dans la liste
suivante.
- 1 - ENI Editions - All rigths reserved
Valeur Description
1 Tablesconnexes:inclutlesdiffrentestablesconcernantl'objetspcifiparDataSource.
2 Propritsrelationnelles:credespropritsdeschmarelationnel.
4 Excutionpartirduserveur : cre un wrapper ASP sinon, c'est un wrapper HTML par dfaut.
S'appliqueuniquementlorsdel'exportationd'tats.
8 Propritsspciales:credespropritsdeschmatendues.
LamthodeImportXML
La mthode ImportXML permet d'importer des donnes et/ou des informations de prsentation dans une table
MicrosoftAccesspartird'unfichierXML.
Syntaxe
Application.ImportXML(<DataSource>, [<ImportOptions>])
Datasource :ChanedecaractrescontenantlenometlechemindufichierXMLimporter.
ImportOptions :Facultatif.Dfinitlesoptionsrelativesl'importdufichierXML.
Constantesutilisablespourdfinirlesoptionsd'importation.
acAppendData : Si une table porte dj le nom du fichier XML, les donnes sont ajoutes la table, sinon la
tableestcre.
acStructureAndData :Valeurpardfaut.Importelastructureetlesdonnes.Siunetableportedjlenomdu
fichierXML,Accessgnreunnouveaunomdetable.
acStructureOnly : Importe uniquement la structure. Si une table porte dj le nom du fichier XML, Access
gnreunnouveaunomdetable.
Exempled'import/exportXML
Dansl'exemplesuivant,nousallonsvoircomment :
- exporter une table au format XML,
- afficher le fichier XML dans le navigateur Internet Explorer,
- exporter une prsentation de formulaire,
- importer le fichier XML dans une nouvelle table aprs avoir modifi son contenu.
Pourralisercetexemple,vousdevezcrerunrpertoire"C:\XML".
tape1:ExportdelatableClients
I Saisissez le code suivant dans un nouveau module appel ImportExportXML et excutez la procdure ExportTabClient.
Private Sub ExportTabClient()
' Export de la table Client
ExportTable ("Clients")
End Sub

Private Sub ExportTable(strTableName As String)
' Export des donnes (XML) et de leur prsentation
(XSL)
- 2 - ENI Editions - All rigths reserved
tape2:LienentrelesfichiersXMLetXSL
DanslerpertoireXML,lestroisfichierssuivantsonttcrs:clients.xml,clients.xsletclients.htm.
Sivousouvrezlefichierclients.xmldansInternetExplorer,vousobtenezlersultatsuivant:

Pour pouvoir afficher correctement la liste des clients, vous devez soit utiliser le fichier clients.htm qui fait le
lien entre les fichiers xml et xsl, soit modifier le fichier clients.xml afin de lui associer le fichier clients.xsl
(insrerladeuximeligne).
Pour modifier le code contenu dans les fichiers xml ou xsl, vous pouvez utiliser le bloc-note de Windows (Notepad.exe) ou tout autre
diteur de fichiers texte.
tape3 :Exportd'uneprsentationdeformulaire
I Saisissez le code suivant dans le module ImportExportXML et excutez la procdure ExportFormClient.
Lefichierclients.xslatremplacdanslerpertoireC:\XML.
I Ouvrez le fichier clients.xml dans Internet Explorer.
Vousobtenezmaintenantlersultatsuivant:
Application.ExportXML _
ObjectType:=acExportTable, _
DataSource:=strTableName, _
DataTarget:="C:\XML\" & strTableName & ".xml", _
PresentationTarget:="C:\XML\" & strTableName & ".xsl", _
Encoding:=acUTF8
End Sub
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Clients.xsl"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
<Clients>
Private Sub ExportFormClient()
' Export de la table Client
ExportFormulaire ("Clients")
End Sub

Private Sub ExportFormulaire(strFormName As String)
' Export de de la prsentation (XSL) d'un formulaire
Application.ExportXML _
ObjectType:=acExportForm, _
DataSource:=strFormName, _
PresentationTarget:="C:\XML\" & strFormName & ".xsl", _
Encoding:=acUTF8

End Sub
- 3 - ENI Editions - All rigths reserved

tape4:ImportdufichierClients.XMLaprsmodification
I Modifiez le fichier clients.xml de manire ne conserver que le premier enregistrement.
I Saisissez le code suivant dans le module ImportExportXML.
I Sauvegardez votre table clients sous un autre nom dans Access.
I Excutez la procdure ImportTableClient.
La table Clients est cre dans Access avec un seul enregistrement.

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Clients.xsl"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
<Clients>
<Code_x0020_clientALFKI</Code_x0020_client>
<SocitAlfreds Futterkiste</Socit>
<Contact>Maria Anders</Contact>
<Fonction>Reprsentant(e)</Fonction>
<Adresse>Obere Str. 57</Adresse>
<Ville>Berlin</Ville>
<Code_x0020_postal>12209</Code_x0020_postal>
<Pays>Allemagne</Pays>
<Tlphone>030-0074321</Tlphone>
<Fax030-0076545</Fax>
</Clients>
</dataroot>
Private Sub ImportTableClient()
' Import de la table Client
ImportTable ("Clients")
End Sub

Private Sub ImportTable(strTableName As String)
' Import d'une table
Application.ImportXML "C:\XML\" & strTableName & ".xml"

End Sub
- 4 - ENI Editions - All rigths reserved
Exempledecrationd'unfichierHTML
Vous pouvez partir du langage VBA crer un fichier HTML. Pour cela vous devez utiliser l'objet
FileSystemObject.
Les mthodes et proprits de cet objet sont dtailles dans le chapitreProgrammation Windows.
L'exemple suivant permet de crer le fichier ImageListe.htm contenant toutes les images du rpertoire
slectionnparl'utilisateur.
Aperu dans Internet Explorer d'un fichier HTML cr par le code de l'exemple.
Private Sub CreeHTML()
Dim fso As Object
' Dossier
Dim fld As Object
' Collection Files
Dim fls As Object
' Objet File
Dim fl As Object

' Fichier Html
Dim fHtml As Object
Dim strFolder As String
Dim strHtml As String

' Slection du dossier
strFolder = InputBox("Saisissez le chemin du dossier
contenant " _
& "les images", "Test VBA", "C:\")

' Recherche des fichiers images
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderExists(strFolder) Then
Set fld = fso.GetFolder(strFolder & "\")
Set fls = fld.Files
strHtml = "<html>"

For Each fl In fls
If Left(fl.Type, 5) = "Image" Then
strHtml = strHtml & "<img src=" & "'" & strFolder & "\"
_
& fl.Name & "'" height=" & x & 100 & x & ">" _
& fl.Name & "<BR>"
End If
Next
' Cre le fihier HTML
strHtml = strHtml & "</html>"
Set fHtml = fso.CreateTextFile(strFolder & "\" & _
"ImageList.htm", True)
fHtml.Write (strHtml)
Else
MsgBox "Dossier " & strFolder & " non trouv"
End If

End Sub
- 1 - ENI Editions - All rigths reserved

- 2 - ENI Editions - All rigths reserved
PrsentationdesAPI
L'interface de programmation Windows API (Application Programming Interface) offre des fonctions qui
permettent de contrler les aspects les plus internes du systme d'exploitation. Vous pouvez tendre et
personnaliser vos applications Access en appelant des fonctions Windows API partir de VBA. Bien qu'Access
continue voluer et que son langage de programmation natif (VBA) intgre de plus en plus de fonctions
systmes,ilestncessairepourcertainestchesdesfonctionsdel'API.
Une API est un ensemble de fonctions que vous pouvez utiliser pour travailler avec un composant, une
application ou le systme d'exploitation. Elle se compose gnralement d'une ou de plusieurs DLL (Dynamic Link
Libraryoubibliothquedeliaisondynamique).
L'API la plus couramment utilise est l'API Windows qui inclut les DLL constituant le systme d'exploitation
Windows. Chaque application Windows interagit directement ou indirectement avec l'API Windows. Ceci garantit
uncomportementcohrentdetouteslesapplicationsfonctionnantsousWindows.
LesDLLdeWindowslespluscourammentutilisessontlessuivantes:
Kernel32.dll:Fonctionsdebasniveaudusystmed'exploitation,tellesquegestiondelammoireetgestiondes
ressources.
User32.dll : Fonctions de gestion Windows, telles que traitement des messages, horloges, menus et
communication.
GDI32.dll : Bibliothque GDI (Graphics Device Interface) qui contient des fonctions de sortie vers les
priphriques(graphisme,contexted'affichageetgestiondespolices).
D'autres API sont galement disponibles comme par exemple l'interface MAPI (Mail Application Programming
Interface)quipermetd'criredesapplicationsdecourrierlectronique.
Pourobtenirdesinformationssurlesfonctionsdel'APIWindows,ilexistedeuxsourcesd'informations :
- la visionneuse d'API (fichier excutable ApiLoad.Exe inclus dans Microsoft Office XP Developer et dans Microsoft Visual Basic)
permet d'afficher les constantes, dclarations et les types d'API. Les lments slectionns peuvent tre copis de la
Visionneuse d'API vers les applications VBA.
Les informations de la visionneuse d'API sont contenues dans des fichiers texte (win32api.txt, mapi32.txt...) pouvant tre
exports dans une base mdb pour en faciliter la consultation ultrieure.
- la plateforme Microsoft SDK (Software Development Kit) contient une documentation complte de l'API Windows et est
disponible gratuitement sur le site Microsoft Developer Network.

- 1 - ENI Editions - All rigths reserved
Appeld'unefonctiondel'APIWindows
Pour appeler une fonction de l'API Windows, vous devez la dclarer en utilisant l'instruction Declare dans la
section Dclarations d'un module de votre projet (gnralement un module ddi aux procdures gnrales de
l'application).
Syntaxedel'instructionDeclare
Danslesversions32bitsdeVisualBasic,lerespectdesminusculesetmajusculesestobligatoirepourlesnoms
defonctionsetdeprocduresdesDLL.
[Public|Private] Declare Sub <nom_proc> Lib "<Nom_DLL>"_
[Alias "<Nom_alias>"] [([liste_arguments])]
[Public|Private] Declare Function <Nom_fonc> _
Lib "<Nom_DLL>"_
[Alias "<Nom_alias>"] [([Liste_arguments])] [As <Type>]
Nom_proc, Nom_fonc :Nomdelaprocdureoudelafonctiontelqu'utilisdansVisualBasic.
Nom_DLL :NomdelaDLL.
Nom_alias :NomdelaprocdureoudelafonctiondanslaDLL.
Liste_arguments :Paramtrespasserlaprocdure(cf.chapitreLelangageVisualBasic).
Type :Typedelavaleurduretourd'uneprocdureFunction.
CertainesDLLnefournissentpasdenompourleursprocduresetleursfonctionsmaispluttunnombreordinal.
Ladclarationdetellesprocduresoufonctionsutiliselammesyntaxe,maisilfautdfinirlenombreordinalau
niveaudel'Aliassouslaformed'undise(#)suividunombre(ex:Alias"#52").
Passagedesarguments
Les fonctions et procdures des DLL sont crites pour la plupart en langage C et utilisent sa syntaxe. Aussi, le
passaged'argumentsuneprocdureouunefonctiond'uneDLLdepuisVisualBasic,n'estpastoujourssimple.
AuniveaudesDLLutilisantlasyntaxeduC,touslesargumentssontpasssparvaleurs,sauflestableaux.
LeschanesenlangageCsontconsidrescommedestableauxdecaractres.
Certains arguments de procdures de DLL peuvent accepter diffrents types de donnes (un peu comme les
Variant), ils doivent tre dclars avec le type Any (ex : variable As Any). Visual Basic, pour ce type
d'argument, considre que celuici est pass systmatiquement par rfrence s'il y a lieu de le passer par
valeur,ilfautl'expliciterauniveaudel'appel(etnondeladclaration)delaprocdureoudelafonctionavecla
mentionByVal.
Pardfaut,VisualBasicpasselesargumentsparRfrence.
Tableaudesdclarationsdesarguments
Dclaration
en langage C
Dclaration Visual
Basic
Appel
BOOL ByVal <variable>
As Boolean
Une expression dont l'valuation produit
une valeur de type Boolean.
long, DWORD, LONG,
COLORREF
ByVal <variable> As
Long
Une expression dont l'valuation produit
une valeur de type Long.
WORD ByVal <variable> As
Long
Une expression dont l'valuation produit
une valeur de type Long.
NULL As Any ou ByVal
<variable> As Long
ByVal Nothing ou ByVal 0$ ou
vbNullString.
- 1 - ENI Editions - All rigths reserved
int, short Byval <variable>
As Integer
Une expression dont l'valuation produit
une valeur de type Integer.
char, BYTE Byval <variable>
As Byte
Une expression dont l'valuation produit
une valeur de type Byte.
Entier (INT, UINT) 32bits avec
compilateur 32 bits
ByVal <variable> As
Long
Une expression dont l'valuation produit
une valeur de type Long.
Identificateur Windows (hWnd,
hDC, hMenu...)
ByVal <variable> As
Long
Une expression dont l'valuation produit
une valeur de type Long.
Vide (valeur de renvoi de
fonction)
Sub <procdure> Sans objet.
Pointeur vers une chane
(LPSTR)
ByVal <variable> As
String
Une expression dont l'valuation produit
une valeur de type String.
Pointeur vers un entier long
(LPDWORD)
<variable> As Long Une variable de type Long.
Pointeur vers un vide <variable> As Any Une variable (utilisez ByVal pour passer
une chane).
Pointeur vers un char <variable> As Byte Une expression dont l'valuation produit
une valeur de type Byte.
Pointeur vers
un entier (LPINT)
<variable> As Long Une variable de type Long.
Pointeur vers
une structure
<variable>
As <type>
Une variable de type dfinie par
l'utilisateur.

- 2 - ENI Editions - All rigths reserved
ListedefonctionsAPIWindows
Cettelistecomportelesfonctionsdel'APIWindowscourammentutilises.Desexemplesd'utilisationdecertaines
decesfonctionssontdonnesdansleparagraphesuivant.
GetWindowsDirectory() : Renvoie le chemin complet du rpertoire de Windows (applications, outils du
systme).
GetSystemDirectory() :RenvoielechemincompletdurpertoiresystmedeWindows.
GetSystemInfo() : Renvoie tout un ensemble d'informations sur le systme. Ces donnes sont stockes dans
unestructuredetypeSYSTEM_INFO.
GetActiveWindow():Renvoielehandledelafentreactive.
FindWindow():Renvoielehandledelafentreenfonctiondesonnometdelaclassepartirdelaquelleellea
tdfinie.
SetFocus():Attribuelefocusd'entrelafentrerfrenceparsonhandle.
GetPrivateProfileString() :Renvoieuneoptionextraited'unfichier.Inipartird'unnomdesectionetdecl.
WNetGetUser() :Renvoielenomduloginrseauutilispourlasessionencours.

- 1 - ENI Editions - All rigths reserved
Exemplesd'utilisationdefonctionsAPIWindows
RcuprationdurpertoireWindows
Dclaration de la fonction API.
Appel de la fonction API.
Lancementdel'applicationExcelsinonactive
Cetexemplepermetderecherchersil'applicationExcelestactive,etdelancersonexcutionsibesoinest.
Deux fonctions API sont ici utilises : FindWindow permet de rechercher la fentre Excel, FindExecutable de
rechercherl'emplacementdufichierExcel.exe.
Dclaration de la fonction API.
Appel des fonctions API.
Private Declare Function GetPrivateProfileString Lib
"KERNEL32" _
Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Function GetWinPath() As String

' Cette fonction VBA renvoie le rpertoire Windows
Dim strResult As String
Dim strProfile As String

strResult = String(255, " ")
strProfile = GetWindowsDirectory(strResult, 255)

' Tronque la chane au premier caractre nul
If strProfile <> "" Then
strResult = Trim(strResult)
GetWinPath = Left(strResult, InStr(1, strResult,
vbNullChar) - 1)
Else
GetWinPath = ""
End If
End Function
' Cette fonction API recherche une fentre
Public Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long

' Cette fonction API recherche un fichier excutable
Public Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As
Long
Private Function LanceExcel() As Boolean
Dim strClassName As String
Dim strWindowName As String
Dim Hwnd As Long
Dim blnExe As Boolean
Dim strRepExcel As String
Dim Result As Long

' Initialisation
- 1 - ENI Editions - All rigths reserved
Rcuprationd'unevaleurdansunfichier.ini
LefichierAppDevis.iniestconstitudestroislignessuivantes :
[BASE]
BasePath=C:\DEVIS
BaseName=DEVIS.ACCDB
L'exemple suivant permet de rcuprer le nom et le chemin d'accs dans le fichier AppDevis.ini situ dans le
rpertoireWindows(enfaisantappellafunctionGetWinPathdel'exemple1).
Dclaration de la fonction API.
Appel de la fonction API.
Appel de la fonction VBA LireCle.
LanceExcel = False

' Recherche de la fentre Excel active
strClassName = vbNullString
strWindowName = "Microsoft Excel - Classeur1"
Hwnd = FindWindow(strClassName, strWindowName)

' Si non trouve recherche du rpertoire Excel
' et lancement de l'application Excel
If Hwnd = 0 Then
strRepExcel = String$(255, 0)
Result = FindExecutable("Excel.exe", "C:\", strRepExcel)
If Result = 0 Then Exit Function
blnExe = Shell(strRepExcel, vbNormalFocus)
If Not blnExe Then Exit Function
End If
LanceExcel = True

End Function
Public Declare Function GetPrivateProfileString Lib
"kernel32" _
Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Public Function LireCle(Section As String, Cl As String, _
Fichier As String) As String

' Cette fonction renvoie la valeur de la cl
' qu'on peut trouver dans un fichier .ini quelconque
Dim strResult As String
Dim strProfile As Integer
Dim i As Integer

strResult = String(255, " ")
strProfile = GetPrivateProfileString(Section, Cl, "", _
strResult, 255, Fichier)
If strProfile = 0 Then
LireCle = ""
Exit Function
End If

' Tronque la chaine au premier caractre nul
strResult = Trim(strResult)
LireCle = Left(strResult, InStr(1, strResult, vbNullChar) -
1)

End Function
- 2 - ENI Editions - All rigths reserved

Private Sub Init_Projet()
Dim strBaseName As String
Dim strPath As String
Dim strWinPath As String

' Recherche du nom et du rpertoire de la base
strWinPath = GetWinPath()
If strWinPath = "" Then Exit Sub

' Recherche de valeurs dans Devis.ini
strBaseName = Trim(LireCle("BASE", "BASENAME", strWinPath _
& "\" & "Devis.ini"))
strPath = Trim(LireCle("BASE", "BASEPATH", strWinPath & "\" _
& "Devis.ini"))

End Sub
- 3 - ENI Editions - All rigths reserved
L'objetFileSystemObject
L'objet FileSystemObject donne accs au systme de fichier d'un ordinateur. Il permet notamment de
rechercher,crer,supprimeroudplacerdesfichiersoudesdossiers.
Mthodes
Mthoderelativesauxfichiers
CopyFile:Copieunouplusieursfichiersd'unemplacementversunautre.
CreateTextFile:Creunfichiersurledisqueportantlenomspcifietrenvoieunobjet TextStreampouvant
treutilispourlireoucriredanslefichier.
DeleteFile:Supprimeunfichierspcifi.
FileExists:Renvoieunboolenindiquantsilefichierspcifiexiste.
MoveFile:Dplaceunouplusieursfichiersd'undossierversunautre.
OpenTextFile : Ouvre le fichier spcifi et renvoie un objet TextStream pouvant tre utilis pour lire le fichier
ouyeffectuerunajout.
Mthoderelativesauxdossiers
CopyFolder:Copieundossierd'unemplacementversunautre.
CreateFolder:Creundossier.
DeleteFolder:Supprimeledossierspcifietsoncontenu.
FolderExists:Renvoieunboolenindiquantsiledossierspcifiexiste.
MoveFolder:Dplaceunouplusieursdossiersd'unemplacementversunautre.
Mthoderelativesauxlecteurs
DriveExists:Renvoieunboolenindiquantsilelecteurlogiquespcifiexiste.
GetDrive:RenvoieunobjetDrivecorrespondantaulecteurdansuncheminspcifi.
GetDriveName:Renvoieunechanecontenantlenomdulecteurpouruncheminspcifi.
Proprits
Drives:RenvoieunecollectionconstituedetouslesobjetsDrivedisponiblessurlamachinelocale.
Exemple
L'exemple suivant permet d'afficher la liste des lecteurs disponibles et l'espace disponible sur chacun d'eux.
Sub AfficheLecteur()
Dim fso As Object
Dim strMsg As String
Dim drv As Object
Dim drvs As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set drvs = fso.Drives
For Each drv In drvs
If drv.isready Then
- 1 - ENI Editions - All rigths reserved
strMsg = strMsg & drv.driveletter & ": " _
& Format(EspaceDisponible(drv.driveletter & ":"), _
"# ### ##0") & " KOctets" & vbCrLf
End If
Next
MsgBox strMsg
End Sub
- 2 - ENI Editions - All rigths reserved
Prsentation
noncduproblme
Le service Ressources Humaines d'une entreprise souhaite effectuer un suivi des formations auxquelles
participentsesemploys.
L'applicationAccess,raliseceteffetetprsentedanscechapitre,permet:
- de saisir les stages de formations,
- de rechercher les stages de formation en fonction d'un ensemble de critres,
- d'imprimer la liste des stages correspondants en rappelant les diffrents critres de slection.
BasededonnesFormations
LabasededonnesFormationscontenantcetteapplicationestconstituededeuxformulairesetd'untat:
- le formulaire Formations permet de saisir, modifier et supprimer des stages de formation.
- Le formulaire Recherche permet de rechercher des stages en fonction de diffrents critres.
- L'tat Formations affiche la liste des stages slectionns dans le formulaire Recherche.
L'option Effacer en cascade est active sur la relation entre les tables Formations et Participants.
Modlerelationneldelabase


- 1 - ENI Editions - All rigths reserved
Formulaire"Formations"
Ceformulairepeuttresoitouvertdirectementpartird'Accesspourajouterdesstages,soitappelpartirdu
formulaire"Recherche"pourmodifierousupprimerunstageexistant.

LapropritsourceduformulaireestFormations(TableFormations).
Listedescontrles


Nom du contrle Description
1 txtInitul Zone de texte associe au champ FOR_INTITULE
2 cboOrganisme Zone de liste droulante base sur la table Organismes et
associe au champ FOR_IDORGA
3 cboDomaine Zone de liste droulante base sur la table Domaines et
associe au champ FOR_IDDOM
4 txtCout Zone de texte associe au champ FOR_COUT
5 txtCoutStage Zone de texte
6 txtDateDeb Zone de texte au format Date associe au champ
FOR_DATEDEB
7 txtDateFin Zone de texte au format Date associe au champ
FOR_DATEFIN
8 txtDuree Zone de texte associe au champ FOR_DUREE
9 sFrmParticip Contrle sous-formulaire affichant le sous-formulaire Access
SF Participants
10 txtNbStag Zone de texte
11 cmdEnregistrer Bouton de commande
12 cmdSupprimer Bouton de commande
13 cmdFermer Bouton de commande
- 1 - ENI Editions - All rigths reserved
CodeVBA
LecodeVBAassociceformulairemontrelesaspectssuivants :
- synchronisation entre formulaire et sousformulaire : lors de l'ajout ou de la suppression d'un participant, le nombre de
stagiaires et le cot par stagiaires sont recalculs et raffichs,
- gestion des doublons au niveau du sousformulaire,
- utilisation d'un contrle calendrier pour saisir des dates,
- appel d'une fonction pour effectuer des calculs sur les dates,
- ...
CodeVBAgnrall'application :procduresetdclarationscommunes
I Insrez le code suivant dans un module standard (ProcGene par exemple).
CodeVBAduformulaire
Contrle Proprit spcifique
Form Entres Donnes = Oui
Source = Formations
txtNbStag Valeur par dfaut = 0
Verrouill = Oui
Source Contrle =
[sFrmParticipant].[Formulaire]![txtNbStag]
txtCoutStag Verrouill = Oui
Option Compare Database
Option Explicit
' Critres de recherche
Public p_strCond As String
' N de l'employ
Public p_lngEmp As Long
' Titre de l'tat
Public p_strTitre As String
________________________________________________________________________
Function NbJourOuvres(Date1, Date2) As Integer
Dim NbJour, NbSem As Integer

' Calcule le nombre de jours ouvrs
' entre deux dates
NbJour = DateDiff("d", Date1, Date2) + 1
' Nombre de semaines entre les 2 dates
NbSem = DateDiff("ww", Date1, Date2)
NbJourOuvres = NbJour - (NbSem * 2)

End Function
Option Explicit
Dim BlnMaj As Boolean
________________________________________________________________________
Private Sub cmdEnregistrer_Click()
Dim intRep As String

' Contrle des champs obligatoires
If Not Ctrl_Info Then Exit Sub
If IsNull(txtDateDeb) Or IsNull(txtDateFin <> "") Then
If MsgBox("Dates non<+>saisies, confirmez-vous " _
& "l'enregistrement ?", vbQuestion & vbYesNo) = vbNo Then
txtDateFin.SetFocus
Exit Sub
End If
End If

- 2 - ENI Editions - All rigths reserved

' Passe la cration du stage suivant
' si mode ajout de donnes
If Me.DataEntry Then
txtDuree = "
txtCoutStag = ""
BlnMaj = False
DoCmd.GoToRecord , , acNewRec
txtIntitule.SetFocus
CmdSupprimer.Enabled = False
cmdEnregistrer.Enabled = False
Else
DoCmd.Close
End If
End Sub
________________________________________________________________________
Private Sub cmdFermer_Click()
' Teste si saisie d'un stage en cours
If txtIntitule <> "" Then
MsgBox ("Enregistrez ou supprimez le stage avant de fermer")
Else
DoCmd.Close
End If
End Sub
________________________________________________________________________
Private Sub CmdSupprimer_Click()
On Error GoTo Err_Suppr
If BlnMaj Then

' Supprime l'enregistrement si modifi
DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70
Else
' Annule la saisie sinon
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
End If
On Error GoTo 0
Exit Sub

Err_Suppr:
MsgBox "Suppression impossible : " & Err.Number, vbCritical
On Error GoTo 0
End Sub
________________________________________________________________________
Private Sub Form_AfterUpdate()
' Indicateur de mise jour
BlnMaj = True
End Sub

________________________________________________________________________
Private Sub Form_Load()
' Dsactive les boutons Supprimer
' et Enregistrer si mode ajout donnes
If Me.DataEntry Then
cmdEnregistrer.Enabled = False
CmdSupprimer.Enabled = False
Else
' Calcul du cot par stagiaire
Me.Recalc
If txtNbStag > 0 Then
txtCoutStag = txtCout / txtNbStag
End If
BlnMaj = True
End If
End Sub
________________________________________________________________________
Private Sub sFrmParticipant_Enter()
' Contrle des informations obligatoires
Ctrl_Info
End Sub
________________________________________________________________________
Private Sub txtCout_AfterUpdate()
' Calcul du cot / Stagiaire
If txtCout > 0 And txtNbStag > 0 Then
txtCoutStag = txtCout / txtNbStag
End If
End Sub
________________________________________________________________________
Private Sub txtDateDeb_LostFocus()
' Calcul de la dure du stage
- 3 - ENI Editions - All rigths reserved
Sousformulaire"SFParticipants"
Le formulaire "Formations" et le sousformulaire "SF Participants" sont lis sur les champs FOR_IDFORM et
PART_IDFORM.
Calc_Dure
End Sub
________________________________________________________________________
Private Sub txtDateFin_LostFocus()
' Calcul de la dure du stage
Calc_Dure
End Sub
________________________________________________________________________
Private Sub txtIntitule_BeforeUpdate(Cancel As Integer)
' Active le bouton Supprimer
CmdSupprimer.Enabled = True
End Sub

________________________________________________________________________
Private Function Ctrl_Info() As Boolean
' Contrle si les champs obligatoires ont t saisis
If IsNull(txtIntitule) Then
MsgBox "Intitul obligatoire", vbCritical
txtIntitule.SetFocus
Exit Function
End If
If IsNull(cboOrganisme) Then
MsgBox "Organisme obligatoire", vbCritical
cboOrganisme.SetFocus
Exit Function
End If
If IsNull(cboDomaine) Then
MsgBox "Domaine obligatoire", vbCritical
cboDomaine.SetFocus
Exit Function
End If
If IsNull(txtCout) Then
MsgBox "Montant du stage obligatoire", vbCritical
txtCout.SetFocus
Exit Function
End If
Ctrl_Info = True
CmdSupprimer.Enabled = True
cmdEnregistrer.Enabled = True
End Function
________________________________________________________________________
Private Sub Calc_Dure()
Dim intDuree As Integer
' Si les deux dates sont renseignes
' Contrle des dates et calcul de la dure
If txtDateDeb <> "" And txtDateFin <> "" Then
intDuree = DateValue(txtDateFin) - DateValue(txtDateDeb)
If intDuree < 0 Then
MsgBox "Vous devez spcifier une date de dbut antrieure " _
& " la date de fin", vbCritical, "Gestion des Formations"
Exit Sub
Else
txtDuree = NbJourOuvres(DateValue(txtDateDeb), _
DateValue(txtDateFin))
End If
End If
End Sub
- 4 - ENI Editions - All rigths reserved


CodeVBA


Nom du contrle Description
1 cboEmploye Zone de liste droulante base sur la table Employes
associe au champ FOR_IDEMP
2 txtNbStag Zone de liste indpendante
Contrle Proprit spcifique
Form Source = Participants
txtNbStag Source Contrle = Compte([PART_IDEMP])
Private Sub cboEmploye_AfterUpdate()
' Si Doublons : la mthode Refresh choue
On Error GoTo Doublons
Me.Refresh
On Error GoTo 0
' Recalcule le cot par stagiaire
' Si le formulaire principal est Formations
If UCase(Screen.ActiveForm.Name) = "FORMATIONS" Then
CalcCoutStage
End If
Exit Sub

' Gestion des doublons : message d'erreur
Doublons:
If Err.Number = 3022 Then
MsgBox "Participant dj saisi"
Else
MsgBox "Erreur lors de l'ajout du participant : " _
& Err.Number, vbCritical
End If
' Remise blanc du champ
cboEmploye = ""
End Sub
________________________________________________________________________
Private Sub Form_AfterDelConfirm(Status As Integer)
' Recalcule le cot par stagiaire
' Si le formulaire principal est Formations
If UCase(Screen.ActiveForm.Name) = "FORMATIONS" Then
CalcCoutStage
End If
End Sub
________________________________________________________________________
Private Sub CalcCoutStage()
Dim frmFormat As Object

' Calcule le cot / Stagiaire
Set frmFormat = Forms![FORMATIONS]
frmFormat.Recalc
If frmFormat.txtCout <> 0 And txtNbStag <> 0 Then
frmFormat.txtCoutStag = frmFormat.txtCout / txtNbStag
End If
' Active le bouton de commande Enregistrer
If txtNbStag <> 0 Then frmFormat.cmdEnregistrer.Enabled = True
End Sub
- 5 - ENI Editions - All rigths reserved

- 6 - ENI Editions - All rigths reserved
Formulaire"Recherche"
Ceformulairepermetd'afficheretd'imprimerlalistedesstagesrpondantcertainscritres.Ceformulairen'est
associaucunesourcededonnes.

Listedescontrles
CodeVBA
LecodeVBAassociceformulairemontrelesaspectssuivants :
- constitution d'une requte de type SQL partir de critres saisis,

Nom du contrle Description
1 cboOrganisme Zone de liste droulante base sur la table Organismes
2 cboDomaine Zone de liste droulante base sur la table Domaines
3 cboEmploye Zone de liste droulante base sur la table Employes
4 txtDateDeb Zone de texte au format Date
5 txtOperat1 Zone de liste droulante contenant les valeurs "=",">","<"
6 txtDateFin Zone de texte au format Date associe au champ
FOR_DATEFIN
7 txtOperat2 Zone de liste droulante contenant les valeurs "=",">","<"
8 cmdRechercher Bouton de commande
9 cmdEffacer Bouton de commande
10 cmdImprimer Bouton de commande
11 cmdFermer Bouton de commande
12 sFrmformation Contrle sous-formulaire affichant le sous formulaire
Access SF Formations
- 1 - ENI Editions - All rigths reserved
- affectation de la requte au sousformulaire pour n'afficher que les enregistrements souhaits,
- affectation de la requte un tat pour n'imprimer que les enregistrements souhaits.
Option Compare Database
Option Explicit
Dim strSQL As String
________________________________________________________________________
Private Sub cmdRechercher_Click()

' Cre la requte en fonction des critres saisis
If cboEmploye <> "" Then
' Tables formations et participants
strSQL = "SELECT FOR_IDFORM, FOR_INTITULE, " _
& "FOR_IDDOM, FOR_IDORGA, FOR_DATEDEB, " _
& "FOR_DATEFIN, PART_IDEMP " _
& "FROM FORMATIONS INNER JOIN PARTICIPANTS " _
& "ON FORMATIONS.FOR_IDFORM = " _
& "PARTICIPANTS.PART_IDFORM"
Else

' Table formation
strSQL = "SELECT FOR_IDFORM, FOR_INTITULE, " _
& "FOR_IDDOM, FOR_IDORGA, " _
& "FOR_DATEDEB, FOR_DATEFIN FROM FORMATIONS "
End If

' Prpare la clause Where de la requte SQL
' en concatnant les critres
p_strCond = ""
p_lngEmp = 0
If cboDomaine <> "" Then
p_strCond = p_strCond _
& " AND FOR_IDDOM = " & cboDomaine
End If
If cboOrganisme <> "" Then
p_strCond = p_strCond _
& " AND FOR_IDORGA = " & cboOrganisme
End If
If cboEmploye <> "" Then
p_strCond = p_strCond _
& " AND PART_IDEMP = " & cboEmploye
p_lngEmp = cboEmploye
End If

' Critres sur les dates
If cboOperat1 <> "" And txtDateDeb <> "" Then
p_strCond = p_strCond & " AND (FOR_DATEDEB " & cboOperat1 _
& " #" & Format(DateValue(txtDateDeb), "MM/DD/YY") & "#)"
End If
If cboOperat2 <> "" And txtDateFin <>"" Then
p_strCond = p_strCond & " AND (FOR_DATEFIN " & cboOperat2 _
& " #" & Format(DateValue(txtDateFin), "MM/DD/YY") & "#)"
End If

' Suppression du 1er AND
If p_strCond <> "" Then
p_strCond = Right(p_strCond, (Len(p_strCond) - 4))
End If

' Affecte la requte SQL au sous-formulaire
If p_strCond <> "" Then
strSQL = strSQL & " WHERE " & p_strCond & " ORDER BY FOR_DATEDEB"
Else
strSQL = strSQL & " ORDER BY FOR_DATEDEB"
End If

SFrmFormations.Form.RecordSource = strSQL
SFrmFormations.Form.Requery

End Sub
________________________________________________________________________
Private Sub cmdEffacer_Click()
Dim ctl As Control

' Efface les zones de texte et zones de listes
For Each ctl In Me.Controls
- 2 - ENI Editions - All rigths reserved
Sousformulaire"SFFormations"
Lesousformulaire"SFFormations"estbassurunerequteeffectuepartirdelatable"Formations".
LapropritRecordSourceduformulaireest :"SELECT*FROMFORMATIONS".

CodeVBA
If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
ctl.Value = ""
End If
Next
End Sub
________________________________________________________________________
Private Sub cmdImprimer_Click()

' Constitution du titre de l'tat
p_strTitre = ""
If cboDomaine <> "" Then
p_strTitre = p_strTitre & " - Domaine : " & cboDomaine.Column(1)
End If
If cboOrganisme <> "" Then
p_strTitre = p_strTitre & " - Organisme : " & cboOrganisme.Column(1)
End If
If cboEmploye <> ""Then
p_strTitre = p_strTitre & " - Employe : " & cboEmploye.Column(1)
End If

' Critres sur les dates
If cboOperat1 <> "" And txtDateDeb <> "" Then
p_strTitre = p_strTitre & " - Date de dbut " & cboOperat1 _
& " " & txtDateDeb
End If
If cboOperat2 <> "" And txtDateFin <> "" Then
p_strTitre = p_strTitre & " - Date de fin " & cboOperat1 _
& " " & txtDateDeb
End If
If p_strTitre <> "" Then
p_strTitre = Right(p_strTitre, Len(p_strTitre) - 3)
End If

' Ouverture de l'tat
DoCmd.OpenReport "Formations", acViewPreview

End Sub
_______________________________________________________________________
Private Sub cmdFermer_Click()
DoCmd.Close
End Sub
Option Compare Database
Private Sub Form_DblClick(Cancel As Integer)
Dim lngIDForm As Long
' Affichage du formulaire Formations
IngIDForm = [FOR_IDFORM]
DoCmd.OpenForm "Formations", acNormal, , "[FOR_IDFORM]=" _
- 3 - ENI Editions - All rigths reserved
Etat"Formations"
L'tat"SFFormations"estbassurlatable"Formations".

CodeVBA
& lngIDForm, acFormEdit
End Sub
Private Sub Report_Open(Cancel As Integer)

' Titre dtermin en fonction des critres de
slection
txtCriteres.Caption = p_strTitre

' Modifie la source de donnes si un employ a t
slectionn
If p_lngEmp <> 0 Then
Me.RecordSource = "SELECT FORMATIONS.*, EMPLOYES.EMP_IDEMP,
" _
& "PARTICIPANTS.PART_IDEMP " _
& "FROM EMPLOYES INNER JOIN (FORMATIONS INNER JOIN " _
& "PARTICIPANTS ON FORMATIONS.FOR_IDFORM =
PARTICIPANTS.PART_IDFORM)" _
& "ON EMPLOYES.EMP_IDEMP = PARTICIPANTS.PART_IDEMP"
Else
Me.RecordSource = "FORMATIONS"
End If
' Critres de slection
Me.FilterOn = True
Me.Filter = p_strCond

End Sub
- 4 - ENI Editions - All rigths reserved
FonctionsetinstructionsVBA
Manipulationdechanesdecaractres
Fonctions
Format():Miseenformed'unechane.
Instr():Recherched'unesouschanedecaractres.
Lcase():Conversionenminuscules.
Left():Extractiondelapartiegauched'unechanedecaractres.
Len():Longueurd'unechane.
Ltrim():Suppressiondesespacesgauche.
Mid() : Renvoie une valeur de type Variant (String) contenant un nombre indiqu de caractres extraits d'une
chanedecaractres.
Right():Extractiondelapartiedroited'unechanedecaractres.
Rtrim():Suppressiondesespacesdroite.
Space():Crationd'unechaned'espaces.
StrComp():Comparaisondechanes.
StrConv:RenvoieunevaleurdetypeVariant(String)convertieauformatindiqu.
String():Crationd'unechanedecaractresrpts.
Trim():Suppressiondesespacesgauche/droite.
Ucase():Conversionenmajuscules.
Instructions
Lset:Alignementgauched'unechanedecaractres.
OptionCompare:Mthodedecomparaisonpardfaut.
Rset:Alignementdroited'unechanedecaractres.
Contrledudroulementduprogramme
Fonctions
Choose():Renvoielavaleurd'unelistedechoixenfonctiond'unindice.
DoEvents() : Arrte momentanment l'excution afin que le systme d'exploitation puisse traiter d'autres
vnements.
IIf():Renvoieunevaleurenfonctiond'unecondition.
Switch():Renvoielavaleurassocielapremireexpressionvraie.
Instructions
- 1 - ENI Editions - All rigths reserved
Call:AppelleuneprocdureSub.
Do...Loop:Crationd'uneitration.
End:Terminaisondeprogramme.
ExitDo:Sortied'uneitration.
ExitFor:Sortied'uneitration.
ForEach...Next:Permetdepasserenrevuetousleslmentsd'unecollectionoud'untableau.
For...Next:Crationd'uneitration.
Function...
EndFunction:Dfinitledbutetlafind'unefonction.
GoSub...Return:Appeld'unsousprogramme.
Goto:Effectueunbranchementinconditionnelversunelignedtermined'uneprocdure.
If...Then...Else:Crationd'unealternative.
On...GoSub:Excutiondesousprogrammesenfonctiond'unevariable.
On...Goto:Branchementversplusieurstiquettesdeprogrammeenfonctiond'unevariable.
PropertyGet:Dclarationd'uneprocdurePropertyGet.
PropertyLet:Dclarationd'uneprocdurePropertyLet.
PropertySet:Dclarationd'uneprocdurePropertySet.
SelectCase:Crationd'unealternative.
Stop:InterruptionprovisoireducodeACCESSBASIC.
Sub...EndSub:Dfinitledbutetlafind'uneprocdure.
While...Wend:Crationd'uneitration.
With:Permetd'excuterunesried'instructionssurunobjet.
Conversiondedonnes
Fonctions
Asc():ValeurAsciid'uncaractre.
Cbool():Conversiond'uneexpressionenBoolean.
CByte():Conversiond'uneexpressionenByte.
CCur():ConversiondechanedecaractresnombredetypeCurrency.
Cdate():Conversiond'uneexpressionenDate.
CDbl():Conversiondechanedecaractresnombredetypedouble.
- 2 - ENI Editions - All rigths reserved
CDec():Conversiond'uneexpressionenDcimal.
Chr():CaractreAsciid'unnombre.
CInt():Conversiond'unechanedecaractresenunnombredetypeentier.
CIng():Conversiond'unechanedecaractresenunnombredetypelong.
CSng():Conversiond'unechanedecaractresenunnombredetypesingle.
CStr():Conversiond'uneexpressionauformatString.
CVar():Conversiond'unechanedecaractresenunnombredetypevariant.
CVErr:Renvoieuncoded'erreurspcifiparl'utilisateur.
DateSerial():Crationd'unnombredatepartirdeAAMMJJ.
DateValue() :Conversiond'uneexpressionchaneoud'uneexpressionquireprsenteunedateendate.
Day():Jourd'unedate.
Hex():Conversiond'unnombreenunechanelereprsentantenHexadcimal.
Oct():Conversiond'unnombreenunechanelereprsentantenOctal.
Str()::Conversiondenombreenchanedecaractres.
Val():Conversiondechanedecaractresennombre.
Dateetheure
Fonctions
Date():Dateetheurecourante.
DateAdd():Ajoutunedate.
DateDiff():Diffrenceentredeuxdates.
DatePart():Extractiond'unepartiededate.
DateSerial():Retourneunedatepartirdujour,dumoisetdel'anne.
DateValue():Retourneunedatepartird'unechane.
Day():Retournelenumrodujourdanslemois.
Hour():Retournelenumrodel'heure(023)d'uneexpressionheure.
IsDate():Indiquesil'argumentVariantpeuttreconvertienDate.
Minute():Retournelenombredeminutes(059)d'uneexpressionheure.
Month():Retournelenumrodumoisd'unedate.
Now():Dateetheurecourante.
Second():Retournelenombredesecondes(059)d'uneexpressionheure.
- 3 - ENI Editions - All rigths reserved
Time():Renvoiel'heuresystme.
Timer():NombredesecondescoulesdepuisMinuit.
TimeSerial():Retourneletempssried'uneheure.
TimeValue():Retourneuneheurepartird'unechane.
WeekDay():Retournelenumrodujourdanslasemainepartird'unedate.
Year():Retournelavaleurdel'annepartird'unedate.
Instructions
Date:Permetdemodifierladatesystme.
Time:Permetdemodifierl'heuresystme.
Dclaration
Instructions
Const:Dfinituneconstantesymbolique.
Declare:DclareunesousroutinedeDLL.
Deftype:Dfinitiond'untypepardfaut.
Dim:Dfinitunevariable.
Let:Affecteunevaleurunevariable.
OptionBase:Dfinitlapluspetitevaleurdel'indiced'untableau.
OptionCompare:Dfinitlemodedecomparaisondesfichierstextes.
OptionExplicit:Imposeladclarationdesvariables.
OptionPrivate
Module:Interditaucontenud'unmoduled'trerfrencl'extrieurdel'application.
Private:Dfinitunevariableouuneprocdurecommetantprive.
Public:Dfinitunevariableglobale.
Redim:Redfinitlesdimensionsd'untableaudynamique.
Set:Affecteunobjetunevariable.
Static:Dfinitunevariablestatique.
Type:Dfinitdesvariablesstructuresutilisateurs.
Domaine
Fonctions
DAvg():Moyenned'undomaine.
- 4 - ENI Editions - All rigths reserved
DCount():Dnombrementsurundomaine.
DFirst():Premierd'undomaine.
DLast():Dernierd'undomaine.
DLookUp():Recherchedansundomaine.
DMax():Maximumd'undomaine.
DMin():Minimumd'undomaine.
DStDevP():Ecarttyped'unepopulationd'undomaine.
DStDev():Ecarttyped'unchantillond'undomaine.
DSum():Sommed'undomaine.
DVar():Varianced'unchantillond'undomaine.
DVarP():Varianced'unepopulationd'undomaine.
changedynamiquededonnes
Fonctions
DDE():CreuncanalDDEetdemanded'uneinformation.
DDEInitiate():Envoid'unecommandeviauncanalDDE.
DDERequest():Demanded'uneinformationviauncanalDDE.
DDESend():Envoid'uneinformationviauncanalDDE.
Instructions
DDEExecute:UtiliseuncanalDDEouvertpourenvoyerunecommandeuneapplication.
DDEPoke:UtiliseuncanalDDEouvertpourenvoyerdesdonnesuneapplication.
DDETerminate:Fermetured'uncanalDDE.
DDETerminateAll:FermeturedetouslescanauxDDEouverts.
Entres/sortiesfichiers
Fonctions
Curdir():Retourneledernierrpertoireutilisdanslabotededialogue"Ouvrirunebasededonnes".
Dir():Recherchedefichierscorrespondantsuncheminetunnomgnrique.
Eof():Findefichier.
FileAttr():Renvoielemodedegestiond'unfichierouvert.
FileDateTime():Retourneladateetl'heuredecrationoudederniremodificationd'unfichier.
FileLen():Retournelatailled'unfichier.
- 5 - ENI Editions - All rigths reserved
FreeFile():Renvoieleprochainnumrodefichierdisponible.
GetAttr():Retournelesattributsd'unfichieroud'unrpertoire.
Loc():Positionactuelledanslefichier.
Lof():Renvoielalongueurd'unfichier.
Seek():Renvoielapositioncourantedansunfichier.
Spc():DplacementdexespacesdansuneinstructionPrint.
Tab():DplacementdextabulationsdansuneinstructionPrint.
Instructions
Chdir:Changementderpertoirecourant.
Chdrive:Changementd'unitdedisquecourante.
Close:Fermetured'unfichier.
FileCopy:Permetlacopiedefichier.
Get:Lecturededonnesdansunfichiersquentiel.
Input:Lecturedansunfichiersquentiel.
Kill:Suppressiondefichierdudisque.
LineInput:Lectured'unelignedansunfichiersquentiel.
Lock:Verrouillaged'accsunsegmentdefichier.
Mkdir:Crationd'unrpertoire.
Name:Affectationd'unnouveaunomunfichierdisque.
Open:Ouvertured'unfichier.
Print:Ecriturededonnesdansunfichiersquentiel.
Put:Ecritured'unevariabledansunfichier.
Reset:Fermeturedetouslesfichiers.
RmDir:Suppressiond'unrpertoire.
SetAttr:Modificationdesattributsd'unfichier.
Unlock:Dverrouillaged'accsunsegmentdefichier.
Width:Affectationd'unelargeurdeligneensortiesurunfichier.
Write:criturededonnesdansunfichiersquentiel.
Finance
Fonctions
- 6 - ENI Editions - All rigths reserved
DDB() : Amortissement d'un bien au cours d'une priode spcifique en utilisant la mthode d'amortissement
dgressiftauxdoubleoutouteautremthodeprcise.
FV() : Valeur future d'une annuit sur la base d'une srie de versements priodiques constants et d'un taux
constant.
IPmt():Montantdel'intrtpourunepriodedonnesurlabasedeversementspriodiquesconstantsetd'un
tauxd'intrtfixe.
IRR():Tauxderentabilitinterned'unesriedeversements.
MIRR():Tauxderentabilitinternemodifid'unesriedeversements.
Nper() : Nombre de priodes pour une annuit sur la base de versements priodiques constants et d'un taux
d'intrtconstant.
NPV() : Valeur actuelle nette d'un investissement sur la base d'une srie de versements priodiques et d'un
taux.
Pmt() : Versement pour une annuit sur la base d'une srie de versements priodiques constants et d'un taux
constant.
PPmt():Versementprincipalpourunepriodedonned'uneannuitsurlabasederemboursementspriodiques
constantsetd'untauxd'intrtconstant.
PV() : Valeur prsente d'une annuit sur la base de versements priodiques constants et d'un taux d'intrt
constant.
RATE():Tauxd'intrtparprioded'uneannuit.
SLN():Amortissementconstantd'unbiendurantunepriodedtermine.
SYD():Amortissementd'unbienpourunepriodedonnedemanireproportionnellel'ordrenumriqueinverse
desannes.
Gestiond'erreurs
Fonctions
CVErr:RenvoielavariableError.
Err():Coded'erreursouslaformed'uninteger.
Error():Retournelemessagestandardcorrespondantunnumrod'erreur.
IsError():Indiquesiuneexpressionestunevaleurd'erreur.
Instructions
Error:Simuleuneerreur.
Onerror:Choixdubranchementeffectuerencasd'erreur.
Resume:Choixdubranchementeffectueraprstraitementd'erreur.
Graphiquesdanslestatsimprims
Fonctions
QBColor():Renvoielavaleurd'unecouleurRVBenfonctiond'unnumrodecouleur.
- 7 - ENI Editions - All rigths reserved
RGB():RenvoieunentierlongreprsentantunecouleurRVB.
Liaisonsetincorporationd'objets
Fonctions
CreateObject() :CreetrenvoieunerfrenceunobjetActiveX.
GetObject() :RenvoieunerfrenceunobjetfourniparuncomposantActiveX.
Manipulationd'objets
Mthodes
CreateControl:Creuncontrledansunformulaireouvert.
CreateForm:Creunformulaire.
CreateReport:Creuntat.
CreateReportControl:Creuncontrledansuntatouvert.
DeleteControl:Dtruituncontrledeformulaire.
DeleteReportControl:Dtruituncontrled'tat.
Mathmatiques
Fonctions
Abs():Valeurabsolued'unnombre.
Atn():Arctangented'unnombre.
Cos():Cosinusd'unangleenradians.
Exp() :Exponentielle.
Fix():Partieentired'unnombre.Pourlesnombresngatifs,renvoielepremiernombreentierngatifsuprieur
ougal.
Int() :Partieentired'unnombre.Pourlesnombresngatifs,renvoielepremiernombreentierngatifinfrieur
ougal.
Log():Logarithmenprien.
Rnd():Renvoieunnombrealatoire.
Sgn():Valeurindiquantlesigned'unnombre.
Sin():Sinusd'unangleenradians.
Sqr():Racinecarred'unnombre.
Tan():Tangented'unangleenradians.
Instructions
Randomize:Initialisationdugnrateuralatoire.
- 8 - ENI Editions - All rigths reserved
SQL
Fonctions
Avg():Retournelamoyennedesvaleursd'unchampd'unesried'enregistrements.
Count():Dnombrementd'enregistrements(contrlesouexpressionsSQL).
First():Retournelavaleurd'unchampdupremierenregistrementd'unerequte,formulaireoutat.
Last():Retournelavaleurd'unchampdudernierenregistrementd'unerequte,formulaireoutat.
Max():Retournelemaximumdesvaleursd'unchampd'unesried'enregistrements.
Min():Retourneleminimumdesvaleursd'unchampd'unesried'enregistrements.
StDev(), StDevP() : Retourne une estimation de l'cart type d'une population ou d'un chantillon de
population.
Sum():Retournelasommedesvaleursd'unchampd'unesried'enregistrements.
Var(),VarP():Retourneuneestimationdelavarianced'unepopulationoud'unchantillondepopulation.
Tableaux
Fonctions
IsArray():RenvoieunevaleurdetypeBoolean(boolen)quiindiquesiunevariableestuntableau.
Array():RenvoieunevariabledetypeVariantcontenantuntableau.
Instructions
Erase:Rinitialisationdetableaustatiqueetlibrationdelammoirealloueuntableaudynamique.
Lbound,Ubound:Recherchedesbornesinfrieuresetsuprieuresd'untableau.
OptionBase:Fixelaborneinfrieuredestableaux.
ReDim:Redimensionnementdynamiquedetableaux.
Vrificationdevariables
Fonctions
IsDate():Testesiunevariableestdetypedate.
IsEmpty():Testesiunevariableestvide.
IsMissing():Indiquesiunargumentfacultatifatpassuneprocdure.
IsNull():TestesiunevariableestNull.
IsNumeric():Testesiunevariableestdetypenumrique.
IsObject():Indiquesiuneexpressionfaitrfrenceunobjet.
TypeName():Renvoieunechaneindiquantletyped'unevariable.
VarType():Dtermineletypededonnessourced'unevariabledetypevariant.
- 9 - ENI Editions - All rigths reserved
Fonctionsetinstructionsdiverses
Fonctions
Command():ContientlapartieargumentdelalignedecommandeutilisepourlancerMicrosoftAccess.
CreateGroupLevel():Crationd'unniveauderegroupementdansuntat.
CurrentUser():Renvoielenomdel'utilisateuractuellementconnect.
DoEvents():RendleprocesseurprovisoirementWINDOWSpourqu'ilpuissetraiterlesvnements.
Environ():Renvoielachaneassocieunevariabled'environnement.
GetAllSettings:Renvoielalistedescls(etleursvaleursrespectives)figurantdansuneentred'applicationde
labasederegistredeWindows.
GetSetting:Renvoieunevaleurdecldel'entreduregistreWindowsd'uneapplication.
InputBox : Affiche une invite dans une bote de dialogue, puis renvoie le contenu de la zone de texte sous la
formed'unevaleurdetypeString.
MsgBox():Affichaged'unebotedemessage.
Shell():Excutiond'unprogramme.
StrReverse:Renvoieunechanecontenantdescaractresdontl'ordreatinversparrapportunechane
donne.
Instructions
AppActivate:Activationd'unefentred'applicationWindows.
Beep:metunBip.
SendKeys:Envoid'unesquencedetouchesclavier.
DeleteSetting:Supprimeunesectionouunparamtredecld'uneentrederegistreWindows.
Rem :Permetd'incluredesremarquesexplicativesdansunprogramme.
SaveSetting:Sauvegardeoucreuneentred'applicationdansleregistreWindows.
Codeserreursrcuprables
Des erreurs rcuprables peuvent survenir lors de l'excution d'une application. Certaines d'entre elles peuvent
galementseproduirelorsdudveloppementoudelacompilation.Vouspouveztesteretrpondredeserreurs
rcuprablesl'aidedel'instructionOnErroretdel'objetErr.
CodeErreur Description
3 ReturnsansGoSub.
5 Appeldeprocdureincorrect.
6 Dpassementdecapacit.
7 Mmoireinsuffisante.
- 10 - ENI Editions - All rigths reserved
9 Indiceendehorsdelaplage.
10 Cetableauestfixeoutemporairementverrouill.
11 Divisionparzro.
13 Typeincompatible.
14 Espacedechaneinsuffisant.
16 Expressiontropcomplexe.
17 Impossibled'excuterl'oprationrequise.
18 Interruptionparl'utilisateur.
20 Reprisesanserreur.
28 Espacepileinsuffisant.
35 Sub,FunctionouPropertynondfinie.
47 Tropdeclientsd'applicationpourlaDLL.
48 ErreurdechargementdelaDLL.
49 Conventiond'appeldeDLLincorrecte.
51 Erreurinterne.
52 Nomounumrodefichierincorrect.
53 Fichierintrouvable.
54 Moded'accsaufichierincorrect.
55 Fichierdjouvert.
57 Erreurd'entre/sortiedepriphrique.
58 Cefichierexistedj.
59 Longueurd'enregistrementincorrecte.
61 Disqueplein.
62 L'entredpasselafindefichier.
63 Numrod'enregistrementincorrect.
67 Tropdefichiers.
68 Priphriquenondisponible.
70 Permissionrefuse.
71 Disquenonprt.
74 Impossiblederenommeravecunlecteurdiffrent.
- 11 - ENI Editions - All rigths reserved
75 Erreurdanslechemind'accs.
76 Chemind'accsintrouvable.
91 VariableobjetouvariableblocWithnondfinie.
92 BoucleFornoninitialise.
93 Formatdechaneincorrect.
94 UtilisationincorrectedeNull.
97 Impossible d'appeler une procdure Friend sur un objet qui n'est pas une instance de classe de
dfinition.
98 Un appel de proprit ou de mthode ne peut pas faire rfrence un objet priv ni en tant
qu'argumentnientantquevaleurrenvoye.
298 ImpossibledechargerlaDLLsystme.
320 Impossibled'utiliserdesnomsdepriphriquesdecaractresdanslesnomsdefichiersspcifis.
321 Formatdefichierincorrect.
322 Impossibledecrerlefichiertemporairencessaire.
325 Formatincorrectdanslefichierressource.
327 Lavaleurdel'objetdedonnesnommestintrouvable.
328 Paramtreincorrect.Impossibled'criredestableaux.
335 Impossibled'accderauregistresystme.
336 Lecomposantn'estpascorrectementenregistr.
337 Composantintrouvable.
338 Excutionincorrecteducomposant.
360 Objetdjcharg.
361 Impossibledechargeroudedchargercetobjet.
363 Lecontrlespcifiestintrouvable.
364 L'objettaitdcharg.
365 Impossiblededchargerdanscecontexte.
368 Lefichierspcifiestprim.Ceprogrammerequiertuneversionplusrcente.
371 L'objetspcifinepeuttreutiliscomepropritairedelafeuillepourlamthodeShow.
380 Valeurdepropritincorrecte.
381 Indexdutableaudepropritsincorrect.
382 PropertySetnepeutpastreexcuteenmodeexcution.
- 12 - ENI Editions - All rigths reserved
383 PropertySetnepeuttreutiliseavecunepropritenlectureseule.
385 Indexdetabledepropritrequis.
387 PropertySetnonautorise.
393 PropertyGetnepeutpastreexcuteenmodeexcution.
394 PropertyGetnepeutpastreexcutesurunepropritencritureseule.
400 Feuilledjafficheaffichagemodalimpossible.
402 Lecodedoitd'abordfermerlafeuillemodaledepremierplan.
419 Autorisationd'utiliserl'objetrefuse.
422 Propritintrouvable.
423 Propritoumthodeintrouvable.
424 Objetrequis.
425 Utilisationd'objetincorrecte.
429 Uncomposantnepeutpascrerl'objetoufournirunerfrencecetobjet.
430 CetteclassenegrepasAutomation.
432 NomdefichieroudeclassenontrouvpendantuneoprationAutomation.
438 Cetobjetnegrepascettepropritoumthode.
440 ErreurAutomation.
442 Laconnexionlabibliothquedetypesoud'objetspourunprocessusdistantatperdue.
443 L'objetAutomationn'apasdevaleurpardfaut.
445 L'objetnegrepascetteaction.
446 L'objetnegrepaslesargumentsnomms.
447 L'objetnegrepaslesparamtresrgionauxencours.
448 Argumentnommintrouvable.
449 Argumentnonfacultatifouaffectationdepropritincorrecte.
450 Nombred'argumentsincorrectouaffectationdepropritnonvalide.
451 Cetobjetn'estpasunecollection.
452 Numroincorrect.
453 FonctionDLLspcifieintrouvable.
454 Ressourcedecodeintrouvable.
455 Erreurdeverrouillagederessourcedecode.
- 13 - ENI Editions - All rigths reserved
457 Cetteclestdjassocieunlmentdecettecollection.
458 CettevariableutiliseuntypenongrparVisualBasic.
459 Cecomposantnegrepaslejeud'vnements.
460 FormatdePressepapiersincorrect.
461 Mthodeoumembrededonnesintrouvable.
462 Leserveurdistantn'existepasoun'estpasdisponible.
463 Laclassen'estpasenregistresurlamachinelocale.
480 ImpossibledecreruneimageenmodeAutoRedraw.
481 Imageincorrecte.
482 Erreurd'imprimante.
483 Legestionnaired'imprimantenegrepaslapropritspcifie.
484 Problme pour obtenir des informations du gestionnaire d'imprimante du systme. Assurezvous
quelegestionnaired'imprimanteestinstallcorrectement.
485 Typed'imageincorrect.
486 Impossibled'imprimerl'imagedefeuillesurcetyped'imprimante.
520 ImpossibledeviderlePressepapiers.
521 Impossibled'ouvrirlePressepapiers.
735 Impossibled'enregistrerlefichierdansunrpertoireTEMP.
744 Letexterecherchestintrouvable.
746 Remplacementstroplongs.
31001 Mmoireinsuffisante.
31004 Pasd'objet.
31018 Classenondfinie.
31027 Impossibled'activerl'objet.
31032 Impossibledecrerunobjetincorpor.
31036 Erreurl'enregistrementdanslefichier.
31037 Erreurdechargementpartirdufichier.

- 14 - ENI Editions - All rigths reserved
ConstantesVBA
VisualBasicpourApplicationspermetdedfinirdesconstantesafind'amliorerlalisibilitducodeetd'enfaciliter
lamaintenance.
Vous pouvez galement utiliser les constantes VBA (constantes intrinsques) suivantes partout dans votre
code.
Constantesdecouleur
Constantesdedate
Constantesdestouchesclavierlettresetchiffres
LesvaleursdestouchesAZsontlesmmesqueleursquivalentsASCII.
Lesvaleursdestouches09sontlesmmesqueleursquivalentsASCII.
Constante Valeur Description
vbBlack 0x0 Noir
vbRed 0xFF Rouge
vbGreen 0xFF00 Vert
vbYellow 0xFFFF Jaune
vbBlue 0x0FF0000 Bleu
vbMagenta 0x0FF00FF Magenta
vbCyan 0x0FFFF00 Cyan
vbWhite 0x0FFFFFF Blanc
Constante Valeur Description
vbSunday 1 Dimanche
vbMonday 2 Lundi
vbTuesday 3 Mardi
vbWednesday 4 Mercredi
vbThursday 5 Jeudi
vbFriday 6 Vendredi
vbSaturday 7 Samedi
Constante Valeur Description
vbKeyA 65 Touche A
vbKeyB 66 Touche B
vbKeyC 67 Touche C
... ... ...
vbKeyZ 90 Touche Z
Constante Valeur Description
vbKey0 48 Touche 0
vbKey1 49 Touche 1
vbKey2 50 Touche 2
... ... ...
vbKey9 57 Touche 9
- 1 - ENI Editions - All rigths reserved
Constantesdetouchesdefonction
Constantesdetouchesdiverses
Constante Valeur Description
vbKeyF1 0x70 Touche F1
vbKeyF2 0x71 Touche F2
... ... ...
vbKeyF11 0x7A Touche F11
... ... ...
vbKeyF16 0x7F Touche F16
Constante Valeur Description
vbKeyCancel 0x3 Touche ANNULER
vbKeyBack 0x8 Touche Retour arrire
vbKeyTab 0x9 Touche Tab
vbKeyClear 0xC Touche EFFACER
vbKeyReturn 0xD Touche Entre
vbKeyShift 0x10 Touche Shift
vbKeyControl 0x11 Touche Ctrl
vbKeyMenu 0x12 Touche MENU
vbKeyPause 0x13 Touche PAUSE
vbKeyCapital 0x14 Touche Caps Lock
vbKeyEscape 0x1B Touche Echap
vbKeySpace 0x20 Touche ESPACE
vbKeyPageUp 0x21 Touche Pg Up
vbKeyPageDown 0x22 Touche Pg Dn
vbKeyEnd 0x23 Touche Fin
vbKeyHome 0x24 Touche Dbut
vbKeyUp 0x25 Touche Flche haut
vbKeyDown 0x26 Touche Flche bas
vbKeyRight 0x27 Touche Flche droite
vbKeyLeft 0x28 Touche Flche gauche
vbKeySelect 0x29 Touche Slection
vbKeyPrint 0x2A Touche Impr cran
vbKeyExecute 0x2B Touche EXCUTER
vbKeySnapshot 0x2C Touche SNAPSHOT
vbKeyInsert 0x2D Touche Ins
vbKeyDelete 0x2E Touche Suppr
vbKeyHelp 0x2F Touche AIDE
vbKeyNumlock 0x90 Touche Caps lock
vbKeyLButton 0x1 Bouton gauche de la souris
vbKeyRButton 0x2 Bouton droit de la souris
- 2 - ENI Editions - All rigths reserved
Raccourcisclavier
F1 :Aidesurlemotclsurlequelsetrouvelecurseur.
F5 :Excuteuneprocdure.
F8 :ModePaspasdtaill.
ShiftF8 :ModePaspasprincipal.
CtrlShiftF8:ModePaspassortant.
CtrlF8 :Excutejusqu'aucurseur.
ShiftF9 :Affichelavaleurencours.
F9 :Afficheoudsactiverlepointd'arrt.
CtrlShiftF9 :Supprimetouslespointsd'arrt.
CtrlF9 :Dfinitl'instructionsuivante.
- 1 - ENI Editions - All rigths reserved