Beruflich Dokumente
Kultur Dokumente
professionnelles conviviales, fiables et performantes sous Access. Outre les lments de base du langage VBA vous permettant de crer vos
propres procdures et fonctions, vous apprendrez manipuler vos donnes en utilisant les objets DAO ou ADO et le langage SQL,
personnaliser vos formulaires et tats, concevoir un ruban Access spcifique votre application, piloter les autres applications Office 2007
via la technologie Automation, exporter des informations sur Internet (au format XML ou HTML) et utiliser les API Windows.
En plus des nombreux exemples fournis dans cet ouvrage - en tlchargement sur notre espace Livres (www.eni-livres.com) - le dernier
chapitre vous guide dans la cration dune mini-application Access.
Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11
Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non
destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou
reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette
reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal.
Copyright Editions ENI
VBAAccess2007
Programmer sous Access
MichleAMELOT
Rsum
L'auteur
Consultante et formatrice, Michle Amelot est spcialise dans la cration de logiciels spcifiques autour des technologies Microsoft.
Elle accompagne des quipes de dveloppement dans la conduite de leurs projets. Cest, entre autres, cette connaissance approfondie
des besoins des utilisateurs et des dveloppeurs, qui lui permet dans ses ouvrages de faciliter lapprentissage et la pratique de la
programmation en langage VBA.
- 1 - ENI Editions - All rigths reserved
Introduction
Access2007disposedulangagedeprogrammationVisualBasicEditionApplication(VBA)quiluipermetd'tendre
sesfonctionnalitspourvousoffrirlemeilleurdesesperformances.
C'est un langage puissant, qui ne prsente aucune difficult pour tre compris par les dbutants. Les fonctions
deVBAsontdrivesengrandepartiedeVisualBasicauxquelless'ajoutentdesinstructions(objets,mthodes,
fonctions...)spcifiques,ncessaireslamanipulationdesobjetsd'Access.
Pourbienexploiterlecontenudecemanuel,ilestimpratifd'avoirmanipulAccess2007entantqu'utilisateur,
c'estdiresavoirgrer(crer,modifier,supprimer,manipuler)lestables,lesrequtes,lesformulaires,lespages
d'accsauxdonnesetlestats.Desconnaissancesgnralesenprogrammationsontgalementprrequises.
- 1 - ENI Editions - All rigths reserved
Rappels
UnebaseAccessestconstitued'ununiquefichierportantl'extension.ACCDBetcontenantlesdiffrentsobjets
del'application.Cesobjetssont:
Lestables
Ellescontiennentlesdonnesdelabaseetpeuventtreenliaisonlesunesaveclesautres.
Lesrequtes
Ellespermettentd'effectuer:
- des slections et des tris sur les tables,
- des calculs simples et des analyses croises,
- des actions (ajout, suppression, mise jour d'enregistrements, cration de tables),
- des oprations SQL.
Lesformulaires
Ilssontutilisspourconsulteroumettrejourlesdonnes.
Lestats
Ilssontutilisspourimprimerdesrapports,depuislasimplelisted'unetablejusqu'desrapportspluscomplexes
comprenantdesregroupementsd'enregistrementsetdescalculs.
Lesmacros
Elles permettent l'automatisation de plusieurs tches avec un langage particulier mais ne permettent pas
d'atteindrelapuissancededveloppementdeVBA.
Lesmodules
Ils contiennent une partie du code VBA de l'application, savoir des dclarations, des fonctions, des
procdures...
- 1 - ENI Editions - All rigths reserved
PrincipesfondamentauxdeVBA
VBAprsenteunenvironnementdeprogrammationorientobjet.
Un objet est une entit autonome possdant des caractristiques (proprits : taille, couleur, valeur...) et des
comportements (mthodes) qui lui sont propres. Certains objets possdent une reprsentation visuelle
(Formulaire,Etats...),tandisqued'autresnesontaccessiblesqu'encodeVBA(DBEngine,Container...).
Laplupartdesobjetsvisuelsontlapossibilitderagirdesvnements(surouverture,aprsmisejour...).
La programmation VBA permet d'induire, en fonction des vnements, des comportements particuliers sur les
objets par le code : mthodes, procdures et fonctions. Par ce biais, elle facilite l'criture de code car elle
repose sur une conception modulaire. Elle permet ainsi une grande souplesse de fonctionnement et une
maintenanceplusaise.
Structured'unobjet
vnement:Actionutilisateurousystmeagissantsurunobjetetdclenchantlecodecorrespondant.
Mthode:Codeprdfiniserapportantuntyped'objet.
Procdure:Squenced'instructionsnerenvoyantpasdevaleur.
Fonction:Squenced'instructionsrenvoyantunevaleur.
- 1 - ENI Editions - All rigths reserved
Lesnouveautsd'Access2007
Access2007faitpartiedelasuitelogicielleMicrosoftOffice2007(galementappeleOffice12)etbnficiepar
consquentdelaplupartdesamliorationsdecetteversion:
- Nouvelle interface utilisateur : ruban et onglets regroupant toutes les commandes et remplaant les menus et barres d'outils.
- Partage efficace des informations entre applications Office (notamment change d'informations entre Access et Outlook et
Access et SharePoint).
- Thmes Office permettant de personnaliser aisment la prsentation des documents.
- Enregistrement des fichiers au format pdf et xps...
D'autresnouveautsonttapportesAccess2007:
- Nouveaux modles d'applications compltes ;
- Volet de navigation ;
- Tris et filtrages optimiss ;
- Dispositions permettant de personnaliser la prsentation des formulaires et tats;
- Nouveaux types de champs : champs plusieurs valeurs, type de donnes "Pice jointe" permettant de stocker des
informations provenant de tout type de fichier, texte enrichi dans les champs mmo...
Contrairementl'interfaced'Access,l'environnementdedveloppementaconservsesmenusetbarresd'outils.
Toutefois, la documentation en ligne a t considrablement amliore : aspect de Visual Studio, exemples de
codedetcheetmodleobjetenrichi(informationssurleschangementsparrapportauxversionsprcdentes).
- 1 - ENI Editions - All rigths reserved
PassagedesmacrosVBA
Lesmacrosreprsententunemanirefaciledegrerdesenchanementsd'actionssimples,telsquel'ouvertureet
lafermeturedeformulaires.
ToutefoisVBAprsentebiend'autresavantages:
- il facilite la maintenance des bases de donnes car les procdures vnementielles Visual Basic sont intgres dans la
dfinition du formulaire ou de l'tat,
- il conforte et amliore la gestion des erreurs,
- il permet d'accomplir des actions au niveau du systme,
- il autorise la manipulation d'un seul enregistrement la fois,
- il accepte le passage d'arguments au code en cours d'excution.
Toute macro peut tre convertie automatiquement en code VBA.
Conversiondemacrosdansunformulaireouuntat
I Dans le volet de navigation, cliquez avec le bouton droit de la souris sur le formulaire ou l'tat, puis cliquez sur Mode cration.
I Activez l'onglet Outils de base de donnes du ruban.
I Cliquez sur l'icne Convertir les macros de formulaire en Visual Basic ou Convertir les macros d'tat en Visual Basic situe en
bas droite du groupe Macros :
Labotededialoguesuivantes'affichealors :
I Dsactivez si vous le souhaitez les options proposes par dfaut. Il est toutefois recommand de conserver la gestion des erreurs
pour la fiabilit de l'application, et les commentaires pour simplifier la lecture du code.
I Cliquez sur Convertir pour continuer.
Conversiondemacrosglobales
I Dans le volet de navigation, slectionnez la macro que vous souhaitez convertir.
I Activez l'onglet Outils de base de donnes du ruban.
I Cliquez sur l'icne Convertir les macros en Visual Basic situe en bas droite du groupe Macros.
- 1 - ENI Editions - All rigths reserved
I Dans la bote de dialogue, slectionnez les options souhaites.
I Cliquez sur Convertir pour continuer : la macro est convertie en code VBA dans un module intitul "Macro convertie" suivi du nom
de la macro.
Lesmacrosetlascurit
Lesparamtresdescuritdesmacrospermettentdecontrlercequiseproduitlorsquevousouvrezunebase
dedonnesAccesscontenantunemacro.
Modificationdesparamtresdescurit
Par dfaut, lorsque vous installez Access, les macros sont dsactives. Si vous ouvrez un classeur contenant
desmacros,l'avertissementsuivantestaffichdanslabarredesmessages:
Sivouscliquezsur Options,unebotededialoguedescurits'affichepourvouspermettred'activerlesmacros
contenuesdansvotrebaseAccess.Vouspouvezalorsslectionnerl'optionActivercecontenuetcliquersurle
boutonOK:lesmacrossontalorsactivesetl'alertedescuritdisparat.
VouspouvezgalementmodifierlesparamtresdescuritpourtouteslesbasesdedonnesAccessdelafaon
suivante:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Paramtres des macros dans le menu de gauche.
En cas de changement des paramtres de scurit, la nouvelle option choisie s'appliquera toutes les bases de donnes Access
l'exclusion de la base actuellement active. Pour l'appliquer cette base, vous devez la fermer puis l'ouvrir nouveau.
Descriptiondesdiffrentesoptionsdescurit
Dsactivertouteslesmacrossansnotification
Touteslesmacrosettouteslesalertesdescuritsontdsactives.
Dsactivertouteslesmacrosavecnotification
Optionpardfaut.Lesmacrossontdsactivesmaisl'alertedescuritestaffiche.
Dsactivertouteslesmacrosl'exceptiondesmacrossignesnumriquement
Si les macros d'un classeur sont signes numriquement par un metteur approuv, les macros peuvent tre
excutes. Si l'metteur n'a pas t approuv, une notification est affiche : il est alors possible d'activer les
macros signes ou d'approuver l'metteur. Les macros non signes numriquement ne pourront pas tre
actives.
Activertouteslesmacros
Si cette option est slectionne, toutes les macros sont actives. Il n'est pas recommand d'utiliser ce
paramtreenpermanence.
Quelle que soit l'option choisie, si un logiciel antivirus fonctionnant avec Microsoft Office System 2007 est install, les classeurs
- 2 - ENI Editions - All rigths reserved
contenant des macros sont analyss avant d'tre ouverts.
Editeursapprouvs
LesapplicationsAccessdveloppespardesditeursapprouvssecaractrisentparlescritressuivants:
- Le code est sign par le dveloppeur l'aide d'une signature numrique ;
- La signature numrique est valide ;
- La signature numrique est effective (non expire) ;
- Le certificat associ la signature numrique a t mis par une autorit de certification reconnue.
PourajouterunditeurlalisteEditeursapprouvs:
I Activez l'option Dsactiver toutes les macros avec notification dans les paramtres de scurit (cf. Gnralits Passage des
macros VBA Les macros et la scuritModification des paramtres de scurit cidessus).
I Ouvrez une base de donnes Access dont le code est sign par un Editeur approuv.
I Cliquez sur le bouton de commande Approuver tous partir de l'diteur.
Vouspouveztoutmomentconnatrelalistedesditeursapprouvsdelafaonsuivante:
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Editeurs approuvs dans le menu de gauche.
IlestgalementpossiblededsactiverunditeurapprouvencliquantsurleboutonSupprimer.
Emplacementsapprouvs
Toutfichierenregistrdansunemplacementapprouvpeuttreouvertsansl'interventionduCentredegestion
delaconfidentialit.
Vous pouvez tout moment ajouter un dossier dans la liste des Emplacements approuvs de la faon
suivante:
- 3 - ENI Editions - All rigths reserved
I Cliquez sur le bouton Microsoft Office , puis sur le bouton (situ en bas de la bote de dialogue).
I Slectionnez la catgorie Centre de gestion de la confidentialit dans le menu de gauche.
I Cliquez sur le bouton de commande Paramtres du Centre de gestion de la confidentialit.
I Slectionnez la catgorie Emplacements approuvs dans le menu de gauche.
I Cliquez sur Ajouter un nouvel enregistrement.
I Compltez les informations de la bote de dialogue Emplacement de Microsoft Office approuv.
I Cliquez sur le bouton OK pour ajouter l'emplacement.
- 4 - ENI Editions - All rigths reserved
L'environnementdedveloppementIDE
L'IDE (Integrated Development Environment) est l'environnement dans lequel vous pouvez saisir, modifier et
testervotrecodeVBA.CetenvironnementestgalementappelVBE(VisualBasicEditor).
L'IDEmetvotredispositiondenombreuxoutilsquifacilitentlaprogrammationetlamiseaupointducodeVBA :
outilsdedbogage,assistancelasaisie,explorateurd'objets...
- En utilisant la combinaison de touches Ctrl F11.
- En cliquant sur l'icne situe dans l'onglet Outils de base de donnes.
- En slectionnant une procdure vnementielle depuis une feuille de proprits dans un formulaire ou un tat.
Fentre de l'environnement IDE
Toutes les fentres de l'environnement IDE peuvent tre affiches partir du menu Affichage.
Labarred'outilsStandard(1)
1 Afficher Access
2 Insrer un module, un module de classe ou une procdure (Function ou Sub)
3 Enregistrer
4 Couper
- 1 - ENI Editions - All rigths reserved
5 Copier
6 Coller
7 Rechercher
8 Annuler
9 Rtablir
10 Excuter
11 Arrt
12 Rinitialiser
13 Mode cration
14 Afficher l'explorateur de projets
15 Afficher la fentre Proprits
16 Afficher l'explorateur d'objets
17 Afficher la bote outils
18 Aide sur Microsoft Visual Basic
19 Position courante dans la fentre de Code
L'Explorateurdeprojet(2)
Tous les modules de la base de donnes ou du projet VBA sont affichs dans l'explorateur de projets, selon une
structurearborescente.Ilssontregroupsentroisensembles:
- les modules de formulaires ou d'tats,
- les modules standards,
- les modules de classe indpendants.
LafentreProprits(3)
Elle permet d'afficher les proprits des diffrents modules. Pour afficher les proprits d'un formulaire ou d'un
tat, celuici doit tre ouvert dans Access si ce n'est pas le cas, slectionnez le formulaire ou l'tat dans
l'explorateurdeprojetetchoisissezl'optionObjetdumenuAffichage.
LafentreCode(4)
Danscettefentresetrouventdeuxzonesdelistedroulantes :
- la zone objet (10) affiche la liste les objets du module,
- la zone procdure (11) affiche les procdures ou les vnements de l'objet slectionn dans la zone objet. Les vnements
dj utiliss apparaissent en gras.
Lecomplmentautomatiqued'instructions(5)
Le complment automatique d'instructions prsente les informations qui sont le complment logique de
l'instructionauniveaudupointd'insertion.
Par exemple, la liste droulante des mthodes et proprits disponibles pour un objet s'affiche automatiquement
lorsquevoustapezlenomdel'objetsuivid'unpoint.
Si cette liste n'est pas active, slectionnez Options dans le menu Outils et cochez la case Complment
automatiquedesinstructionsdel'ongletditeur.
LafentreExcution(6)
Ellepermetd'afficherlesvaleursdesvariables,delesmodifieretd'excuterdesinstructions.
Les fentres Excution, Variables locales et Espions sont utilises lors du dbogage de l'application.
- 2 - ENI Editions - All rigths reserved
LafentreVariableslocales(7)
Ellecontienttouteslesvaleursdesvariablesaccessiblesdanslaporteencours.
LafentreEspions(8)
Elleaffichelesvaleursdesvariablesquionttdfiniescommevariablesespions.
L'Explorateurd'objets(9)
Ilpermetdevisualiser,pourchaqueobjet,sesproprits,mthodesetconstantes.
- 3 - ENI Editions - All rigths reserved
Configurationdel'diteurVBA
Paramtragedescouleursdel'diteur
Lesmotscls,lesfonctionsetlesinstructionsVBAsontaffichesenbleu,lesobjets,mthodesetpropritsen
noiretlescommentairesenvert.Lesinstructionscontenantdeserreurssontmisesenvidenceenrouge.
Vous pouvez modifier le style (couleurs, police, taille) des diffrentes parties du code. Pour cela, slectionnez
OptionsdanslemenuOutilsetcliquezsurl'ongletFormatdel'diteur.
Paramtragedelaprsentationducode
Diffrents outils, comme la vrification automatique de la syntaxe, la dclaration obligatoire des variables, le
complmentautomatiqued'instructions...facilitentlasaisieetlamiseaupointducodeVBA.
Pouractivercesoutils,slectionnezOptionsdanslemenuOutilsetcliquezsurl'ongletditeur.
- 1 - ENI Editions - All rigths reserved
- 2 - ENI Editions - All rigths reserved
Rfrenceauxobjets
Pour pouvoir utiliser un objet d'accs aux donnes, un objet d'automation, ou un contrle ActiveX spcifique,
vous devez rfrencer la bibliothque d'objet correspondante. Une bibliothque d'objets est gnralement un
fichierDLLouOCXquicontientlecodedel'objet.
Pouractiverunerfrenceunebibliothque,slectionnezl'optionRfrencesdanslemenuOutils.
Vous pouvez ajouter des rfrences en cliquant sur le bouton de commande Parcourir.
- 1 - ENI Editions - All rigths reserved
Crationd'uneprocdureenVBA
Cettesectionvavousguiderpaspasdanslacrationd'unepremireprocdureenVBA.
Cette procdure demande l'utilisateur de saisir une date sous forme abrge (19/06/07), contrle la date et
l'affichedansunformatdatecomplet(mardi19juin2007).
tape1:crationd'unnouveaumodule
DepuisAccess:
I Activez l'onglet Crer du ruban.
I Cliquez sur la flche situe en bas de l'icne Macro puis choisissez l'option Module.
Depuisl'environnementVBE:
I Slectionnez l'option Module du menu Insertion
ou
depuis la fentre Explorateur de projets, cliquez avec le bouton droit de la souris et slectionnez Insertion puis Module partir du
menu contextuel.
tape2:attribuerunnomaumodule
Pardfaut,lemodulecrestintitulModule1(ouModulesuividupremiernumrodisponiblesid'autresmodules
ontdjtscrsetnonrenomms).
Pourmodifierlenomdumodule :
I Slectionnez le module dans la fentre Explorateur de projet.
I Dans la fentre Proprits (cliquez sur F2 si la fentre Proprits n'est pas affiche), modifiez la valeur de la proprit (Name).
tape3:Crationd'uneprocdure
I Double cliquez sur le module pour afficher la fentre de VBA associe.
I Saisissez le code suivant dans la fentre VBA:
- 1 - ENI Editions - All rigths reserved
I Cliquez sur l'icne de la barre d'outils Standard pour enregistrer la procdure.
tape4:Testdelaprocdure
Pourexcuterlecodedelaprocdure :
I Positionnez le curseur de la souris sur le code de la procdure saisie.
I Cliquez sur l'icne de la barre d'outils Standard ou utilisez la touche F5.
I Saisissez une date dans la bote de dialogue affiche et cliquez sur le bouton de commande OK :
Lemessagesuivantestalorsaffich:
- 2 - ENI Editions - All rigths reserved
I Cliquez sur le bouton de commande OK.
Le jour de la semaine tant un lundi, le message suivant apparat :
- 3 - ENI Editions - All rigths reserved
Recommandations
Afin d'optimiser les performances de VBA, certaines techniques peuvent contribuer acclrer la vitesse
d'excutiondevotrecode.
- Les variables doivent toujours tre explicitement dclares.
- Le type des variables doit tre le plus spcifique possible.
- Pour faire rfrence aux proprits, contrles et objets d'accs aux donnes, les variables sont prconises.
- Le mot rserv Me doit tre utilis pour faire rfrence au formulaire ou l'tat au sein d'une procdure vnementielle.
- L'emploi des constantes est recommand chaque fois que possible.
- Les modules doivent tre organiss pour ne pas surcharger la mmoire. Un module est mis en mmoire uniquement si une de
ses procdures est appele par d'autres codes.
- Le code doit tre rgulirement compil.
- 1 - ENI Editions - All rigths reserved
Lesmodules
Ondistinguetroistypesdemodules:
- les modules Microsoft Access Objets de classe,
- les modules standards,
- les modules de classe indpendants.
Lalistedecesmodulesestaffichedefaonhirarchiquedansl'explorateurdeprojetsdel'interfaceVBA.
Si l'explorateur de projet n'est pas affich, choisissez l'option Explorateur de projets du menu Affichage ou utilisez le raccourci-
clavier CtrlR.
Les modules Microsoft Access Objets de classe contiennent les procdures vnementielles associes aux
formulairesettats.
Lesmodulesstandards (ou modules) sont composs d'une ou de plusieurs procdures pouvant tre appeles
endenombreusescirconstancespartirdesdiffrentsmodules.
Seuls les modules standards apparaissent dans la liste des modules du volet de navigation.
Il est recommand de regrouper dans un ou plusieurs modules les procdures "utilitaires" pouvant tre utilises par diffrentes
applications (ex: traitement des dates). Ces modules pourront ensuite tre exports dans d'autres bases Access partir de l'option
Exporter un fichier du menu Fichier.
Lesmodulesdeclasseindpendantssontutilisslorsdelacrationdeclassesd'objets.Laprogrammation
based'objetsseradtailledanslechapitreObjetsetcollections.
LeslmentsdulangageVisualBasicdcritsdanscechapitrepeuventtreutilissdanslesdiffrentsmodules.
- 1 - ENI Editions - All rigths reserved
Lesprocdures
Les procdures sont des sousprogrammes qui permettent de dcomposer une tche de programmation
complexeenunesuitedetchespluspetitesetplussimples.
Elles permettent d'organiser le code l'intrieur des modules afin d'obtenir un code plus facile maintenir et
facilementrutilisable.
DansVBAAccess2007,ilexistetroistypesdeprocdures:
- les procdures Sub (pour sub routine) appeles sousprogrammes,
- les procdures Function appeles fonctions,
- les procdures Property appeles procdures de proprit.
Dans ce chapitre, nous utiliserons uniquement les procdures Sub et Function qui sont les plus courantes (les
procduresdepropritserontprsentesdanslechapitre Objetsetcollections).
Ilexistedespointscommunsentrecesdeuxprocdures :
- elles contiennent des instructions et/ou des mthodes VBA,
- elles acceptent des arguments,
- elles peuvent tre appeles depuis d'autres fonctions ou procdures Sub.
Certainescaractristiquessontspcifiquesauxfonctions:
- elles peuvent retourner des valeurs,
- elles peuvent tre appeles depuis une macro.
LesprocduresSub
IlexistedeuxtypesdeprocduresSub:
- les procdures Sub gnrales
- les procdures Sub vnementielles.
Une procdureSubgnrale est une procdure dclare dans un module standard ou au niveau gnral d'un
moduledeformulaireoud'tat.L'appeld'unetelleprocdureestexplicitementdfinidanslecodeduprogramme.
Exemple
Cette procdure gnrale demande l'utilisateur de confirmer son souhait de quitter l'application, et quitte Access si l'utilisateur
rpond Oui.
Ce code peut tre appel partir de tout bouton de commande ou option de menu permettant de quitter l'application.
Private Sub Quitter_Appli()
If Msgbox ("Voulez-vous quitter l'application ?",_
VbQuestion + VbYesNo) = vbYes Then
Quit
End If
End Sub
- 1 - ENI Editions - All rigths reserved
Une procdureSubvnementielleestuneprocdureassocieunvnementd'unobjet.D'ailleurssonnom
est compos du nom de l'objet activ, suivi du caractre soulign (_) et du nom de l'vnement. L'appel d'une
telleprocdureestimplicite,c'estdirequelaprocduren'estexcutequelorsquel'vnementassocialieu.
Exemple
Cette procdure vnementielle permet d'afficher le formulaire "Employs" lorsque l'utilisateur clique sur un bouton de commande
cmdEmploys.
Certaines procdures Sub vnementielles peuvent tre gnres automatiquement partir d'assistants (ex : assistant boutons de
commande).
LesprocduresFunction
Les procduresFunction,pluscourammentappeles fonctions,renvoientunevaleur,tellequelersultatd'un
calcul.Lavaleurretournedoitporterlenomdelafonction.
Ce sont les seules procdures pouvant tre appeles depuis une macro.
Le langage Visual Basic comporte de nombreuses fonctions intgres telles que les fonctions se rapportant aux
dates(day,week,year,format...).
Enplusdecesfonctionsintgres,vouspouvezcrervospropresfonctionspersonnalises.
Exemple
Cette fonction demande l'utilisateur de confirmer son souhait de quitter l'application, et renvoie True si l'utilisateur rpond Oui et
False sinon.
Dclarationdesprocdures
Syntaxed'uneprocdureSub
[Private | Public | Friend] [Static] Sub NomProc
([liste d'arguments])
<Squences d'instructions>
End Sub
Syntaxed'uneprocdureFunction
[Private | Public | Friend] [Static] Function
NomProc ([liste d'arguments]) [As Type]
<Squences d'instructions>
End Function
PourcreruneprocdureSubouFunction,vousdevezrespecterlestapessuivantes:
- dterminez la porte de la procdure,
- dclarez la procdure en fonction de son type avec le mot cl Sub ou Function, suivi du nom de la procdure,
Private Sub cmdEmploys_Click()
Docmd.OpenForm "Employs"
End Sub
Function Quitter_Appli() As Boolean
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
Quitter_Appli = True
Else
Quitter_Appli = False
End If
End Function
- 2 - ENI Editions - All rigths reserved
- dfinissez les arguments que vous voulez passer en paramtres la procdure en les indiquant entre parenthses aprs le nom
de la procdure,
- s'il s'agit d'une fonction, prcisez ventuellement le type de la valeur retourne aprs le mot cl As,
- rdigez le code permettant d'effectuer le traitement souhait. Utilisez ventuellement Exit Sub ou Exit Function pour sortir de
la procdure. S'il s'agit d'une fonction, affectez le rsultat au nom de la fonction,
- terminez la procdure par End Sub ou End Function.
Portedesprocdures
Laported'uneprocduredfinitl'tenduedesonutilisation.
Uneprocdurepublique(dclareaveclemotclPublic)peuttreappeledepuistoutmodule,touteprocdure
vnementielleoutoutemacrodelabasededonnes.
Uneprocdure prive(dclareaveclemotcl Private)nepeuttreappelequedepuisuneprocdureausein
dummemodule.
LaprocdureFriendestutiliseuniquementdanslesmodulesdeclasse.
LemotclStaticindiquequelesvariableslocalesdelaprocduresontprservesentrelesappels.
Enl'absencedesmentionsPublic,PrivateouFriend,lesprocduressontpubliquespardfaut.
Argumentsdesprocdures
Les arguments sont utiliss pour transmettre aux procdures des paramtres sous forme de donnes. Le nombre
d'argumentspeutvarierdezroplusieurs.
Pour dclarer un argument, vous pouvez simplement spcifier son nom. Nanmoins, la syntaxe complte de
dclarationd'unargumentestlasuivante:
[Optional] [ByVal | Byref] [ParamArray]
<variable> [As type]
Optional:indiquequel'argumentestfacultatif.Touslesargumentsfacultatifsdoiventtresituslafindela
listedesargumentsettredetypevariant.
Byval:indiquequel'argumentestpassparvaleur.Laprocdureaccdeunecopiedelavariablesavaleur
initialen'estdoncpasmodifieparlaprocdure.
Byref (option par dfaut):indiquequel'argumentestpassparrfrence.Laprocdurepeutainsiaccder
lavariableproprementditesavaleurrellepeut,decefait,tremodifieparlaprocdure.
ParamArray:utilisuniquementpourledernierargumentdelaliste,indiquequeceluiciestuntableaufacultatif
d'lmentsdetypeVariant.IlnepeuttreutilisaveclesmotsclsByVal,ByRefouOptional.
Variable:prciselenomdel'argument.Pourlesvariablestableau,ilnefautpasprciserlesdimensions.
Type:prciseletypededonnesdel'argumentpasslaprocdure(Byte,Boolean,Integer,Long...).
Lesargumentsnomms
Lepassaged'argumentsuneprocdureentenantcomptedeleurordred'apparitionestparfoisdifficilemettre
enuvre,notammentlorsquecertainsparamtressontfacultatifs.Demme,lalisibilitdesappelsdeprocdures
comportantplusieursparamtresn'estpastoujoursvidente.
Les arguments nomms facilitent le passage des arguments en prsentant les avantages suivants:
- 3 - ENI Editions - All rigths reserved
- l'ordre des arguments nomms n'a pas d'importance,
- les arguments facultatifs peuvent tre omis.
Lasyntaxedesargumentsnommsest :
NomArgument := Valeur
Exemple
peut tre transform en :
De mme l'ordre des paramtres peut tre modifi:
Appeld'uneprocdure
Syntaxe
[Call] NomProc [liste d'arguments]
SilemotclCallestindiqu,vousdevezplacerlalisted'argumentsentreparenthses.
Pourstockerlersultatd'unefonctiondansunevariable,utilisezlasyntaxesuivante:
<variable> = NomProc ( [liste d'arguments] )
Exemplesdeprocdures
Lorsquel'utilisateurcliquesurleboutondecommandecmdCalculduformulairedesaisied'unefacture,lemontant
delaremisedoittrecalculdelafaonsuivante:
- 5% du montant de la facture si celuici est suprieur ou gal 5000,
- 2% du montant de la facture si celuici est compris entre 1000 et 5000,
- 0 si le montant de la facture est infrieur 1000.
Procdurevnementielle
La fonction Remise est appele, avec comme argument, le montant de la facture (contenu dans la zone de texte txtMntFact du
formulaire). La remise calcule sera directement affiche dans la zone de texte txtMntRem.
Fonction
If MsgBox("Voulez-vous quitter l'application ?", _
vbYesNo + vbQuestion, "Gestion des ventes") = vbYes Then
Application.Quit
End If
If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _
Buttons:=vbYesNo + vbQuestion, _
Title:="Gestion des ventes") = vbYes Then
Application.Quit
End If
If MsgBox(Prompt:="Voulez-vous quitter l'application ?", _
Title:="Gestion des ventes", _
Buttons:=vbYesNo + vbQuestion) = vbYes Then
Application.Quit
End If
Private Sub cmdCalcul_Click()
txtMntRem = Remise (txtMntFact)
End Sub
- 4 - ENI Editions - All rigths reserved
Si le montant de la facture est infrieur 1000, Remise conserve sa valeur initiale, soit zro.
LafonctionMsgBox
Cettefonctionafficheunmessagedansunebotededialogue,ventuellementaccompagnd'uneicneetdeun
troisboutons.
Syntaxedel'instruction
Utiliselorsqu'iln'yaqu'unseulbouton.
MsgBox <message> [, [<type>][, <titre>]]
Syntaxedelafonction
Utiliselorsqu'ilyaplusd'unbouton.Ellepermetdesavoirquelboutonatactivgrcesavaleurderetour.
MsgBox (<message> , [<boutons>][, <titre>]
[,helpfile, context])
message :Textedumessagedanslabotededialogue.
boutons : Expression numrique qui reprsente la somme des valeurs spcifiant les boutons afficher, le style
d'icneutiliser,l'identitduboutonpardfaut,ainsiquelamodalit.
titre:Textedanslabarredetitre.
helpfile:Fichierd'aideutiliser.
Context:Rubriquedel'aideconcerne.
Valeursdel'argumentBoutons
Private Function Remise(Montant as Currency) as Currency
Const Taux1 = 0.05
Const Taux2 = 0.02
If Montant >= 5000 then
Remise = Montant * Taux1
Else
If Montant >= 1000 then
Remise = Montant * Taux2
End If
End If
End Function
Constante
symbolique
Valeur Signification
Nombreettypedeboutons
vbOKOnly 0 AfficheleboutonOKuniquement.
vbOKCancel 1 AffichelesboutonsOKetAnnuler.
vbAbortRetryIgnore 2 Affiche les boutons Abandonner,
RecommenceretIgnorer.
vbYesNoCancel 3 Affiche les boutons Oui, Non et
Annuler.
vbYesNo 4 AffichelesboutonsOuietNon.
vbRetryCancel 5 Affiche les boutons Recommencer et
Annuler.
vbMsgBoxHelpButton 16384 Afficheunboutond'aide.
Typed'icne
- 5 - ENI Editions - All rigths reserved
Lesvaleursderetourpossiblessontgalementdfiniespardesconstantes :
Exemples: utilisation de la fonction MsgBox
ou
vbCritical 16
Affichel'icne .
vbQuestion 32
Affichel'icne .
vbExclamation 48
Affichel'icne .
vbInformation 64
Affichel'icne .
Boutonpardfaut
vbDefaultButton1 0 Premierbouton.
vbDefaultButton2 256 Deuximebouton.
vbDefaultButton3 512 Troisimebouton.
vbDefaultButton4 768 Quatrimebouton.
Modalit
vbApplicationModal 0 Applicationmodale.
L'utilisateur doit rpondre au message
affich dans la zone de message avant
de pouvoir continuer travailler dans
l'applicationencours.
vbSystemModal 4096 Systmemodal.
Toutes les applications sont
interrompues jusqu' ce que l'utilisateur
rponde au message affich dans la
zonedemessage.
Prsentation
vbMsgBoxHelpButton 16384 Ajoute le bouton "Aide" la zone de
message.
vbMsgBoxSetForeground 65536 Affiche la fentre message au premier
plan.
vbMsgBoxRight 524288 Aligneletextedroite.
vbMsgBoxRtlReading 1048576 Dfinit un ordre de lecture de droite
gauche pour les systmes hbreux et
arabes.
Constante Valeurderetour Boutonchoisi
vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Recommencer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non
StrRep = MsgBox ("Voulez-vous continuer ?", 292, _
"Confirmation")
StrRep = MsgBox ("Voulez-vous continuer ?", _
vbYesNo + vbQuestion + vbDefaultButton2, _
- 6 - ENI Editions - All rigths reserved
Utilisation de l'instruction MsgBox
"Confirmation")
MsgBox "Rsultat faux",vbCritical,"Erreur"
- 7 - ENI Editions - All rigths reserved
Lesvariables
Lestypesdevariables
Lesvariablespermettentdestockerdesvaleursintermdiairestoutmomentdel'excutionducodeVBAafinde
lesexploiterultrieurementpoureffectuerdescalculs,descomparaisons,destests
Les variables sont identifies par un nom, permettant de faire rfrence la valeur qu'elles contiennent, et un
typedterminantlanaturedesdonnesqu'ellespeuventstocker.
Numriques
Chanesdecaractres
LetypeestString.Ilexistedeuxtypesdechanes:
- les chanes de longueur variable peuvent contenir environ 2 milliards (2
31
) de caractres.
- Les chanes de longueur fixe peuvent contenir de 1 environ 64000 (2
16
) caractres.
Exemple
Boolen
>
Type tendue Taille
en
octets
Byte 0255 1
Integer
(entier)
3276832767 2
Long
(entierlong)
2147483648
2147483647
4
Single
(relsimple
virgule
flottante)
3,402823E381,401298E45
(valeursngatives)
1,401298E453,402823E38
(valeurspositives)
4
Double
(reldouble
virgule
flottante)
1,79769313486231E308
4,94065645841247E324
(valeursngatives)
4,94065645841247E324
1,79769313486231E308
(valeurspositives)
8
Currency
(montaire
virgulefixe)
922337203685477,5808
922337203685477,5807
8
Decimal +/79 228 162 514 264 337 593 543950 335
sanssparateurdcimal
+/7,9228162514264337593543950335
avec 28 chiffres droite du sparateur
dcimal le plus petit nombre diffrent de zro
est+/0.0000000000000000000000000001
12
'Chane de longueur variable
Dim Adresse As String
'Chane de longueur fixe (20 caractres)
Dim Nom As String * 20
- 1 - ENI Editions - All rigths reserved
Letypeest Boolean.LavariablepeutprendrelavaleurTrue(Vrai)ouFalse(Faux)quiestsavaleurpardfaut.
Elleoccupedeuxoctets.
Date
Le type est Date. La variable peut prendre les valeurs de date et d'heure du 1er janvier 100 au 31 dcembre
9999.Elleoccupehuitoctets.
Variant
Letypeest Variant.Lavariablepermetdestockerdesvaleursdedonnesdetoutessortes:dates,nombres
virgule flottante, chanes de caractres, rfrences des objets... Elle occupe seize octets, plus un octet par
caractresilavaleurestunechane.
Objet
Le type est Object. La variable permet de stocker la rfrence un objet sous forme d'une adresse de quatre
octets.
C'estuntypegnrique,maispourobtenirdesperformancessuprieures,ilestsouhaitabled'utiliserpluttlenom
del'objettelqu'ilestdfinidanslazoneClassesdel'explorateurd'objets.
Exemple
Ouverture de base de donnes Access en utilisant le type gnrique Objet ou partir de l'objet Database.
Dfiniparl'utilisateur
Cetypeestutilissurtoutpourladclarationdevariablescontenantplusieurstypesd'informations.Ladfinition
dutypenepeutsefairequedanslasectiondedclarationd'unmodule.
Exemples
Dclaration d'un nouveau type Employs :
Utilisation du type Employs :
Lesdclarationsdevariables
Ilexistedeuxfaonsdedclarerdesvariables:implicitementetexplicitement.
Dclarationimplicite
Ds que VBA rencontre une variable qui n'a pas fait l'objet d'une dclaration explicite, il la dclare de faon
impliciteenluidonnantuntypeVariant.
Dim dbsEmp As Object
Dim dbsArt As Database
Set dbsEmp = OpenDatabase("C:\Application\" _
& "Employs.accdb")
Set dbsArt = OpenDatabase("C:\Application\" _
& "Articles.accdb")
Public Type Employs
Matricule As String * 5
Nom As String * 20
Age As Integer
Service As String * 10
End Type
Dim NewEmploy As Employs
NewEmploy.Matricule = "15253"
...
- 2 - ENI Editions - All rigths reserved
LetypeVariantpermetdestockersuccessivementdanslammevariabledesvaleursdetypediffrent.Letype
delavariablevolueenfonctiondelavaleurquiluiestaffecte.
Dclarationexplicite
Lavariableestdclareavantsonutilisation.
Ilestpossibled'imposerladclarationexplicitedesvariablesenutilisantdanslasectiondedclarationdechaque
module, l'instructionOptionExplicit.PourquecetteinstructionsoitdfiniepardfautdansVBA,activezl'option
DclarationdesvariablesobligatoiredumenuOutilsOptionsongletditeur.
Les dclarations explicites de variables peuvent se faire dans la section de dclarations des modules, ou dans le
corpsd'uneprocdureoud'unefonction.
Ladclarationestraliseparl'unedesquatreinstructionssuivantesutilisantlammesyntaxe:
- au niveau d'une procdure, d'une fonction ou d'un module :
Dim <Nomvariable> [As Type]
Static <Nomvariable> [As Type]
- au niveau d'un module :
Private <Nomvariable> [As Type]
Public <Nomvariable> [As Type]
chaquefoisquel'instructionDimestexcute,lavariableestrinitialise(0pournumrique,videpourString,
EmptypourVariant).S'ilestncessairedegarderlaprcdentevaleur,ilfaututiliserStaticlaplacedeDim.
Si aucun type n'est prcis (ex : dim var), le type par dfaut Variant est affect la variable.
Laportedesvariables
Une variable est dite localeunefonctionouuneprocdure,sielleestdclaredanslecorpsdelafonction
oudelaprocdureavec Dimou Static.Cettevariablen'estpasconnue(visible)endehorsdelafonctionoude
laprocdure.
Unevariablepeuttrevisibledetouteslesprocduresoufonctionsd'unmodule(standard,declasse,formulaire
outat),sielleestdclaredanslasectiondedclarationdumoduleavecPrivate(ouDim).
Unevariableest publiquetoutel'application(c'estdirevisibledepuisn'importequelendroitdel'application),
sielleestdclaredanslasectiondedclarationd'unmoduleavecl'instructionPublic.
Pour faire rfrence, partir d'un module, une variable publique se trouvant dans un autre module de formulaire ou d'tat, il convient
d'utiliser la syntaxe suivante :
Forms!<NomFormulaire>.<NomVariable>
Private Sub Affectation()
' Le type de la variable devient String
var = "Bonjour"
MsgBox TypeName(var)
' Le type de la variable devient Integer
var = 12
MsgBox TypeName(var)
' Le type de la variable devient Double
var = 6.55957
MsgBox TypeName(var)
' Le type de la variable devient Boolean
var = True
MsgBox TypeName(var)
End Sub
- 3 - ENI Editions - All rigths reserved
Reports!<NomEtat>.<NomVariable>
Lestableaux
Untableausedclaredelammefaonquelesvariables,avecdesinstructionsDim,Static,PrivateouPublic.
Un tableau est une variable comportant plusieurs compartiments permettant de stocker autant de valeurs. Par
opposition,unevariableclassiquedsigneuncompartimentdestinuneseulevaleur.
On peut faire rfrence au tableau globalement ou accder individuellement ses lments en utilisant des
indices.
Quel que soit le type des lments, un tableau ncessite 20 octets de mmoire, auxquels viennent s'ajouter
quatreoctetspourchaquedimensionetlenombred'octetsoccupsparlesdonnes.
Siletypededonnesn'estpasspcifi,leslmentsdutableaudclarprennentletypeVariant.
Le premier poste d'un tableau se voit attribuer l'indice 0 par dfaut. Toutefois, il est possible de mettre cette
valeurpardfaut1enutilisant,ensectiondedclaration,l'instructionOptionBase1.
L'utilisationd'uneclauseTopermetgalementdedfinirexplicitementlesindicesdedbutetdefin.
Exemples
Dclaration de diffrents tableaux:
Utilisation d'un tableau deux dimensions.
L'exemple suivant permet de crer une table de multiplication : chaque lment du tableau Multiplie est gal au rsultat de la
multiplication de ses indices. Chaque ligne de la table est affiche dans la fentre excution (mthode Print de l'objet Debug).
' 12 lments indics de 0 11
Dim Remise (11) As Single
' 12 lments indics de 1 12
Dim Frais (1 To 12) As Single
' 2 dimensions : la premire indice de 0 10 et
' la seconde de 1 15
Dim Train (10,1 To 15) As String
Option Base 1
' 12 lments indics de 1 12
Dim Frais (12)
Sub Affiche_Tableau()
Dim Multiplie(1 To 10, 1 To 10) As Integer
Dim i, j As Integer
Dim strResult As String
' 1re ligne de la table de multiplication
For i = 1 To 10
strResult = Format(i, "000") & " "
Next i
Debug.Print strResult
' Initialisation du tableau
For i = 1 To 10
strResult = Format(i, "00")
For j = 1 To 10
Multiplie(i, j) = i * j
strResult = strResult & " " & Format(Multiplie(i, j),
"000")
Next j
Debug.Print strResult
Next i
' Renvoie le rsultat de 4 * 7
MsgBox "4 * 7 = " & Multiplie(4, 7)
' Renvoie le rsultat de 7 * 4
MsgBox "7 * 4 = " & Multiplie(7, 4)
- 4 - ENI Editions - All rigths reserved
Rsultat dans la fentre d'excution.
Lestableauxdynamiques
Il s'agit de tableaux dont les dimensions sont dfinies l'excution. Ils permettent l'optimisation de la place
occupeenmmoire.
Dclaration :
Utilisation :
Avant de l'utiliser, il faut le dimensionner l'aide de l'instruction Redim :
Il est possible d'utiliser l'instruction ReDimpourmodifierletableaudynamiqueaussisouventquencessaire.Par
dfaut,lesvaleursprsentesdansletableausontcrases.L'instructionReDim Preservepermetd'tendreun
tableautoutenconservantlesvaleursexistantes.
Lesconstantes
Uneconstantereprsenteunevaleurnumriqueoudetypechanequinedoitpastremodifie.
L'instruction Constpermetdedclareruneconstanteetdedfinirsavaleurfixe.Unefoisdclare,laconstante
nepeuttremodifienirecevoirunenouvellevaleur.
Ladclarationd'uneconstanteestralisedansuneprocdureoudanslasectiondclarationd'unmodule.
Lesconstantesdeniveaumodulesontprivespardfaut.
Pourdclareruneconstantedeniveaumodulepublique,ilestncessairedefaireprcderl'instructionConst du
motclPublic.
Exemple
Lesconstantesintrinsques
End Sub
Dim Tableau ()
ReDim Tableau (15 To 50)
ReDim Preserve Tableau (15 To 70)
acForm
vbCurrency
- 5 - ENI Editions - All rigths reserved
Lesconstantesintrinsquessontdesconstantesmisesdispositionparlesapplicationsellesmmes. C'est ainsi
qu'Access2003possdesespropresconstantesintrinsquesquisontvisiblespartirdel'explorateurd'objets.
UneconstanteintrinsquepeuttreutilisedansunemacrooudansducodeVisualBasic.
Les constantes intrinsques sont caractrises par un prfixe de deux lettres identifiant la bibliothque d'objets
oestdfinielaconstante.
Prfixedesconstante
Les constantes de la bibliothque Visual Basic sont dcrites dans l'annexe B de cet ouvrage. Pour utiliser les constantes de Microsoft
Office, vous devez slectionner la rfrence "Microsoft Office 12.0 Object Library" (option Rfrences du menu Outils).
Il existe plusieurs catgories de constantes intrinsques (constantes d'action, constantes de procdures vnementielles...).
Exemple
L'exemple suivant montre comment afficher un formulaire et le personnaliser. Il utilise les constantes strNomAppli et strNomSoc
dclares dans le code et plusieurs constantes intrinsques.
Rsultat dans Access : affichage du formulaire employ personnalis.
Bibliothque Prfixe Exemples
Microsoft
Access
ac acForm,acNormal
VisualBasic vb
vbCurrency,
vbYellow
Microsoft
Office
mso msoSortByFileName
- 6 - ENI Editions - All rigths reserved
- 7 - ENI Editions - All rigths reserved
Lesstructuresdedcision
Ilestsouventncessairedetesterdesconditionsspcifiquesavantd'excuterdesinstructions.
Les structures de dcisions, appeles aussi alternatives ou branchements conditionnels, permettent, au terme
d'unevaluation,d'opterpourunblocdecodeouunautre.
Ondistinguedeuxinstructionsdebranchementconditionnel :
- If ... Then ... Else
- Select ... Case
La fonction IIf peut galement tre utilise pour dfinir une valeur en fonction d'une condition.
L'instructionIF
I If
Permetd'excuterdesinstructionsenfonctiondursultatd'unecondition.
LesinstructionsIf...Then...Elsepeuventtreimbriquesautantdefoisquencessaire.
La syntaxe multiligne, avec une indentation approprie, prsente l'avantage d'une plus grande lisibilit.
Syntaxe1(suruneligne)
If <cond.> Then <inst.> [Else <inst.>]
<inst.>peuttreconstitudeplusieursinstructionssparesparlecaractre(:).
Syntaxe2(surplusieurslignes)
If <condition 1> Then
<squence d'instructions 1>
[ElseIf <condition 2> Then
<squence d'instructions 2>]
[Else
<squence d'instructions 3>]
End If
Autrepossibilit
If <condition 1> Then
<squence d'instructions 1>
[Else
If <condition 2> Then
<squence d'instructions 2>
[Else
<squence d'instructions 3>]
End If]
End If
Exemple
Affiche le rsultat de la comparaison entre A et B:
If A>B Then
MsgBox "A>B"
Else
If A = B Then
MsgBox "A=B"
Else
- 1 - ENI Editions - All rigths reserved
L'instructionSelectCase
I Select Case
Excutedessquencesd'instructionsspcifiesenfonctiondelavaleurd'uneexpression.
L'instructionSelectCasepermetderemplaceravantageusementleElseIfdansdesinstructionsIf...Then...Else
lorsdelacomparaisonentreuneexpressionetplusieursvaleurs.
Syntaxe
Select Case <expression tester>
[Case <liste d'expressions 1>
<squence d'instructions 1>]
[Case <liste d'expressions 2>
<squence d'instructions 2>]
[Case Else
<squence d'instructions 3>]
End Select
<liste d'expression>peutprendrelesformessuivantes:
- valeur (ex : Case 10)
- liste de valeurs (ex : Case 1, 5, 10)
- plage de valeurs (ex : Case 1 To 5)
- expression conditionnelle (ex : Case Is >= 5)
Exemple
Affiche un commentaire sur la temprature.
LafonctionIIf
I IIf
Retourneunevaleurenfonctiond'unecondition.
Syntaxe
IIf (<condition>, <valeur si vrai>, <valeur si faux>)
MsgBox "A<B"
End If
End If
Select Case Temprature
Case 0
MsgBox "Glace"
Case 1 To 10
MsgBox "Froid"
Case 11 To 16
MsgBox "Frais"
Case 17, 18, 19
MsgBox "Temprature intrieure " _
& "d'une maison en hiver"
Case 20 To 25
MsgBox "Agrable"
Case Is > 25
MsgBox "Chaud"
Case Else
MsgBox "Temprature non refrence"
End Select
- 2 - ENI Editions - All rigths reserved
Exemple
Ilestpossibled'imbriquerplusieursappelsdefonctionIIf.
Exemple
Dim bln As Boolean
bln = IIf(A = B, True, False)
Dim IntI As Integer
IntI = IIf(A = B, IIf(B = C, 1, 0), 0)
- 3 - ENI Editions - All rigths reserved
Lesstructuresenboucles
Lesstructuresenboucles(ourptitives)permettentderpterl'excutiond'unensembled'instructions.
Ondistingueplusieurstypesdestructuresenboucles:
Do...Loop
While...Wend
For...Next
For Each...Next
Do...LoopetWhile...Wendrptentuntraitementjusqu'cequ'unecertaineconditionsoitralise.
For...Nexteffectueuntraitementunnombredefoisdonn,enfonctiond'uncompteur.
ForEach...Nextpermetdeparcourirleslmentsd'unecollection.
L'instructionDo...Loop
I Do...Loop
Excute une squence d'instructions tant que (While) ou jusqu' ce que (Until) la condition spcifie soit
vrifie.
Syntaxe1
Squenced'instructionsventuellementnonexcute(conditiontesteavantlasquence).
Do [{While | Until} <condition>]
<squence d'instructions>
[Exit Do]
[<squence d'instructions>]
Loop
Syntaxe2
Squenced'instructionsexcuteaumoinsunefois(conditiontesteaprslasquence).
Do
<squence d'instructions>
[Exit Do]
[<squence d'instructions>]
Loop [{While | Until} <condition>]
Exit Do est souvent utilis aprs l'valuation d'une condition interne la boucle et permet de sortir de la boucle sans que la condition
de contrle de la boucle ne soit vrifie.
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
Dim intCpt As Integer
Dim FraisAnnuel As Currency
FraisAnnuel = 0
IntCpt = 0
Do
IntCpt = IntCpt + 1
FraisAnnuel = FraisAnnuel + FraisMensuel (IntCpt)
Loop Until IntCpt = 12
- 1 - ENI Editions - All rigths reserved
L'instructionWhile...Wend
I While...Wend
Excuteunesquenced'instructionstantquelaconditionspcifieestvrifie.
Syntaxe
While <condition>
<squence d'instructions>
Wend
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
L'instructionFor...Next
I For...Next
Permetderpterl'excutiond'unesquenced'instructionsenfonctiond'uncompteur.
Syntaxe
For <compteur> = <dbut> To <fin> [Step <incrment>]
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next [<compteur> [,<compteur2>] [, ...]]
Exit For souvent place aprs l'valuation d'une condition, permet de sortir prcocement de la boucle.
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
LemotclSteppermetd'incrmenteroudedcrmenterlavariabledecompteurd'unpasspcifi.
Exemple
La variable de compteur j est incrmente de 5 chaque itration. la fin de la boucle, total correspond la somme de 5, 10, 15,
MsgBox "Frais Annuels = " & FraisAnnuel
Dim intCpt As Integer
Dim FraisAnnuel As Currency
FraisAnnuel = 0
intCpt = 1
While intCpt <= 12
FraisAnnuel = FraisAnnuel + FraisMensuel (intcpt)
intCpt = intCpt + 1
Wend
MsgBox "Frais Annuels = " & FraisAnnuel
Dim intCpt As Integer
Dim FraisAnnuel As Currency
FraisAnnuel = 0
For intCpt = 1 To 12
FraisAnnuel = FraisAnnuel + FraisMensuel (intCpt)
Next
MsgBox "Les frais annuels sont de :" & FraisAnnuel
- 2 - ENI Editions - All rigths reserved
et 20.
L'instructionForEach...Next
I For Each ... Next
Permetdeparcourirtousleslmentsd'untableauoud'unecollection.
Syntaxe
For Each <lment> In <tableau>/<collection>
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next [lment]
Exemple
Affiche les frais de chaque mois (cf. exemple For Next):
Dim j As Integer
Dim total As Integer
total = 0
For j = 5 To 20 Step 5
total = total + j
Next j
MsgBox "Le total est de " & total
Dim Frais As Currency
For Each Frais In FraisMensuel
MsgBox Frais
Next
- 3 - ENI Editions - All rigths reserved
Lesoprateurs
Les oprateurs permettent d'effectuer des oprations arithmtiques sur des variables et/ou des constantes, de
comparerdesvariablesentreelles,detesterplusieursconditions...
Ondistingueplusieurscatgoriesd'oprateurs:
- les oprateurs arithmtiques,
- les oprateurs de comparaison,
- les oprateurs logiques,
- l'oprateur de concatnation.
L'oprateur d'affectation est le signe d'galit. La valeur de l'expression situe droite du signe gal est affecte la variable situe
gauche du signe. (exemple : IntA = 12, 12 est affect la variable IntA, IntA = IntB * 12, la valeur d'IntB multiplie par 12 est affecte
IntA).
Lesoprateursarithmtiques
Ilspermettentd'effectuerdescalculsarithmtiquespartirdevariableset/oudeconstantesnumriques.
Oprateur Calculralis
+ Addition
Soustraction
/ Divisionaveccommersultatunnombrevirguleflottante
Mod Restedeladivisiondedeuxnombres
\ Divisionaveccommersultatunnombreentier
* Multiplication
^ lvationlapuissance
Lesoprateursdecomparaison
Ilspermettentdecomparerdeuxvaleursnumriquesoudeuxchanesdecaractres.
Oprateur Calculralis
< Infrieur
<= Infrieurougal
> Suprieur
>= Suprieurougal
= gal
<> Diffrentde
L'instructionOptioncompareutiliseauniveaumodulepermetdedfinirlamthodedecomparaisonpardfaut
- 1 - ENI Editions - All rigths reserved
qu'ilconvientd'utiliserlorsdelacomparaisondechanesdecaractres.Ellepeutprendretroisvaleurs:
CompareBinary
(option par dfaut) fournit des comparaisons de chanes bases sur un ordre de tri driv de la reprsentation
binaireinternedescaractres :
A<B<E<Z<a<b<e<z<<<<<...
CompareText
fournit des comparaisons de chanes bases sur un ordre de tri qui ne distingue pas les majuscules des
minuscules:
(A=a)<(=)<(B=b)<(E=e)<(=)<(Z=z)<(=)...
CompareDatabase
fournit des comparaisons de chanes bases sur l'ordre de tri dtermin par l'identificateur de paramtres
rgionauxdelabasededonnescourante.
Lesoprateurslogiques
Ilspermettentdetestersimultanmentdeux(ouplusieurs)valeursboolennesouexpressionsrenvoyantcetype
valeur.Ilssontgnralementutilissavecl'instructionIf.
Oprateur Calculralis
And Si toutes les expressions ont la valeur True, le rsultat est True. Si l'une des expressions a la
valeurFalse,lersultatestFalse.
Or Sil'uneaumoinsdesexpressionsapourvaleurTrue,lersultatestTrue(ouinclusif).
Xor SiuneetuneseuledesexpressionsapourvaleurTrue,lersultatestTrue(ouexclusif).
Not Renvoielecontrairedel'expression.
Eqv RenvoieTruesilesdeuxexpressionssontidentiques.
Exemple
(A>=1)And(A<=9)renvoieTruesiAestcomprisentre1et9,
Not(A>=10)renvoieTruesiAeststrictementinfrieur10,
(A>0)Or(B>0)Or(C>0)renvoieTruesiaumoinsl'unedesvaleursestpositive.
L'oprateurdeconcatnation
L'oprateurdeconcatnationestlesigne&.Ilpermetd'assemblerdeschanesdecaractres,desvaleursetdes
expressions.Lersultatestunechanedecaractres.
Exemple
Concatnation du nom et du prnom spars par un espace:
Prioritdesoprateurs
Lorsque plusieurs oprateurs sont contenus dans une mme expression, chacun est valu dans un ordre
prdfini,appelprioritdesoprateurs.
StrNomPre = Nom & " " & Prenom
- 2 - ENI Editions - All rigths reserved
Les oprateurs sont valus dans l'ordre suivant : oprateurs arithmtiques, oprateurs de comparaison,
oprateurs logiques. Les oprateurs de comparaison ont la mme priorit c'estdire qu'ils sont valus dans
leurordred'apparition,degauchedroite.
Lesoprateursarithmtiquesetlogiquessontvalusdansl'ordredeprioritcidessous(prioritdcroissantede
gauchedroite):
Arithmtique :^,*,/,Mod,+,
Logique :Not,And,Or,Xor,Eqv
Exemple
L'expression "3 + 4 * 5" donne comme rsultat 23. La multiplication (4*5) est effectue avant l'addition ( + 3):
L'utilisation de parenthses permet de modifier l'ordre de priorit afin qu'un lment d'une expression soit valu avant les autres. Les
oprations situes l'intrieur de parenthses sont toujours traites avant les autres. Exemple : l'expression "(3 + 4) * 5" renvoie 35.
L'addition est effectue en priorit. Il est conseill d'utiliser des parenthses pour une meilleure lisibilit du code.
- 3 - ENI Editions - All rigths reserved
Lesrglesd'critureducode
Lescommentaires
Lescommentairespermettentdedocumenterunprogrammeafindelerendrepluslisible.
Syntaxe
Rem <commentaire>
ou
'<commentaire>
Exemple
Lecaractredecontinuation
UneinstructionVBApeuttrecritesurplusieurslignesenutilisantuncaractredecontinuation:lecaractre
desoulignement(_)prcdd'unespace.
Exemple
Bien sr, cet exemple n'est pas digne d'une programmation structure, mais il met en vidence le fait qu'il est
possibledescinderunelignedecoden'importequelendroit.
L'indentation
Ilestimportantd'alignersurlemmeretraitlesinstructionsdemmeniveau.L'entteetlepieddeprocdure
tantalignsgauche,lecontenudoittredcald'uncrandroitel'aided'unetabulation.
Cesindentationsarentlastructuredelaprocdurequidevientainsipluslisible.
Lesnomsdesprocdures,variablesetconstantes
Lesnomsdesprocdures,variablesetconstantesdoiventrespecterlesrglessuivantes:
- ils doivent commencer par une lettre.
- Ils ne doivent pas contenir plus de 255 caractres.
'=======================================================================
Rem Procdure permettant de comparer deux zones
Rem de texte txtA et txtB
'=======================================================================
Private Sub cmdRsultat_Click ()
'si txtA suprieur txtB
If txtA > txtB Then
lblRsultat.Caption = "A>B"
Else
'si txtA gal txtB
If txtA = txtB Then
lblRsultat.Caption = "A=B"
Else
'txtA infrieur txtB
lblRsultat.Caption = "A<B"
End If
End If
End Sub
If A _
> _
b then _
- 1 - ENI Editions - All rigths reserved
- Ils peuvent tre composs de lettres, de chiffres et du caractre "blanc soulign"(_).
- Ils ne peuvent comprendre ni caractres de ponctuation ni espaces.
- Ils ne doivent pas correspondre des mots rservs.
- Ils doivent tre uniques l'intrieur d'une mme porte.
Exemples
Nbclient
Nb_client
Nbclient1
- 2 - ENI Editions - All rigths reserved
Lesconventionsd'appellation
Il est recommand d'utiliser des conventions d'appellation pour les variables, les contrles et les objets. Elles
permettent de standardiser le code et par consquent de le rendre plus lisible et plus facile maintenir par
diffrentsdveloppeurs.
Conventiond'appellationdesvariables
Ilestrecommandd'utiliserdeuxprfixes:
- le premier pour prciser la porte de la variable : g pour globale, m pour module, aucun prfixe pour locale,
- le deuxime pour prciser son type.
Exemple
gstrNomvariable globale de type String
intQuantitvariable locale de type Integer
Typedevariable Prfixe
Boolen bln
Byte byt
Currency cur
Date,heure dtm
Double dbl
Error err
Typedevariable Prfixe
Integer int
Long lng
Object obj
Single sng
String str
Dfiniparl'utilisateur udt
Variant var
Conventiond'appellationdescontrles
Delammefaonquepourlesvariables,lesnomsdecontrlesdesformulairesetdestatsdoiventtreprfixs
selonleurtype.
Contrle Prfixe
DonnesADO ado
- 1 - ENI Editions - All rigths reserved
Casecocher chk
Zonedelistemodifiable(combo) cbo
Boutondecommande cmd
Cadre(frame) fra
Grouped'option grp
Image img
tiquette lbl
Boutond'option opt
Zonedetexte txt
Conventiond'appellationdesobjets
LesobjetsAccessoulesvariablesobjetsserapportantauxobjetsAccesspeuventaussitreprfixs.
Contrle Prfixe
Table tbl
Requte qry
Formulaire frm
tat rpt
Macro mac
Index idx
Champ fld
Collection col
Proprit pty
Pagesd'accsauxdonnes pag
- 2 - ENI Editions - All rigths reserved
Prsentation
VBA Access est un langage de programmation orient objet, mme s'il ne dispose pas de toutes les
fonctionnalitsdeslangagesdecetype.
LaplupartdeslmentsmanipulsdansAccesssontdesobjets:lestables,leschamps,lesenregistrements,les
formulaires...
Les objets sont organiss selon un modle hirarchique : certains objets contiennent des objets qui en
contiennent euxmmes d'autres... Par exemple, l'objet Application est compos de plusieurs objets Form
(formulaires de l'application), qui sont euxmmes composs de plusieurs objets Control (contrles d'un
formulaires).
Unensembled'objetsdemmenatureconstitueunecollection(collection Forms:ensembledesformulairesou
objetsFormdel'application).
Un objet dispose d'un ensemble de caractristiques appeles proprits (ex : taille, couleur pour un contrle
dans un formulaire...) et de comportements ou actions appeles mthodes (ex : la mthode close de l'objet
Formulaire permet de fermer celuici). Il rpond des vnements provoqus par l'utilisateur (ex : clic sur un
boutondecommande)ouparlesystme.
Les classes sont des modles permettant de crer des objets de mme nature. Les objets issus d'une mme
classe hritent systmatiquement de toutes les mthodes, proprits et vnements de leur classe d'origine. Il
estpossibledecrerdesclassesd'objetsavecVBAAccessenutilisantdesmodulesdeclasse.
Ilexisteplusieursensemblesd'objetsdansAccess:
- les objets gnraux (formulaires, tats ...),
- les objets d'accs aux donnes (modle DAO),
- les objets de donnes ActiveX (modle DAO).
Chaque ensemble peut tre reprsent sous forme d'un modle hirarchique. Ce chapitre dcrit plus
particulirement les objets gnraux d'Access, les objets d'accs aux donnes seront abords dans le chapitre
suivant.
- 1 - ENI Editions - All rigths reserved
Lemodleobjetd'Access
Lediagrammeciaprspermetdedistinguerlesprincipauxobjetsglobauxd'Access.
Principalescollections
CommandBars Collection d'objets CommandBar qui reprsentent les
barresdecommandesdel'applicationactive.
COMAddIns Collection d'objets COMAddIn qui fournissent des
informations sur un complment COM inscrit dans le
RegistreWindows.
Forms Collection contenant tous les formulaires (objets Form)
ouverts dans la base de donnes active. Pour rpertorier
tous les formulaires de la base de donnes, qu'ils soient
ouverts ou ferms, utilisez la collection AllForms de l'objet
- 1 - ENI Editions - All rigths reserved
Autrescollections
ObjetsduModle
CurrentProject.
Reports Collection contenant tous lestats (objets Report) ouverts
dans la base de donnes active. Pour rpertorier tous les
tatsdelabasededonnes,qu'ilssoientouvertsouferms,
utilisezlacollectionAllReportsdel'objetCurrentProject.
Modules Collection contenant tous les modules standards et
modulesdeclasseouvertsdanslabasededonnesactive.
References Collection contenant toutes les rfrences des
bibliothques d'objets appartenant d'autres applications
(fichiers dll, contrles ActiveX...) actuellement slectionnes
(les rfrences sont slectionnes partir de la bote de
dialogueRfrencedumenuOutils).
Printers Collection contenant les objets Printer reprsentant toutes
lesimprimantesdisponiblessurlesystme.
DependencyObjects Collection des objets Access contenus dans un objet
DependencyInfo (informations de dpendance d'un objet
AccessObject). Pour renvoyer une collection Dependency
Objects, utilisez la proprit Dependants ou Dependencies
del'objetDependencyInfo.
AccessObjects
Properties
Collection d'objets AccessObjectsProperty reprsentant
unecaractristiqueintgreoudfinieparl'utilisateurd'un
objetAccessObject(objetAccess).
SmartTags Collection d'objets SmartTag reprsentant une balise
active associe un contrle dans un formulaire, un
rapportouunepaged'accsauxdonnes.
SmartTagActions Collectiond'actionspourunebaliseactiveindividuelleou
pouruntypedebaliseactive.Lesactionsdebaliseactive
sont des processus programms dans des balises actives
qui permettent aux utilisateurs d'effectuer certaines
fonctions lies la balise active. Par exemple, pour une
balise active, une action peut consister accder un
site Web, tandis qu'une autre action insre des
informations de contact provenant de MicrosoftOutlook,
et qu'une autre encore affiche une carte et des
instructionsdeconduite.
SmartTagProperties Collection d'objets SmartTagProperty reprsentant les
proprits lies une balise active. Pour renvoyer la
collection SmartTagProperties d'une balise active, utilisez
lapropritPropertiesdel'objetSmartTag.
ImportExport
Specifications
Collection d'objets contenant toutes les informations dont
Access a besoin pour effectuer automatiquement une
oprationd'importationoud'exportation.
AnswerWizard Objetreprsentantl'aideintuitivedeMicrosoftOffice.
Application Objet faisant rfrence l'application Microsoft Access
active.
Assistant Objet reprsentant le Compagnon Office de Microsoft. Vous
pouvez utiliser la proprit Visible pour afficher le
Compagnon,lapropritOnpouractiverleCompagnon,etla
propritFileNamepourmodifierleCompagnon.
AutoCorrect Objet reprsentant les options de correction automatique
d'Access.
DBEngine Objet reprsentant le moteur de base de donnes Microsoft
Jet. En tant qu'objet principal la racine de la hirarchie,
l'objet DBEngine contient et contrle tous les autres objets
- 2 - ENI Editions - All rigths reserved
d'accsauxdonnes.
DependencyInfo Objet reprsentant les informations de dpendance d'un
objetAccess.
DoCmd Objet permettant de convertir en Visual Basic des actions
Macro. La plupart des actions macros peuvent tre ainsi
traduitesenVBA.
FileDialog Objet permettant d'accder des fonctionnalits similaires
celles des botes de dialogue standards Ouvrir et
Enregistrer.
LanguageSettings Objet renvoyant des informations sur les paramtres
linguistiquesdel'application.
Screen Objet permettant d'accder au formulaire, l'tat ou au
contrleactuellementactif.
TempVar Objet permettant d'changer facilement des donnes entre
desprocduresVBAetdesmacros.
VBE Objet reprsentant l'diteur Microsoft Visual Basic dition
Applications.
CurrentProject Objet regroupant plusieurs collections d'objets Access
spcifiques(AllForms:collectiondetouslesformulairesde
labase)...
CurrentData Objet regroupant plusieurs collections d'objets Access
d'accs aux donnes. (AllTables : collection de toutes les
tablesdelabase)...
- 3 - ENI Editions - All rigths reserved
Principesd'utilisationdesobjetsetdescollections
Lesproprits
Les proprits servent dcrire un objet. Certaines proprits sont en lecture seule et ne peuvent donc pas
tremodifiesparducodeVBA.
Syntaxe
{<objet> | <variable objet>}.<proprit>
Exemple
Propritsreprsentantdesobjets
Les objets globaux et les objets instancis dans le code partir de classes fournies par VBA possdent des
propritsdontlavaleurestmisejourautomatiquementparlesystme.
Lesmthodes
Lesmthodespermettentd'effectuerdesactionspropresauxobjets.
Dim strVersion As String
' Rcupration de la proprit version
' de l'objet application
' Cette proprit est en lecture seule
strVersion = Application.Version
' Modification du pointeur de la souris
' 0 : pointeur par dfaut - 11 : Sablier
If Screen.MousePointer = 0 Then
Screen.MousePointer = 11
Else
Screen.MousePointer = 0
End If
End Sub
Proprit De l'objet Contenu
ActiveControl Screen Contrle actif.
ActiveDataAccessPage Screen Page active ou page contenant le
contrle actif.
ActiveForm Screen Formulaire actif.
ActiveReport Screen tat actif.
Application Objets multiples L'objet Application d'Access.
DBEngine Application L'objet DBEngine.
Form Contrle
sous-formulaire
Objet Form associ au contrle de
sous-formulaire.
Me Form ou Report L'objet Form ou Report dont le code
est en cours d'excution.
Module Form ou Report Module de l'objet Form ou Report.
Parent Objets multiples Objet ou collection qui contient l'objet.
PreviousControl Screen L'objet Control prcdemment actif.
RecordsetClone Form Un Recordset clone du jeu
d'enregistrements sous-jacent du
formulaire.
Report Contrle
sous-tat
Objet Report associ au contrle de
sous-tat.
Section Form, Report Section d'un formulaire ou
d'un tat.
- 1 - ENI Editions - All rigths reserved
Ellesseprsententcommedesprocdures:
- elles peuvent ou non utiliser des arguments,
- certaines mthodes peuvent renvoyer une valeur au mme titre que les procdures Function, d'autres non au mme titre que
les procdures Sub.
Syntaxedemthodenerenvoyantpasdevaleur
{<objet> | <variable objet>}.<mthode> [<Liste d'arguments>]
Exemple
Lesdiffrentsargumentsdelamthodedoiventtresparspardesvirgules.Siunargumentfacultatifn'estpas
dfiniexplicitement,lamthodeutiliseraunevaleurpardfaut.
Syntaxedemthoderenvoyantunevaleur
<variable> = {<objet> | <variable objet>}.<mthode>
([<Liste d'arguments>])
Exemple
Lesvnements
Un vnement est une action spcifique qui se produit sur un objet. Microsoft Access est en mesure de
rpondreplusieurstypesd'vnements :ouvertureoufermeturedeformulaires,clicsdesouris,modificationde
donnes,etc.Lesvnementsrsultentgnralementd'uneactiondel'utilisateur.
L'utilisation d'une procdure vnementielle vous permet d'associer votre propre code en rponse un
vnementquiseproduitdansunformulaire,untat,uncontrle...
Exemple
Lorsque l'utilisateur clique sur le bouton de commande "Quitter", une bote de dialogue demandant une confirmation est affiche.
' Modification de l'option "Compacter lors de la
fermeture"
' Mthode SetOption ne renvoyant pas de valeur
Application.SetOption "Auto Compact", True
Private Sub cmdMethodes_Click()
' Variable boolenne
Dim blnCompact As Boolean
' Rcupration de l'option
' "Compacter lors de la fermeture"
' Mthode GetOption renvoyant une valeur boolenne
blnCompact = Application.GetOption("Auto Compact")
' Modification de l'option
' Mthode SetOption ne renvoyant pas de valeur
If blnCompact Then
Application.SetOption "Auto Compact", False
MsgBox "La base ne sera pas compacte lors de la
fermeture", _
vbExclamation
Else
Application.SetOption "Auto Compact", True
MsgBox "La base sera compacte lors de la fermeture", _
vbExclamation
End If
End Sub
Private Sub cmdQuitter_Click()
' Demande l'utilisateur de confirmer
- 2 - ENI Editions - All rigths reserved
La gestion des vnements tant l'un des aspects les plus importants dans le dveloppement d'applications Access, le chapitre
Gestion des vnements est entirement consacr ce sujet.
Lescollections
Pourfairerfrenceunobjetd'unecollection,vouspouvezutiliserl'unedessyntaxessuivantes:
NomCollection!NomObjet
NomCollection![NomObjet]
NomCollection("NomObjet")
NomCollection(var)
ovarreprsenteunevariabledetypestringcontenantlenomdel'objet.
NomCollection(index)
oindexreprsentelenumrod'indexdel'objetdanslacollection.
Afin d'assurer une meilleure lisibilit du code, il est conseill d'utiliser toujours la mme syntaxe. Les 3
ime
et 5
ime
syntaxes sont
recommandes car elles permettent d'activer l'assistant de l'diteur de code. De plus la syntaxe5 est trs utile pour parcourir les
objets d'une collection.
Attention le premier lment de la plupart des collections a pour index 0. N'utilisez les index que pour parcourir une collection. vitez
par exemple Me.controls(5) pour faire rfrence un contrle car l'index du contrle peut changer si le formulaire est modifi.
Exemple
Collectionspardfaut
Dfinition
' son souhait de quitter l'application
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub
Private Sub cmdCollections_Click()
Dim ctl As Control
Dim intI As Integer
' Ouvre le formulaire "Employes"
' et le masque (proprit Visible)
DoCmd.OpenForm "Employes"
Forms("Employes").Visible = False
' Fait rfrence au contrle Prnom
' du Formulaire "Employes"
' Collections Forms et Controls
MsgBox Forms("Employes").Controls("Prnom").Value
MsgBox Forms!Employes.Controls![Prnom].Value
' Date de cration d'une table de la base courante
' Collections AllTables
MsgBox CurrentData.AllTables![Employes].DateCreated
MsgBox CurrentData.AllTables("Employes").DateCreated
MsgBox CurrentData.AllTables(0).DateCreated
' Modifie la police et de la couleur de tous les
contrles
' "zones de texte" du formulaire
For intI = 0 To Forms("Employes").Controls.Count - 1
Set ctl = Forms("Employes").Controls(intI)
If TypeOf ctl Is TextBox Then
ctl.ForeColor = vbRed
ctl.FontItalic = True
ctl.FontBold = True
End If
Next intI
' Affiche le formulaire
Forms("Employes").Visible = True
End Sub
- 3 - ENI Editions - All rigths reserved
Une collection par dfaut est une collection contenant des objets auxquels il est possible de faire rfrence
traverslenomdel'objetconteneurdelacollection,c'estdiresansfairerfrencelacollectionellemme.
Objetspossdantunecollectionpardfaut
Exemple
Rfrence au contrle txtDateDeb du formulaire Formations (la collection Controls est la collection par dfaut d'un formulaire).
Affichageautomatiqued'instructions
L'diteur VBA dispose d'une technologie permettant de vous assister lors de l'utilisation d'objets. Ds que vous
tapez un nom d'objet reconnu par VBA suivi d'un point, la liste droulante des mthodes et proprits de cet
objetestalorsaffiche.Sivousslectionnezunemthode,l'assistantvousaidegalementsaisirlesdiffrents
argumentsqu'ellecomporte.
Exemple
I Tapez le nom d'objet DoCmd suivi d'un point, la liste droulante suivante est affiche.
Objet Collection par dfaut
Container Documents
Database
TableDefs
DBEngine
Workspaces
Form
Controls
Group Users
Index Fields
QueryDef Parameters
Recordset Fields
Relation Fields
Report Controls
TableDef Fields
User Groups
Workspace Databases
Forms![Formations].[txtDateDeb].Value
Ou
Forms!Formations.txtDateDeb.Value
ou
Forms!Formations!txtDateDeb.Value
- 4 - ENI Editions - All rigths reserved
L'icne reprsente les mthodes, l'icne reprsente les proprits.
Vous pouvez faire dfiler les lments de la liste droulante en tapant les premires lettres de la mthode,
proprit ou collection recherche ou l'aide de l'ascenseur. Pour slectionner un lment de la liste, double
cliquezdessus.
Tapez un point si vous venez de slectionner un objet et si vous souhaitez voir la liste des proprits et
mthodes s'y rapportant. Si vous avez slectionn une mthode, tapez un espace pour saisir la liste des
paramtresdelamthode.
Pourpoursuivrel'exemple :
I Slectionnez la mthode OpenForm.
I Puis tapez un espace:
Lalistedesargumentsdelamthodeestalorsafficheets'adapteaufuretmesurequevouslessaisissez.
Les arguments facultatifs sont entre crochets. L'argument courant est en gras. Si pour un argument donn, il
existeunelistedevaleursprdfinies,lalistedroulantedesconstantescorrespondantesestalorsaffiche.
I Saisissez maintenant le nom du paramtre transmis dans la fonction, savoir strFormName, suivi d'une virgule et de l'argument
acNormal, et de 3 virgules (pour les deux arguments optionnels).
- 5 - ENI Editions - All rigths reserved
Dansl'exemplelalistedesvaleurspossiblespourl'argumentDataModeestaffiche.
Pour obtenir la liste des proprits et mthodes d'un objet, vous pouvez galement procder de la faon suivante :
- placez le curseur derrire le point (situ aprs le nom de l'objet),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les proprits/mthodes du menu contextuel ou utilisez
le raccourci-clavier Ctrl J.
De mme, pour obtenir la liste des constantes disponibles comme argument d'une mthode, vous pouvez procder de la faon
suivante :
- placez le curseur la place de l'argument (aprs la mthode ou aprs une virgule),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les constantes du menu contextuel.
- 6 - ENI Editions - All rigths reserved
Instructionsutilisesaveclesobjets
L'instructionWith
L'instructionWithpermetd'accderplusieursfoisaummeobjetenlenommantuneseulefois.
Elleoffreplusieursavantages:
- optimisation du temps d'excution du code,
- gain de temps sur le travail d'criture,
- meilleure lisibilit du code.
Syntaxe
With <objet>
<code utilisant des mthodes et proprits>
<se rapportant l'objet>
End With
Exemple
L'instructionForeach...Next
L'instructionForEach...Nextpermetdepasserenrevuelesobjetsd'unecollectionouleslmentsd'untableau.
Syntaxe
For Each <lment > In {<tableau>|<collection>}
<squence d'instructions>
[Exit For]
<squence d'instructions>
Next <lment>
Exemple
L'exemple suivant permet d'affecter une couleur de police chaque contrle du formulaire "employ" en fonction de son type
(proprit ControlType). Il utilise la collection par dfaut de l'objet Form (Screen.ActiveForm quivaut
Screen.ActiveForm.Controls).
' Ouvre le formulaire "Employes"
DoCmd.OpenForm "Employes"
' Modifie le titre du formulaire
' Positionne le curseur sur le nom
With Forms("Employes")
.Caption = "FICHE DE L'EMPLOYE " & _
.Controls("Prnom").Value & " " & _
UCase(.Controls("Nom").Value)
.Controls("Nom").SetFocus
End With
Dim ctl As Control
' Parcours des contrles du formulaire actif
For Each ctl In Screen.ActiveForm
With Ctl
Select Case ControlType
' Etiquettes
Case acLabel
.ForeColor = vbBlue
' Zones de texte
Case acTextBox
.ForeColor = vbYellow
' Listes droulantes
Case acListBox, acComboBox
.ForeColor = vbRed
- 1 - ENI Editions - All rigths reserved
L'instructionIfTypeOf
L'instructionIfTypeOfpermetdetesterletyped'unobjet.
Syntaxe
If TypeOf <objet> Is <TypeObjet> Then
<code utilisant des mthodes et proprits>
<se rapportant l'objet>
End If
Exemple
L'instructionSet
L'instructionSetpermetd'attribuerunerfrenced'objetunevariable,appelevariableobjet.
Cetteinstructionpeuttreutilisepourcrerunerfrenceversunnouvelobjet(enutilisantventuellementune
mthodepermettantdecrerl'objet)oupouraffecterunerfrenceunobjetdjexistant.
Syntaxes
Crationd'unerfrenceversunnouvelobjet
Set <NomObjet> = New <expression objet>
ou
Set <NomObjet> = <mthode permettant de crer l'objet>
<NomObjet> nomdelavariableobjet
<expression objet> nomd'unobjetoud'unevariableobjetdemmetype
Le mot cl New permet de crer une nouvelle instance de la classe. Si la variable objet contient dj une rfrence, cette dernire est
alors perdue.
Vous ne pouvez utiliser le mot cl New pour rfrencer un objet que si le composant ActiveX de l'objet fournit une bibliothque de type
(ex : objets ADO, objets Excel...).
Affectationd'unerfrenceunobjetexistant
Set <NomObjet> = <expression objet>
<NomObjet> nomdelavariableobjet
<expression objet> nomd'unobjetoud'unevariableobjetdemmetype
Rinitialisationdesvariablesobjets
Set <NomObjet> = Nothing
Nothing permet de rinitialiser la variable objet et de librer l'ensemble des ressources systme et mmoire
associescetobjet.
Exemples :
Cration de rfrences vers de nouveaux objets.
Les exemples 1 et 2 permettent de crer une nouvelle table et de l'ajouter la base de donnes courante. Pour excuter ces
exemples, vous devez slectionner la rfrence Microsoft DAO 3.6 Object Library au projet (Outils Rfrences).
Exemple 1 : utilisation du mot cl New
End Select
End With
Next ctl
If TypeOf ctl Is acListBox Then ...
- 2 - ENI Editions - All rigths reserved
Exemple 2 : mme traitement en utilisant des mthodes
Dim tbl As Object
Dim tdfClient As DAO.TableDef
Dim fld As DAO.Field
' Vrifie si la table existe dj
' et propose de la supprimer
For Each tbl In CurrentData.AllTables
If tbl.Name = "CLIENTS" Then
If MsgBox("La table existe dj." & _
" Voulez-vous la supprimer ?", _
vbYesNo & vbQuestion) = vbYes Then
DoCmd.DeleteObject acTable, "CLIENTS"
Else
Exit Sub
End If
End If
Next tbl
' Cre la dfinition de table
Set tdfClient = New DAO.TableDef
tdfClient.Name = "CLIENTS"
' Cre le 1er champ
Set fld = New DAO.Field
With fld
.Name = "Cli_Nom"
.Type = dbText
.Size = 40
End With
tdfClient.Fields.Append fld
' Cre le 2me champ
Set fld = New DAO.Field
With fld
.Name = "Cli_Effectif"
.Type = dbInteger
End With
tdfClient.Fields.Append fld
' Ajoute la table la base de donne courante
Application.CurrentDb.TableDefs.Append tdfClient
' Rinitialise les variables objet
Set tdfClient = Nothing
Set fld = Nothing
Dim tbl As Object
Dim tdfClient As DAO.TableDef
Dim fld As DAO.Field
' Vrifie si la table existe dj
' et propose de la supprimer
For Each tbl In CurrentData.AllTables
If tbl.Name = "CLIENTS" Then
If MsgBox("La table existe dj." & _
" Voulez-vous la supprimer ?", _
vbYesNo + vbQuestion) = vbYes Then
DoCmd.DeleteObject acTable, "CLIENTS"
Else
Exit Sub
End If
End If
Next tbl
' Cre la dfinition de table
Set tdfClient = CurrentDb.CreateTableDef("Clients")
With tdfClient
' Cre le 1er champ
Set fld = .CreateField("Cli_Nom", dbText, 40)
.Fields.Append fld
' Cre le 2me champ
.Fields.Append .CreateField("Cli_Effectif", dbInteger)
End With
' Ajoute la table la base de donne courante
CurrentDb.TableDefs.Append tdfClient
' Rinitialise les variables objet
Set fld = Nothing
Set tdfClient = Nothing
- 3 - ENI Editions - All rigths reserved
Exemple 3 :
Cration d'un formulaire avec une zone de texte et une tiquette
Formulaire cr par ce code :
' Objet Formulaire
Dim frmEmploye As Form
' Nom du formulaire
Dim strName As String
' Objet contrle
Dim ctl As Control
' Cration d'un nouveau formulaire
Set frmEmploye = Application.CreateForm
With frmEmploye
' Titre du formulaire
.Caption = "Employes"
' Largeur et hauteur du formulaire
.Width = 5000
.Section(acDetail).Height = 2000
' Supprime les boutons de dplacement
.NavigationButtons = False
' Supprime le slecteur d'enregistrement
.RecordSelectors = False
' Centre le formulaire dans l'application
.AutoCenter = True
' Nom du formulaire
strName = frmEmploye.Name
End With
' Ajout de la zone de texte Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acTextBox, , "", "", 2000, 500, 2500, 300)
' Mise en forme de la zone de texte
With ctl
' Nom de la zone de texte
.name = "txtNom"
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlack
.FontBold = True
End With
' Ajout de l'tiquette Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acLabel, , "", "", 500, 500, 1500, 300)
' Mise en forme de l'tiquette
With ctl
' Nom de l'tiquette
.Name = "lblNom"
' Titre de l'tiquette
.Caption = "Nom de l'employ : "
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlue
End With
' Sauvegarde du formulaire
DoCmd.Save , "Fiche_Employe"
Docmd.Close
- 4 - ENI Editions - All rigths reserved
- 5 - ENI Editions - All rigths reserved
Lesclassesd'objets
Description
Une classe est en quelque sorte un moule d'o naissent les objets. Par exemple, il est possible de raliser de
petits santons en pltre avec un moule adquat. On peut dire que tous les santons raliss sont des Objets,
chacund'euxpouvantavoirtermedescouleursetunhabillagediffrents,etquelesmoulessontdesClasses.
Ainsi, les objets issus d'une mme classe hritent systmatiquement de toutes les mthodes (codes), les
proprits (donnes) et les vnements de leur classe d'origine. Par la suite, les caractristiques et le
comportementdechacund'euxpourronttreadaptsenfonctiondesbesoinsdel'application.
Enfait,toutobjetAccessestissud'uneclasse.
Lesmodulesdeclasse
Les modules de classe vous permettent de crer et de manipuler dans vos applications vos propres types
d'objets.
Lesmodulesdeclassesprsententlescaractristiquessuivantes:
- ils portent le nom de l'objet,
- ils comportent des procdures publiques Sub et Function correspondant aux mthodes propres de l'objet,
- ils comportent des procdures Property Get permettant de lire les valeurs de proprits de l'objet et des procdures Property
Set/Property Let permettant de fixer les valeurs de ces proprits.
Une fois l'ensemble de ces procdures dcrites au sein du module de classe, il est possible de crer un nouvel
objetdutypedfini.Pourcelailsuffitdecrerunenouvelleinstancedelaclasseparlebiaisd'unevariableobjet
dutypedelaclasse :
Dim<nomdel'objet>AsNew<nomdelaclasse>
Les modules de classe sont peu utiliss en programmation VBA. Ils s'adressent avant tout aux dveloppeurs
confirms.
Exempledemodulesdeclasse
Cet exemple vous guidera pas pas dans la cration et l'utilisation d'un module de classe. Le module cr
permettrad'afficherlesmessagesutilisateurs.
Cemodulecomporteleslmentssuivants:
- une mthode Confirmation qui affiche une bote de dialogue invitant l'utilisateur rpondre par "oui" ou "non" une
question, et rcupre la rponse de l'utilisateur,
- deux proprits : la proprit IsBeep indique si un beep doit tre mis avant l'affichage du message, la proprit Title
contient le titre de la bote de dialogue.
Exemple
Pourcrerunmoduledeclasse :
I slectionnez l'option Module de classe du menu Insertion.
- 1 - ENI Editions - All rigths reserved
I Dfinissez ensuite le nom de la classe dans le champ Name.
I Si la fentre Proprits n'est pas affiche, choisissez l'option Fentre proprits du menu Affichage ou utilisez le raccourci
clavier F4.
I Dfinissez les variables ncessaires pour l'utilisation des proprits dans le module de classe Message. La variable strTitle est
associe la proprit Title, la variable blnBeep la proprit IsBeep.
I Crez les proprits IsBeep et Title en utilisant l'option Procdure du menu Insertion.
Pour chaque proprit, les procdures Property Get et Property Set sont cres :
I Modifiezles afin d'obtenir le code suivant :
Option Compare Database
Option Explicit
' Emission d'un beep
Dim blnBeep As Boolean
' Titre de la fentre MsgBox
Dim strTitle As String
- 2 - ENI Editions - All rigths reserved
I Crez maintenant la mthode confirmation en utilisant l'option Procdure du menu Insertion.
I Modifiez la procdure Confirmation afin d'obtenir le code suivant.
Nousvoyonsquecettemthodeutiliselesdeuxvariables strTitleet blnBeep.Lamthodeatcreentant
quefonctioncarellerenvoielarponsedel'utilisateursouslaformed'unevariableboolenne.
Maintenantquecetteclasseestcre,nousallonsl'utiliserpartird'unformulaire.
I Crez pour cela un formulaire Employs avec deux boutons de commande cmdFermer et cmdQuitter.
I Affectez le code cidessous aux vnements click.
Public Property Get IsBeep() As Boolean
IsBeep = blnBeep
End Property
________________________________________________________________________
Public Property Let IsBeep(ByVal blnNewValue As Boolean)
blnBeep = blnNewValue
End Property
________________________________________________________________________
Public Property Get Title() As String
Title = strTitle
End Property
________________________________________________________________________
Public<+>Property Let Title(ByVal strNewValue As String)
strTitle = strNewValue
End Property
Public Function Confirmation(strMsg) As Boolean
If MsgBox(strMsg, vbYesNo, strTitle) = vbYes Then
Confirmation = True
Else
Confirmation = False
End If
If blnBeep Then Beep
End Function
Private Sub CmdFermer_Click()
' Objet message
Dim msg As New Message
' Pas d'mission de beep
msg.IsBeep = False
- 3 - ENI Editions - All rigths reserved
I Testez ensuite le formulaire.
La bote de message affiche par la mthode Confirmation utilise les deux proprits et renvoie la rponse de
l'utilisateur.
Il est possible d'enrichir le module de classe Message en dfinissant de nouvelles proprits et de nouvelles mthodes (ex :
messages d'erreur...).
' Titre de la bote de dialogue
msg.Title = "Application Gestion du personnel"
' Demande de confirmation
If msg.Confirmation("Voulez-vous fermer " _
& "le formulaire " & Me.Caption & " ?") Then
DoCmd.Close
End If
End Sub
_______________________________________________________________
Private Sub CmdQuitter_Click()
' Objet message
Dim msg As New Message
' Emission d'un beep
msg.IsBeep = True
' Titre de la bote de dialogue
msg.Title = "Application Gestion du personnel"
' Demande de confirmation
If msg.Confirmation("Voulez-vous quitter " _
& "l'application ? ") Then
DoCmd.Quit
End If
End Sub
- 4 - ENI Editions - All rigths reserved
L'explorateurd'objets
Prsentation
Compte tenu du nombre important d'objets Access et de leur diversit, il est utile de pouvoir rechercher
rapidementdesinformationsserapportantauxobjets.
L'explorateurd'objetspermetd'afficherdesinformationsrelativesauxobjets,mthodes,proprits,vnements
etconstantes.
Vouspouvezl'afficherdediffrentesfaons:
- choisissez l'option Explorateur d'objets du menu Affichage,
- utilisez le raccourciclavier F2,
- cliquez sur l'icne .
1.Listedesbibliothquesd'objetsactuellementcharges.
2.lmentrecherch:objet,proprit,collection,vnement,mthode...
3. Rsultat de la recherche : liste des classes d'objets (objets et collections) et des membres les composant
(objet, collection, proprit, vnement ou mthode). Le mot recherch peut tre dans la liste des classes ou
danscelledesmembres.
- 1 - ENI Editions - All rigths reserved
4.Objetsdelabibliothque laclassed'objetslectionnedanslalisteRsultatestencadre.
5.Mthodes,proprits,vnementsetconstantesserapportantl'objetslectionnouencadrdanslaliste
degauche.LemembreslectionndanslalisteRsultatestencadr.
6.Dtaildel'lmentslectionn.
Recherchedansl'explorateurd'objets
Poureffectuerunerecherchedansl'explorateurd'objets,procdezdelamaniresuivante:
I Saisissez le mot recherch dans la 2
me
liste droulante.
I Cliquez sur l'icne .
I Si la fentre des Rsultats affiche plusieurs lignes, dplacezvous sur celle qui vous intresse (la partie basse de la fentre est
alors ractualise).
Le module de classe cr prcdemment apparat dans la liste des classes avec les mthodes et proprits
rattaches.
- 2 - ENI Editions - All rigths reserved
Propritsetmthodesd'objetsAccess
Cette partie dcrit les proprits et mthodes des objets couramment utiliss dans Access. Les objets Form et
ReportserontdcritsdanslechapitrePersonnalisationdesformulairesettats.
Pour obtenir la liste exhaustive des objets, des proprits et mthodes, vous pouvez rechercher dans l'aide VBA
Accessouutiliserl'explorateurd'objets.
L'objetApplication
L'objetApplicationfaitrfrencel'applicationMicrosoftAccessactive.
Proprits
Mthodes
AutomationSecurity
Renvoie ou dfinit une constante MsoAutomationSecurity
qui reprsente le mode de scurit utilis par Microsoft
Accesslorsqu'ilouvredesfichiersparprogrammation.
BrokenReference
Renvoie une valeur de type Boolean indiquant si la base de
donnes active possde des rfrences rompues vers des
basesdedonnesoudesbibliothquesdetypes.
Build
Renvoie une valeur de type Long qui reprsente le numro
de la copie de Microsoft Office Access 2007 actuellement
installe.
CodeContextObject
Renvoie l'objet dans lequel une macro ou du code
Visual Basicestencoursd'excution.
CurrentObjectName
Retourne le nom de l'objet base de donnes actif (table,
requte,formulaire,tat,macro,module).
CurrentObjectType
Retourneletypedel'objetbasededonnesactif.
FeatureInstall
SpcifieoudterminelamaniredontMicrosoftAccessgre
les appels de mthodes et de proprits qui ncessitent des
fonctionnalitsnoninstalles.
IsCompiled
Retourne une valeur de type boolen qui indique si le projet
VisualBasicsetrouvedansuntatcompil.
MenuBar
Dtermine la barre de menus utiliser pour la base de
donnes.
Name
Retournelenomdel'application("MicrosoftAccess").
Parent
Permetdefairerfrencel'objetpre.
ProductCode
Dtermine l'identificateur universel unique de Microsoft
Access.
ShortcutMenuBar
Spcifie le menu contextuel qui apparat lorsque l'utilisateur
cliqueavecleboutondroitdelasouris.
UserControl
Permet de dterminer si l'application Microsoft Access en
cours a t lance par l'utilisateur ou par une autre
applicationaumoyendel'automation.
Version
RetournelenumrodeversiondeMicrosoftAccess.
Visible
Permetdemasquerl'application.
AccessError
Retourne la chane descriptive associe une erreur
Microsoft AccessouuneerreurDAO.
AddToFavorites
Ajoute une adresse de lien hypertexte dans le dossier
Documentsfavoris.
BuildCriteria
Permetdeconstruirefacilementlescritresd'unfiltre.
- 1 - ENI Editions - All rigths reserved
CloseCurrentDatabase
Ferme une base de donnes Access partir d'une autre
application utilisant la technologie Automation (application
Excel par exemple). La base de donnes doit avoir t
pralablement ouverte, par cette mme application, au
moyendelamthodeOpenCurrentDatabase.
ColumnHistory
Fournitl'historiquedesvaleursquionttstockessansun
champMmo.
CompactRepair
Compacteetrparelabasededonnes(.mdb)ouleprojet
Microsoft Access (.adp) spcifis. Renvoie un Boolean
prenantlavaleurTruesil'oprationarussi.
ConvertAccessProject
Convertit la version du fichier Microsoft Access spcifi
dansuneautreversion.
CreateAccessProject
PermetdecrerunnouveauprojetMicrosoftAccess(.adp)
surdisque.
CreateAdditionalData
Permet de crer un objet AdditionalData pouvant tre
utilis pour ajouter des tables et des requtes
supplmentaires dans la table parente qui est en cours
d'exportationparlamthodeExportXML.
CreateControl
Permet de crer un contrle dans le formulaire ouvert
spcifi.
CreateForm
Permetdecrerunformulaireetretourneunobjetdetype
Form.
CreateGroupLevel
Permet de spcifier un champ ou une expression sur lequel
(ou laquelle) seront regroupes ou tries les donnes d'un
tat.
Create
NewWorkgroupFile
Creunnouveaufichierdegroupedetravailpourpermettre
aux utilisateurs d'accder de manire scurise une base
dedonnes.
CreateReport
Permetdecreruntatetretourneunobjettat.
CreateReportControl
Permetdecreruncontrledansuntatouvert.
CurrentDb
Renvoie une variable objet faisant rfrence la base de
donnesactuellementouvertedansMicrosoft.
CurrentUser
Permetderetournerlenomdel'utilisateuractueldelabase
dedonnes.
DefaultWorkspace
Clone
Cre un nouvel objet Workspace sans obliger l'utilisateur
seconnecternouveau.
DeleteControl
Permet de supprimer un contrle dtermin dans un
formulaire.
DeleteReportControl
Permetdesupprimeruncontrledtermindansuntat.
Echo
SpcifiesiMicrosoftAccessdoitredessinerl'cran.
ExportXML
Permet d'exporter des donnes XML, des schmas et des
informations de prsentation partir de Microsoft SQL
Server 2000 Desktop Engine (MSDE 2000), Microsoft SQL
Server, version 6.5 ou ultrieure, ou encore du moteur de
basededonnesMicrosoftJet.
FollowHyperLink
OuvreledocumentoulapageWebspcifiparuneadresse
delienhypertexte.
GetOption
Retourne la valeur en cours d'une option de la bote de
dialogueOptions.
HyperlinkPart
Renvoie les informations relatives aux donnes stockes
souslaformedelienhypertexte.
ImportNavigationPane
Chargeuneconfigurationenregistreduvoletdenavigation
partirdudisque.
ImportXML
Permet d'importer des donnes XML et/ou des informations
de prsentation dans Microsoft SQL Server 2000 Desktop
Engine (MSDE 2000), Microsoft SQL Server, version 7.0 ou
ultrieure, ou encore dans le moteur de base de donnes
MicrosoftJet.
- 2 - ENI Editions - All rigths reserved
Exemple
Bouton de commande permettant de quitter Access en sauvegardant tous les objets.
Exemple
Le code suivant permet de modifier les couleurs par dfaut des feuilles de donnes (contenues dans l'onglet Feuilles de donnes de
la bote de dialogue Options d'Access).
Fonctionsapplicablesunjeud'enregistrements
LoadCustomUI
ChargelecodeXMLquireprsenteunrubanpersonnalis.
LoadPicture
ChargeuneimagedansuncontrleactiveX.
NewAccessProject
Permet de crer et d'ouvrir un nouveau projet Microsoft
Access(.adp)commeprojetAccessactif.
Nz
Transforme une valeur nulle en zro, chane vide ou une
autrevaleurspcifie.
NewCurrentDatabase
Cre une nouvelle base de donnes dans la fentre
MicrosoftAccess.
OpenCurrentDatabase
Ouvre une base de donnes Access comme base de
donnes courante partir d'une autre application utilisant
latechnologieAutomation(applicationExcelparexemple).
Quit
PermetdequitterAccess.
RefreshDatabase
Window
Permet de mettre jour la fentre Base de donnes
lorsqu'une table, une requte, un formulaire, un tat, une
macro ou un module ont t crs, supprims ou
renomms.
RefreshTitleBar
ActualiselabarredetitredeMicrosoftAccess.
Run
Permetd'excuteruneprocdureFunctionouSubspcifie
parMicrosoftAccessoudfinieparl'utilisateur.
RunCommand
Permet d'excuter une commande intgre de menu ou de
barred'outils.
SetDefaultWorkgroup
File
Dfinitlefichierspcificommefichierdegroupedetravail.
SetHiddenAttribute
Activel'attributcachd'unobjetAccess.
SetOption
Dfinit la valeur en cours d'une option dans la bote de
dialogueOptions.
SysCmd
Permet d'afficher une jauge de progression ou un texte
spcifi facultatif dans la barre d'tat, de retourner des
informations sur Microsoft Access et les fichiers associs,
ou l'tat d'un objet de base de donnes spcifi (objet
ouvert,nouveau,oumodifimaisnonenregistr).
TransformXML
Applique une feuille de style XSL (eXtensible Stylesheet
Language) un fichier de donnes XML et crit le langage
XMLquienrsultedansunfichierdedonnesXML.
Sub cmdQuitter_Click()
Application.Quit acSaveYes
End Sub
With Application
' Police bleue fonc
.SetOption "Default Font Color", 4
' Arrire plan : blanc
.SetOption "Default Background Color", 15
' Quadrillage bleu clair
.SetOption "Default Gridlines Color", 12
End With
- 3 - ENI Editions - All rigths reserved
Cesfonctionssontgnralementutilisesdanslesformulairesettats:
L'objetDoCmd
L'objetDoCmdpermetd'excuterpartirdeVisualBasiclaplupartdesactionsexcutablesvialesmacros.
chaque action macro correspond une mthode. Les arguments de l'action deviennent les arguments de la
mthode.L'objetDoCmdnedisposepasdeproprits.
Les actions macro correspondant aux mthodes sont indiques entre parenthses.
Excutiond'actions
Donnesdesformulairesettats
DAvg
Calcule la moyenne d'un ensemble de valeurs dans un jeu
d'enregistrements.
DCount
Dtermine le nombre d'enregistrements dans un jeu
d'enregistrements.
DFirst Renvoielepremierenregistrementd'unjeud'enregistrements.
DLast
Renvoieledernierenregistrementd'unjeud'enregistrements.
DLookUp
Recherchelavaleurd'unchampparticulierquifaitpartied'un
jeud'enregistrements.
DMin
Dtermine la valeur minimale d'un champ pour un jeu
d'enregistrements.
DMax
Dtermine la valeur maximale d'un champ pour un jeu
d'enregistrements.
DStDev
valuel'carttypepourunchantillondepopulationpourun
jeud'enregistrements.
DstDevP
Estime l'carttype d'une population dans un jeu
d'enregistrements.
DSum
Calcule la somme d'un ensemble de valeurs dans un jeu
d'enregistrements.
DVar
value la variance pour un chantillon dans un jeu
d'enregistrements.
DVarP
Calcule la variance d'une population dans un jeu
d'enregistrements.
Eval
value une expression (combinaison d'oprateurs, de noms
de champ, de fonctions, de littrales et de constantes) et
retourne le rsultat sous la forme d'une chane de caractre
oud'unevaleurnumrique.
CancelEvent
(AnnulerEvnement)
Annuleunvnement.
Quit
(Quitter)
QuitteACCESS.
RunCommand
(ExcuterCommande)
Excuteunecommanded'unmenuoud'unebarred'outils.
RunMacro
(ExcuterMacro)
Excuteunemacro.
RunSql
(ExcuterSql)
ExcuteunordreSQL.
ApplyFilter
(AppliquerFiltre)
Appliqueunfiltreunetable,unformulaire,untat.
FindNext
(TrouverSuivant)
Continuelarecherche.
FindRecord
(TrouverEnregistrement)
Recherched'unenregistrement.