Vous êtes sur la page 1sur 235

VBAAccess2007

Programmer sous Access

MichleAMELOT

Rsum

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.
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.

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

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 1-


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...

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 1-


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).

ENI Editions - All rigths reserved - 1-


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

Dans le volet de navigation, cliquez avec le bouton droit de la souris sur le formulaire ou l'tat, puis cliquez sur Mode cration.

Activez l'onglet Outils de base de donnes du ruban.

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 :

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.

Cliquez sur Convertir pour continuer.

Conversiondemacrosglobales

Dans le volet de navigation, slectionnez la macro que vous souhaitez convertir.

Activez l'onglet Outils de base de donnes du ruban.

Cliquez sur l'icne Convertir les macros en Visual Basic situe en bas droite du groupe Macros.

ENI Editions - All rigths reserved - 1-


Dans la bote de dialogue, slectionnez les options souhaites.

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:

Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).

Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.

Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.

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:

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).

Ouvrez une base de donnes Access dont le code est sign par un Editeur approuv.

Cliquez sur le bouton de commande Approuver tous partir de l'diteur.

Vouspouveztoutmomentconnatrelalistedesditeursapprouvsdelafaonsuivante:

Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).

Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.

Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.

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:

ENI Editions - All rigths reserved - 3-


Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).

Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.

Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.

Slectionnez la catgorie Emplacements approuvs dans le menu de gauche.

Cliquez sur Ajouter un nouvel enregistrement.

Compltez les informations de la bote de dialogue Emplacement de Microsoft Office approuv.

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

ENI Editions - All rigths reserved - 1-


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)

TouslesmodulesdelabasededonnesouduprojetVBAsontaffichsdansl'explorateurdeprojets,selonune
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.

Parexemple,lalistedroulantedesmthodesetpropritsdisponiblespourunobjets'afficheautomatiquement
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.

ENI Editions - All rigths reserved - 3-


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.

ENI Editions - All rigths reserved - 1-


- 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.

ENI Editions - All rigths reserved - 1-


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:

Activez l'onglet Crer du ruban.

Cliquez sur la flche situe en bas de l'icne Macro puis choisissez l'option Module.

Depuisl'environnementVBE:

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 :

Slectionnez le module dans la fentre Explorateur de projet.

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

Double cliquez sur le module pour afficher la fentre de VBA associe.

Saisissez le code suivant dans la fentre VBA:

ENI Editions - All rigths reserved - 1-


Cliquez sur l'icne de la barre d'outils Standard pour enregistrer la procdure.

tape4:Testdelaprocdure

Pourexcuterlecodedelaprocdure :

Positionnez le curseur de la souris sur le code de la procdure saisie.

Cliquez sur l'icne de la barre d'outils Standard ou utilisez la touche F5.

Saisissez une date dans la bote de dialogue affiche et cliquez sur le bouton de commande OK :

Lemessagesuivantestalorsaffich:

- 2- ENI Editions - All rigths reserved


Cliquez sur le bouton de commande OK.

Le jour de la semaine tant un lundi, le message suivant apparat :

ENI Editions - All rigths reserved - 3-


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.

ENI Editions - All rigths reserved - 1-


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 Ctrl R.

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.

ENI Editions - All rigths reserved - 1-


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.

Private Sub Quitter_Appli()


If Msgbox ("Voulez-vous quitter l'application ?",_
VbQuestion + VbYesNo) = vbYes Then
Quit
End If
End Sub

Ce code peut tre appel partir de tout bouton de commande ou option de menu permettant de quitter l'application.

ENI Editions - All rigths reserved - 1-


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.

Private Sub cmdEmploys_Click()


Docmd.OpenForm "Employs"
End Sub

Certaines procdures Sub vnementielles peuvent tre gnres automatiquement partir d'assistants (ex : assistant boutons de
commande).

LesprocduresFunction

Les procduresFunction,pluscourammentappeles fonctions, renvoient une valeur, telle que le rsultat d'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.

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

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,

- 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 : indique que l'argument est pass par valeur. La procdure accde une copie de la variable sa valeur
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 :

ENI Editions - All rigths reserved - 3-


- l'ordre des arguments nomms n'a pas d'importance,
- les arguments facultatifs peuvent tre omis.

Lasyntaxedesargumentsnommsest :

NomArgument := Valeur

Exemple

If MsgBox("Voulez-vous quitter l'application ?", _


vbYesNo + vbQuestion, "Gestion des ventes") = vbYes Then
Application.Quit
End If

peut tre transform en :

If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _


Buttons:=vbYesNo + vbQuestion, _
Title:="Gestion des ventes") = vbYes Then
Application.Quit
End If

De mme l'ordre des paramtres peut tre modifi:

If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _


Title:="Gestion des ventes", _
Buttons:=vbYesNo + vbQuestion) = vbYes Then
Application.Quit
End If

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

Private Sub cmdCalcul_Click()


txtMntRem = Remise (txtMntFact)
End Sub

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

- 4- ENI Editions - All rigths reserved


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

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

Constante Valeur Signification


symbolique
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

ENI Editions - All rigths reserved - 5-


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.

Lesvaleursderetourpossiblessontgalementdfiniespardesconstantes :

Constante Valeurderetour Boutonchoisi


vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Recommencer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non

Exemples: utilisation de la fonction MsgBox

StrRep = MsgBox ("Voulez-vous continuer ?", 292, _


"Confirmation")

ou

StrRep = MsgBox ("Voulez-vous continuer ?", _


vbYesNo + vbQuestion + vbDefaultButton2, _

- 6- ENI Editions - All rigths reserved


"Confirmation")

Utilisation de l'instruction MsgBox

MsgBox "Rsultat faux",vbCritical,"Erreur"

ENI Editions - All rigths reserved - 7-


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

>
Type tendue Taille
en
octets
Byte 0255 1
Integer 3276832767 2
(entier)
Long 2147483648 4
(entierlong) 2147483647
Single 3,402823E381,401298E45 4
(relsimple (valeursngatives)
virgule 1,401298E453,402823E38
flottante) (valeurspositives)
Double 1,79769313486231E308 8
(reldouble 4,94065645841247E324
virgule (valeursngatives)
flottante) 4,94065645841247E324
1,79769313486231E308
(valeurspositives)
Currency 922337203685477,5808 8
(montaire 922337203685477,5807
virgulefixe)
Decimal +/79 228 162 514 264 337 593 543950 335 12
sanssparateurdcimal
+/7,9228162514264337593543950335
avec 28 chiffres droite du sparateur
dcimal le plus petit nombre diffrent de zro
est+/0.0000000000000000000000000001

Chanesdecaractres

LetypeestString.Ilexistedeuxtypesdechanes:

- les chanes de longueur variable peuvent contenir environ 2 milliards (231) de caractres.

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

Exemple

'Chane de longueur variable


Dim Adresse As String
'Chane de longueur fixe (20 caractres)
Dim Nom As String * 20

Boolen

ENI Editions - All rigths reserved - 1-


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.

Dim dbsEmp As Object


Dim dbsArt As Database
Set dbsEmp = OpenDatabase("C:\Application\" _
& "Employs.accdb")
Set dbsArt = OpenDatabase("C:\Application\" _
& "Articles.accdb")

Dfiniparl'utilisateur

Ce type est utilis surtout pour la dclaration de variables contenant plusieurs types d'informations. La dfinition
dutypenepeutsefairequedanslasectiondedclarationd'unmodule.

Exemples

Dclaration d'un nouveau type Employs :

Public Type Employs


Matricule As String * 5
Nom As String * 20
Age As Integer
Service As String * 10
End Type

Utilisation du type Employs :

Dim NewEmploy As Employs


NewEmploy.Matricule = "15253"
...

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.

- 2- ENI Editions - All rigths reserved


Le type Variant permet de stocker successivement dans la mme variable des valeurs de type diffrent. Le type
delavariablevolueenfonctiondelavaleurquiluiestaffecte.

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

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 locale une fonction ou une procdure, si elle est dclare dans le corps de la fonction
oudelaprocdureavec Dimou Static.Cettevariablen'estpasconnue(visible)endehorsdelafonctionoude
laprocdure.

Une variable peut tre visible de toutes les procdures ou fonctions d'un module (standard, de classe, 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>

ENI Editions - All rigths reserved - 3-


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:

' 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)

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).

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


End Sub

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 :

Dim Tableau ()

Utilisation :

Avant de l'utiliser, il faut le dimensionner l'aide de l'instruction Redim :

ReDim Tableau (15 To 50)

Il est possible d'utiliser l'instruction ReDim pour modifier le tableau dynamique aussi souvent que ncessaire. Par
dfaut,lesvaleursprsentesdansletableausontcrases.L'instructionReDim Preservepermetd'tendreun
tableautoutenconservantlesvaleursexistantes.

ReDim Preserve Tableau (15 To 70)

Lesconstantes

Uneconstantereprsenteunevaleurnumriqueoudetypechanequinedoitpastremodifie.

L'instruction Constpermetdedclareruneconstanteetdedfinirsavaleurfixe.Unefoisdclare,laconstante
nepeuttremodifienirecevoirunenouvellevaleur.

Ladclarationd'uneconstanteestralisedansuneprocdureoudanslasectiondclarationd'unmodule.

Lesconstantesdeniveaumodulesontprivespardfaut.

Pourdclareruneconstantedeniveaumodulepublique,ilestncessairedefaireprcderl'instructionConst du
motclPublic.

Exemple

acForm
vbCurrency

Lesconstantesintrinsques

ENI Editions - All rigths reserved - 5-


Les constantes intrinsques sont des constantes mises disposition par les applications ellesmmes. 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

Bibliothque Prfixe Exemples


Microsoft
ac acForm,acNormal
Access
vbCurrency,
VisualBasic vb
vbYellow
Microsoft
mso msoSortByFileName
Office

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.

- 6- ENI Editions - All rigths reserved


ENI Editions - All rigths reserved - 7-
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

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

ENI Editions - All rigths reserved - 1-


MsgBox "A<B"
End If
End If

L'instructionSelectCase

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.

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

LafonctionIIf

IIf

Retourneunevaleurenfonctiond'unecondition.

Syntaxe

IIf (<condition>, <valeur si vrai>, <valeur si faux>)

- 2- ENI Editions - All rigths reserved


Exemple

Dim bln As Boolean


bln = IIf(A = B, True, False)

Ilestpossibled'imbriquerplusieursappelsdefonctionIIf.

Exemple

Dim IntI As Integer


IntI = IIf(A = B, IIf(B = C, 1, 0), 0)

ENI Editions - All rigths reserved - 3-


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

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

ENI Editions - All rigths reserved - 1-


MsgBox "Frais Annuels = " & FraisAnnuel

L'instructionWhile...Wend

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.

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

L'instructionFor...Next

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.

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

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,

- 2- ENI Editions - All rigths reserved


et 20.

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

L'instructionForEach...Next

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 Frais As Currency

For Each Frais In FraisMensuel


MsgBox Frais
Next

ENI Editions - All rigths reserved - 3-


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

ENI Editions - All rigths reserved - 1-


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:

StrNomPre = Nom & " " & Prenom

Prioritdesoprateurs

Lorsque plusieurs oprateurs sont contenus dans une mme expression, chacun est valu dans un ordre
prdfini,appelprioritdesoprateurs.

- 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.

ENI Editions - All rigths reserved - 3-


Lesrglesd'critureducode

Lescommentaires

Lescommentairespermettentdedocumenterunprogrammeafindelerendrepluslisible.

Syntaxe

Rem <commentaire>

ou

'<commentaire>

Exemple

'=======================================================================
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

Lecaractredecontinuation

UneinstructionVBApeuttrecritesurplusieurslignesenutilisantuncaractredecontinuation:lecaractre
desoulignement(_)prcdd'unespace.

Exemple

If A _
> _
b then _

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

Il est important d'aligner sur le mme retrait les instructions de mme niveau. 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.

ENI Editions - All rigths reserved - 1-


- 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

gstrNom variable globale de type String

intQuantit variable 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

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 1-


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
(fichiersdll,contrlesActiveX...)actuellementslectionnes
(les rfrences sont slectionnes partir de la bote de
dialogueRfrencedumenuOutils).
Printers Collection contenant les objets Printer reprsentant toutes
lesimprimantesdisponiblessurlesystme.

Autrescollections

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 Collection d'objets AccessObjectsProperty reprsentant
Properties 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 Collection d'objets contenant toutes les informations dont
Specifications Access a besoin pour effectuer automatiquement une
oprationd'importationoud'exportation.

ObjetsduModle

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 DBEnginecontientetcontrletouslesautresobjets

- 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 Objetpermettantd'accderdesfonctionnalitssimilaires
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)...

ENI Editions - All rigths reserved - 3-


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

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

Propritsreprsentantdesobjets

Les objets globaux et les objets instancis dans le code partir de classes fournies par VBA possdent des
propritsdontlavaleurestmisejourautomatiquementparlesystme.

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 Objet Form associ au contrle de
sous-formulaire 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 Objet Report associ au contrle de
sous-tat sous-tat.
Section Form, Report Section d'un formulaire ou
d'un tat.

Lesmthodes

Lesmthodespermettentd'effectuerdesactionspropresauxobjets.

ENI Editions - All rigths reserved - 1-


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

' Modification de l'option "Compacter lors de la


fermeture"
' Mthode SetOption ne renvoyant pas de valeur
Application.SetOption "Auto Compact", True

Lesdiffrentsargumentsdelamthodedoiventtresparspardesvirgules.Siunargumentfacultatifn'estpas
dfiniexplicitement,lamthodeutiliseraunevaleurpardfaut.

Syntaxedemthoderenvoyantunevaleur

<variable> = {<objet> | <variable objet>}.<mthode>


([<Liste d'arguments>])

Exemple

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

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.

Private Sub cmdQuitter_Click()


' Demande l'utilisateur de confirmer

- 2- ENI Editions - All rigths reserved


' son souhait de quitter l'application
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub

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 3ime et 5ime syntaxes sont
recommandes car elles permettent d'activer l'assistant de l'diteur de code. De plus la syntaxe 5 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

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

Collectionspardfaut

Dfinition

ENI Editions - All rigths reserved - 3-


Une collection par dfaut est une collection contenant des objets auxquels il est possible de faire rfrence
traverslenomdel'objetconteneurdelacollection,c'estdiresansfairerfrencelacollectionellemme.

Objetspossdantunecollectionpardfaut

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

Exemple

Rfrence au contrle txtDateDeb du formulaire Formations (la collection Controls est la collection par dfaut d'un formulaire).

Forms![Formations].[txtDateDeb].Value
Ou
Forms!Formations.txtDateDeb.Value
ou
Forms!Formations!txtDateDeb.Value

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

Tapez le nom d'objet DoCmd suivi d'un point, la liste droulante suivante est affiche.

- 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 :

Slectionnez la mthode OpenForm.

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.

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).

ENI Editions - All rigths reserved - 5-


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

' 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

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).

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

ENI Editions - All rigths reserved - 1-


End Select
End With
Next ctl

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

If TypeOf ctl Is acListBox Then ...

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

- 2- ENI Editions - All rigths reserved


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

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 = 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

ENI Editions - All rigths reserved - 3-


Exemple 3 :

Cration d'un formulaire avec une zone de texte et une tiquette

' 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

Formulaire cr par ce code :

- 4- ENI Editions - All rigths reserved


ENI Editions - All rigths reserved - 5-
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 :

slectionnez l'option Module de classe du menu Insertion.

ENI Editions - All rigths reserved - 1-


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

Si la fentre Proprits n'est pas affiche, choisissez l'option Fentre proprits du menu Affichage ou utilisez le raccourci
clavier F4.

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.

Option Compare Database


Option Explicit
' Emission d'un beep
Dim blnBeep As Boolean
' Titre de la fentre MsgBox
Dim strTitle As String

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 :

Modifiezles afin d'obtenir le code suivant :

- 2- ENI Editions - All rigths reserved


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

Crez maintenant la mthode confirmation en utilisant l'option Procdure du menu Insertion.

Modifiez la procdure Confirmation afin d'obtenir le code suivant.

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

Nousvoyonsquecettemthodeutiliselesdeuxvariables strTitleet blnBeep.Lamthodeatcreentant


quefonctioncarellerenvoielarponsedel'utilisateursouslaformed'unevariableboolenne.

Maintenantquecetteclasseestcre,nousallonsl'utiliserpartird'unformulaire.

Crez pour cela un formulaire Employs avec deux boutons de commande cmdFermer et cmdQuitter.

Affectez le code cidessous aux vnements click.

Private Sub CmdFermer_Click()


' Objet message
Dim msg As New Message

' Pas d'mission de beep


msg.IsBeep = False

ENI Editions - All rigths reserved - 3-


' 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

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...).

- 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.

ENI Editions - All rigths reserved - 1-


4.Objetsdelabibliothque laclassed'objetslectionnedanslalisteRsultatestencadre.

5.Mthodes,proprits,vnementsetconstantesserapportantl'objetslectionnouencadrdanslaliste
degauche.LemembreslectionndanslalisteRsultatestencadr.

6.Dtaildel'lmentslectionn.

Recherchedansl'explorateurd'objets

Poureffectuerunerecherchedansl'explorateurd'objets,procdezdelamaniresuivante:

Saisissez le mot recherch dans la 2me liste droulante.

Cliquez sur l'icne .

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

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.
Renvoie l'objet dans lequel une macro ou du code
CodeContextObject Visual Basicestencoursd'excution.
Retourne le nom de l'objet base de donnes actif (table,
CurrentObjectName requte,formulaire,tat,macro,module).
CurrentObjectType Retourneletypedel'objetbasededonnesactif.
FeatureInstall Spcifie ou dtermine la manire dont Microsoft Access gre
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.

Mthodes

AccessError Retourne la chane descriptive associe une erreur


Microsoft AccessouuneerreurDAO.

AddToFavorites Ajoute une adresse de lien hypertexte dans le dossier


Documentsfavoris.

BuildCriteria
Permetdeconstruirefacilementlescritresd'unfiltre.

ENI Editions - All rigths reserved - 1-


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.
Fournitl'historiquedesvaleursquionttstockessansun
ColumnHistory 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 Creunnouveaufichierdegroupedetravailpourpermettre
NewWorkgroupFile 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 Cre un nouvel objet Workspace sans obliger l'utilisateur


Clone seconnecternouveau.
Permet de supprimer un contrle dtermin dans un
DeleteControl 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


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.
Permet de mettre jour la fentre Base de donnes
RefreshDatabase lorsqu'une table, une requte, un formulaire, un tat, une
Window 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 Dfinitlefichierspcificommefichierdegroupedetravail.
File
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.

Exemple

Bouton de commande permettant de quitter Access en sauvegardant tous les objets.

Sub cmdQuitter_Click()
Application.Quit acSaveYes
End Sub

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).

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

Fonctionsapplicablesunjeud'enregistrements

ENI Editions - All rigths reserved - 3-


Cesfonctionssontgnralementutilisesdanslesformulairesettats:

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.
Recherchelavaleurd'unchampparticulierquifaitpartied'un
DLookUp
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.

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

CancelEvent (AnnulerEvnement)
Annuleunvnement.
Quit (Quitter)
QuitteACCESS.
RunCommand (ExcuterCommande)
Excuteunecommanded'unmenuoud'unebarred'outils.
(ExcuterMacro)
RunMacro Excuteunemacro.
(ExcuterSql)
RunSql ExcuteunordreSQL.

Donnesdesformulairesettats

ApplyFilter (AppliquerFiltre)
Appliqueunfiltreunetable,unformulaire,untat.
FindNext (TrouverSuivant)
Continuelarecherche.
FindRecord (TrouverEnregistrement)
Recherched'unenregistrement.

- 4- ENI Editions - All rigths reserved


(AtteindreContrle)
GotoControl Dplacelefocussuruncontrle.
(AtteindrePage)
GotoPage Dplace le focus sur le premier contrle de la page indique
duformulaireactif.
GotoRecord (AtteindreEnregistrement)
Atteintunenregistrement.
SearchForRecord (TrouverEnregistrement)
Permetderechercherunenregistrementspcifiquedansune
table,unerequte,unformulaireouuntat.

Import/Exportdedonnes

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 (TransfrerFeuilleCalcul)
Importeouexporteunefeuilledecalcul.
Sheet
TransferShare (TransfrerListeSharePoint)
Permet d'importer ou de lier des donnes partir d'un site
PointList MicrosoftWindowsSharePointServices3.0.
TransferSQL (TransfrerBaseDeDonnesSQL)
Transfre l'intgralit de la base de donnes Microsoft SQL
Database
ServerspcifieversuneautrebasededonnesSQLServer.
TransferText (TransfrerTexte)
ImporteouexportedutexteauformatASCII.

Manipulationd'objets

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.
(SupprimerObjet)
DeleteObject Supprimeunobjet.
(Agrandir)
Maximize Agranditunefentre.
Minimize (Rduire)
Rduitunefentreenicne.
MoveSize (DplacerDimensionner)
Dplaceoudimensionneunefentre.
OpenDataAccess (OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
Page
OpenDiagram (OuvrirSchma)
Ouvreunschmadebasededonnes.

ENI Editions - All rigths reserved - 5-


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 (OuvrirProcdureStocke)
Ouvre une procdure stocke en mode Feuilles de donnes,
Procedure enmodeCrationouenAperuavantimpression.
OpenTable (OuvrirTable)
Ouvreunetable.
OpenView (OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
PrintOut (Imprimer)
Imprimesurpapier.
Rename (Renommer)
Renommeunobjet.
RepaintObject (RedessinerObjet)
Redessineunobjet(formulaire...).
Requery (Actualiser)
Met jour les donnes de l'cran (relance la requte source
del'objet).
Restore (Restaurer)
Redonneunefentresataillenormale.
Save (Enregistrer)
Enregistrel'objetspcifioul'objetactif.
SelectObject (SlectionnerObjet)
Slectionneunobjetdebasededonnes.
ShowAllRecords (AfficherTousEnreg)
Dsactiveunfiltreetraffichetouslesenregistrements.

Modificationdel'interfaceAccess

AddMenu (AjouterMenu)
Permetdecrerunebarredemenuouunmenucontextuel.
Hourglass (Sablier)
Affichelepointeurdesourisensablierounon.
LockNavigation (VerrouillerVoletNavigation)
Permet d'empcher les utilisateurs de supprimer des objets
Pane
de base de donnes qui sont affichs dans le volet de
navigation.
(AccderA)
SetDisplayed Prcise les catgories qui sont affiches sous Atteindre la
Categories 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.

Divers

Beep (Bip)
Emetunbipsonore.

- 6- ENI Editions - All rigths reserved


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.
Supprime la mise en forme de texte enrichi d'une chane et
PlainText
renvoieunechanedetextesansmiseenforme.
RunSavedImport (ExcuterImportationExportationSauvegarde)
Excute une spcification d'importation ou d'exportation
Export
enregistre, cre partir de l'Assistant Importation ou de
l'AssistantExportation.
SetDefault Dfinit le fichier spcifi comme fichier de groupe de travail
WorkgroupFile pardfaut.

SetHiddenAttribute Activel'attributcachd'unobjetAccess.
SingleStep (PasAPas)
Suspend l'excution de la macro active et ouvre la bote de
dialoguePaspas.

Actionsdemacrosnonprisesencompteparl'objetDoCmd

BoiteMsg Utilisezlafonctionoul'instructionMsgBox.
ExcuterApplication UtilisezlafonctionShell.
ExcuterCode AppelezdirectementlafonctiondansVisualBasic.
EnvoiTouches Utilisezl'instructionSendKeys.

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

ActiveControl Fournitunerfrenceaucontrleactif.
ActiveData Fournitunerfrencelapaged'accsauxdonnesactive.
AccessPage
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.

Exemple

ENI Editions - All rigths reserved - 7-


' 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

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

Count Dterminelenombred'objetsrfrences.
Parent Nonutilise.

Mthodes

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


Remove SupprimeunobjetrfrencedanslacollectionReferences.

Propritsdel'objetReference

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.
Indique si une rfrence valide est affecte l'objet dans le
IsBroken RegistreWindows.
Kind Indiqueletypederfrence.
Major Indique le numro de version principal de l'application
laquelleestassocielarfrence.
Mineur Indiquelenumrodeversionmineurdel'application.
Name Indiquelenomdelarfrence.

Exemple

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

LacollectionPrinters

La collection Printerscontientdesobjets Printerreprsentantchacununeimprimantedisponiblesurlesystme


encours.

L'objet Printer n'existait pas dans les versions prcdentes d'Access.

Propritsdel'objetPrinter

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.
Permet de n'imprimer que les donnes d'une table ou d'une
DataOnly
requteenmodeFeuillededonnes.

ENI Editions - All rigths reserved - 9-


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.

Les autres proprits (ColumnSpacing, RowSpacing, ItemSizeHeight...) permettent d'effectuer le formatage de la section Dtail
d'un formulaire ou d'un tat.

- 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.

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 1-


- 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

ENI Editions - All rigths reserved - 3-


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.

DBEngine.CompactDatabase "c:\devis\devis.accdb", _
"c:\devis\devis2.accdb"

Affichage de la version du moteur Microsoft Jet.

MsgBox "Numro de version du moteur Microsoft Jet :" &


DBEngine.Version,_
vbExclamation

LesobjetsWorkspace

- 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.

Dim wrk As Workspace


Dim dbs As Database
Set wrk = DBEngine.Workspaces(0)
Set dbs = wrk.OpenDatabase("C:\devis\devis.accdb")

LesobjetsDatabase

UnobjetDatabasereprsenteunebasededonnesouverte.

Proprits

CollatingOrder:Dfinitlamthodedecomparaisondeschanesdecaractresselonlalangue.

Connect:Dterminelesinformationsncessairesl'ouvertured'unebasededonnesexterneoul'attachement
d'unetabled'unebaseexterne.

DesignMasterID:DtermineleGUIDdelastructurematred'unjeuderplicas.

Name:Renvoielenomdelabase.

ENI Editions - All rigths reserved - 5-


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.

Dim dbDevis as DAO.Database


Set dbDevis = CurrentDb()

Ouverture d'une base de donnes externe.

Dim dbsDevis as DAO.Database


Set dbsDevis = DBEngine.OpenDatabase _
("C:\Clients\Clients.accdb")

Cration d'un objet RecordSet de type table en lecture seule sur la table Clients de la base de donnes courante.

Dim dbs As Database


Dim rstCli As DAO.Recordset
Set dbs = CurrentDb

- 6- ENI Editions - All rigths reserved


Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable, _
dbReadOnly)

LesobjetsRecordset

UnobjetRecordsetreprsentelesenregistrementsd'unetableouceuxissusd'unerequte.

Ilexistequatretypesd'objetsRecordset:

Recordset Dfinition Intrt Constante


de dclaration
Table Reprsente une table. Permet d'utiliser les index. dbOpenTable
Dynaset Reprsente le rsultat Permet de travailler sur les dbOpen
(feuille d'une requte dont les donnes provenant de Dynaset
de rponse enregistrements peuvent plusieurs tables.
dynamique) tre mis jour.
Recordset Dfinition Intrt Constante
de dclaration
ForwardOnly Idem Snapshot mais Rapidit dbOpen
(En Avant dfilement des ForwardOnly
seulement) enregistrements
uniquement vers l'avant.
Snapshot Reprsente le rsultat Rapidit par rapport au dbOpen
(instantan) d'une requte en lecture Dynaset. Snapshot
seule.

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).

ENI Editions - All rigths reserved - 7-


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.

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

Utilisation de la mthode Seek: recherche d'un client partir de son code.

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

Utilisation de la mthode Find : recherche des clients dont le nom de Socit commence par une valeur donne.

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")

ENI Editions - All rigths reserved - 9-


.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

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.

- 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.

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

LesobjetsFieldetIndex

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, le nom du champ d'une table externe (table lie) qui correspond
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.

ENI Editions - All rigths reserved - 11 -


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.

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

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

- 12 - ENI Editions - All rigths reserved


Cration de l'index Societe sur le champ Cli_Societe de la table Clients.

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

LesobjetsQueryDefetParameter

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

ENI Editions - All rigths reserved - 13 -


Cration d'une nouvelle requte base sur une instruction SQL.

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]"

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.

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

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.

- 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).

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

Visualisation dans Access de la table RELATIONS mise jour :

LesobjetsContaineretDocument

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.

ENI Editions - All rigths reserved - 15 -


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.

Dim dbs As DAO.Database


Set dbs = CurrentDb
Dim ctn As Container
For Each ctn In dbs.Containers
Debug.Print ctn.Name
Next

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.

- 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.

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

LesobjetsGroupetUser

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

Group

Un objet Group reprsente un groupe d'utilisateurs possdant les mmes autorisations.

Proprits

Name:Dfinieourenvoielenomdugrouped'utilisateurs.

PID:Dfinitlenumropersonnelducomptedegroupe.

Mthodes

CreateUser:CreunnouvelobjetUser.

ENI Editions - All rigths reserved - 17 -


Collections

Users,Properties

Exemple

Pour chaque groupe, affichage dans la fentre Excution des noms de groupes et d'utilisateurs du groupe.

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

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.

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


"dans le fichier " & .HelpFile & "."
End With
MsgBox strError
Next

End Sub

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.

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

ENI Editions - All rigths reserved - 19 -


- 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 Jet 4.0 OLE DB Provider.

Les fournisseurs de donnes ou Providers sont des pilotes permettant de communiquer avec les sources de donnes.

HirarchiedesobjetsADO

ENI Editions - All rigths reserved - 1-


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

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

DescriptiondesobjetsADO

Connection:Reprsenteuneconnexionavecunesourcededonnes.

Command:Dfinitunecommandespcifiqueexcutersurunesourcededonnes.

Recordset:Reprsentelejeud'enregistrementscompletd'unetabledebasesdedonnesoulesrsultatsd'une
commande(ex :rsultatsd'unerequteSQL).

Record : Fonctionne essentiellement comme un objet Recordset d'une seule ligne. La source des donnes dans
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.

ENI Editions - All rigths reserved - 3-


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.

Dim cncDevis as ADODB.Connection


Set cncDevis = CurrentProject.Connection

Ouverture d'une base de donnes externe.

Dim cncDevis as ADODB.Connection


Set cncDevis = New ADODB.Connection
cncDevis.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source = C:\Devis\Devis.accdb"

Utilisation des mthodes CommitTrans et RollbackTrans pour confirmer ou annuler la mise jour d'enregistrements.

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

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.

ENI Editions - All rigths reserved - 5-


Prepared:Indiques'ilfautenregistreruneversioncompiledelacommandesurleserveuravantexcution.

State:Indiquesil'objetCommandestouvertouferm.Enlectureseule.

Exemple

Utilisation de l'objet Command pour crer un jeu d'enregistrements.

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

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.

- 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.

ENI Editions - All rigths reserved - 7-


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.

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

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
Dim strCodeCli As String

' Cration du Recordset


Set cnc = CurrentProject.Connection

- 8- ENI Editions - All rigths reserved


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

Utilisation de la mthode Find : recherche des clients dont le nom de Socit commence par une valeur donne.

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

LacollectionFields

Mthodes

Append:AjouteunobjetFieldunecollectionFields.

Delete:SupprimeunobjetFielddelacollectionFields.

Refresh:MetjourlesobjetsFielddanslacollectionFields.

LesobjetsField

Mthodes

AppendChunk:AjoutedesdonnesunobjetFielddetypebinaireoudegrandetaille.

ENI Editions - All rigths reserved - 9-


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.

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

LesobjetsParameter

Mthodes

AppendChunk:AjoutedesdonnesunobjetParameterdetypebinaireoutextedegrandetaille.

Proprits

Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetParameter.

- 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.

ENI Editions - All rigths reserved - 11 -


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, Access construit en tche de fond les instructions SQL quivalentes. En fait, la plupart des proprits
delarequteenmodeCrationderequteontdesclausesquivalentesetdesoptionsaccessiblesenlangage
SQL.

Ilestpossibled'afficheroudemodifierl'instructionSQLcorrespondantunerequteenpassantenmodeSQL.

Exemple

Ouvrez une requte existante en mode cration.

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

Vous obtenez alors l'instruction SQL correspondant votre requte :

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 1-


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> : Nom de la ou des tables contenant les donnes extraire. Si la requte utilise plusieurs
tables,lemodedejointuredoitgalementtreprcisdanslaclauseFROM.

Exemples

- 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

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>).

ENI Editions - All rigths reserved - 1-


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.

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

Deuxime exemple

Toutes les commandes sont slectionnes.

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

LaclauseWHERE

LaclauseWHEREpermetdefiltrerlesenregistrementspartirdecritres.

LesconditionsdelaclauseWHEREs'exprimentaveclesoprateurssuivants :

- oprateurs de comparaison: =, <, >, <=, >=, <> (diffrent de), Is [Not] Null, [Not] In, Between.

- oprateurs logiques : And, Or, Not.

Exemples

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')

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 Clients.Cli_Societe, Count(Commandes.Cde_Numcde) AS


Nb_Cdes

- 2- ENI Editions - All rigths reserved


FROM Clients INNER JOIN Commandes ON Clients.Cli_NumCli=
Commandes.Cde_CodeCli
GROUP BY Clients.Cli_Societe

Cette requte renvoie le montant total de chacune des commandes.

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

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 .

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)

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.

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

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]

ENI Editions - All rigths reserved - 3-


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.

UPDATE Clients SET Clients.Cli_pays = 'F'

Cette requte modifie dans la table Clients le code pays des enregistrements des clients dont la ville est 'Marseille'.

UPDATE Clients SET Clients.Cli_Pays = 'F'


WHERE Clients.Cli_ville='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.

DELETE FROM Commandes


WHERE ((Commandes.Cde_DateCde) < #1/1/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.

INSERT INTO Clients ( Cli_CodeCLi, Cli_societe, Cli_ville,


Cli_pays )

- 4- ENI Editions - All rigths reserved


VALUES ('ENI','Editions ENI', 'Nantes','F').

Ajout des enregistrements de la table Prospects dans la table Clients.

INSERT INTO Clients


SELECT Prospect.*
FROM Prospect

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.

ENI Editions - All rigths reserved - 5-


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.

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

Code VBA quivalent sans requte SQL.

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

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.

ENI Editions - All rigths reserved - 1-


- 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.

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

Code VBA quivalent sans requte SQL. La liste est renseigne partir d'une liste de valeur.

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

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.

- 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

ENI Editions - All rigths reserved - 1-


- 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.

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 3-


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.

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

vnementsdetypeImpression

Cesvnementss'appliquentauxtatsAccess.

Format:(Auformatage)
SeproduitlorsqueMicrosoftAccessdterminequellesdonnesappartiennentquellessections.

Annulation:Oui

Print:(Surimpression)
Seproduitlorsdelamiseenformedesdonnesd'unesectionpourimpression.

Annulation:Oui

Retreat:(Aureformatage)
SeproduitlorsqueMicrosoftAccessretourneunesectionprcdentependantlamiseenformed'untat.

- 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

ENI Editions - All rigths reserved - 5-


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.

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

Tous les vnements ne sont pas annulables (voir tableaux des catgories d'vnements prcdents).

ENI Editions - All rigths reserved - 1-


Squencestypesd'vnements

Une action utilisateur ou systme gnre directement un vnement, mais plusieurs vnements sousjacents
peuventtreactivs.

Voiciquelquessquencestypesd'enchanementsd'vnements:

Ouvertured'unformulaire:

OpenLoad Resize ActivateCurrent

Fermetured'unformulaire:

UnLoad Deactivate Close

Entredansuncontrle:

Enter GotFocus

Sortied'uncontrle:

Exit LostFocus

Passaged'unformulaireunautre:

Deactivate(form1) Activate(form2)

Modificationd'unezonedetexte:

KeyDown KeyPress Change KeyUp

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:

KeyDown KeyPress BeforeUpdate(Formulaire) Change KeyUp

Suppressiond'enregistrements:

Delete Current BeforeDelConfirm AfterDelConfirm

ENI Editions - All rigths reserved - 1-


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".

ENI Editions - All rigths reserved - 1-


Lesdiffrentstypesd'erreur

Ondistinguediffrentstypesd'erreurdanslelangageVBA :

- les erreurs de syntaxe,

- les erreurs de compilation,

- les erreurs d'excution,

- les erreurs de logique.

Leserreursdesyntaxe

LeserreursdesyntaxepeuventtredcelesautomatiquementlorsdelasaisieducodedansVBA.

Pouractiverlavrificationdesyntaxe,danslemenuOutils:

Slectionnez Options.

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.

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 3-


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 Ctrl G) : 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.

ENI Editions - All rigths reserved - 1-


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.

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

L'instructionOnError

OnErrorGoTo

L'instructionOnErrorGoToindiqueunesquenced'instructionsexcuterencasd'erreur.Cetteinstructiondoit
treplaceavantlesinstructionspouvantdclencheruneerreur.

Syntaxe

On Error {GoTo <tiquette>| GoTo 0}

<tiquette> : Nom de l'tiquette indiquant le dbut de la squence d'instructions. Une tiquette est compose
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

ENI Editions - All rigths reserved - 1-


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

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

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.

- 2- ENI Editions - All rigths reserved


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

ENI Editions - All rigths reserved - 3-


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.

ENI Editions - All rigths reserved - 1-


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

[sFrmParticipant].Form!txtNbStag
[sFrmFormations].Form.RecordSource = strSQL
[sFrmFormations].Form.Requery

PropritsdisponiblesenmodeCration

Pour connatre le nom VBA et la description d'une proprit disponible en mode cration, vous devez vous
positionnerdanslafentrePropritsdel'objetFormulaireetcliquersurlatoucheF1.

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 3-


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


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

Propritsdel'ongletDonnes

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

ENI Editions - All rigths reserved - 5-


8. DataEntry Boolen
9. AllowAdditions Boolen
10. AllowDeletions Boolen
11. AllowEdits Boolen
12. AllowFilters Boolen
13. RecordLocks Boolen

Propritsdel'ongletvnement

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

ENI Editions - All rigths reserved - 7-


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

Propritsdel'ongletAutres

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


7. ShortcutMenu Boolen
8. MenuBar Chanedecaractres
9. ShortcutMenuBar Chanedecaractres
10. HelpFile Chanedecaractres
11. HelpContextID Entierlong
12. HasModule Boolen
13. FastLaserPrinting Boolen
14. Tag Chanedecaractres

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

ENI Editions - All rigths reserved - 9-


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] & "'"

ENI Editions - All rigths reserved - 11 -


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

End Sub

Affectation d'un filtre en fonction du contenu d'une case cocher : slection des clients franais, trangers ou de tous les clients.

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

Reports![ListeCde]
Reports("ListeCde")
Reports![ListeCde]![DateCde]

PropritsdisponiblesenmodeCration

Propritsdel'ongletProprits

1. Caption Chanedecaractres
2. DefaultView Octet
0 Modesimple
1 Modecontinu
2 Feuillededonnes
3 Tableaucroisdynamique

ENI Editions - All rigths reserved - 1-


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


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

Propritsdel'ongletDonnes

1. RecordSource Chanedecaractres
2. Filter Chanedecaractres
3. FilterOnLoad Boolen
4. OrderBy String
5. OrderByOnLoad Boolen
6. AllowFilters Boolen

Propritsdel'ongletvnement

ENI Editions - All rigths reserved - 3-


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


23. OnApplyFilter Chanedecaractres
24. OnTimer Chanedecaractres
25. TimerInterval Chanedecaractres
26. OnPage Chanedecaractres
27. KeyPreview Boolen

Propritsdel'ongletAutres

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

ENI Editions - All rigths reserved - 5-


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 Circle pour imprimer des traits


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 : Spcifie le nombre d'units utilises dans la largeur de la page lorsque vous utilisez les mthodes
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

ENI Editions - All rigths reserved - 7-


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

ENI Editions - All rigths reserved - 1-


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

Pour accder aux contrles depuis un formulaire ou un tat ouvert en Mode Cration, activez l'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

ENI Editions - All rigths reserved - 1-


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:

Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (en bas de la bote de dialogue).

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

ENI Editions - All rigths reserved - 1-


8. RemovePersonalInformation Boolen
9. ThemedFormControls Boolen
10. StartupShortcutMenuBar String
11. AllowFullMenus Boolen
12. AllowShortcutMenus Boolen

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.

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:

Cliquez avec le bouton droit sur la barre de navigation situe en haut du volet de navigation.

Slectionnez l'option Options de navigation dans le menu contextuel.

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:

Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (situ en bas de la bote de dialogue).

Slectionnez la catgorie Avanc dans le menu de gauche.

Activez l'option Afficher les erreurs du complment d'interface utilisateur situ sous Gnral.

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

ENI Editions - All rigths reserved - 1-


l'erreurainsiqueledescriptifdel'erreur.

Exemple:

Crationd'unetablesystmeUSysRibbons

LatablesystmeUSysRibbonspermetdestockerlecodeXMLpermettantdecrerunouplusieursrubans.

Pourcrercettetable:

Activez l'onglet Crer.

Dans le groupe Tables, cliquez sur Cration de table.

Insrez les champs suivants:

RibbonIdNumroAuto

RibbonName Texte sur 255 caractres

RibbonXML Mmo

Slectionnez le champ RibbonId et cliquez sur la commande Cl primaire (situe dans le groupe Outils de l'onglet Cration).

Cliquez sur Enregistrer depuis la barre d'outils Accs rapide.

Nommez la nouvelle table UsysRibbons.

AjoutducodeXMLdepersonnalisationlatableUSysRibbons

PourassocierducodeXMLvotretable UsysRibbons,lasolutionlaplussimpleestdegnrerunformulairede
saisie.Pourcela :

Slectionnez la table UsysRibbons dans le volet de navigation.

Activez l'onglet Crer, puis cliquez sur Formulaire dans le groupe Formulaires.

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

Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Access (situ en bas de la bote de dialogue).

Slectionnez la catgorie Base de donnes active dans le menu de gauche.

Inscrivez le nom du ruban (ex : ruban1) dans la liste Nom du ruban situe sous Options de la barre d'outils et du ruban.

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

Ouvrez le formulaire ou l'tat en Mode cration.

Affichez la feuille de proprit du formulaire ou de l'tat.

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.

ENI Editions - All rigths reserved - 3-


Enregistrez puis fermez votre formulaire.

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

Nomdebalise Description
<customUI> Baliseprincipaled'unrubanpersonnalis
<ribbon> Balisecontenantladescriptionduruban
Menu accessible depuis le bouton Microsoft
<OfficeMenu>
Office
<tab> Ongletdansleruban
<group> Groupedansunongletdansleruban
<labelControl> Etiquette(titreouintitul)
<button> Boutondecommande
<splitButton> Boutondemenu
<toggleButton> Boutonbascule
<menu> Menudroulant
<dynamicMenu> Menudroulantdynamique
<gallery> Galerieoupalettedechoix
Bouton dclenchant l'ouverture d'une bote
<dialogBoxLauncher>
dedialogue

Lespropritsassociesauxobjetsduruban

Les proprits suivantes permettent de personnaliser les diffrents contrles affichs dans le ruban (bouton de
commande,menudroulant)

Proprit Description
Id Identifiantuniqued'uncontrlepersonnalis.
Identifiant unique d'un contrle standard
idMso
Microsoft.
"true"silecontrleestaccessbile,"false"sinon.
enabled
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").
"true" si l'image du contrle est affiche, "false"
showImage
sinon.Lavaleurpardfautest"true".

ENI Editions - All rigths reserved - 1-


"true"sil'intitulducontrleestaffiche,"false"
showLabel
sinon.Lavaleurpardfautest"true".
"true" si le contrle est visible, "false" sinon. La
visible
valeurpardfautest"true".

Lespropritssuivantespermettentdepersonnaliserleruban :

Macro ou code VBA associ au chargement du


OnLoad
ruban.
"true" si le ruban personnalis doit remplacer le
ruban standard d'Access. Si "false", les
startFromScratch
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>

ENI Editions - All rigths reserved - 1-


' 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


<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>

CodeVBAappelparlescommandesdurubanpersonnalis

LecodeVBAsuivantestappelaumoyendespropritsOnActiondesdiffrentscontrles.

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"

ENI Editions - All rigths reserved - 3-


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:

Ouvrez dans Excel 2007 le fichier Office2007IconsGallery.xlsm (fichier livr avec les exemples ou tlchargeable sur le site de
Microsoft).

Activez l'onglet Dveloppeur.

Cliquez sur l'un des boutons "Galerie" pour afficher la liste des icnes.

Lorsque vous survolez une icne, son nom est affich dans l'infobulle associe:

Sil'ongletDveloppeurn'estpasaffichdansExcel:

Cliquez sur le bouton Microsoft Office , puis sur le bouton Options Excel (situ en bas de la bote de dialogue).

Slectionnez la catgorie Standard dans le menu de gauche.

Activez l'option Afficher l'onglet Dveloppeur dans le ruban situ sous Meilleurs options pour travailler avec Excel.

Cliquez sur le bouton OK : l'onglet Dveloppeur a t ajout au ruban d'Excel, droite de l'onglet Affichage.

ENI Editions - All rigths reserved - 1-


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:

Dans un module, slectionnez le menu Outils Rfrences.

LabotededialogueRfrencess'afficheavectouslesserveursOLEenregistrsdanslabasederegistre.

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

ENI Editions - All rigths reserved - 1-


LancementdeWord.

Dim AppWord as Object


Set AppWord = CreateObject("Word.Application")

ou

Dim appWord As New Word.Application

RfrenceundocumentWordexistant.

Dim DocWord As New Word.Document


Set DocWord = GetObject("C:\Clients\relance.docx")

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.

- 2- ENI Editions - All rigths reserved


PiloterWorddepuisAccess

LemodleObjetWord

ExtraitdumodleObjetWord:

ObjetsetcollectionsWord

Documents:Collectiondetouslesclasseurs(objetsDocument)ouverts.

ENI Editions - All rigths reserved - 1-


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.

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

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 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

ENI Editions - All rigths reserved - 3-


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.

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 3-


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,

ENI Editions - All rigths reserved - 1-


- 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

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

'cre un lien DDE avec la feuille feuil1 d'Excel


canal = DDEInitiate ("Excel","Feuil1")

Laliaison

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

' Affecte le contenu de la cellule L1C1 une zone


' de texte via sa proprit Source Contrle.
=DDE("excel","classeur1","L1C1")

DDESend

ENI Editions - All rigths reserved - 1-


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

' Affecte la cellule L1C1 le contenu du contrle


' Ville via la proprit Source Contrle d'une zone '
de texte.
=DDESend("excel","classeur1","L1C1",[Ville])

DDEPoke

L'instructionDDEPokeenvoiedesinformationsl'applicationSourcesuruncanalouvert.

Syntaxe

DDEPoke(<Numro de canal>, <lment>, <Donne>)

Numro de canal :NdecanalretournparlafonctionDDEInitiate.

lment :Rfrenceunedonnedel'applicationSource.

Donne :Donneenvoyerl'applicationSource.

Exemple

'envoie la valeur 15 dans la cellule L1C1


DDEPoke canal,"L1C1","15"

DDERequest

LafonctionDDERequestdemandedesinformationsl'applicationSource.

Syntaxe

DDERequest(<Numro de canal>, <lment>)

Numro de canal :NducanalretournparlafonctionDDEInitiate.

lment :Rfrenceunedonnedel'applicationSource.

Exemple

'affecte le contenu de la cellule L1C1


' la variable montant
montant = DDERequest (canal,"L1C1")

DDEExecute

- 2- ENI Editions - All rigths reserved


L'instructionDDEExecuteenvoieunechanedecommandesl'autreapplicationencoursdeliaison.

Syntaxe

DDEExecute(<Numro de canal>, <Commande>)

Numro de canal :NducanalretournparlafonctionDDEInitiate.

Commande :Chanecontenantunecommandereconnueparl'autreapplication.

Exemple

'Cre une nouvelle feuille de calcul.


DDEExecute Canal,"[New(1)]"

Laclture

DDETerminate

L'instructionDDETerminatefermelecanaldecommunicationDDE.

Syntaxe

DDETerminate(<Numro de canal>)

Numro de canal :NducanalretournparlafonctionDDEInitiate.

Exemple

DDETerminate canal

DDETerminateAll

L'instructionDDETerminateAllfermetouslescanauxdecommunicationDDE.

Syntaxe

DDETerminateAll

ENI Editions - All rigths reserved - 3-


ImportetexportdedonnesauformatXML

Le langage XML (eXtensible Markup Language) est le langage standard de description et d'change de donnes
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.

ENI Editions - All rigths reserved - 1-


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

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


Application.ExportXML _
ObjectType:=acExportTable, _
DataSource:=strTableName, _
DataTarget:="C:\XML\" & strTableName & ".xml", _
PresentationTarget:="C:\XML\" & strTableName & ".xsl", _
Encoding:=acUTF8
End Sub

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.

<?xml version="1.0" encoding="UTF-8"?>


<?xml-stylesheet type="text/xsl" href="Clients.xsl"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
<Clients>

tape3 :Exportd'uneprsentationdeformulaire

Saisissez le code suivant dans le module ImportExportXML et excutez la procdure ExportFormClient.

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

Lefichierclients.xslatremplacdanslerpertoireC:\XML.

Ouvrez le fichier clients.xml dans Internet Explorer.

Vousobtenezmaintenantlersultatsuivant:

ENI Editions - All rigths reserved - 3-


tape4:ImportdufichierClients.XMLaprsmodification

Modifiez le fichier clients.xml de manire ne conserver que le premier 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>

Saisissez le code suivant dans le module ImportExportXML.

Sauvegardez votre table clients sous un autre nom dans Access.

Excutez la procdure ImportTableClient.

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

La table Clients est cre dans Access avec un seul enregistrement.

- 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 chapitre Programmation Windows.

L'exemple suivant permet de crer le fichier ImageListe.htm contenant toutes les images du rpertoire
slectionnparl'utilisateur.

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

Aperu dans Internet Explorer d'un fichier HTML cr par le code de l'exemple.

ENI Editions - All rigths reserved - 1-


- 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.

ENI Editions - All rigths reserved - 1-


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

Dans les versions 32 bits de Visual Basic, le respect des minuscules et majuscules est obligatoire pour les noms
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 Dclaration Visual Appel


en langage C Basic
BOOL ByVal <variable> Une expression dont l'valuation produit
As Boolean une valeur de type Boolean.
long, DWORD, LONG, ByVal <variable> As Une expression dont l'valuation produit
COLORREF Long une valeur de type Long.
WORD ByVal <variable> As Une expression dont l'valuation produit
Long une valeur de type Long.
NULL As Any ou ByVal ByVal Nothing ou ByVal 0$ ou
<variable> As Long vbNullString.

ENI Editions - All rigths reserved - 1-


int, short Byval <variable> Une expression dont l'valuation produit
As Integer une valeur de type Integer.
char, BYTE Byval <variable> Une expression dont l'valuation produit
As Byte une valeur de type Byte.
Entier (INT, UINT) 32 bits avec ByVal <variable> As Une expression dont l'valuation produit
compilateur 32 bits Long une valeur de type Long.
Identificateur Windows (hWnd, ByVal <variable> As Une expression dont l'valuation produit
hDC, hMenu...) Long une valeur de type Long.
Vide (valeur de renvoi de Sub <procdure> Sans objet.
fonction)
Pointeur vers une chane ByVal <variable> As Une expression dont l'valuation produit
(LPSTR) String une valeur de type String.
Pointeur vers un entier long <variable> As Long Une variable de type Long.
(LPDWORD)
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 <variable> As Long Une variable de type Long.
un entier (LPINT)
Pointeur vers <variable> Une variable de type dfinie par
une structure As <type> 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.

ENI Editions - All rigths reserved - 1-


Exemplesd'utilisationdefonctionsAPIWindows

RcuprationdurpertoireWindows

Dclaration de la fonction 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

Appel de la fonction API.

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

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.

' 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

Appel des fonctions API.

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

ENI Editions - All rigths reserved - 1-


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

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.

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

Appel de la fonction API.

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

Appel de la fonction VBA LireCle.

- 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

ENI Editions - All rigths reserved - 3-


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

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 1-


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

ENI Editions - All rigths reserved - 1-


Contrle Proprit spcifique
Form Entres Donnes = Oui
Source = Formations
txtNbStag Valeur par dfaut = 0
Verrouill = Oui
Source Contrle =
[sFrmParticipant].[Formulaire]![txtNbStag]
txtCoutStag Verrouill = Oui

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

Insrez le code suivant dans un module standard (ProcGene par exemple).

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

CodeVBAduformulaire

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

ENI Editions - All rigths reserved - 3-


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

Sousformulaire"SFParticipants"

Le formulaire "Formations" et le sousformulaire "SF Participants" sont lis sur les champs FOR_IDFORM et
PART_IDFORM.

- 4- ENI Editions - All rigths reserved


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])

CodeVBA

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

ENI Editions - All rigths reserved - 5-


- 6- ENI Editions - All rigths reserved
Formulaire"Recherche"

Ceformulairepermetd'afficheretd'imprimerlalistedesstagesrpondantcertainscritres.Ceformulairen'est
associaucunesourcededonnes.

Listedescontrles

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

CodeVBA

LecodeVBAassociceformulairemontrelesaspectssuivants :

- constitution d'une requte de type SQL partir de critres saisis,

ENI Editions - All rigths reserved - 1-


- 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


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

Sousformulaire"SFFormations"

Lesousformulaire"SFFormations"estbassurunerequteeffectuepartirdelatable"Formations".

LapropritRecordSourceduformulaireest :"SELECT*FROMFORMATIONS".

CodeVBA

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]=" _

ENI Editions - All rigths reserved - 3-


& lngIDForm, acFormEdit
End Sub

Etat"Formations"

L'tat"SFFormations"estbassurlatable"Formations".

CodeVBA

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

ENI Editions - All rigths reserved - 1-


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.

ENI Editions - All rigths reserved - 3-


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.

ENI Editions - All rigths reserved - 5-


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.

ENI Editions - All rigths reserved - 7-


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.

ENI Editions - All rigths reserved - 9-


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.

ENI Editions - All rigths reserved - 11 -


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.

ENI Editions - All rigths reserved - 13 -


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'ouvrirlePresse papiers.

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

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

Constantesdedate

Constante Valeur Description


vbSunday 1 Dimanche
vbMonday 2 Lundi
vbTuesday 3 Mardi
vbWednesday 4 Mercredi
vbThursday 5 Jeudi
vbFriday 6 Vendredi
vbSaturday 7 Samedi

Constantesdestouchesclavierlettresetchiffres

LesvaleursdestouchesAZsontlesmmesqueleursquivalentsASCII.

Constante Valeur Description


vbKeyA 65 Touche A
vbKeyB 66 Touche B
vbKeyC 67 Touche C
... ... ...
vbKeyZ 90 Touche Z

Lesvaleursdestouches09sontlesmmesqueleursquivalentsASCII.

Constante Valeur Description


vbKey0 48 Touche 0
vbKey1 49 Touche 1
vbKey2 50 Touche 2
... ... ...
vbKey9 57 Touche 9

ENI Editions - All rigths reserved - 1-


Constantesdetouchesdefonction

Constante Valeur Description


vbKeyF1 0x70 Touche F1
vbKeyF2 0x71 Touche F2
... ... ...
vbKeyF11 0x7A Touche F11
... ... ...
vbKeyF16 0x7F Touche F16

Constantesdetouchesdiverses

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.

ENI Editions - All rigths reserved - 1-

Vous aimerez peut-être aussi