MichleAMELOT
Rsum
A la fois simple, pratique et complet, ce livre sadresse aux dveloppeurs et aux utilisateurs avertis souhaitant crer des applications
professionnelles conviviales, fiables et performantes sous Access. Outre les lments de base du langage VBA vous permettant de crer vos
propres procdures et fonctions, vous apprendrez manipuler vos donnes en utilisant les objets DAO ou ADO et le langage SQL,
personnaliser vos formulaires et tats, concevoir un ruban Access spcifique votre application, piloter les autres applications Office 2007
via la technologie Automation, exporter des informations sur Internet (au format XML ou HTML) et utiliser les API Windows.
En plus des nombreux exemples fournis dans cet ouvrage - en tlchargement sur notre espace Livres (www.eni-livres.com) - le dernier
chapitre vous guide dans la cration dune mini-application Access.
L'auteur
Consultante et formatrice, Michle Amelot est spcialise dans la cration de logiciels spcifiques autour des technologies Microsoft.
Elle accompagne des quipes de dveloppement dans la conduite de leurs projets. Cest, entre autres, cette connaissance approfondie
des besoins des utilisateurs et des dveloppeurs, qui lui permet dans ses ouvrages de faciliter lapprentissage et la pratique de la
programmation en langage VBA.
Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11
Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non
destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou
reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette
reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal.
Copyright Editions ENI
- 1-
Introduction
Access2007disposedulangagedeprogrammationVisualBasicEditionApplication(VBA)quiluipermetd'tendre
sesfonctionnalitspourvousoffrirlemeilleurdesesperformances.
C'est un langage puissant, qui ne prsente aucune difficult pour tre compris par les dbutants. Les fonctions
deVBAsontdrivesengrandepartiedeVisualBasicauxquelless'ajoutentdesinstructions(objets,mthodes,
fonctions...)spcifiques,ncessaireslamanipulationdesobjetsd'Access.
Pourbienexploiterlecontenudecemanuel,ilestimpratifd'avoirmanipulAccess2007entantqu'utilisateur,
c'estdiresavoirgrer(crer,modifier,supprimer,manipuler)lestables,lesrequtes,lesformulaires,lespages
d'accsauxdonnesetlestats.Desconnaissancesgnralesenprogrammationsontgalementprrequises.
- 1-
Rappels
UnebaseAccessestconstitued'ununiquefichierportantl'extension.ACCDBetcontenantlesdiffrentsobjets
del'application.Cesobjetssont:
Lestables
Ellescontiennentlesdonnesdelabaseetpeuventtreenliaisonlesunesaveclesautres.
Lesrequtes
Ellespermettentd'effectuer:
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-
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-
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).
- 1-
PassagedesmacrosVBA
Lesmacrosreprsententunemanirefaciledegrerdesenchanementsd'actionssimples,telsquel'ouvertureet
lafermeturedeformulaires.
ToutefoisVBAprsentebiend'autresavantages:
- il facilite la maintenance des bases de donnes car les procdures vnementielles Visual Basic sont intgres dans la
dfinition du formulaire ou de l'tat,
Dans le volet de navigation, cliquez avec le bouton droit de la souris sur le formulaire ou l'tat, puis cliquez sur Mode cration.
Cliquez sur l'icne Convertir les macros de formulaire en Visual Basic ou Convertir les macros d'tat en Visual Basic situe en
bas droite du groupe Macros :
Labotededialoguesuivantes'affichealors :
Dsactivez si vous le souhaitez les options proposes par dfaut. Il est toutefois recommand de conserver la gestion des erreurs
pour la fiabilit de l'application, et les commentaires pour simplifier la lecture du code.
Conversiondemacrosglobales
Cliquez sur l'icne Convertir les macros en Visual Basic situe en bas droite du groupe Macros.
- 1-
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:
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-
Ouvrez une base de donnes Access dont le code est sign par un Editeur approuv.
Vouspouveztoutmomentconnatrelalistedesditeursapprouvsdelafaonsuivante:
Emplacementsapprouvs
Toutfichierenregistrdansunemplacementapprouvpeuttreouvertsansl'interventionduCentredegestion
delaconfidentialit.
Vous pouvez tout moment ajouter un dossier dans la liste des Emplacements approuvs de la faon
suivante:
- 3-
- 4-
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...
Toutes les fentres de l'environnement IDE peuvent tre affiches partir du menu Affichage.
Labarred'outilsStandard(1)
1
2
3
4
Afficher Access
Insrer un module, un module de classe ou une procdure (Function ou Sub)
Enregistrer
Couper
- 1-
5 Copier
6 Coller
7 Rechercher
8 Annuler
9 Rtablir
10 Excuter
11 Arrt
12 Rinitialiser
13 Mode cration
14 Afficher l'explorateur de projets
15 Afficher la fentre Proprits
16 Afficher l'explorateur d'objets
17 Afficher la bote outils
18 Aide sur Microsoft Visual Basic
19 Position courante dans la fentre de Code
L'Explorateurdeprojet(2)
TouslesmodulesdelabasededonnesouduprojetVBAsontaffichsdansl'explorateurdeprojets,selonune
structurearborescente.Ilssontregroupsentroisensembles:
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 :
Le complment automatique d'instructions prsente les informations qui sont le complment logique de
l'instructionauniveaudupointd'insertion.
Parexemple,lalistedroulantedesmthodesetpropritsdisponiblespourunobjets'afficheautomatiquement
lorsquevoustapezlenomdel'objetsuivid'unpoint.
Si cette liste n'est pas active, slectionnez Options dans le menu Outils et cochez la case Complment
automatiquedesinstructionsdel'ongletditeur.
LafentreExcution(6)
Ellepermetd'afficherlesvaleursdesvariables,delesmodifieretd'excuterdesinstructions.
Les fentres Excution, Variables locales et Espions sont utilises lors du dbogage de l'application.
- 2-
LafentreVariableslocales(7)
Ellecontienttouteslesvaleursdesvariablesaccessiblesdanslaporteencours.
LafentreEspions(8)
Elleaffichelesvaleursdesvariablesquionttdfiniescommevariablesespions.
L'Explorateurd'objets(9)
Ilpermetdevisualiser,pourchaqueobjet,sesproprits,mthodesetconstantes.
- 3-
Configurationdel'diteurVBA
Paramtragedescouleursdel'diteur
Lesmotscls,lesfonctionsetlesinstructionsVBAsontaffichesenbleu,lesobjets,mthodesetpropritsen
noiretlescommentairesenvert.Lesinstructionscontenantdeserreurssontmisesenvidenceenrouge.
Vous pouvez modifier le style (couleurs, police, taille) des diffrentes parties du code. Pour cela, slectionnez
OptionsdanslemenuOutilsetcliquezsurl'ongletFormatdel'diteur.
Paramtragedelaprsentationducode
Diffrents outils, comme la vrification automatique de la syntaxe, la dclaration obligatoire des variables, le
complmentautomatiqued'instructions...facilitentlasaisieetlamiseaupointducodeVBA.
Pouractivercesoutils,slectionnezOptionsdanslemenuOutilsetcliquezsurl'ongletditeur.
- 1-
- 2-
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-
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:
Cliquez sur la flche situe en bas de l'icne Macro puis choisissez l'option Module.
Depuisl'environnementVBE:
Slectionnez l'option Module du menu Insertion
ou
depuis la fentre Explorateur de projets, cliquez avec le bouton droit de la souris et slectionnez Insertion puis Module partir du
menu contextuel.
tape2:attribuerunnomaumodule
Pardfaut,lemodulecrestintitulModule1(ouModulesuividupremiernumrodisponiblesid'autresmodules
ontdjtscrsetnonrenomms).
Pourmodifierlenomdumodule :
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
- 1-
tape4:Testdelaprocdure
Pourexcuterlecodedelaprocdure :
Saisissez une date dans la bote de dialogue affiche et cliquez sur le bouton de commande OK :
Lemessagesuivantestalorsaffich:
- 2-
- 3-
Recommandations
Afin d'optimiser les performances de VBA, certaines techniques peuvent contribuer acclrer la vitesse
d'excutiondevotrecode.
- 1-
Lesmodules
Ondistinguetroistypesdemodules:
Si l'explorateur de projet n'est pas affich, choisissez l'option Explorateur de projets du menu Affichage ou utilisez le raccourciclavier Ctrl R.
Les modules Microsoft Access Objets de classe contiennent les procdures vnementielles associes aux
formulairesettats.
Lesmodulesstandards (ou modules) sont composs d'une ou de plusieurs procdures pouvant tre appeles
endenombreusescirconstancespartirdesdiffrentsmodules.
Seuls les modules standards apparaissent dans la liste des modules du volet de navigation.
Il est recommand de regrouper dans un ou plusieurs modules les procdures "utilitaires" pouvant tre utilises par diffrentes
applications (ex : traitement des dates). Ces modules pourront ensuite tre exports dans d'autres bases Access partir de l'option
Exporter un fichier du menu Fichier.
Lesmodulesdeclasseindpendantssontutilisslorsdelacrationdeclassesd'objets.Laprogrammation
based'objetsseradtailledanslechapitreObjetsetcollections.
LeslmentsdulangageVisualBasicdcritsdanscechapitrepeuventtreutilissdanslesdiffrentsmodules.
- 1-
Lesprocdures
Les procdures sont des sousprogrammes qui permettent de dcomposer une tche de programmation
complexeenunesuitedetchespluspetitesetplussimples.
Elles permettent d'organiser le code l'intrieur des modules afin d'obtenir un code plus facile maintenir et
facilementrutilisable.
DansVBAAccess2007,ilexistetroistypesdeprocdures:
- 1-
Une procdureSubvnementielleestuneprocdureassocieunvnementd'unobjet.D'ailleurssonnom
est compos du nom de l'objet activ, suivi du caractre soulign (_) et du nom de l'vnement. L'appel d'une
telleprocdureestimplicite,c'estdirequelaprocduren'estexcutequelorsquel'vnementassocialieu.
Exemple
Cette procdure vnementielle permet d'afficher le formulaire "Employs" lorsque l'utilisateur clique sur un bouton de commande
cmdEmploys.
Private Sub cmdEmploys_Click()
Docmd.OpenForm "Employs"
End Sub
Certaines procdures Sub vnementielles peuvent tre gnres automatiquement partir d'assistants (ex : assistant boutons de
commande).
LesprocduresFunction
Les procduresFunction,pluscourammentappeles fonctions, renvoient une valeur, telle que le rsultat d'un
calcul.Lavaleurretournedoitporterlenomdelafonction.
Ce sont les seules procdures pouvant tre appeles depuis une macro.
Le langage Visual Basic comporte de nombreuses fonctions intgres telles que les fonctions se rapportant aux
dates(day,week,year,format...).
Enplusdecesfonctionsintgres,vouspouvezcrervospropresfonctionspersonnalises.
Exemple
Cette fonction demande l'utilisateur de confirmer son souhait de quitter l'application, et renvoie True si l'utilisateur rpond Oui et
False sinon.
Function Quitter_Appli() As Boolean
If MsgBox("Voulez-vous quitter l'application ?", _
vbQuestion + vbYesNo) = vbYes Then
Quitter_Appli = True
Else
Quitter_Appli = False
End If
End Function
Dclarationdesprocdures
Syntaxed'uneprocdureSub
- 2-
- 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,
- 3-
- 4-
Valeur
Signification
Nombreettypedeboutons
vbOKOnly
AfficheleboutonOKuniquement.
vbOKCancel
AffichelesboutonsOKetAnnuler.
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
AffichelesboutonsOuietNon.
vbRetryCancel
vbMsgBoxHelpButton
16384
Afficheunboutond'aide.
Typed'icne
- 5-
vbCritical
16
vbQuestion
32
vbExclamation
Affichel'icne
Affichel'icne
48
vbInformation
Affichel'icne
Affichel'icne
64
Boutonpardfaut
vbDefaultButton1
Premierbouton.
vbDefaultButton2
256
Deuximebouton.
vbDefaultButton3
512
Troisimebouton.
vbDefaultButton4
768
Quatrimebouton.
Modalit
vbApplicationModal
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
vbMsgBoxSetForeground
65536
vbMsgBoxRight
524288
Aligneletextedroite.
vbMsgBoxRtlReading
1048576
Lesvaleursderetourpossiblessontgalementdfiniespardesconstantes :
Constante
Valeurderetour
Boutonchoisi
vbOK
OK
vbCancel
Annuler
vbAbort
Abandonner
vbRetry
Recommencer
vbIgnore
Ignorer
vbYes
Oui
vbNo
Non
"Confirmation")
- 7-
Lesvariables
Lestypesdevariables
Lesvariablespermettentdestockerdesvaleursintermdiairestoutmomentdel'excutionducodeVBAafinde
lesexploiterultrieurementpoureffectuerdescalculs,descomparaisons,destests
Les variables sont identifies par un nom, permettant de faire rfrence la valeur qu'elles contiennent, et un
typedterminantlanaturedesdonnesqu'ellespeuventstocker.
Numriques
>
Type
tendue
Taille
en
octets
Byte
0255
Integer
(entier)
3276832767
Long
(entierlong)
2147483648
2147483647
Single
(relsimple
virgule
flottante)
3,402823E381,401298E45
(valeursngatives)
1,401298E453,402823E38
(valeurspositives)
Double
(reldouble
virgule
flottante)
1,79769313486231E308
4,94065645841247E324
(valeursngatives)
4,94065645841247E324
1,79769313486231E308
(valeurspositives)
Currency
(montaire
virgulefixe)
922337203685477,5808
922337203685477,5807
Decimal
12
Chanesdecaractres
LetypeestString.Ilexistedeuxtypesdechanes:
- les chanes de longueur variable peuvent contenir environ 2 milliards (231) de caractres.
- Les chanes de longueur fixe peuvent contenir de 1 environ 64000 (216) caractres.
Exemple
'Chane de longueur variable
Dim Adresse As String
'Chane de longueur fixe (20 caractres)
Dim Nom As String * 20
Boolen
- 1-
Letypeest Boolean.LavariablepeutprendrelavaleurTrue(Vrai)ouFalse(Faux)quiestsavaleurpardfaut.
Elleoccupedeuxoctets.
Date
Le type est Date. La variable peut prendre les valeurs de date et d'heure du 1er janvier 100 au 31 dcembre
9999.Elleoccupehuitoctets.
Variant
Letypeest Variant.Lavariablepermetdestockerdesvaleursdedonnesdetoutessortes:dates,nombres
virgule flottante, chanes de caractres, rfrences des objets... Elle occupe seize octets, plus un octet par
caractresilavaleurestunechane.
Objet
Le type est Object. La variable permet de stocker la rfrence un objet sous forme d'une adresse de quatre
octets.
C'estuntypegnrique,maispourobtenirdesperformancessuprieures,ilestsouhaitabled'utiliserpluttlenom
del'objettelqu'ilestdfinidanslazoneClassesdel'explorateurd'objets.
Exemple
Ouverture de base de donnes Access en utilisant le type gnrique Objet ou partir de l'objet Database.
Dim dbsEmp As Object
Dim dbsArt As Database
Set dbsEmp = OpenDatabase("C:\Application\" _
& "Employs.accdb")
Set dbsArt = OpenDatabase("C:\Application\" _
& "Articles.accdb")
Dfiniparl'utilisateur
Ce type est utilis surtout pour la dclaration de variables contenant plusieurs types d'informations. La dfinition
dutypenepeutsefairequedanslasectiondedclarationd'unmodule.
Exemples
Dclaration d'un nouveau type Employs :
Public Type Employs
Matricule As String * 5
Nom As String * 20
Age As Integer
Service As String * 10
End Type
Utilisation du type Employs :
Dim NewEmploy As Employs
NewEmploy.Matricule = "15253"
...
Lesdclarationsdevariables
Ilexistedeuxfaonsdedclarerdesvariables:implicitementetexplicitement.
Dclarationimplicite
Ds que VBA rencontre une variable qui n'a pas fait l'objet d'une dclaration explicite, il la dclare de faon
impliciteenluidonnantuntypeVariant.
- 2-
Le type Variant permet de stocker successivement dans la mme variable des valeurs de type diffrent. Le type
delavariablevolueenfonctiondelavaleurquiluiestaffecte.
Private Sub Affectation()
' Le type de la variable devient String
var = "Bonjour"
MsgBox TypeName(var)
' Le type de la variable devient Integer
var = 12
MsgBox TypeName(var)
' Le type de la variable devient Double
var = 6.55957
MsgBox TypeName(var)
' Le type de la variable devient Boolean
var = True
MsgBox TypeName(var)
End Sub
Dclarationexplicite
Lavariableestdclareavantsonutilisation.
Ilestpossibled'imposerladclarationexplicitedesvariablesenutilisantdanslasectiondedclarationdechaque
module, l'instructionOptionExplicit.PourquecetteinstructionsoitdfiniepardfautdansVBA,activezl'option
DclarationdesvariablesobligatoiredumenuOutilsOptionsongletditeur.
Les dclarations explicites de variables peuvent se faire dans la section de dclarations des modules, ou dans le
corpsd'uneprocdureoud'unefonction.
Ladclarationestraliseparl'unedesquatreinstructionssuivantesutilisantlammesyntaxe:
- 3-
Reports!<NomEtat>.<NomVariable>
Lestableaux
Untableausedclaredelammefaonquelesvariables,avecdesinstructionsDim,Static,PrivateouPublic.
Un tableau est une variable comportant plusieurs compartiments permettant de stocker autant de valeurs. Par
opposition,unevariableclassiquedsigneuncompartimentdestinuneseulevaleur.
On peut faire rfrence au tableau globalement ou accder individuellement ses lments en utilisant des
indices.
Quel que soit le type des lments, un tableau ncessite 20 octets de mmoire, auxquels viennent s'ajouter
quatreoctetspourchaquedimensionetlenombred'octetsoccupsparlesdonnes.
Siletypededonnesn'estpasspcifi,leslmentsdutableaudclarprennentletypeVariant.
Le premier poste d'un tableau se voit attribuer l'indice 0 par dfaut. Toutefois, il est possible de mettre cette
valeurpardfaut1enutilisant,ensectiondedclaration,l'instructionOptionBase1.
L'utilisationd'uneclauseTopermetgalementdedfinirexplicitementlesindicesdedbutetdefin.
Exemples
Dclaration de diffrents tableaux:
' 12 lments indics de 0 11
Dim Remise (11) As Single
' 12 lments indics de 1 12
Dim Frais (1 To 12) As Single
' 2 dimensions : la premire indice de 0 10 et
' la seconde de 1 15
Dim Train (10,1 To 15) As String
Option Base 1
' 12 lments indics de 1 12
Dim Frais (12)
Utilisation d'un tableau deux dimensions.
L'exemple suivant permet de crer une table de multiplication : chaque lment du tableau Multiplie est gal au rsultat de la
multiplication de ses indices. Chaque ligne de la table est affiche dans la fentre excution (mthode Print de l'objet Debug).
Sub
Dim
Dim
Dim
Affiche_Tableau()
Multiplie(1 To 10, 1 To 10) As Integer
i, j As Integer
strResult As String
- 4-
End Sub
Rsultat dans la fentre d'excution.
Lestableauxdynamiques
Il s'agit de tableaux dont les dimensions sont dfinies l'excution. Ils permettent l'optimisation de la place
occupeenmmoire.
Dclaration :
Dim Tableau ()
Utilisation :
Avant de l'utiliser, il faut le dimensionner l'aide de l'instruction Redim :
ReDim Tableau (15 To 50)
Il est possible d'utiliser l'instruction ReDim pour modifier le tableau dynamique aussi souvent que ncessaire. Par
dfaut,lesvaleursprsentesdansletableausontcrases.L'instructionReDim Preservepermetd'tendreun
tableautoutenconservantlesvaleursexistantes.
ReDim Preserve Tableau (15 To 70)
Lesconstantes
Uneconstantereprsenteunevaleurnumriqueoudetypechanequinedoitpastremodifie.
L'instruction Constpermetdedclareruneconstanteetdedfinirsavaleurfixe.Unefoisdclare,laconstante
nepeuttremodifienirecevoirunenouvellevaleur.
Ladclarationd'uneconstanteestralisedansuneprocdureoudanslasectiondclarationd'unmodule.
Lesconstantesdeniveaumodulesontprivespardfaut.
Pourdclareruneconstantedeniveaumodulepublique,ilestncessairedefaireprcderl'instructionConst du
motclPublic.
Exemple
acForm
vbCurrency
Lesconstantesintrinsques
- 5-
Les constantes intrinsques sont des constantes mises disposition par les applications ellesmmes. C'est ainsi
qu'Access2003possdesespropresconstantesintrinsquesquisontvisiblespartirdel'explorateurd'objets.
UneconstanteintrinsquepeuttreutilisedansunemacrooudansducodeVisualBasic.
Les constantes intrinsques sont caractrises par un prfixe de deux lettres identifiant la bibliothque d'objets
oestdfinielaconstante.
Prfixedesconstante
Bibliothque
Prfixe
Exemples
Microsoft
Access
ac
acForm,acNormal
VisualBasic
vb
vbCurrency,
vbYellow
Microsoft
Office
mso
msoSortByFileName
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.
- 6-
- 7-
Lesstructuresdedcision
Ilestsouventncessairedetesterdesconditionsspcifiquesavantd'excuterdesinstructions.
Les structures de dcisions, appeles aussi alternatives ou branchements conditionnels, permettent, au terme
d'unevaluation,d'opterpourunblocdecodeouunautre.
Ondistinguedeuxinstructionsdebranchementconditionnel :
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-
MsgBox "A<B"
End If
End If
L'instructionSelectCase
Select Case
Excutedessquencesd'instructionsspcifiesenfonctiondelavaleurd'uneexpression.
L'instructionSelectCasepermetderemplaceravantageusementleElseIfdansdesinstructionsIf...Then...Else
lorsdelacomparaisonentreuneexpressionetplusieursvaleurs.
Syntaxe
IIf
Retourneunevaleurenfonctiond'unecondition.
Syntaxe
Exemple
Dim bln As Boolean
bln = IIf(A = B, True, False)
Ilestpossibled'imbriquerplusieursappelsdefonctionIIf.
Exemple
Dim IntI As Integer
IntI = IIf(A = B, IIf(B = C, 1, 0), 0)
- 3-
Lesstructuresenboucles
Lesstructuresenboucles(ourptitives)permettentderpterl'excutiond'unensembled'instructions.
Ondistingueplusieurstypesdestructuresenboucles:
Do...Loop
While...Wend
For...Next
For Each...Next
Do...LoopetWhile...Wendrptentuntraitementjusqu'cequ'unecertaineconditionsoitralise.
For...Nexteffectueuntraitementunnombredefoisdonn,enfonctiond'uncompteur.
ForEach...Nextpermetdeparcourirleslmentsd'unecollection.
L'instructionDo...Loop
Do...Loop
Excute une squence d'instructions tant que (While) ou jusqu' ce que (Until) la condition spcifie soit
vrifie.
Syntaxe1
Squenced'instructionsventuellementnonexcute(conditiontesteavantlasquence).
- 1-
While...Wend
Excuteunesquenced'instructionstantquelaconditionspcifieestvrifie.
Syntaxe
While <condition>
<squence d'instructions>
Wend
Exemple
Calcule et affiche le montant des frais annuels en fonction d'un tableau (FraisMensuel) de douze postes chargs antrieurement.
Dim intCpt As Integer
Dim FraisAnnuel As Currency
FraisAnnuel = 0
intCpt = 1
While intCpt <= 12
FraisAnnuel = FraisAnnuel + FraisMensuel (intcpt)
intCpt = intCpt + 1
Wend
MsgBox "Frais Annuels = " & FraisAnnuel
L'instructionFor...Next
For...Next
Permetderpterl'excutiond'unesquenced'instructionsenfonctiond'uncompteur.
Syntaxe
- 2-
et 20.
Dim j As Integer
Dim total As Integer
total = 0
For j = 5 To 20 Step 5
total = total + j
Next j
MsgBox "Le total est de " & total
L'instructionForEach...Next
- 3-
Lesoprateurs
Les oprateurs permettent d'effectuer des oprations arithmtiques sur des variables et/ou des constantes, de
comparerdesvariablesentreelles,detesterplusieursconditions...
Ondistingueplusieurscatgoriesd'oprateurs:
Calculralis
Addition
Soustraction
Divisionaveccommersultatunnombrevirguleflottante
Mod
Restedeladivisiondedeuxnombres
Divisionaveccommersultatunnombreentier
Multiplication
lvationlapuissance
Lesoprateursdecomparaison
Ilspermettentdecomparerdeuxvaleursnumriquesoudeuxchanesdecaractres.
Oprateur
Calculralis
<
Infrieur
<=
Infrieurougal
>
Suprieur
>=
Suprieurougal
gal
<>
Diffrentde
L'instructionOptioncompareutiliseauniveaumodulepermetdedfinirlamthodedecomparaisonpardfaut
- 1-
qu'ilconvientd'utiliserlorsdelacomparaisondechanesdecaractres.Ellepeutprendretroisvaleurs:
CompareBinary
(option par dfaut) fournit des comparaisons de chanes bases sur un ordre de tri driv de la reprsentation
binaireinternedescaractres :
A<B<E<Z<a<b<e<z<<<<<...
CompareText
fournit des comparaisons de chanes bases sur un ordre de tri qui ne distingue pas les majuscules des
minuscules:
(A=a)<(=)<(B=b)<(E=e)<(=)<(Z=z)<(=)...
CompareDatabase
fournit des comparaisons de chanes bases sur l'ordre de tri dtermin par l'identificateur de paramtres
rgionauxdelabasededonnescourante.
Lesoprateurslogiques
Ilspermettentdetestersimultanmentdeux(ouplusieurs)valeursboolennesouexpressionsrenvoyantcetype
valeur.Ilssontgnralementutilissavecl'instructionIf.
Oprateur
Calculralis
And
Si toutes les expressions ont la valeur True, le rsultat est True. Si l'une des expressions a la
valeurFalse,lersultatestFalse.
Or
Sil'uneaumoinsdesexpressionsapourvaleurTrue,lersultatestTrue(ouinclusif).
Xor
SiuneetuneseuledesexpressionsapourvaleurTrue,lersultatestTrue(ouexclusif).
Not
Renvoielecontrairedel'expression.
Eqv
RenvoieTruesilesdeuxexpressionssontidentiques.
Exemple
(A>=1)And(A<=9)renvoieTruesiAestcomprisentre1et9,
Not(A>=10)renvoieTruesiAeststrictementinfrieur10,
(A>0)Or(B>0)Or(C>0)renvoieTruesiaumoinsl'unedesvaleursestpositive.
L'oprateurdeconcatnation
L'oprateurdeconcatnationestlesigne&.Ilpermetd'assemblerdeschanesdecaractres,desvaleursetdes
expressions.Lersultatestunechanedecaractres.
Exemple
Concatnation du nom et du prnom spars par un espace:
StrNomPre = Nom & " " & Prenom
Prioritdesoprateurs
Lorsque plusieurs oprateurs sont contenus dans une mme expression, chacun est valu dans un ordre
prdfini,appelprioritdesoprateurs.
- 2-
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-
Lesrglesd'critureducode
Lescommentaires
Lescommentairespermettentdedocumenterunprogrammeafindelerendrepluslisible.
Syntaxe
Rem <commentaire>
ou
'<commentaire>
Exemple
'=======================================================================
Rem Procdure permettant de comparer deux zones
Rem de texte txtA et txtB
'=======================================================================
Private Sub cmdRsultat_Click ()
'si txtA suprieur txtB
If txtA > txtB Then
lblRsultat.Caption = "A>B"
Else
'si txtA gal txtB
If txtA = txtB Then
lblRsultat.Caption = "A=B"
Else
'txtA infrieur txtB
lblRsultat.Caption = "A<B"
End If
End If
End Sub
Lecaractredecontinuation
UneinstructionVBApeuttrecritesurplusieurslignesenutilisantuncaractredecontinuation:lecaractre
desoulignement(_)prcdd'unespace.
Exemple
If A _
> _
b then _
Bien sr, cet exemple n'est pas digne d'une programmation structure, mais il met en vidence le fait qu'il est
possibledescinderunelignedecoden'importequelendroit.
L'indentation
Il est important d'aligner sur le mme retrait les instructions de mme niveau. L'entteetlepieddeprocdure
tantalignsgauche,lecontenudoittredcald'uncrandroitel'aided'unetabulation.
Cesindentationsarentlastructuredelaprocdurequidevientainsipluslisible.
Lesnomsdesprocdures,variablesetconstantes
Lesnomsdesprocdures,variablesetconstantesdoiventrespecterlesrglessuivantes:
- 1-
- 2-
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
variable globale de type String
gstrNom
intQuantit
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-
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-
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:
- 1-
Lemodleobjetd'Access
Lediagrammeciaprspermetdedistinguerlesprincipauxobjetsglobauxd'Access.
Principalescollections
CommandBars
COMAddIns
Forms
- 1-
CurrentProject.
Reports
Modules
References
Printers
Autrescollections
DependencyObjects
AccessObjects
Properties
SmartTags
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
ImportExport
Specifications
ObjetsduModle
- 2-
AnswerWizard
Objetreprsentantl'aideintuitivedeMicrosoftOffice.
Application
Assistant
AutoCorrect
DBEngine
d'accsauxdonnes.
DependencyInfo
DoCmd
FileDialog
Objetpermettantd'accderdesfonctionnalitssimilaires
celles des botes de dialogue standards Ouvrir et
Enregistrer.
LanguageSettings
Screen
TempVar
VBE
CurrentProject
CurrentData
- 3-
Principesd'utilisationdesobjetsetdescollections
Lesproprits
Les proprits servent dcrire un objet. Certaines proprits sont en lecture seule et ne peuvent donc pas
tremodifiesparducodeVBA.
Syntaxe
{<objet> | <variable objet>}.<proprit>
Exemple
Dim strVersion As String
' Rcupration de la proprit version
' de l'objet application
' Cette proprit est en lecture seule
strVersion = Application.Version
' Modification du pointeur de la souris
' 0 : pointeur par dfaut - 11 : Sablier
If Screen.MousePointer = 0 Then
Screen.MousePointer = 11
Else
Screen.MousePointer = 0
End If
End Sub
Propritsreprsentantdesobjets
Les objets globaux et les objets instancis dans le code partir de classes fournies par VBA possdent des
propritsdontlavaleurestmisejourautomatiquementparlesystme.
Proprit
De l'objet
Contenu
ActiveControl
Screen
ActiveDataAccessPage
Screen
ActiveForm
Screen
Formulaire actif.
ActiveReport
Screen
tat actif.
Application
Objets multiples
DBEngine
Application
L'objet DBEngine.
Form
Contrle
sous-formulaire
Contrle actif.
Page active ou page contenant le
contrle actif.
Me
Form ou Report
Module
Form ou Report
Parent
Objets multiples
PreviousControl
Screen
RecordsetClone
Form
Report
Section
Contrle
sous-tat
Form, Report
Lesmthodes
Lesmthodespermettentd'effectuerdesactionspropresauxobjets.
- 1-
Ellesseprsententcommedesprocdures:
- 2-
- 3-
Une collection par dfaut est une collection contenant des objets auxquels il est possible de faire rfrence
traverslenomdel'objetconteneurdelacollection,c'estdiresansfairerfrencelacollectionellemme.
Objetspossdantunecollectionpardfaut
Objet
Container
Documents
Database
TableDefs
DBEngine
Workspaces
Form
Controls
Group
Users
Index
Fields
QueryDef
Parameters
Recordset
Fields
Relation
Fields
Report
Controls
TableDef
Fields
User
Groups
Workspace
Databases
Exemple
Rfrence au contrle txtDateDeb du formulaire Formations (la collection Controls est la collection par dfaut d'un formulaire).
Forms![Formations].[txtDateDeb].Value
Ou
Forms!Formations.txtDateDeb.Value
ou
Forms!Formations!txtDateDeb.Value
Affichageautomatiqued'instructions
L'diteur VBA dispose d'une technologie permettant de vous assister lors de l'utilisation d'objets. Ds que vous
tapez un nom d'objet reconnu par VBA suivi d'un point, la liste droulante des mthodes et proprits de cet
objetestalorsaffiche.Sivousslectionnezunemthode,l'assistantvousaidegalementsaisirlesdiffrents
argumentsqu'ellecomporte.
Exemple
Tapez le nom d'objet DoCmd suivi d'un point, la liste droulante suivante est affiche.
- 4-
L'icne
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 :
Lalistedesargumentsdelamthodeestalorsafficheets'adapteaufuretmesurequevouslessaisissez.
Les arguments facultatifs sont entre crochets. L'argument courant est en gras. Si pour un argument donn, il
existeunelistedevaleursprdfinies,lalistedroulantedesconstantescorrespondantesestalorsaffiche.
Saisissez maintenant le nom du paramtre transmis dans la fonction, savoir strFormName, suivi d'une virgule et de l'argument
acNormal, et de 3 virgules (pour les deux arguments optionnels).
- 5-
Dansl'exemplelalistedesvaleurspossiblespourl'argumentDataModeestaffiche.
Pour obtenir la liste des proprits et mthodes d'un objet, vous pouvez galement procder de la faon suivante :
- placez le curseur derrire le point (situ aprs le nom de l'objet),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les proprits/mthodes du menu contextuel ou utilisez
le raccourci-clavier Ctrl J.
De mme, pour obtenir la liste des constantes disponibles comme argument d'une mthode, vous pouvez procder de la faon
suivante :
- placez le curseur la place de l'argument (aprs la mthode ou aprs une virgule),
- cliquez sur le bouton droit de la souris et slectionnez l'option Rpertorier les constantes du menu contextuel.
- 6-
Instructionsutilisesaveclesobjets
L'instructionWith
L'instructionWithpermetd'accderplusieursfoisaummeobjetenlenommantuneseulefois.
Elleoffreplusieursavantages:
- 1-
End Select
End With
Next ctl
L'instructionIfTypeOf
L'instructionIfTypeOfpermetdetesterletyped'unobjet.
Syntaxe
If TypeOf <objet> Is <TypeObjet> Then
<code utilisant des mthodes et proprits>
<se rapportant l'objet>
End If
Exemple
If TypeOf ctl Is acListBox Then ...
L'instructionSet
L'instructionSetpermetd'attribuerunerfrenced'objetunevariable,appelevariableobjet.
Cetteinstructionpeuttreutilisepourcrerunerfrenceversunnouvelobjet(enutilisantventuellementune
mthodepermettantdecrerl'objet)oupouraffecterunerfrenceunobjetdjexistant.
Syntaxes
Crationd'unerfrenceversunnouvelobjet
Set <NomObjet> = New <expression objet>
ou
Set <NomObjet> = <mthode permettant de crer l'objet>
<NomObjet>
<expression objet>
nomdelavariableobjet
nomd'unobjetoud'unevariableobjetdemmetype
Le mot cl New permet de crer une nouvelle instance de la classe. Si la variable objet contient dj une rfrence, cette dernire est
alors perdue.
Vous ne pouvez utiliser le mot cl New pour rfrencer un objet que si le composant ActiveX de l'objet fournit une bibliothque de type
(ex : objets ADO, objets Excel...).
Affectationd'unerfrenceunobjetexistant
Set <NomObjet> = <expression objet>
<NomObjet>
nomdelavariableobjet
<expression objet> nomd'unobjetoud'unevariableobjetdemmetype
Rinitialisationdesvariablesobjets
Set <NomObjet> = Nothing
Nothing permet de rinitialiser la variable objet et de librer l'ensemble des ressources systme et mmoire
associescetobjet.
Exemples :
Cration de rfrences vers de nouveaux objets.
Les exemples 1 et 2 permettent de crer une nouvelle table et de l'ajouter la base de donnes courante. Pour excuter ces
exemples, vous devez slectionner la rfrence Microsoft DAO 3.6 Object Library au projet (Outils Rfrences).
Exemple 1 : utilisation du mot cl New
- 2-
- 3-
Exemple 3 :
Cration d'un formulaire avec une zone de texte et une tiquette
' Objet Formulaire
Dim frmEmploye As Form
' Nom du formulaire
Dim strName As String
' Objet contrle
Dim ctl As Control
' Cration d'un nouveau formulaire
Set frmEmploye = Application.CreateForm
With frmEmploye
' Titre du formulaire
.Caption = "Employes"
' Largeur et hauteur du formulaire
.Width = 5000
.Section(acDetail).Height = 2000
' Supprime les boutons de dplacement
.NavigationButtons = False
' Supprime le slecteur d'enregistrement
.RecordSelectors = False
' Centre le formulaire dans l'application
.AutoCenter = True
' Nom du formulaire
strName = frmEmploye.Name
End With
' Ajout de la zone de texte Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acTextBox, , "", "", 2000, 500, 2500, 300)
' Mise en forme de la zone de texte
With ctl
' Nom de la zone de texte
.name = "txtNom"
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlack
.FontBold = True
End With
' Ajout de l'tiquette Nom de l'employ
Set ctl = Application.CreateControl(strName, _
acLabel, , "", "", 500, 500, 1500, 300)
' Mise en forme de l'tiquette
With ctl
' Nom de l'tiquette
.Name = "lblNom"
' Titre de l'tiquette
.Caption = "Nom de l'employ : "
' Couleurs
.BackColor = vbWhite
.ForeColor = vbBlue
End With
' Sauvegarde du formulaire
DoCmd.Save , "Fiche_Employe"
Docmd.Close
Formulaire cr par ce code :
- 4-
- 5-
Lesclassesd'objets
Description
Une classe est en quelque sorte un moule d'o naissent les objets. Par exemple, il est possible de raliser de
petits santons en pltre avec un moule adquat. On peut dire que tous les santons raliss sont des Objets,
chacund'euxpouvantavoirtermedescouleursetunhabillagediffrents,etquelesmoulessontdesClasses.
Ainsi, les objets issus d'une mme classe hritent systmatiquement de toutes les mthodes (codes), les
proprits (donnes) et les vnements de leur classe d'origine. Par la suite, les caractristiques et le
comportementdechacund'euxpourronttreadaptsenfonctiondesbesoinsdel'application.
Enfait,toutobjetAccessestissud'uneclasse.
Lesmodulesdeclasse
Les modules de classe vous permettent de crer et de manipuler dans vos applications vos propres types
d'objets.
Lesmodulesdeclassesprsententlescaractristiquessuivantes:
- 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 :
- 1-
Si la fentre Proprits n'est pas affiche, choisissez l'option Fentre proprits du menu Affichage ou utilisez le raccourci
clavier F4.
Dfinissez les variables ncessaires pour l'utilisation des proprits dans le module de classe Message. La variable strTitle est
associe la proprit Title, la variable blnBeep la proprit IsBeep.
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 :
- 2-
Crez pour cela un formulaire Employs avec deux boutons de commande cmdFermer et cmdQuitter.
- 3-
Il est possible d'enrichir le module de classe Message en dfinissant de nouvelles proprits et de nouvelles mthodes (ex :
messages d'erreur...).
- 4-
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:
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-
4.Objetsdelabibliothque laclassed'objetslectionnedanslalisteRsultatestencadre.
5.Mthodes,proprits,vnementsetconstantesserapportantl'objetslectionnouencadrdanslaliste
degauche.LemembreslectionndanslalisteRsultatestencadr.
6.Dtaildel'lmentslectionn.
Recherchedansl'explorateurd'objets
Poureffectuerunerecherchedansl'explorateurd'objets,procdezdelamaniresuivante:
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-
Propritsetmthodesd'objetsAccess
Cette partie dcrit les proprits et mthodes des objets couramment utiliss dans Access. Les objets Form et
ReportserontdcritsdanslechapitrePersonnalisationdesformulairesettats.
Pour obtenir la liste exhaustive des objets, des proprits et mthodes, vous pouvez rechercher dans l'aide VBA
Accessouutiliserl'explorateurd'objets.
L'objetApplication
L'objetApplicationfaitrfrencel'applicationMicrosoftAccessactive.
Proprits
AutomationSecurity
BrokenReference
Build
CodeContextObject
CurrentObjectName
CurrentObjectType
FeatureInstall
Retourneletypedel'objetbasededonnesactif.
IsCompiled
MenuBar
Name
Parent
ProductCode
Retournelenomdel'application("MicrosoftAccess").
ShortcutMenuBar
UserControl
Version
Visible
RetournelenumrodeversiondeMicrosoftAccess.
Permetdefairerfrencel'objetpre.
Dtermine l'identificateur universel unique de Microsoft
Access.
Permetdemasquerl'application.
Mthodes
AccessError
AddToFavorites
BuildCriteria
Permetdeconstruirefacilementlescritresd'unfiltre.
- 1-
CloseCurrentDatabase
ColumnHistory
CompactRepair
Compacteetrparelabasededonnes(.mdb)ouleprojet
Microsoft Access (.adp) spcifis. Renvoie un Boolean
prenantlavaleurTruesil'oprationarussi.
ConvertAccessProject
CreateAccessProject
PermetdecrerunnouveauprojetMicrosoftAccess(.adp)
surdisque.
CreateAdditionalData
CreateControl
CreateForm
Permetdecrerunformulaireetretourneunobjetdetype
Form.
CreateGroupLevel
Create
NewWorkgroupFile
Creunnouveaufichierdegroupedetravailpourpermettre
aux utilisateurs d'accder de manire scurise une base
dedonnes.
CreateReport
CreateReportControl
CurrentDb
Permetdecreruntatetretourneunobjettat.
CurrentUser
Permetderetournerlenomdel'utilisateuractueldelabase
dedonnes.
DefaultWorkspace
Clone
DeleteControl
Permetdecreruncontrledansuntatouvert.
Renvoie une variable objet faisant rfrence la base de
donnesactuellementouvertedansMicrosoft.
DeleteReportControl
Echo
ExportXML
Permetdesupprimeruncontrledtermindansuntat.
FollowHyperLink
OuvreledocumentoulapageWebspcifiparuneadresse
delienhypertexte.
GetOption
HyperlinkPart
ImportNavigationPane
Chargeuneconfigurationenregistreduvoletdenavigation
partirdudisque.
ImportXML
- 2-
SpcifiesiMicrosoftAccessdoitredessinerl'cran.
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.
LoadCustomUI
LoadPicture
NewAccessProject
ChargelecodeXMLquireprsenteunrubanpersonnalis.
Nz
NewCurrentDatabase
OpenCurrentDatabase
Quit
PermetdequitterAccess.
RefreshDatabase
Window
ChargeuneimagedansuncontrleactiveX.
Permet de crer et d'ouvrir un nouveau projet Microsoft
Access(.adp)commeprojetAccessactif.
RefreshTitleBar
Run
ActualiselabarredetitredeMicrosoftAccess.
RunCommand
SetDefaultWorkgroup
File
SetHiddenAttribute
SetOption
Dfinitlefichierspcificommefichierdegroupedetravail.
SysCmd
TransformXML
Permetd'excuteruneprocdureFunctionouSubspcifie
parMicrosoftAccessoudfinieparl'utilisateur.
Activel'attributcachd'unobjetAccess.
Dfinit la valeur en cours d'une option dans la bote de
dialogueOptions.
Exemple
Bouton de commande permettant de quitter Access en sauvegardant tous les objets.
Sub cmdQuitter_Click()
Application.Quit acSaveYes
End Sub
Exemple
Le code suivant permet de modifier les couleurs par dfaut des feuilles de donnes (contenues dans l'onglet Feuilles de donnes de
la bote de dialogue Options d'Access).
With Application
' Police bleue fonc
.SetOption "Default Font Color", 4
' Arrire plan : blanc
.SetOption "Default Background Color", 15
' Quadrillage bleu clair
.SetOption "Default Gridlines Color", 12
End With
Fonctionsapplicablesunjeud'enregistrements
- 3-
Cesfonctionssontgnralementutilisesdanslesformulairesettats:
DAvg
DCount
DFirst
DLast
Renvoielepremierenregistrementd'unjeud'enregistrements.
Renvoieledernierenregistrementd'unjeud'enregistrements.
DLookUp
Recherchelavaleurd'unchampparticulierquifaitpartied'un
jeud'enregistrements.
DMin
DMax
DStDev
valuel'carttypepourunchantillondepopulationpourun
jeud'enregistrements.
DstDevP
Estime l'carttype
d'enregistrements.
DSum
DVar
DVarP
Calcule la variance
d'enregistrements.
Eval
d'une
d'une
population
population
dans
dans
un
un
jeu
jeu
L'objetDoCmd
L'objetDoCmdpermetd'excuterpartirdeVisualBasiclaplupartdesactionsexcutablesvialesmacros.
chaque action macro correspond une mthode. Les arguments de l'action deviennent les arguments de la
mthode.L'objetDoCmdnedisposepasdeproprits.
Les actions macro correspondant aux mthodes sont indiques entre parenthses.
Excutiond'actions
CancelEvent
Quit
RunCommand
RunMacro
RunSql
(AnnulerEvnement)
Annuleunvnement.
(Quitter)
QuitteACCESS.
(ExcuterCommande)
Excuteunecommanded'unmenuoud'unebarred'outils.
(ExcuterMacro)
Excuteunemacro.
(ExcuterSql)
ExcuteunordreSQL.
Donnesdesformulairesettats
ApplyFilter
FindNext
FindRecord
- 4-
(AppliquerFiltre)
Appliqueunfiltreunetable,unformulaire,untat.
(TrouverSuivant)
Continuelarecherche.
(TrouverEnregistrement)
Recherched'unenregistrement.
GotoControl
GotoPage
GotoRecord
SearchForRecord
(AtteindreContrle)
Dplacelefocussuruncontrle.
(AtteindrePage)
Dplace le focus sur le premier contrle de la page indique
duformulaireactif.
(AtteindreEnregistrement)
Atteintunenregistrement.
(TrouverEnregistrement)
Permetderechercherunenregistrementspcifiquedansune
table,unerequte,unformulaireouuntat.
Import/Exportdedonnes
CopyDatabaseFile
OutputTo
SendObject
TransferDatabase
TransferSpread
Sheet
TransferShare
PointList
TransferSQL
Database
TransferText
(CopierFichierBaseDeDonnes)
Copie la base de donnes connecte au projet actif un
fichier de base de donnes Microsoft SQL Server pour
l'exporter.
(CopierVers)
Permet d'exporter un objet Access (table, formulaire) dans
une autre base Access ou un autre type de fichier (Excel,
XML...).
(EnvoyerObjet)
Envoieunobjetverslamessagerie.
(TransfrerBase)
Importeouexporteunebasededonnes.
(TransfrerFeuilleCalcul)
Importeouexporteunefeuilledecalcul.
(TransfrerListeSharePoint)
Permet d'importer ou de lier des donnes partir d'un site
MicrosoftWindowsSharePointServices3.0.
(TransfrerBaseDeDonnesSQL)
Transfre l'intgralit de la base de donnes Microsoft SQL
ServerspcifieversuneautrebasededonnesSQLServer.
(TransfrerTexte)
ImporteouexportedutexteauformatASCII.
Manipulationd'objets
Close
CloseDatabase
CopyObject
DeleteObject
Maximize
Minimize
MoveSize
OpenDataAccess
Page
OpenDiagram
(Fermer)
Fermeunobjet(formulaire,tat...).
(FermerBaseDonnes)
Fermelabasededonnesouvertedansl'interfaceAccess.Si
la base de donnes contient des objets qui n'ont pas t
enregistrslorsquevousutilisezlamthodeCloseDatabase,
des botes de dialogues identiques celles qui s'affichent
lorsque vous cliquez sur Fermer la base de donnes
apparaissent.
(CopierObjet)
Permet de copier un objet Access dans la mme base ou
dansuneautrebase.
(SupprimerObjet)
Supprimeunobjet.
(Agrandir)
Agranditunefentre.
(Rduire)
Rduitunefentreenicne.
(DplacerDimensionner)
Dplaceoudimensionneunefentre.
(OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
(OuvrirSchma)
Ouvreunschmadebasededonnes.
- 5-
OpenForm
OpenFunction
OpenModule
OpenQuery
OpenReport
OpenStored
Procedure
OpenTable
OpenView
PrintOut
Rename
RepaintObject
Requery
Restore
Save
SelectObject
ShowAllRecords
(OuvrirFormulaire)
Ouvreunformulaire.
(OuvrirFonction)
Ouvre une fonction utilisateur dans une base de donnes
MicrosoftSQLServerpourl'afficherdansMicrosoftAccess.
(OuvrirModule)
OuvreunmoduleVBA.
(OuvrirRequte)
Ouvreunerequte.
(OuvrirEtat)
Ouvreuntat.
(OuvrirProcdureStocke)
Ouvre une procdure stocke en mode Feuilles de donnes,
enmodeCrationouenAperuavantimpression.
(OuvrirTable)
Ouvreunetable.
(OuvrirPageAccsDonnes)
Ouvreunepaged'accsauxdonnes.
(Imprimer)
Imprimesurpapier.
(Renommer)
Renommeunobjet.
(RedessinerObjet)
Redessineunobjet(formulaire...).
(Actualiser)
Met jour les donnes de l'cran (relance la requte source
del'objet).
(Restaurer)
Redonneunefentresataillenormale.
(Enregistrer)
Enregistrel'objetspcifioul'objetactif.
(SlectionnerObjet)
Slectionneunobjetdebasededonnes.
(AfficherTousEnreg)
Dsactiveunfiltreetraffichetouslesenregistrements.
Modificationdel'interfaceAccess
AddMenu
Hourglass
LockNavigation
Pane
SetDisplayed
Categories
SetMenuItem
SetWarnings
ShowToolbar
(AjouterMenu)
Permetdecrerunebarredemenuouunmenucontextuel.
(Sablier)
Affichelepointeurdesourisensablierounon.
(VerrouillerVoletNavigation)
Permet d'empcher les utilisateurs de supprimer des objets
de base de donnes qui sont affichs dans le volet de
navigation.
(AccderA)
Prcise les catgories qui sont affiches sous Atteindre la
catgoriedanslabarredetitreduvoletdenavigation.
(DfinirElmentMenu)
Permet de dfinir l'tat (actif ou inactif, coch ou non
coch) d'lments de menu personnalis ou global pour la
fentreactive.
(Avertissements)
Active/dsactive l'affichage des messages d'avertissement
standards.
(AfficherBarreOutils)
Affiche/masqueunebarred'outils.
Divers
Beep
(Bip)
Emetunbipsonore.
- 6-
ClearMacroError
DoMenuItem
Echo
PlainText
RunSavedImport
Export
SetDefault
WorkgroupFile
SetHiddenAttribute
SingleStep
(EffacerMacroErreur)
Supprime les informations relatives une erreur stockes
dansunobjetMacroErreur.
(AfficherBarreOutils)
Affiche la commande de menu approprie pour Microsoft
Access.
(Echo)
Masque ou affiche les rsultats d'une macro lors de son
excution.
Supprime la mise en forme de texte enrichi d'une chane et
renvoieunechanedetextesansmiseenforme.
(ExcuterImportationExportationSauvegarde)
Excute une spcification d'importation ou d'exportation
enregistre, cre partir de l'Assistant Importation ou de
l'AssistantExportation.
Dfinit le fichier spcifi comme fichier de groupe de travail
pardfaut.
Activel'attributcachd'unobjetAccess.
(PasAPas)
Suspend l'excution de la macro active et ouvre la bote de
dialoguePaspas.
Actionsdemacrosnonprisesencompteparl'objetDoCmd
BoiteMsg
ExcuterApplication
ExcuterCode
EnvoiTouches
Utilisezlafonctionoul'instructionMsgBox.
UtilisezlafonctionShell.
AppelezdirectementlafonctiondansVisualBasic.
Utilisezl'instructionSendKeys.
ActiveControl
ActiveData
AccessPage
ActiveDataSheet
ActiveForm
ActiveReport
Application
MousePointer
Parent
Fournitunerfrenceaucontrleactif.
PreviousControl
Fournitunerfrencelapaged'accsauxdonnesactive.
Fournitunerfrencelafeuillededonnesactive.
Fournitunerfrenceauformulaireactif.
Fournitunerfrencel'tatactif.
Permetd'accderl'objetApplicationetsesproprits.
Permetdespcifierletypedepointeurdesouris.
Fournitunerfrenceaupre(objetconteneur)d'uncontrle,
d'unesection,d'unsousformulaire...
Exemple
- 7-
Proprits
Count
Parent
Dterminelenombred'objetsrfrences.
Nonutilise.
Mthodes
AddFromFile
AddFromGuid
Item
- 8-
Remove
SupprimeunobjetrfrencedanslacollectionReferences.
Propritsdel'objetReference
BuiltIn
Indiquesiunerfrencepardfautquiestncessairepourle
bonfonctionnementd'Access.
FullPath
Guid
IsBroken
Kind
Major
Indiqueletypederfrence.
Mineur
Name
Indiquelenumrodeversionmineurdel'application.
Exemple
Private Sub cmdReferences_Click()
Dim ref As Reference
Dim i As Integer
' Affiche le nombre total de rfrences
MsgBox "Le nombre total de rfrences est de : " &
References.Count
' Parcourt les rfrences et affiche leur nom et chemin
d'accs
i = 0
For Each ref In Application.References
MsgBox " Nom : " & ref.Name & " " & Chr(13) & Chr(13) _
& " Chemin : " & ref.FullPath
Next ref
' Ajoute les bibliothques d'objet Excel et Word
' Erreur si bibliothque dj rfrence
On Error Resume Next
Application.References.AddFromFile "Excel.exe"
Application.References.AddFromFile "MsWord.olb"
On Error GoTo 0
' Affiche le nombre total de rfrences
MsgBox "Le nombre total de rfrences est de : " &
References.Count
End Sub
LacollectionPrinters
La collection Printerscontientdesobjets Printerreprsentantchacununeimprimantedisponiblesurlesystme
encours.
L'objet Printer n'existait pas dans les versions prcdentes d'Access.
Propritsdel'objetPrinter
BottomMargin
ColorMode
Margebassed'unepageimprime.
ColumnSpacing
Copies
Indiquelenombredecopiesimprimer.
DataOnly
couleur
- 9-
DefaultSize
DeviceName
DriverName
Duplex
Indiquelenomdupiloteutilisparl'imprimante.
ItemLayout
ItemsAcross
ItemSizeHeight
ItemSizeWidth
LeftMargin
Orientation
Margegauched'unepageimprime.
PaperBin
PaperSize
Port
PrintQuality
Indiquelebacquedoitutiliserl'imprimante.
RightMargin
RowSpacing
Margedroited'unepageimprime.
TopMargin
Margehauted'unepageimprime.
Les autres proprits (ColumnSpacing, RowSpacing, ItemSizeHeight...) permettent d'effectuer le formatage de la section Dtail
d'un formulaire ou d'un tat.
- 10 -
Objetsd'accsauxdonnesDAOetADO
Lesobjetsd'accsauxdonnessonttrsutiles:ilspermettent,viaVBA,demanipulerlesdonnes(recherches,
misesjour,ajoutsd'enregistrements...)debasesdedonneslocalesoudistantes.
Dans les versions antrieures Access 2000, le seul modle d'accs aux donnes tait le modle DAO:Data
AccessObjects.
AvecAccess2000estapparulemodleADO :ActiveXDataObjects.
Microsoftrecommanded'utiliserlemodleADOpourlesraisonssuivantes :
- 1-
Lemodled'accsauxdonnesDAO
Prsentation
La bibliothque d'objets DAO (Data Access Objects) prend en charge deux environnements de bases de donnes
diffrents,appelsespacesdetravail :
- les espaces de travail Microsoft Jet: ils permettent d'accder des bases de donnes de type Access, des serveurs de bases
de donnes ODBC (Open Database Connectivity) et des bases de donnes externes telles que dBASE, Microsoft Excel et
Paradox accessibles via un pilote ISAM (Indexed Sequential Access Method),
- les espaces de travail ODBCDirect: ils permettent d'accder des serveurs de base de donnes ODBC de faon "directe",
c'estdire sans charger le moteur de base de donnes Microsoft Office 12. Cet espace de travail est par consquent
recommand pour excuter des requtes, des procdures stockes, ou des fonctions spcifiques ODBC sur un serveur distant
de type SQL Server.
Pour pouvoir utiliser la bibliothque d'objets DAO, il est ncessaire de cocher la rfrence Microsoft DAO 3.6
Object Library dans la liste des rfrences aux bibliothques d'objets (pour afficher cette liste, slectionnez
l'optionRfrencesdumenuOutils).
Si cette rfrence n'est pas disponible, vous devez slectionner le fichier DAO360.dll partir du bouton de
commande Parcourir. Ce fichier est gnralement situ dans le rpertoire "C:\Program Files\Fichiers
communs\MicrosoftShared\DAO".
Le fichier d'aide DAO360.chm, situ dans le rpertoire C:\Program Files\Fichiers Communs\Microsoft
Shared\Office12\1036vouspermetd'obtenirdesinformationsdtaillessurl'utilisationdumodleDAO.
HirarchiedesobjetsDAO
- 1-
- 2-
Descriptiondescollections
Unecollectionexistepourchacundestypesd'objetDAO,l'exceptiondel'objetDBEngine.
Toute collection inclut tous les objets d'un type donn. Par exemple, la collection DataBases contient tous les
objetsDataBaseouverts.
ToutobjetDAOpossdeunecollectionProperties,l'exceptiondesobjetsError.
La plupart des objets DAO disposent de collections par dfaut. Par exemple, la collection par dfaut d'un objet
RecordsetestlacollectionFields.Lecodepeutainsitresimplifi.
Containers:EnsembledesobjetsContainerd'unebasededonnes.
Databases:Contienttouteslesbasesdedonnes(objetsDataBase)ouvertesdansunWorkspace.
Documents:EnsembledesobjetsDocumentd'unContainer.
Errors:Ensembledeserreurs(Error)dumoteurd'accsauxdonnes(DBEngine).
Fields : Ensemble des champs (Field) d'une table (TableDef), d'une requte (QueryDef), d'un index (Index),
d'unjeud'enregistrements(Recordset)oud'unerelation(Relation).
Groups : Ensemble des groupes d'utilisateurs (Group) d'un Workspace ou ensemble des groupes d'utilisateurs
(Group)auxquelsappartientunutilisateur(User).
Indexes:Ensembledesindex(Index)d'unetable(TableDef).
Parameters:Ensembledesparamtres(Parameter)d'unerequte(QueryDef).
Properties:Ensembledesproprits(Property)d'unobjet.
QueryDefs:Contienttouteslesdfinitionsderequte(QueryDef)d'unebasededonnes(Database).
Recordsets:Ensembledesjeuxd'enregistrementsouverts(Recordset)d'unebasededonnes(Database).
Relations:Ensembledesrelations(Relation)d'unebasededonnes(Database).
TableDefs:Contienttouteslesdfinitionsdetable(TableDef)d'unebasededonnes(Database).
Users:Ensembledesutilisateurs(User)d'unWorkspaceoud'ungrouped'utilisateurs(Group).
Workspaces:ContienttouslesobjetsWorkspaceactifs.
Proprits
Count :Renvoielenombred'lmentsdanslacollection.
Item :Renvoieunmembrespcifiqued'unecollectionenfonctiondesapositionoudesacl.
Toutes les collections peuvent utiliser ces proprits.
Exemple
Liste des tables de la base de donnes courante.
Dim intI As Integer
For intI = 0 To CurrentDb.TableDefs.Count - 1
MsgBox CurrentDb.TableDefs.Item(intI).Name
Next intI
- 3-
Mthodes
Append:Ajouteunobjetlacollection.
Delete:Supprimeunobjetdelacollection.
Refresh:Ractualiselecontenudelacollection.
Les collections Errors, Databases, Containers, Documents, Parameters et Recordsets ne peuvent utiliser
lesmthodesAppendetDelete.Leurcontenuestdirectementgrparlemoteurdelabasededonnes.
L'objetDBEngine
Ilreprsentelemoteurd'accsauxdonnesMicrosoftJet.Ilcontientetcontrlel'ensembledesobjetsDAO.
Proprits
DefaultType:Dfinitletyped'espacedetravail,MicrosoftJetouODBCDirect.
DefaultUser etDefaultPassword:Nomd'utilisateuretmotdepasseutilissparlemoteurdebasededonnes
MicrosoftJetquandunobjetWorkspaceestcrsansnomd'utilisateurnimotdepassespcifique.
InitPath:DfinitourenvoiedesinformationssurlaclduregistreWindowsquicontientdesvaleursrelativesau
moteurdebasededonnesMicrosoftJet.
SystemDB : Dfinit ou renvoie le chemin d'accs au fichier d'informations sur le groupe de travail en cours
(MDW).
Version:Valeurquiindiquelaversiondelabasededonnesoudumoteurdebasededonnesassocil'objet.
Mthodes
CompactDatabase:Compacteunebasededonnesferme.
CreateWorkspace:CreunnouvelobjetWorkspace.
Idle : Interrompt le traitement, permettant ainsi au moteur de base de donnes Microsoft Jet de terminer les
tchesenattente.
SetOption:Permetdemodifiertemporairementlesoptionsdumoteurd'accsauxdonnesMicrosoftJet.
Collections
Workspaces,Properties,Errors
Exemple
Compactage de la base de donnes Devis en Devis2.
DBEngine.CompactDatabase "c:\devis\devis.accdb", _
"c:\devis\devis2.accdb"
Affichage de la version du moteur Microsoft Jet.
MsgBox "Numro de version du moteur Microsoft Jet :" &
DBEngine.Version,_
vbExclamation
LesobjetsWorkspace
- 4-
UnobjetWorkspace(espacedetravail)permetdedfinirunesessiondetravailpourunutilisateur.
Proprits
Name:Renvoielenomdel'objetWorkspace.
Type:Renvoieoudfinitletypedeconnexiondel'objetWorkspace(constantedbUseJetsil'objetWorkspaceest
connectaumoteurdebasesdedonnesMicrosoftJet,constantedbUseODBCsil'objetWorkspaceestconnect
unesourcededonnesODBC).
UserName:Renvoielenomdupropritairedel'objetWorkspace.
Autresproprits
DefaultCursorDriver,IsolateODBCTrans,LoginTimeout
Mthodes
BeginTrans:Dmarreunenouvelletransaction.
Close:FermeleWorkspace.
CommitTrans:Termineetvalidelatransactionencours.
CreateDatabase:CreunnouvelobjetDatabase.
CreateGroup:Creunnouveaugrouped'utilisateurs.
CreateUser:Creunnouvelutilisateur.
OpenDatabase:Ouvreunebasededonns.
RollBack:Annuleettermineunetransactionencoursetymetfin.
Collections
Databases,Users,Groups,Properties
Exemple
Ouverture de la base de donnes Devis dans l'espace de travail actif.
Dim
Dim
Set
Set
wrk
dbs
wrk
dbs
As Workspace
As Database
= DBEngine.Workspaces(0)
= wrk.OpenDatabase("C:\devis\devis.accdb")
LesobjetsDatabase
UnobjetDatabasereprsenteunebasededonnesouverte.
Proprits
CollatingOrder:Dfinitlamthodedecomparaisondeschanesdecaractresselonlalangue.
Connect:Dterminelesinformationsncessairesl'ouvertured'unebasededonnesexterneoul'attachement
d'unetabled'unebaseexterne.
DesignMasterID:DtermineleGUIDdelastructurematred'unjeuderplicas.
Name:Renvoielenomdelabase.
- 5-
RecordsAffected:Indiquelenombred'enregistrementsaffectsparladerniremthodeExecute.
Replicable:Indiquesilabasededonnespeutfairel'objetd'unerplication.
ReplicaID:Renvoiel'identifiantd'unrplica.
Transactions:Indiquesilabasededonnesdelaconnexionprendencomptelestransactions(ODBCDirect).
Updatable:Indiquesilesmodificationsdel'objetDatabasesontautorises.
Version:Identifielaversionduformatdelabasededonnes.
V1xNullBehavior:IndiquesileschanesdelongueurnullesontconvertiesenvaleursdetypeNull.
Mthodes
Close:Fermel'objetDatabase.
CreateProperty:CreunnouvelobjetProperty.
CreateQueryDef:CreunnouvelobjetQueryDef.
CreateRelation:CreunnouvelobjetRelation.
CreateTableDef:CreunnouvelobjetTableDef.
Execute:ExcuteunerequteactionouuneinstructionSQL.
MakeReplica:CreunRplicadelabasededonnes.
NewPassword:DfinitunnouveaumotdepassepourunebasededonnesMicrosoftJet.
OpenRecordset:CreunnouvelobjetRecordset.
PopulatePartial:SynchroniselesmodificationsapportesunRplicapartielparrapportunRplicaintgral.
Synchronize:SynchronisedeuxRplica.
Collections
TableDefs,QueryDefs,Relations,Containers,Recordsets,Properties
Exemple
Initialisation d'une rfrence sur la base de donnes courante.
Dim dbDevis as DAO.Database
Set dbDevis = CurrentDb()
Ouverture d'une base de donnes externe.
Dim dbsDevis as DAO.Database
Set dbsDevis = DBEngine.OpenDatabase _
("C:\Clients\Clients.accdb")
Cration d'un objet RecordSet de type table en lecture seule sur la table Clients de la base de donnes courante.
Dim dbs As Database
Dim rstCli As DAO.Recordset
Set dbs = CurrentDb
- 6-
Dfinition
Reprsente une table.
Reprsente le rsultat
d'une requte dont les
enregistrements peuvent
tre mis jour.
Dfinition
Reprsente le rsultat
d'une requte en lecture
seule.
Intrt
Permet d'utiliser les index.
Constante
de dclaration
dbOpenTable
Constante
de dclaration
Rapidit
dbOpen
ForwardOnly
dbOpen
Snapshot
Les types d'objets Recordset concerns par chaque proprit ou mthode sont reprsents par T (Table), D (Dynaset), S (Snapshot),
F (Forward Only).
Proprits
AbsolutePosition:Dterminelapositionrelatived'unenregistrementdansunrecordset(DS).
BOF:IndiqueunpositionnementaudbutduRecordset(DSTF).
Bookmark:Renvoieoudfinitunsignetquiidentifiedefaonuniqueunenregistrement(DST).
Bookmarkable:IndiquesileRecordsetprendenchargelessignets(DST).
CacheStart:Dfinitourenvoielesignetdupremierenregistrementplacerenmmoirecache(D).
DateCreated:Renvoieladateetl'heuredecrationdelatablesousjacente(T).
EditMode:Indiquel'tatdemodificationdel'enregistrementencours(DT).
EOF:IndiqueunpositionnementlafinduRecordset(DSTF).
Filter:Permetdedfinirlefiltreappliquer(DSF).
Index:Dfinitl'indexutiliser(T).
LockEdits:Dfinitlaconditiondeverrouillage(DTS).
LastModified:Renvoieunsignetindiquantledernierenregistrementmodifi(DT).
LastUpdated:Renvoieladateetl'heuredederniremodificationdelatabled'originesousjacente(T).
Name:RenvoielenomduRecordset(DSTF).
- 7-
NoMatch:Indiquesil'enregistrementrecherchattrouv(DST).
PercentPosition : Retourne la position en cours d'un enregistrement en pourcentage du nombre total
d'enregistrements(DST).
RecordCount:Indiquelenombred'enregistrementssollicits(DSTF).
Restartable : Indique si le Recordset prend en charge la mthode Requery qui excute nouveau la requte
sousjacente(DSFT).
Sort:Dfinitl'ordredetri(DS).
Transactions:IndiquesileRecordsetsupportelestransactions(DTSF).
Type:IndiqueletypedeRecordset(DSTF).
Updatable:Indiquelesmisesjourautorises(DTSF).
ValidationText:Spcifielemessaged'erreursilaconditiondevalidationestfausse(DSTF).
ValidationRule:SpcifielaconditiondevalidationduRecordset(DSTF).
Mthodes
AddNew:Creunnouvelenregistrement(DT).
CancelUpdate:Annulelesmisesjourenattente(DT).
Clone:CreunecopieduRecordset(DST).
Close:FermeleRecordset(DSTF).
CopyQueryDef:Creunecopiedel'objetQueryDefassociauRecordset(DSF).
Delete:Supprimel'enregistrementcourant(DT).
Edit:Passel'enregistrementcourantenmodeEdition(DT).
FindFirst:Localiselepremierenregistrementrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindLast:Localiseledernierenregistrementrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindNext:Localisel'enregistrementsuivantrpondantaucritreetenfaitl'enregistrementcourant(DS).
FindPrevious:Localisel'enregistrementprcdentrpondantaucritreetenfaitl'enregistrementcourant(DS).
GetRows:Extraitplusieurslignesd'unRecordsetetlescopiedansuntableau(DSTF).
MoveFirst:Localiselepremierenregistrementetenfaitl'enregistrementcourant(DST).
MoveLast:Localiseledernierenregistrementetenfaitl'enregistrementcourant(DST).
MoveNext:Localisel'enregistrementsuivantetenfaitl'enregistrementcourant(DST).
MovePrevious:Localisel'enregistrementprcdentetenfaitl'enregistrementcourant(DST).
Move:Changelapositiondel'enregistrementcourant(DST).
OpenRecordset:CreunnouveauRecordset(DST).
- 8-
Requery:Metjourlesenregistrementsd'unRecordsetenrexcutantlarequtesousjacente(DSF).
Seek:LocaliseparrapportunIndexslectionn,lepremierenregistrementrpondantauxcritresspcifiset
enfaitl'enregistrementcourant(T).
Update:Metjourl'enregistrement(DT).
Exemple
Transformation en majuscules des caractres du champ Cli_Societe dans la table Clients.
Dim dbs As Database
Dim rstCli As DAO.Recordset
' Cration du Recordset
Set dbs = CurrentDb
Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable)
rstCli.MoveFirst
' Parcourt des enregistrements
With rstCli
Do Until .EOF
.Edit
rstCli("Cli_Societe") = UCase(rstCli("Cli_Societe"))
' Mise jour
.Update
' Enregistrement suivant
.MoveNext
Loop
End With
rstCli.Close
Utilisation de la mthode Seek: recherche d'un client partir de son code.
Dim dbs As Database
Dim rstCli As DAO.Recordset
Dim strCodeCli As String
' Cration du Recordset
Set dbs = CurrentDb
Set rstCli = dbs.OpenRecordset("Clients", dbOpenTable)
With rstCli
' Saisie du code client
strCodeCli = InputBox("Saisissez le code client")
' Index courant : cl primaire
.Index = "PrimaryKey"
' Recherche
.Seek "=", strcodecli
' Enregistrement non trouv
If .NoMatch Then
MsgBox "Client non trouv"
Else
' Enregistrement trouv
MsgBox "Socit : " & rstCli("Cli_Societe")
End If
End With
rstCli.Close
Utilisation de la mthode Find : recherche des clients dont le nom de Socit commence par une valeur donne.
Dim
Dim
Dim
Dim
dbs As DAO.Database
rstCli As DAO.Recordset
strSoc As String
strCrit As String
- 9-
.MoveLast
' Recherche
strCrit = "Cli_Societe Like '" & strSoc & "*'"
.FindFirst strCrit
' Enregistrement non trouv
If .NoMatch Then
MsgBox "Client non trouv"
Else
' Si trouve : recherche des suivants
Do While True
MsgBox rstCli("Cli_Societe")
.FindNext strCrit
If .NoMatch Then Exit Do
Loop
End If
End With
LesobjetsTabledef
Un objet TableDef reprsente la dfinition enregistre d'une table ou d'une table attache cre dans une base
externe.
Proprits
Attributes : Dtermine les caractristiques de la table dcrite par l'objet TableDef (exclusivit, attachement,
systme...).
ConflictTable : Renvoie le nom de la table de conflits contenant les enregistrements entrs en conflit pendant
uneoprationdesynchronisation.
Connect:Retournelesinformationssurlasourcedel'objetTableDef.
DateCreated:Indiqueladateetl'heuredecrationdelatablesousjacente.
KeepLocal:Dterminesilatablenedoitpasfairepartied'uneoprationderplication.
LastUpdated:Indiqueladateetl'heuredederniremodificationdelatablesousjacente.
Name:Renvoielenomdelatable.
RecordCount:Indiquelenombred'enregistrementsdanslatable.
Replicable:Dterminesilatabledoitfairepartied'uneoprationderplication.
ReplicaFilter:Dfinitlesenregistrementsd'unetabledevantfairepartied'uneoprationderplication.
SourceTableName:Spcifielenomdelatableattache.
Updatable:Indiquesilamodificationdelastructureestautorise.
ValidationText:Spcifielemessaged'erreursilaconditiondevalidationestfausse.
ValidationRule:Spcifielaconditionrespecterpourlavalidationdel'objet.
Mthodes
CreateField:Creunnouveauchamp(Field).
CreateIndex:CreunnouvelIndex.
CreateProperty:CreunnouvelobjetProperty.
OpenRecordset:CreunnouveauRecordset.
- 10 -
RefreshLink:Metjourlesinformationspartird'unetableattache.
Collections
Fields,Indexes,Properties
Exemple
Ajout d'un champ de type Mmo dans la table Clients.
Dim dbs As DAO.Database
Dim tdf As DAO.Tabl eDef
Dim fld As DAO.Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs("Clients")
Set fld = tdf.CreateField("Cli_Comment", dbMemo)
tdf.Fields.Append fld
LesobjetsFieldetIndex
Field
Un objet Field reprsente un champ d'une table (TableDef), d'une relation (Relation), d'une requte (QueryDef), d'un jeu
d'enregistrements (Recordset) ou d'un index (Index).
Proprits
AllowZeroLength:Dfinitsiunechanevideestautorisecommevaleurduchamp.
Attributes:Indiquecertainescaractristiquesduchamp.
CollatingOrder:Spcifielescaractristiquesdecomparaisondechanesdecaractresetl'ordredetri.
DataUpdatable:Indiquesilechamppeuttremisjour.
DefaultValue:Dfinitlavaleurpardfautduchamp.
FieldSize:Renvoielatailled'unchampMemoouBinaireLong(ObjetOLE).
ForeignName : Spcifie, dans une Relation, le nom du champ d'une table externe (table lie) qui correspond
unchamp(clprimaire)delatablesource(tablederfrence).
Name:Renvoielenomduchamp.
OrdinalPosition:Spcifiel'ordred'affichagedeschamps.
Required:Dfinitsilechampdoitcontenirobligatoirementunevaleur.
Size:Dfinitourenvoielatailleduchamp.
SourceField:Indiquelenomduchampsourcedesdonnes.
SourceTable:Indiquelenomdelatablesourcedesdonnes.
Type:Indiqueletypededonneduchamp.
Value:Renvoielavaleurduchamp.
ValidationText:Spcifielemessaged'erreurrenvoysilaconditiondevalidationduchampestfausse.
ValidationOnSet:Spcifiesilavalidationdevaleurduchampestimmdiatelorsdesamodification.
- 11 -
ValidationRule:Spcifielaconditiondevalidationduchamp.
Mthodes
AppendChunk:Ajoutedesdonnesd'uneexpressionchaneunchampdetypeMemoouObjetOLE.
CreateProperty:CreunnouvelobjetProperty.
GetChunk:Littoutouunepartied'unchampMemoouObjetOLE.
Collections
Properties
Exemple
Affiche la liste de tous les champs (nom et type) de la table Clients dans la fentre Excution.
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Set dbs = CurrentDb
Set tdf = dbs.TableDefs("Clients")
For Each fld In tdf.Fields
Debug.Print fld.Name & " " & fld.Type
Next
Index
Un objet Index reprsente un index associ un objet TableDef ou Recordset de type table.
Proprits
Clustered:Indiquesil'indexreprsentel'indexderegroupementd'unetable.
DistinctCount:Renvoielenombredevaleursuniquespourcetindexdanslatableassocie.
Foreign:Indiquesil'indexestuneclexternedelatable.
IgnoreNulls : Indique s'il y a cration d'une entre d'index pour les enregistrements dont les champs indexs
contiennentlavaleurNull.
Name:Renvoielenomdel'index.
Primary:Indiquesil'indexestlaclprimaire.
Required:Dfinitsitousleschampsdel'indexdoiventcontenirobligatoirementunevaleur.
Unique:Indiquesilesvaleursdel'indexsontuniques(pasdedoublons).
Mthodes
CreateField:Creunnouveauchamppourl'index.
CreateProperty:Creunenouvelleproprit.
Collections
Fields,Properties
Exemple
- 12 -
dbs
tdf
fld
idx
As
As
As
As
DAO.Database
DAO.TableDef
DAO.Field
DAO.Index
QueryDef
L'objet QueryDef reprsente la dfinition enregistre d'une requte dans une base de donnes.
Proprits
Connect:Donnelesinformationssurlabasededonnesutilisedanslarequte.
DateCreated:Indiqueladateetl'heuredecrationdelarequte.
KeepLocal:Dterminesilarequtedoitfairepartieounond'uneoprationderplication.
LastUpdated:Indiqueladateetl'heuredederniremisejourdelarequte.
MaxRecords:Dfinitlenombremaximumd'enregistrementsquelarequtedoitretourner.
Name:Renvoielenomdelarequte.
RecordsAffected:Indiquelenombred'enregistrementsaffectsparladerniremthodeExecute.
Replicable:Dterminesilarequtedoitfairepartied'uneoprationderplication.
ReturnsRecords:Indiquesilarequtearetourndesenregistrements.
SQL:Dfinitourenvoiel'instructionSQLassocielarequte.
Type:Dfinitletypedelarequte(slection,ajout...).
Updatable:Indiquesilesmisesjoursontautorisestraverslarequte.
Mthodes
Close:Fermelarequte.
CreateProperty:Creunenouvelleproprit.
Execute:LanceunerequteActionouexcuteuneinstructionSQL.
OpenRecordset:CreunnouveauRecordset.
Collections
Fields,Parameters,Properties
Exemple
ENI Editions - All rigths reserved
- 13 -
Parameter
Name:Dfinitourenvoielenomduparamtre.
Type:Dfinitourenvoieletypededonnesduparamtre.
Value:Dfinitourenvoielavaleurduparamtre.
Collections
Properties
Exemple
Cration d'une requte paramtre et affichage du nombre de paramtres.
Dim dbs As Database
Dim qdf As QueryDef
Dim prm As Parameter
Set dbs = CurrentDb
Set qdf = dbs.CreateQueryDef("Liste des
& " embauchs une priode donne")
qdf.SQL = "Select * from Employes Where
& "[Date embauche] >= [Entrez la date
& " And [Date embauche] <= [Entrez la
MsgBox qdf.Parameters.Count
Employs" _
" _
de dbut] " _
date de fin] "
LesobjetsRelation
UnobjetRelationreprsenteunerelationentreleschampsdedeuxobjetsTableDef.
Proprits
Attributes:Indiquecertainescaractristiquesdelarelation(unplusieurs,intgrit...).
ForeignTable:Dfinitourenvoielenomdelatableexterne.
Name:Dfinitourenvoielenomdelarelation.
PartialReplica : Dfinit si la relation doit tre prise en compte pour le remplissage d'un Rplica partiel partir
d'unRplicaintgral.
Table:DfinitourenvoielenomdelaTableDefouduQueryDefsource.
Mthodes
CreateField:CreunnouvelobjetField.
- 14 -
Collections
Fields,Properties
Exemple
Enregistrement dans une table des diffrentes relations et de leurs proprits. La table Relations contient 3 champs texte
(Rel_Source, Rel_Externe, Rel_Typerel et 3 champs boolen (Rel_Integrite, Rel_Maj_Cascade, Rel_Sup_Cascade).
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim rel As Relation
' Cration du Recordset
' et suppression des enregistrements existants
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Relations", dbOpenTable)
Do While Not rst.EOF
rst.Delete
rst.MoveNext
Loop
' Stockage des diffrentes relations du modle
' relationnel dans la table Relations
For Each rel In dbs.Relations
rst.AddNew
rst("REL_SOURCE") = rel.Table
rst("REL_EXTERNE") = rel.ForeignTable
If rel.Attributes And dbRelationUnique Then
rst("REL_TYPEREL") = "1 1"
Else
rst("REL_TYPEREL") = "1 n"
End If
rst("REL_INTEGRITE") = IIf(rel.Attributes And _
dbRelationDontEnforce, False, True)
rst("REL_MAJ_CASCADE") = IIf(rel.Attributes And _
dbRelationUpdateCascade, True, False)
rst("REL_SUP_CASCADE") = IIf(rel.Attributes And _
dbRelationDeleteCascade, True, False)
rst.Update
Next
rst.Close
Visualisation dans Access de la table RELATIONS mise jour :
LesobjetsContaineretDocument
Container
Un objet Container reprsente l'ensemble des informations portant sur une base de donnes et sur chaque type d'objets qu'elle
contient.
Proprits
AllPermissions:Retournetouteslesautorisationsquis'appliquentlaproprit UserNamedel'objetContainer
encours.
- 15 -
Inherit : Indique si les nouveaux objets Document hriteront, ou non, d'une valeur pour la proprit
Permissions.
Name:Indiquelenomducontainer.
Owner:Indiquelepropritaireducontainer.
Permissions : Dfinit les permissions d'un utilisateur ou d'un groupe d'utilisateurs identifis par la proprit
UserNamedel'objetContainer.
UserName:Dfinitlenomdel'utilisateur.
Exemple
Affichage de la liste des noms de tous les objets Container de la base dans la fentre Excution.
Dim dbs As DAO.Database
Set dbs = CurrentDb
Dim ctn As Container
For Each ctn In dbs.Containers
Debug.Print ctn.Name
Next
Document
Un objet Document reprsente l'ensemble des informations portant sur un type d'objet (base de donnes, table, requte ou relation
enregistre).
Proprits
AllPermissions(3.0) : Retourne toutes les autorisations qui s'appliquent la proprit UserName en cours de
l'objetDocument.
Container:Retournelenomdel'objetContainerauquelappartientleDocument.
DateCreated:Retourneladateetl'heuredecrationdelatablesousjacente.
KeepLocal:Dterminesiledocumentdoitounonfairepartied'uneoprationderplication.
LastUpdated:Renvoieladateetl'heuredederniremodificationdelatablesousjacente.
Name:RenvoielenomduDocument.
Owner:RenvoielenomdupropritaireduDocument.
Permissions : Dfinit les permissions de l'utilisateur ou du groupe d'utilisateurs identifis par la proprit
UserNamedel'objetDocument.
- 16 -
Replicable:Dterminesiledocumentdoitfairepartied'uneoprationderplication.
UserName:Dfinitlenomdel'utilisateur.
Collections
Properties
Exemple
Affichage de la liste de tous les formulairesdans la fentre Excution.
Dim dbs As DAO.Database
Dim ctn As Container
Dim doc As Document
Set dbs = CurrentDb
For Each ctn In dbs.Containers
If ctn.Name = "Forms" Then
For Each doc In ctn.Documents
Debug.Print doc.Name
Next
End If
Next
LesobjetsGroupetUser
User
Name:Dfinitourenvoielenomducompteutilisateur.
PID:Renvoielenumrod'identificationpersonnelducompteutilisateur.
PassWord:Renvoielemotdepasseducompteutilisateur.
Mthodes
CreateGroup:CreunnouvelobjetGroup.
NewpassWord:Dfinitunnouveaumotdepassepourl'utilisateur.
Collections
Groups,Properties
Group
Name:Dfinieourenvoielenomdugrouped'utilisateurs.
PID:Dfinitlenumropersonnelducomptedegroupe.
Mthodes
CreateUser:CreunnouvelobjetUser.
ENI Editions - All rigths reserved
- 17 -
Collections
Users,Properties
Exemple
Pour chaque groupe, affichage dans la fentre Excution des noms de groupes et d'utilisateurs du groupe.
Dim wrk As Workspace
Dim usr As User
Dim grp As Group
Set wrk = DBEngine.Workspaces(0)
For Each grp In wrk.Groups
Debug.Print grp.Name
With grp
For Each usr In .Users
Debug.Print usr.Name
Next
End With
Next
L'objetError
UnobjetErrorreprsenteledtaild'uneerreurd'accsauxdonnes.
Proprits
Description:Renvoieletextedel'erreur.
HelpContext:Fournitunidentificateurdecontexted'aide,souslaformed'unevariabledechane,correspondant
unerubriqued'unfichierd'aideMicrosoftWindows.
HelpFile:Indiquelechemind'accscompletaufichierd'aideconsidr.
Number:Retournelenumrodel'erreur.
Source:Fournitlenomdel'objetoudel'applicationquiagnrl'erreur.
Exemple
Dclenchement intentionnel d'une erreur et affichage de toutes les proprits de l'objet Error.
Private Sub cmdErreur_Click()
On Error GoTo Gest_Erreur
' Dclenche intentionnellement une erreur
DBEngine.Workspaces(0).OpenDatabase _
("C:\Devis\devis1.accdb")
Exit Sub
Gest_Erreur:
Dim strError As String
Dim errLoop As Variant
' Parcourt les lments de la collection Errors
' Affiche un message avec la description de l'erreur
For Each errLoop In Errors
With errLoop
strError = _
"Erreur #" & .Number & vbCr
strError = strError & _
" " & .Description & vbCr
strError = strError & _
"(Source: " & .Source & ")" & vbCr
strError = strError & _
"Appuyez sur F1 pour afficher " & _
"la rubrique " & .HelpContext & vbCr
strError = strError & _
- 18 -
LesobjetsProperty
UnobjetPropertyreprsenteunepropritd'unobjet.
Proprits
Inherited:Indiquesilapropritesthrite.
Name:Dfinitourenvoielenomdelaproprit.
Type:Dfinitourenvoieletypedelaproprit.
Value:Dfinitourenvoielavaleurdelaproprit.
Exemple
Affichage du nom et de la valeur de chaque proprit d'un objet Recordset dans la fentre Excution.
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim prp As DAO.Property
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Clients")
' Parcourt les proprits
For Each prp In rst.Properties
On Error Resume Next
Debug.Print prp.Name & ":" & prp.Value
Next
- 19 -
- 20 -
Lemodled'accsauxdonnesADO
Prsentation
La bibliothque d'objets ADO (ActiveX Data Objects) vous permet d'crire une application qui accde des
donnessituessurunserveurdebasesdedonnesetdelesmanipulerparlebiaisd'unfournisseurOLE DB.
ADOal'avantaged'trefaciled'emploi,performant,etd'utiliserpeudemmoireetd'espacedisque.ADOoffreles
fonctionnalitsdebasepermettantdecrerdesapplicationsclient/serveuretdesapplicationsWeb.
Pour pouvoir utiliser la bibliothque d'objets ADO, il est ncessaire de cocher la rfrence Microsoft ActiveX
DataObjects2.xLibrary dans la liste des rfrences aux bibliothques d'objets. Si cette rfrence n'est pas
disponible,vousdevezslectionnerlefichierMSADO15.dllpartirduboutondecommandeParcourir.Cefichier
estgnralementsitudanslerpertoire"C:\ProgramFiles\Fichierscommuns\System\ADO".
VouspouvezgalementutiliserlesextensionsADOenslectionnantlarfrenceMicrosoftADOExt2.xforDLL
and Security (fichier MSADOX.DLL). Ces extensions vous permettent d'accder des objets complmentaires
(catalog,users,views...)aumodleADO.
Lefichierd'aideADO210.chmvouspermetd'obtenirdesinformationsdtaillessurl'utilisationdesmodlesADO.
ADOetOLEDB
OLE DB est une technologie permettant un accs uniforme aux donnes stockes dans diverses sources
d'informations : bases de donnes relationnelles ou non relationnelles, messageries, systmes de fichiers
Quasimenttouteslesdonnesdel'entreprisesontaccessiblesparOLEDB.
ADO (ActiveX Data Objects) est l'interface de programmation utilise pour accder aux donnes de tous les
fournisseursdedonnesOLEDB.
Architecturetechnologique
*Microsoft Office 12.0 Access Database Engine OLE DB Provider remplace Microsoft Jet 4.0 OLE DB Provider.
Les fournisseurs de donnes ou Providers sont des pilotes permettant de communiquer avec les sources de donnes.
HirarchiedesobjetsADO
- 1-
ModledebasedeprogrammationADO
ADOvouspermetd'excuterlasquenced'actionssuivante:
- tablir une connexion une base de donnes OLE DB ou ODBC au moyen de l'objet Connection.
- crer une commande permettant d'envoyer une requte SQL au serveur en utilisant l'objet Command,
- excuter la commande. Si la commande renvoie des lignes, les stocker dans un objet Recordset,
- exploiter les donnes de l'objet Recordset: trier, filtrer, modifier, supprimer les enregistrements,
- 2-
- mettre jour les donnes: valider les modifications ventuelles de l'objet Recordset, incorporer les mises jour dans une
transaction,
- si une transaction a t utilise: accepter ou rejeter les mises jour apportes au cours de cette dernire.
Exemple
Dim cnn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
' Etape 1 : tablir une connexion une source de
donnes
' SQL Server au moyen de la technologie OLEDB
cnn.Open "Provider=SQLOLEDB.1;Data Source=SRV;" _
& "Initial Catalog=Devis;" _
& "Integrated Security=SSPI;Persist Security Info=False;"
' Etape 2 : crer une commande
Set cmd.ActiveConnection = cnn
cmd.CommandText = "SELECT * FROM Clients"
' Etape 3 : excuter la commande
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockBatchOptimistic
' Etape 4 : manipuler les donnes
rs.Filter = "CLI_VILLE LIKE 'Nantes'"
Do While Not rs.EOF
rs("CLI_PAYS") = "F"
rs.MoveNext
Loop
' Etape 5 : mettre jour les donnes modifies
cnn.BeginTrans
rs.UpdateBatch
' Etape 6 : terminer la mise jour de la base SQL
If MsgBox("Confirmez-vous les mises jour ?", _
vbYesNo) = vbYes Then
cnn.CommitTrans
Else
cnn.RollbackTrans
End If
DescriptiondesobjetsADO
Connection:Reprsenteuneconnexionavecunesourcededonnes.
Command:Dfinitunecommandespcifiqueexcutersurunesourcededonnes.
Recordset:Reprsentelejeud'enregistrementscompletd'unetabledebasesdedonnesoulesrsultatsd'une
commande(ex :rsultatsd'unerequteSQL).
Record : Fonctionne essentiellement comme un objet Recordset d'une seule ligne. La source des donnes dans
un objet Record peut tre une commande qui renvoie une ligne de donnes partir du fournisseur. L'utilisation
d'objetsRecordlaplaced'objetsRecordsetpourrecevoirlesrsultatsd'unerequterenvoyantuneseuleligne
dedonnesliminelachargedetraitementliel'instanciationdel'objetRecordset,lequelestpluscomplexe.
Stream:Fournitlemoyendelire,crireetgrerunfluxd'octetsconstitudetexteoudedonnesbinaires.
LescollectionsADO
Parameters:CollectiondetouslesobjetsParameterd'unobjetCommand.L'objetParameterreprsenteun
paramtre ou argument associ un objet Command bas sur une requte paramtre ou une procdure
stockeparamtre.
Properties : Collection de tous les objets Property pour un objet donn (Connection, Command,
Recordset).L'objetPropertyreprsenteunecaractristiquedynamiqued'unobjetADOdfiniparl'utilisateur.
ENI Editions - All rigths reserved
- 3-
Errors : Collection de tous les objets Error crs en rponse un chec unique li au fournisseur OLE DB.
L'objetErrorcontientdesinformationsrelativesuneerreurd'accsauxdonnes.
Fields:CollectiondetouslesobjetsFieldcorrespondunecolonne(ouchamp)d'unobjetRecordset.
LesobjetsConnection
Mthodes
BeginTrans :Commenceunenouvelletransaction.
Cancel : Interrompt et annule l'excution d'une requte lance en mode asynchrone l'aide des mthodes
ExecuteouOpen.
Close:Fermeuneconnexionouverteainsiquetouslesobjetsdpendantdecelleci.
CommitTrans:Enregistrelesmodificationseffectuessurlesdonnesetarrtelatransactionencours.
Execute:Excutelarequte,l'instructionSQL,laprocdurestockeouletextepropreaufournisseurOLEDB.
Open:Ouvreuneconnexionunesourcededonnes,afindepouvoirexcuterdescommandes.
OpenSchema :Obtientdesinformations,enprovenancedufournisseurOLE DB,relativesauschmadelabase
dedonnes.
RollbackTrans : Annule les modifications effectues sur les donnes durant la transaction en cours et arrte
celleci.
Proprits
Attributes : Dfinit ou renvoie une ou plusieurs caractristiques d'un objet Connection. La valeur par dfaut
estzro.
CommandTimeout : Indique le dlai respecter, en secondes, lors d'une tentative d'excution d'une
commandeavantd'interromprecettetentativeetdegnrerunmessaged'erreur.Lavaleurpardfautest30.
ConnectionString : Dfinit ou renvoie les informations utilises pour tablir une connexion avec la source de
donnes.
ConnectionTimeout : Indique le dlai respecter, en secondes, lors d'une tentative de connexion avant d'y
mettreuntermeetdegnrerunmessaged'erreur.Lavaleurpardfautest15.
CursorLocation:Dfinitourenvoieletypedecurseurutiliserpardfautpourcetteconnexion(curseurct
clientoucurseurctserveur).
DefaultDatabase:Indiquelabasededonnespardfautd'unobjetConnection.
IsolationLevel:Indiqueleniveaud'isolationd'unobjetConnection.
Mode:Indiquelesautorisationsdemodificationdedonnesd'unobjetConnection.
Provider:IndiquelenomdufournisseurOLEDBdel'objetConnection.
State:Indiquesil'objetConnectionestouvertouferm.Enlectureseule.
Version:Indiquelenumrodeversiond'ADO.Enlectureseule.
Exemple
- 4-
Cancel : Interrompt et annule l'excution d'une requte lance en mode asynchrone l'aide de la mthode
Execute.
CreateParameter:CreunnouvelobjetParameteretspcifiesesproprits.
Execute : Excute la requte, l'instruction SQL ou la procdure stocke spcifie par la proprit
CommandText.
Proprits
ActiveConnection:Indiquel'objetConnectionauquelestassocielacommande.
CommandText:ContientletextedelacommandeenvoyeraufournisseurOLEDB.
CommandTimeout : Indique le dlai (en secondes) respecter, lors d'une tentative d'excution de la
commandeavantd'interromprecettetentativeetdegnrerunmessaged'erreur.Lavaleurpardfautest30.
CommandType:Indiqueletypedel'objetCommand.
Name:Indiquelenomdel'objetCommand.
- 5-
Prepared:Indiques'ilfautenregistreruneversioncompiledelacommandesurleserveuravantexcution.
State:Indiquesil'objetCommandestouvertouferm.Enlectureseule.
Exemple
Utilisation de l'objet Command pour crer un jeu d'enregistrements.
Dim cnc As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
' Ouvre la connexion
cnc.Open "Provider=Microsoft.Jet.OLEDB.4.0.;" _
& "Data Source = C:\Devis\Devis.mdb"
' Excute la commande Select
Set cmd.ActiveConnection = cnc
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT * FROM CLIENTS WHERE " _
& " CLI_VILLE = 'Paris'"
Set rst = cmd.Execute
' Affiche le nom de la Socit
' dans la fentre Excution
Do While Not rst.EOF
Debug.Print rst("CLI_SOCIETE")
rst.MoveNext
Loop
rst.Close
cnc.Close
LesobjetsRecordset
Mthodes
AddNew:CreunnouvelenregistrementpourunobjetRecordsetpouvanttremisjour.
Cancel:Annulel'excutiond'uneoprationOpenasynchroneenattente.
CancelBatch:Annuleunemisejourparlotsenattente.
CancelUpdate : Annule toutes les modifications apportes l'enregistrement en cours ou un nouvel
enregistrementavantd'appelerlamthodeUpdate.
Clone:CreunobjetRecordsetendoublepartird'unobjetRecordsetexistant.
Close:Fermel'objetRecordsetouvertainsiquetouslesobjetsdpendantdeceluici.
CompareBookmarks:Comparedeuxsignetsetrenvoieunevaleurindiquantleurspositionsrelatives.
Delete:Supprimel'enregistrementencoursouungrouped'enregistrements.
Find:RecherchedansunobjetRecordsetl'enregistrementcorrespondantdescritresspcifiques.
GetRows:Extraitplusieursenregistrementsd'unobjetRecordsetetlesplacedansuntableau.
GetString:RenvoieunobjetRecordsetsousformedechane.
Move:Dplacelapositiondel'enregistrementencoursdansunobjetRecordset.
MoveFirst : Dplace la position de l'enregistrement en cours jusqu'au premier enregistrement de l'objet
Recordset.
MoveLast:Dplacelapositiondel'objetencoursjusqu'audernierenregistrementdansl'objetRecordset.
- 6-
MoveNext : Dplace la position de l'enregistrement en cours jusqu' l'enregistrement suivant dans l'objet
Recordset.
MovePrevious:Dplacelapositiondel'enregistrementencoursjusqu'l'enregistrementprcdentdansl'objet
Recordset.
NextRecordset : Renvoie le jeu d'enregistrements suivant dans le cas d'une commande comportant plusieurs
requtesd'extraction.
Open:Ouvreuncurseurquireprsentelesenregistrementsd'unetableoulesrsultatsd'unerequte.
Requery:Metjourlesdonnesd'unobjetRecordsetenrexcutantlarequtesurlaquellel'objetestbas.
Resync:Actualiselesdonnesdel'objetRecordsetencourspartirdelabasededonnessousjacente.
Save:Enregistrel'objetRecordsetdansunfichier.
Seek:Recherchedansl'indexd'unobjetRecordsetunenregistrementcorrespondantunevaleur,etremplace
l'enregistrementencoursparceluitrouv.(Ils'agitd'unenouvellefonctionnalitd'ADO2.1).
Supports:DterminesiunobjetRecordsetprendenchargeuntypedefonctionnalitparticulier.
Update:Enregistrelesmodificationsapportesl'enregistrementencoursdel'objetRecordset.
UpdateBatch:Enregistretouteslesmisesjourparlotsenattentesurledisque.
Proprits
AbsolutePage :Indiquelapagedel'enregistrementencours.
AbsolutePosition:Indiquelapositionordinaledel'enregistrementencoursdansunobjetRecordset.
ActiveCommand:Indiquel'objetCommandquiacrl'objetRecordsetcorrespondant.Enlectureseule.
ActiveConnection:IndiquequelobjetConnectionappartientl'objetRecordset.
BOF : Indique si le pointeur d'enregistrement est positionn avant le premier enregistrement de l'objet
Recordset.Enlectureseule.
Bookmark:Renvoieunsignetquiidentifiedemanireuniquel'enregistrementencoursdansl'objet Recordset
oudplacel'enregistrementencourssurunenregistrementidentifiparunsignetvalide.
CacheSize:Indiquelenombred'enregistrementsd'unobjetRecordsetstockenmmoirecache.
CursorLocation:Dfinitourenvoieletypedecurseurutiliserpardfautpourcetteconnexion(curseurct
clientoucurseurctserveur).
CursorType:IndiqueletypedecurseurutilispourcetobjetRecordset.
DataMember:Indiquelenomdumembrededonnesextrairedel'objetdfiniparlapropritDataSource.En
lectureseule.
DataSource : Indique qu'un objet contenant des donnes doit tre reprsent comme objet Recordset. En
lectureseule.
EditMode:Indiquelestatutdemodificationdel'enregistrementencours.Enlectureseule.
EOF : Indique si le pointeur d'enregistrement est positionn aprs le dernier enregistrement dans l'objet
Recordset.Enlectureseule.
- 7-
Filter:DfinitunfiltrededonnesdansleRecordset.
Index:Indiquelenomdel'indexencourspourleRecordset.
LockType:Indiqueletypedeverrouillagedesenregistrementslorsdesmodifications.
MarshalOptions:Indiquelesenregistrementsrenvoyerauserveur.
MaxRecords : Indique le nombre maximal d'enregistrements renvoyer un objet Recordset pour une mme
requte.Lavaleurpardfautestzro(aucunelimite).
PageCount:Indiquelenombredepagesdedonnescontenuesdansl'objetRecordset.Enlectureseule.
PageSize:Indiquelenombred'enregistrementscontenusdansunepageduRecordset.
Properties:RfrencelaCollectiondesobjetsPropertydel'objetRecordsetencours.
RecordCount:Indiquelenombreactueld'enregistrementsdansl'objetRecordset.Enlectureseule.
Sort:Spcifieunouplusieursnomsdechampsselonlesquelsl'objetRecordsetesttri,etdterminel'ordrede
tridechaquechamp.
Source:Indiquelasourcedesdonnesd'unobjetRecordset.
State:Indiquel'tatduRecordset :ouvert,fermouoprationasynchroneencours.Enlectureseule.
Status : Indique le statut de l'enregistrement en cours en ce qui concerne les mises jour par lots ou autres
oprationsglobales.Enlectureseule.
StayInSync:Indique,dansunobjet Recordsethirarchique,silaligneparentdoitchangerlorsquel'ensemble
desenregistrementsenfantssousjacentschange.Enlectureseule.
Exemple
Transformation en majuscules des caractres du champ Cli_Societe dans la table Clients.
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
' Cration du Recordset
Set cnc = CurrentProject.Connection
rstCli.Open "Select * From Clients", cnc, _
adOpenKeyset, adLockOptimistic
' Parcours des enregistrements
With rstCli
Do Until .EOF
rstCli("Cli_Societe") = _
UCase(rstCli("Cli_Societe"))
' Mise jour
.Update
' Enregistrement suivant
.MoveNext
Loop
End With
rstCli.Close
cnc.Close
Utilisation de la mthode Seek : recherche d'un client partir de son code.
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
Dim strCodeCli As String
' Cration du Recordset
Set cnc = CurrentProject.Connection
- 8-
Append:AjouteunobjetFieldunecollectionFields.
Delete:SupprimeunobjetFielddelacollectionFields.
Refresh:MetjourlesobjetsFielddanslacollectionFields.
LesobjetsField
Mthodes
AppendChunk:AjoutedesdonnesunobjetFielddetypebinaireoudegrandetaille.
- 9-
GetChunk:Renvoietoutouunepartieducontenud'unobjetFielddetypebinaireoudegrandetaille.
Proprits
ActualSize:Indiquelalongueurdelavaleurd'unchamp.Enlectureseule.
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetField.
DefinedSize:Indiquelatailledel'objetField.Encritureseule.
Name:Indiquelenomdel'objetField.
NumericScale:Indiquel'chelledesvaleursnumriquesdel'objetField.Encritureseule.
OriginalValue:Indiquelavaleurdel'objetFieldavantmodification.Enlectureseule.
Precision:Indiqueledegrdeprcisiondesvaleursdetypenumriquedansl'objetField.Enlectureseule.
Properties:ComprendtouslesobjetsPropertyd'unobjetField.
Type:Indiqueletypededonnesdel'objetField.
UnderlyingValue:Indiquelavaleurencoursdel'objetFielddanslabasededonnes.Enlectureseule.
Value :Indiquelavaleurdel'objetField.
LacollectionParameters
Mthodes
Append:AjouteunobjetParameterlacollectionParameters.
Delete:SupprimeunobjetParameterdelacollectionParameters.
Refresh:MetjourlesobjetsParameterdanslacollectionParameters.
Exemple
Affichage de la liste de tous les champs (nom et type) de la table Clients dans la fentre Excution.
Dim cnc As New ADODB.Connection
Dim rstCli As New ADODB.Recordset
Dim fld As ADODB.Field
' Cration du Recordset
Set cnc = CurrentProject.Connection
rstCli.Open "Employes", cnc, adOpenKeyset, adLockReadOnly, _
adCmdTableDirect
For Each fld In rstCli.Fields
Debug.Print fld.Name & " " & fld.Type
Next
rstCli.close
LesobjetsParameter
Mthodes
AppendChunk:AjoutedesdonnesunobjetParameterdetypebinaireoutextedegrandetaille.
Proprits
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetParameter.
- 10 -
Direction : Indique si l'objet Parameter correspond un paramtre d'entre, de sortie, ou les deux, ou si le
paramtreestletypederetourd'uneprocdurestocke.
Name:Indiquelenomdel'objetParameter.
NumericScale:Indiquel'chelledesvaleursnumriquesdel'objetParameter.
Precision:IndiqueledegrdeprcisiondesvaleursdetypeNumericdel'objetParameter.
Properties :ComprendtouslesobjetsPropertyd'unobjetParameter.
Size:Indiquelataillemaximale,enoctetsouencaractres,d'unobjetParameter.
Type:Indiqueletypededonnesdel'objetParameter.
Value:Indiquelavaleurattribuel'objetParameter.
LacollectionProperties
Mthodes
Refresh:MetjourlesobjetsPropertydanslacollectionPropertiespartirdesinformationsdufournisseur.
LesobjetsProperty
Proprits
Attributes:Indiqueuneouplusieurscaractristiquesd'unobjetProperty.
Name:Indiquelenomdel'objetProperty.Enlectureseule.
Type:Indiqueletypededonnesdel'objetProperty.
Value:Indiquelavaleurdel'objetProperty.
LacollectionErrors
Mthodes
Clear:Supprimel'ensembledesobjetsErrordelacollectionErrors.
Refresh:MetjourlesobjetsErrorpartirdesinformationsdufournisseurOLEDB.
Proprits
Count:Indiquelenombred'objetsErrordelacollectionErrors.Enlectureseule.
Item:Permetl'indexationdelacollectionErrorsafinderfrencerunobjetErrorspcifique.Enlectureseule.
LesobjetsError
Proprits
Description:Renvoielachanedescriptiveassociel'objetError.Enlectureseule.
HelpContext:IndiqueleContextIDdufichierd'aideassocil'objetError.Enlectureseule.
HelpFile:Indiquelenomdufichierd'aideassocil'objetError.Enlectureseule.
- 11 -
NativeError:Indiquelecoded'erreurspcifiquedufournisseurassocil'objetError.Enlectureseule.
Number:Indiquelenumroidentifiantdemanireuniquel'erreurporteparl'objetError.Enlectureseule.
Source:Indiquelenomdel'objetoudel'applicationl'origined'uneerreur.Enlectureseule.
SQLState:IndiquelavaleurrenvoyeparlefournisseurOLEDB.Chanedecinqcaractresconformelanorme
SQLANSI.Enlectureseule.
- 12 -
Prsentation
LelangageSQL(StructuredQueryLangageoulangagederequtestructur)estunlangaged'interrogationet
degestiondebasesdedonnesrelationnelles.
Access 2007 utilise SQL comme langage de requte. Lorsque vous crez une requte en mode Cration de
requte, Access construit en tche de fond les instructions SQL quivalentes. En fait, la plupart des proprits
delarequteenmodeCrationderequteontdesclausesquivalentesetdesoptionsaccessiblesenlangage
SQL.
Ilestpossibled'afficheroudemodifierl'instructionSQLcorrespondantunerequteenpassantenmodeSQL.
Exemple
- 1-
Cette manipulation est trs intressante notamment si vous n'tes pas coutumier du langage SQL : vous pouvez crer vos requtes
dans Access et rcuprer l'instruction SQL gnre pour l'inclure dans votre code VBA.
CertainesrequtesSQL,nommesrequtesspcifiquesSQL,nepeuventtrecresdanslagrilledecration
derequtesmaisdoiventtresaisiesdirectementenmodeSQL.Ils'agit :
- des "requtes directes" qui vous permettent de travailler directement avec les tables sur le serveur,
- des "requtes dfinition des donnes" qui vous permettent de crer, supprimer ou modifier la structure des tables,
- des "requtes Union" qui vous permettent de regrouper les champs de deux tables (ou plus) dans un mme champ rsultat de
la requte. Ces requtes sont trs utiles pour fusionner des enregistrements provenant de tables diffrentes.
- 2-
LangageSQLetVBA
Les requtes SQL s'intgrent parfaitement VBA et peuvent tre utilises partir des mthodes de diffrents
objets:
- 1-
DescriptiondulangageSQL
L'instructionSELECT
SELECT est l'instruction SQL la plus utilise : elle correspond la requte Slection sous Access. Elle permet
d'extrairedeschampsd'unensembled'enregistrementsrpondantcertainscritres.
Syntaxe
SELECT [ALL | DISTINCT] <liste de champs>
FROM <liste de tables>
[WHERE... ]
[GROUP BY...]
[HAVING... ]
[ORDER BY... ]
All (valeurpardfaut):Touslesenregistrementsrpondantauxcritressontprisencompte.
Distinct :Lesenregistrementspourlesquelsleschampsslectionnscontiennentdesdonnesendoublesont
omis.
<liste de champs> : Liste des champs slectionns, spars par des virgules, en respectant la syntaxe
suivante :
*|table.*|[table.]champ1[ASalias1][,
[table.]champ2[ASalias2][,...]]
* :Indiquequetousleschampsdela(des)table(s)spcifie(s)sontslectionn(s).
alias1, alias2 : Indiquent les noms utiliser comme enttes de colonne la place des noms de colonnes
originauxdanstable.
<liste de tables> : Nom de la ou des tables contenant les donnes extraire. Si la requte utilise plusieurs
tables,lemodedejointuredoitgalementtreprcisdanslaclauseFROM.
Exemples
- SELECT * FROM Produits
- SELECT Produits.* FROM Produits
- SELECT Prod_ref, Prod_desig, Prod_prix, Prod_tva
FROM Produits
- SELECT Prod_ref As Reference, Prod_desig As Designation,
Prod_Prix as Prix, Prod_tva as Tva From Produits
LaclauseFROM
LaclauseFROMspcifielestablesoulesrequtesdontsontextraiteslesdonnes.
Syntaxe
FROM table1 [ LEFT | RIGHT | INNER ] JOIN table2
ON table1.champ1 <Oprateur de comparaison> table2.champ2
[ LEFT | RIGHT | INNER ] :Ces oprateurs permettent de dfinir le type de jointure entre les tables.
LEFT JOIN : Utilisez une opration LEFT JOIN pour crer une jointure externe gauche. Le rsultat de la jointure externe gauche
comprend tous les enregistrements issus de la premire table (celle de gauche: <table1>) mme ceux pour lesquels il n'existe pas
de valeur correspondante dans la deuxime table (celle de droite: <table2>).
RIGHT JOIN : Utilisez une opration RIGHT JOIN pour crer une jointure externe droite. Le rsultat de la jointure externe droite
comprend tous les enregistrements issus de la deuxime table (celle de droite: <table2>) mme ceux pour lesquels il n'existe pas
de valeur correspondante dans la premire table (celle de gauche: <table1>).
- 1-
INNER JOIN : Utilisez INNER JOIN pour crer une jointure ne comprenant que les enregistrements dans lesquels les donnes des
champs relis sont identiques.
<oprateur de comparaison> : Utilisez tout oprateur de comparaison relationnelle tel que: = , <, >, <= , >= ,<> (diffrent de).
L'oprateur = est le plus couramment utilis.
Exemples
Liste des commandes avec le nom et le n de tlphone du messager.
Premier exemple
Seules les commandes auxquelles un messager a t affect sont slectionnes.
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateEnvoi,
Messagers.
Mes_Nom, Messagers.Mes_Telephone
FROM Commandes INNER JOIN Messagers ON Commandes.Cde_NumMess
=
Messagers.Mes_NumMes
Deuxime exemple
Toutes les commandes sont slectionnes.
SELECT Commandes.Cde_Numcde, Commandes.Cde_DateEnvoi,
Messagers.Mes_Nom, Messagers.Mes_Telephone
FROM Commandes LEFT JOIN Messagers ON Commandes.Cde_NumMess
= Messagers.Mes_NumMes
LaclauseWHERE
LaclauseWHEREpermetdefiltrerlesenregistrementspartirdecritres.
LesconditionsdelaclauseWHEREs'exprimentaveclesoprateurssuivants :
- oprateurs de comparaison: =, <, >, <=, >=, <> (diffrent de), Is [Not] Null, [Not] In, Between.
- oprateurs logiques : And, Or, Not.
Exemples
SELECT * FROM Produits WHERE [Prod_Prix] = 500
SELECT * FROM Produits WHERE [Prod_Prix]
BETWEEN 100 AND 200
SELECT * FROM Clients WHERE [Cli_pays] IN
('France','Italie','Espagne')
LaclauseGROUPBY
LaclauseGROUPBYcorrespondaux"Totaux"desrequtesAccess(appelsRegroupementsdanslesanciennes
versions).Ellepermetderegrouperdesdonnessurunouplusieurschamps.Elleestprincipalementutilisepour
effectuerdesfonctionsd'agrgationSQLtellesqueSum(somme),Count(compte),Avg(moyenne)...
Exemples
Cette requte renvoie le nombre de commandes passes par client.
SELECT Clients.Cli_Societe, Count(Commandes.Cde_Numcde) AS
Nb_Cdes
- 2-
- 3-
Si aucune clause Where n'est spcifie, tous les enregistrements sont mis jour.
Exemple
Cette requte modifie le code pays de tous les enregistrements de la table Clients.
UPDATE Clients SET Clients.Cli_pays = 'F'
Cette requte modifie dans la table Clients le code pays des enregistrements des clients dont la ville est 'Marseille'.
UPDATE Clients SET Clients.Cli_Pays = 'F'
WHERE Clients.Cli_ville='Marseille'
L'instructionDELETE
L'instruction DELETE correspond une requte Suppression qui supprime des enregistrements dans la table
mentionnedanslaclauseFROM,selonlescritresfournis(facultatifs).
Syntaxe
DELETE FROM table
[WHERE critres]
Si aucune clause Where n'est spcifie, tous les enregistrements sont supprims.
Exemple
Cette requte supprime les commandes antrieures 2007.
DELETE FROM Commandes
WHERE ((Commandes.Cde_DateCde) < #1/1/2007#)
L'instructionINSERTINTO
L'instructionSQLINSERTINTOcorrespondunerequteAjoutquiajoutedesenregistrementsdansunetable.
Syntaxe
Requte Ajout avec un seul enregistrement :
INSERT INTO <TableDestination> [(champ1[, champ2[, ...]])]
VALUES (valeur1[, valeur[, ...]])
Cette requte doit contenir le mme nombre de valeurs, du mme type et dans le mme ordre, que de colonnes valoriser.
Requte Ajout avec un ou plusieurs enregistrements :
INSERT INTO <TableDestination> [(champ1[, champ2[, ...]])]
SELECT [<Tablesource>.]champ1[, champ2[, ...]]
FROM <liste de tables>
L'instruction SELECT doit renvoyer autant de valeurs, dans le mme ordre et du mme type que les colonnes valoriser (champs de
l'instruction INSERT).
Exemples
Ajout d'un enregistrement dans la table Clients.
INSERT INTO Clients ( Cli_CodeCLi, Cli_societe, Cli_ville,
Cli_pays )
- 4-
TRANSFORM:Creunerequteanalysecroise.Cetteinstructionestutiliselorsdelacrationd'unerequte
partirdel'assistantRequteanalysecroised'Access.
UNION : Cre une requte qui fusionne les rsultats de deux, ou plusieurs, requtes ou tables indpendantes.
Lesstructuresdestableset/oudesrequtesfusionnesdoiventtreidentiques.
Crationetgestiondetables
CREATETABLE:Creunenouvelletable.
CREATEINDEX:Creunnouvelindexpourunetableexistante.
ALTERTABLE:Modifielastructured'unetable.
DROPTABLE:Supprimeunetabledelabasededonnes.
DROPINDEX:Supprimeunindexd'unetable.
Crationetgestiond'utilisateursetdegroupes
CREATEUSER:Creunouplusieursnouveauxutilisateurs.
ADDUSER:Ajouteunouplusieursutilisateursungrouped'utilisateursexistant.
DROPUSER:Supprimeunouplusieursutilisateurs.
CREATEGROUP:Creunouplusieursnouveauxgroupes.
DROPGROUP:Supprimeunouplusieursgroupesd'utilisateurs.
GRANT:Attribuedesprivilgesspcifiquesunutilisateurouungrouped'utilisateursexistant.
REVOKE:Retiredesprivilgesspcifiquesunutilisateurouungrouped'utilisateursexistant.
Vous pouvez obtenir de plus amples informations au sujet du langage SQL et de ses instructions, partir de la rubrique "Rfrence
de Microsoft jet SQL", du sommaire de l'aide Access.
- 5-
Exemplesd'utilisationderequtesSQL
Afindedmontrerl'intrtdulangageSQL,lesexemplessuivantsproposentdeuxprocduresquivalentes:l'une
utiliselelangageSQL,l'autrenon.
Pour raliser ces exemples vous devez crer une table Clients avec un champ nomm Cli_Societe, et saisir
quelquesenregistrementsdanscettetable.VouspouvezgalementimporterlatableClientsdelabaseexemple
Comptoir.mdb livre avec Access 2003 et renommer les champsSocit en Cli_Societe, Pays en Cli_Pays et
VilleenCli_Ville.
Misejourd'enregistrements
Lecodedel'exemplesuivantpermetdemodifierlecontenud'unchampdansunetablepourdesenregistrements
rpondantcertainscritres.
Code VBA utilisant une requte SQL de type UPDATE.
Private Sub Maj_Pays()
Dim cncDevis As ADODB.Connection
Dim strSQL As String
' Mise jour du code pays dans la table clients
Set cncDevis = CurrentProject.Connection
strSQL = "UPDATE Clients SET " _
& "Clients.CLI_PAYS = 'F' " _
& "WHERE Clients.CLI_VILLE = 'Marseille'"
cncDevis.Execute strSQL
End Sub
Code VBA quivalent sans requte SQL.
Private Sub Maj_Pays1()
Dim cncDevis As ADODB.Connection
Dim rstClient As ADODB.Recordset
' Ouverture d'un jeu d'enregistrement
Set cncDevis = CurrentProject.Connection
Set rstClient = New ADODB.Recordset
rstClient.Open "CLIENTS", cncDevis, adOpenForwardOnly,
adLockOptimistic
' Parcours squentiel de la table Clients
Do While Not rstClient.EOF
If rstClient("CLI_VILLE") = "Marseille" Then
rstClient("CLI_PAYS") = "F"
rstClient.Update
End If
rstClient.MoveNext
Loop
End Sub
Chargementd'unelistedroulante
Le code de l'exemple ciaprs permet d'afficher dans une liste droulante (contrle zone de liste) le nom des
clientsdontlenomdeSocitcommenceparunelettredonne(lalettreestsaisiedansunezonedetexte).
Pourtestercetexemplevousdevez:
- 1-
- 2-
Prsentation
Dfinition
Unvnementestissud'uneactiondel'utilisateuroudusystmesurunobjet.Ildclenchel'excutionducode
correspondantlaprocdurevnementielledel'objetactiv.
L'utilisation d'une procdure vnementielle ou d'une macro permet d'ajouter la rponse propre l'application
unvnementseproduisantdansunformulaire,untatouuncontrle.
AssociationdecodeVBAunvnement
VouspouvezaffecteruncodeVBAl'vnementd'unobjetdedeuxfaons :
- partir des listes droulantes d'objets et d'vnements dans l'diteur Visual Basic
- 1-
- 2-
Catgoriesd'vnements
Leslistesd'vnementssuivantessontclassespartypeetcomportent:
- le nom de l'vnement,
- le nom de la proprit correspondante dans la fentre des proprits de l'objet (entre parenthses),
- la description de l'vnement,
- la mention Annulation indique si l'vnement peut tre annul ou pas. L'annulation d'un vnement fait l'objet du paragraphe
Annulation d'un vnement.
EvnementsdetypeFentre
Open:(Surouverture)
Seproduitl'ouvertureduformulairemaisavantquelepremierenregistrementsoitaffich.
Seproduitl'ouvertured'untat,maisavantsonimpression.
Annulation:Oui
Load:(Surchargement)
Seproduitl'ouvertureduformulairelorsquelepremierenregistrementestaffich.
Annulation:Non
Resize:(Surredimensionnement)
Seproduitlorsdupremieraffichageduformulaireetlorsdesmodificationsdesataille.
Annulation:Non
UnLoad:(Surlibration)
Se produit lors de la fermeture et lorsque les enregistrements sont librs, mais avant que le formulaire ne
disparaisse.
Annulation:Oui
Close:(Surfermeture)
Seproduitlorsqueleformulaireoul'tatdisparatlafermeture.
Annulation:Non
EvnementsdetypeFocus
Lesvnementsdetype"focus"peuvents'appliquerauxformulaires(Activate,Deactivate,GotFocus,LostFocus)
ouauxcontrles(Enter,Exit,SetFocus,LostFocus).
On dit qu'un objet a le focus lorsqu'il peut recevoir une saisie de l'utilisateur via des actions la souris ou au
clavier.Lesobjetsquiontlefocussontappelsobjetsactifs(ActiveFormouActiveControl).
La mthode SetFocus permet de donner le focus un contrle ou un formulaire.
Activate:(Suractiv)
Seproduitlorsquelafentreduformulaireoudel'tatdevientactive.
Annulation:Non
Deactivate:(Surdsactiv)
Seproduitlorsdel'activationd'uneautrefentre,maisavantqu'ellenesoitactive.
Seproduitgalementlorsdelafermeturedelafentre.
- 1-
Annulation:Non
Enter:(Surentre)
Seproduitavantqu'uncontrleneprennelefocuspartird'unautrecontrleoul'ouvertureduformulaire.
Annulation:Non
Exit:(Sursortie)
Se produit avant qu'un contrle ne perde le focus au profit d'un autre contrle du formulaire ou d'un autre
formulaire.
Annulation:Oui
GotFocus:(Surrceptionfocus)
Seproduitlorsqu'uncontrleouunformulairesanscontrleactifreoitlefocus.
Annulation:Non
LostFocus:(Surpertefocus)
Seproduitlorsqu'uncontrleouunformulaireperdlefocus.
Annulation:Non
EvnementsdetypeDonnes
Les vnements de type "donnes" s'appliquent aux formulaires associs une source de donnes (proprit
RecordSourcerenseignepartird'unnomdetableoud'unerequte)etauxcontrlesassocisunchampdela
sourcededonnesduformulaire(propritControlSourcerenseigne).
AfterInsert:(Aprsinsertion)
Seproduitaprsl'ajoutd'unnouvelenregistrementdanslatable.
Annulation:Non
AfterUpdate :(AprsMAJ)
Seproduitaprslamisejourd'uncontrleoud'unenregistrementavecdesdonnesmodifies.
Annulation:Non
AfterDelConfirm:(Aprssuppression)
Seproduitaprsquel'utilisateuraitrpondulademandedesuppressiondesenregistrements.
Annulation:Non
BeforeInsert:(Avantinsertion)
Se produit lors de la frappe du premier caractre d'un nouvel enregistrement, mais avant l'ajout rel de
l'enregistrement.
Annulation:Oui
BeforeUpdate :(AvantMAJ)
Seproduitavantlamisejourd'uncontrleoud'unenregistrementavecdesdonnesmodifies.
Annulation:Oui
BeforeDelConfirm:(Avantsuppression)
Seproduitaprsquel'utilisateuraitsupprimdesenregistrements,etavantqu'Accessnedemandeconfirmation.
Annulation:Oui
NotInList:(Surabsencedansliste)
- 2-
Seproduitlorsdelasaisied'unevaleurnefigurantpasdansunelisteetlorsquelapropritlimiteunelisteest
vraie.
Annulation:Non
Current:(Suractivation)
Seproduitlorsquelefocuspassed'unenregistrementl'autre.
Seproduitgalementl'ouvertureavantquelepremierenregistrementnedevienneceluiencours.
Annulation:Non
Change:(Surchangement)
Seproduitlorsdelamodificationducontenud'unezonetexteoulistemodifiable(clavieroumacro/VisualBasic).
Annulation:Non
Updated:(SurMAJ)
Seproduitlorsquelesdonnesd'unobjetOLEonttmodifies.
Annulation:Non
Delete:(Sursuppression)
Seproduitavantlasuppressioneffective.Lorsdel'appuisur[Suppr]parexemple.
Annulation:Oui
Dirty:Seproduitlorsquelecontenud'unformulaireoulapartietexted'unezonedelistemodifiablechange.
Seproduitgalementlorsdupassaged'unepageuneautredansuncontrleOnglet.
Annulation:Oui
EvnementsdetypeSouris
Click:(Surclic)
Seproduitlorsdel'appuisurleboutongauchedelasourissuruncontrleouunezonevierged'unformulaire.
Annulation:Non
DblClick:(Surdoubleclic)
Se produit lors de deux appuis sur le bouton gauche de la souris sur un contrle ou une zone vierge d'un
formulaire.
Annulation:Oui
MouseDown:(Sursourisappuye)
Seproduitlorsdel'appuisurunboutondelasourissuruncontrleouunformulaire.
Annulation:Oui
MouseMove:(Sursourisdplace)
Seproduitlorsquel'utilisateurdplacelasourissurunformulaireouuncontrle.
Annulation:Non
MouseUp:(Sursourisrelche)
Seproduitlorsquel'utilisateurrelcheleboutondelasourissuruncontrleouunformulaire.
Annulation:Non
EvnementsdetypeClavier
- 3-
KeyDown:(Surtoucheappuye)
Seproduitlorsdel'appuisurunetoucheoulorsdel'excutiondeSendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentKeycode
delaprocdureKeyDowndel'objet.
Annulation:Non
KeyPress:(Surtoucheactive)
Se produit lors de l'appui sur une touche mettant un caractre ANSI standard ou lors de l'excution de
SendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentkeyAscii
delaprocdureKeyPressdel'objet.
Annulation:Oui(parmacroouVBA)
KeyUp:(Surtoucherelche)
Seproduitlorsquel'utilisateurrelchelatoucheoulorsdel'excutiondeSendKeysouEnvoiTouches.
Ilestpossiblecependantd'empcherl'objetderecevoirlatoucheenattribuantlavaleur0l'argumentKeyCode
delaprocdureKeyUpdel'objet.
Annulation:Non
La proprit KeyPreview (aperu des touches) d'un formulaire dtermine si les procdures vnementielles de clavier du niveau
formulaire sont appeles avant celles du niveau contrle. Vous pouvez utiliser la proprit KeyPreview pour crer une procdure de
gestion du clavier au niveau d'un formulaire.
Exemple
L'exemple suivant montre comment afficher un formulaire lorsque l'utilisateur tape sur la touche [F1], et ce quel que soit le contrle
actif.
Private Sub Form_Load()
KeyPreview = True
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As
Integer)
' Si la touche est F1, le formulaire Recherche est
affich
' KeyCode est rinitialis pour ne pas afficher l'aide
Access
If KeyCode = vbKeyF1 Then
DoCmd.OpenForm "Recherche"
KeyCode = 0
End If
End Sub
vnementsdetypeImpression
Cesvnementss'appliquentauxtatsAccess.
Format:(Auformatage)
SeproduitlorsqueMicrosoftAccessdterminequellesdonnesappartiennentquellessections.
Annulation:Oui
Print:(Surimpression)
Seproduitlorsdelamiseenformedesdonnesd'unesectionpourimpression.
Annulation:Oui
Retreat:(Aureformatage)
SeproduitlorsqueMicrosoftAccessretourneunesectionprcdentependantlamiseenformed'untat.
- 4-
Annulation:Non
NoData:(Suraucunedonne)
SeproduitlorsqueMicrosoftAccessamisenformeuntatenvuedesonimpressionetqueceluicinecontient
aucunedonne.
Annulation:Oui
Page:(Surlapage)
SeproduitaprsqueMicrosoftAccessaitmisenformeunepaged'untatenvuedesonimpression,maisavant
quelapagenesoitimprime.
Annulation:Non
Les vnements Format, Print et Retreat s'appliquent aux sections des tats.
vnementsdetypeFiltre
ApplyFilter:(Surfiltreappliqu)
Seproduitlorsquel'utilisateurappliqueunfiltre.
Annulation:Oui
Filter:(Surfiltre)
Seproduitlorsquel'utilisateurcreunfiltre.
Annulation:Oui
vnementsdetypeErreuretMinuterie
Error:(Surerreur)
Seproduitlorsqu'uneerreursurvient.
Annulation:Non
Timer:(Surminuterie)
Seproduitlorsqu'undlaispcifis'estcoul.
Annulation:Non
- 5-
Annulationd'unvnement
Dans certains cas, il est souhaitable de pouvoir annuler un vnement. Pour cela, il existe deux faons de
procder:
- en spcifiant le nom d'une macro, contenant l'action AnnulerEvnement, comme paramtre de la proprit de type vnement
correspondante, par exemple pour annuler la mise jour d'un contrle ou pour placer le nom de la macro contenant l'action
AnnulerEvnement sur sa proprit AvantMAJ. L'action AnnulerEvnement en Visual Basic utilise la mthode CancelEvent
de l'objet Docmd.
- 1-
Squencestypesd'vnements
Une action utilisateur ou systme gnre directement un vnement, mais plusieurs vnements sousjacents
peuventtreactivs.
Voiciquelquessquencestypesd'enchanementsd'vnements:
Ouvertured'unformulaire:
OpenLoad Resize ActivateCurrent
Fermetured'unformulaire:
UnLoad Deactivate Close
Entredansuncontrle:
Enter GotFocus
Sortied'uncontrle:
Exit LostFocus
Passaged'unformulaireunautre:
Deactivate(form1) Activate(form2)
Modificationd'unezonedetexte:
KeyDown KeyPress Change KeyUp
Misejourd'uncontrle:
KeyDown KeyPress Change KeyUp Exit(Zone1) LostFocus(Zone1) Enter(Zone2)
GotFocus(Zone2)
Misejourd'unenregistrement:
KeyDown KeyPress Change KeyUp BeforeUpdate(Zonedetexte) AfterUpdate(Zone
detexte) BeforeUpdate(Formulaire)AfterUpdate(Formulaire)
Introductiondanslepremierchampd'unnouvelenregistrement:
KeyDown KeyPress BeforeUpdate(Formulaire) Change KeyUp
Suppressiond'enregistrements:
Delete Current BeforeDelConfirm AfterDelConfirm
- 1-
Lesvnementsdemisejour
DansMicrosoftAccesslesvnementsdemisejourinterviennentdeuxniveaux :
- 1-
Lesdiffrentstypesd'erreur
Ondistinguediffrentstypesd'erreurdanslelangageVBA :
Slectionnez Options.
Exemple
Les erreurs de syntaxe non corriges provoqueront une erreur de compilation (cf. message affich).
Leserreursdecompilation
LeserreursdecompilationsontdceleslorsqueAccesstentedecompilervotrecode.
LecodeVBApeuttrecompildedeuxfaons:
- la demande de l'utilisateur en slectionnant l'option Compiler du menu Dbogage. Dans ce cas le code est entirement
compil.
- Automatiquement lors de l'excution du code. Dans ce cas, le code contenu dans les procdures n'est compil que lors du
premier appel de la procdure. Les procdures non appeles ne seront pas compiles.
Il est recommand de compiler le programme avant de l'excuter afin de gagner du temps sur la mise au point.
- 1-
Exemple
Ilestpossibled'viterleserreursd'excutionduesdesvariablesnondclaresenutilisantl'instructionOption
Explicit.Sivoustentezd'utiliserunevariablenondclare,uneerreurseproduitlorsdelacompilation.
Leserreursd'excution
Les erreurs d'excution sont dceles lorsque Access lance l'excution de votre code. Une instruction, une
opration, un appel de fonction... invalides provoquent une erreur d'excution. Par exemple, l'utilisation d'une
variable non dclare ou un calcul effectu sur une variable comportant une valeur non numrique peuvent
provoqueruneerreurd'excution.
Exemple
La variable dblRayon transmise comme argument contient une valeur non numrique.
- 2-
Leserreursdelogique
Leserreursdelogiquesontliesdeserreursderaisonnementouunemauvaisetraductiond'unraisonnement
encodeVBA.Parexempleunalgorithmedecalculpeutproduireuneerreurdersultatsi,lorsdesatranscription
enVBA,uneoprationestomiseoumaltraduite,ousil'algorithmeesterron.
Leserreursdelogiquesontlesplusdifficilesdtecter.Ellesn'entranentgnralementpasd'erreurd'excution,
maisproduisentunrsultatdiffrentdeceluiattendu.
Dansl'exemplecitprcdemment,silavaleurdePiestfausseoulaformuledecalculduvolumeincorrecte,la
valeurretourneparVolSphereseraerrone.
- 3-
DbogageavecVBA
Prsentation
Le mode dbogage permet, entre autres, de dtecter et de corriger interactivement les erreurs autorisant ainsi
lapoursuitedel'excutionduprogramme.
Lorsqu'une erreur d'excution se produit, un code erreur est affich, l'excution du programme est interrompue
parAccessetlemodedbogageestactiv.
Aveclesdiffrentsoutilsdedbogage,onpeut :
- 1-
13. Pile des appels : Affiche la liste des appels de procdure dont l'excution est en cours.
L'objetDebug
L'objet Debug permet d'envoyer des donnes pour affichage dans la fentre Excution au moment de
l'excution.
Mthodes
Print :Affichedutexteoulersultatdel'valuationd'uneexpressiondanslafentreExcution.
Assert :Suspendl'excutiondemanireconditionnelle,laligneoapparatlamthode.
Exemple
VolSphere = 4 / 3 * Pi * ((dblRayon) ^ 3)
Debug.print dblRayon
Debug.Assert VolSphere > 0
- 2-
GestiondeserreursparVBA
Principe
Lorsqu'uneerreurd'excutionseproduit,uncodeerreurestgnrparAccess.Lagestiondeserreursconsiste
identifierl'erreureninterceptantsoncodeetlatraiterpour,parexemple:
- dans la procdure vnementielle Error d'un formulaire ou d'un tat, si l'erreur a t provoque au niveau de l'interface de
Microsoft Access ou du moteur Microsoft Jet,
- 1-
fonction et prcde d'une instruction Exit Sub ou Exit Function afin d'viter son excution s'il n'y a pas
d'erreur.
0 :Dsactiveletraitementd'erreurs.
D'autre part, dans la squence d'instructions de traitement d'erreurs, il est ncessaire d'indiquer quel endroit
doitreprendrel'excutiondelaprocdureoufonctionaprsletraitementdel'erreur.Pourcela,ilfaututiliserl'une
desinstructionssuivantes:
Resume :Reprendl'excutionduprogrammel'instructionquiaprovoqul'erreur.
Resume Next :Reprendl'excutionduprogrammel'instructionquisuitcellequiaprovoqul'erreur.
Resume <tiquette> :Reprendl'excutionduprogrammel'tiquettedfinie.
Exemple
Sub MaProcdure()
On Error GoTo Erreur
...
Exit Sub
Erreur:
Select Case Err
Case 11
'Division par Zro
MsgBox ...
...
Resume Next
Case 13
'Types incompatibles
...
End Select
End Sub
L'objetErr
L'objetErrcontientdesinformationspermettantdeconnatrel'originedel'erreur.
Proprits
Description:Renvoieunechainedecaractresexpliquantl'originedel'erreur.
HelpContext:Renvoiel'identificateurdecontexteassociunerubriqued'unfichierd'aide.
HelpFile:Renvoieunechanedecaractrescontenantlechemind'accscompletaufichierd'aide.
LastDLLError:Renvoieuncoded'erreursystmeproduitparunappelunebibliothquedeliaisonsdynamiques.
Number:Renvoieunevaleurnumriqueindiquantlenumrodel'erreur.
Source:Renvoieunechanedecaractrescontenantlenomdel'objetoudel'applicationquiagnrl'erreur.
Mthodes
Clear:Effacedemanireexplicitelecontenudel'objetErr.
Raise:Permetdegnrerdeserreursd'excution.
Exemple
Le code suivant permet d'afficher un message donnant des informations sur la nature de l'erreur.
- 2-
- 3-
Prsentation
Le langage VBA permet de personnaliser vos formulaires et tats lors de leur excution. Vous pourrez, par
exemple,effectuerlesoprationssuivantes:
- Modifier l'apparence d'un contrle dans un formulaire ou un tat (couleur, taille, position...).
- Ajouter ou supprimer des contrles dans un formulaire ou un tat.
- Enchaner des formulaires partir de boutons de commandes.
- Afficher ou imprimer un tat,
- Appliquer des filtres sur les enregistrements d'un tat ou d'un formulaire.
- Etc.
Les assistants "Boutons de commande" et "Zones de liste droulante" gnrent automatiquement du code VBA
dans des procdures vnementielles. Ils constituent des premiers exemples simples de personnalisation de
formulairesetd'tats.
Vous trouverez d'autres exemples de personnalisation de formulaires et d'tats dans la "mini application" dcrite au chapitre Code
d'une mini-application.
- 1-
Personnalisationdesformulaires
Un objet Form fait partie de la collection Forms qui reprsente tous les formulaires actuellement ouverts.
L'objetActiveForm(Screen.ActiveForm)etl'objetMedsignentleformulaireactif.
N'utilisez le mot rserv Me pour reprsenter un objet Form ou Report dans du code que si vous faites rfrence ce formulaire ou
tat partir du code dans le module de classe. Si vous y faites rfrence partir d'un module standard ou d'un autre module du
formulaire ou de l'tat, vous devez utiliser la rfrence complte du formulaire ou de l'tat.
Syntaxes
Pourfaire rfrenceunformulaire,vousdisposezdesdiffrentessyntaxes,permettantdefairerfrence
unobjetd'unecollection,suivantes :
Forms!<Nomformulaire>
ex: Forms!Commandes
Forms![<Nomformulaire>]
ex: Forms![Commandes]
Forms("<Nomformulaire>")
ex: Forms("Commandes")
Forms(<Index>)
ex: Forms(0)
La syntaxe Forms![<Nomformulaire>] est la plus couramment utilise.
Si un nom de formulaire contient un espace, la premire syntaxe ne fonctionne pas.
Utilisez toujours la mme syntaxe afin de faciliter la lecture du code.
Il est prfrable de rfrencer un formulaire spcifique par son nom plutt que par son index, car ce dernier peut changer.
Pour faire rfrence un sousformulaire partir d'un formulaire, vous devez utiliser le nom du contrle
contenantlesousformulairesuividumotclForm.
Exemple
[sFrmParticipant].Form!txtNbStag
[sFrmFormations].Form.RecordSource = strSQL
[sFrmFormations].Form.Requery
PropritsdisponiblesenmodeCration
Pour connatre le nom VBA et la description d'une proprit disponible en mode cration, vous devez vous
positionnerdanslafentrePropritsdel'objetFormulaireetcliquersurlatoucheF1.
- 1-
Propritsdel'ongletFormat
- 2-
1.
2.
Caption
Chanedecaractres
DefaultView
Octet
0Formulaireunique(modesimple)
1Formulairescontinus(modecontinu)
2Feuillededonnes
3Tableaucroisdynamique
4Graphiquecroisdynamique
5Formulairedoubleaffichage
3.
4.
5.
6.
7.
8.
AllowFormView
Boolen
AllowDatasheetView
Boolen
AllowPivotTableView
Boolen
AllowPivotChartView
Boolen
AllowLayoutView
Boolen
Picture
Chanedecaractres
- 3-
9.
10.
PictureTiling
Boolen
PictureAlignment
Octet
0 Hautgauche
1 Hautdroite
2 Centr
3 Basgauche
4 Basdroite
5 Centreduformulaire
11.
PictureType
Octet
0Intgr(ouincoropor)
1Attach(ouli)
12.
PictureSizeMode
0 Dcoupage
Octet
1 Echelle
2 Zoom
13.
14.
15.
16.
17.
Width
Relsimple
AutoCenter
Boolen
AutoResize
Boolen
FitToScreen
Boolen
BorderStyle
Octet
0 Aucun
1 Fin
2 Dimensionnable
3 Traitdoublefixe
18.
19.
20.
21.
22.
RecordSelectors
Boolen
NavigationButtons
Boolen
NavigationCaption
Boolen
DividingLines
Boolen
ScrollBars
Octet
0 Aucun
1 Horizontale
2 Verticale
3 Lesdeux
23.
24.
25.
ControlBox
Boolen
CloseButton
Boolen
MinMaxButtons
Octet
0 Aucun
1 Minactiv
2 Maxactiv
3 Lesdeuxactivs
26.
27.
28.
Moveable
Boolen
SplitFormSize
Entierlong
SplitFormOrientation
Octet
0 Enhaut
1 Enbas
- 4-
2 Agauche
3 Adroite
29.
30.
SplitFormSplitterBar
Boolen
SplitFormDatasheet
Octet
0 Modifautorise
1 Lectureseule
31.
SplitFormPrinting
Octet
0 Formulaireuniquement
1 Feuillededonnesuniquement
32.
33.
34.
35.
36.
37.
38.
SplitFormSplitterBarSave
Boolen
SubdatasheetExpanded
Boolen
SubdatasheetHeight
Boolen
GridX
Entier
GridY
Entier
LayoutForPrint
Boolen
Orientation
0 Degauchedroite
1 Dedroitegauche
39.
PaletteSource
Chanedecaractres
Propritsdel'ongletDonnes
1.
2.
RecordSource
Chanedecaractres
TypeRecordSet
Octet
0 Feuillederponsedynamique
1 Feuillerp.Dyn(MAJglobale)
2 Instantan
3.
4.
5.
6.
7.
FetchDefaults
Boolen
Filter
String
FilterOnLoad
Boolen
OrderBy
String
OrderByOnLoad
Boolen
ENI Editions - All rigths reserved
- 5-
8.
9.
10.
11.
12.
13.
DataEntry
Boolen
AllowAdditions
Boolen
AllowDeletions
Boolen
AllowEdits
Boolen
AllowFilters
Boolen
RecordLocks
Boolen
Propritsdel'ongletvnement
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
- 6-
OnCurrent
Chanedecaractres
OnLoad
Chanedecaractres
OnClick
Chanedecaractres
BeforeUpdate
Chanedecaractres
AfterUpdate
Chanedecaractres
BeforeInsert
Chanedecaractres
AfterInsert
Chanedecaractres
BeforeDelConfirm
Chanedecaractres
OnDelete
Chanedecaractres
AfterDelConfirm
Chanedecaractres
OnDirty
Chanedecaractres
OnGotFocus
Chanedecaractres
OnLostFocus
Chanedecaractres
OnDblClick
Chanedecaractres
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
OnMouseDown
Chanedecaractres
OnMouseUp
Chanedecaractres
OnMouseMove
Chanedecaractres
OnKeyUp
Chanedecaractres
OnKeyDown
Chanedecaractres
OnKeyPress
Chanedecaractres
OnUndo
Chanedecaractres
OnOpen
Chanedecaractres
OnClose
Chanedecaractres
OnResize
Chanedecaractres
OnActivate
Chanedecaractres
OnDeactivate
Chanedecaractres
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
OnUnload
Chanedecaractres
OnError
Chanedecaractres
MouseWheel
Chanedecaractres
OnFilter
Chanedecaractres
OnApplyFilter
Chanedecaractres
OnTimer
Chanedecaractres
TimerInterval
Chanedecaractres
SelectionChange
Chanedecaractres
BeforeRender
Chanedecaractres
AfterFinalRender
Chanedecaractres
- 7-
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
AfterRender
Chanedecaractres
AfterLayout
Chanedecaractres
OnConnect
Chanedecaractres
OnDisconnect
Chanedecaractres
BeforeQuery
Chanedecaractres
Query
Chanedecaractres
DataChange
Chanedecaractres
DataSetChange
Chanedecaractres
CommandExecute
Chanedecaractres
CommandBeforeExecute
Chanedecaractres
CommandChecked
Chanedecaractres
DataSetChange
Chanedecaractres
ViewChange
Chanedecaractres
PivotTableChange
Chanedecaractres
BeforeScreenTip
Chanedecaractres
KeyPreview
Chanedecaractres
Propritsdel'ongletAutres
1.
2.
3.
Popup
Boolen
Modal
Boolen
DisplayOnSharePointSite
Octet
0 Nepasafficher
1 Suivreleparamtredelatable
4.
Cycle
Octet
0 Touslesenregistrements
1 Enregistrementencours
2 Pageencours
5.
6.
- 8-
RibbonName
Chanedecaractres
ToolBar
Chanedecaractres
7.
8.
9.
10.
11.
12.
13.
14.
ShortcutMenu
Boolen
MenuBar
Chanedecaractres
ShortcutMenuBar
Chanedecaractres
HelpFile
Chanedecaractres
HelpContextID
Entierlong
HasModule
Boolen
FastLaserPrinting
Boolen
Tag
Chanedecaractres
PropritsnondisponiblesenmodeCration
Propritsserapportantaumoded'affichageduformulaire
CurrentView:Retournelemoded'affichageencoursduformulaire.
OpenArgs : Retourne l'expression chane spcifie dans l'argument OpenArgs de la mthode OpenForm qui a
ouvertleformulaire.
Page:Spcifielenumrodelapageencours.
Section:Identifieunesectionetpermetd'accderauxpropritsdecettesection.
SelHeight : Spcifie ou dtermine le nombre de lignes slectionnes (enregistrements) dans le rectangle de
slectionencours.
SelLeft:Spcifieoudterminequellecolonne(champ)figureleplusgauchedanslerectangledeslectionen
cours.
SelTop:Spcifieoudterminequelleligne(enregistrement)figuretoutenhautdurectangledeslection.
SelWidth : Spcifie ou dtermine le nombre de colonnes (champ) slectionnes dans le rectangle de slection
encours.
Propritsserapportantauxenregistrementsetleurmisejour
BatchUpdates :Indiquesileformulairespcifiprendenchargelesmisesjourparlotsdetransactions.
BookMark:Dfinitunsignetquiidentifiedefaonuniqueunenregistrement.
CurrentRecord:Permetd'identifierl'enregistrementencours.
Dirty:Permetdedterminersil'enregistrementencoursasubidesmodificationsdepuissaderniresauvegarde.
NewRecord:Dterminesil'enregistrementencoursestunnouvelenregistrement.
RecordSet : Dtermine ou renvoie l'objet DAO Recordset reprsentant la source d'enregistrement d'un
formulaire.
RecordSourceQualifer : Renvoie ou dfinit une chane de caractres indiquant le nom du propritaire de la
sourced'enregistrementsSQLServerpourleformulaire.
Propritsserapportantlaprsentationduformulaire
CurrentSectionLeft:Dtermineladistanceentwipsentrelecoinsuprieurgauchedelasectionencoursetle
coinsuprieurgaucheduformulaire(twip:unitdemesurequivalente1/20depointou1/1440depouce.
Uncentimtrecontient567twips).
CurrentSectionTop:Reprsenteladistanceen twipsentrelecoinsuprieurdelasectionencoursetlecoin
ENI Editions - All rigths reserved
- 9-
suprieurduformulaire.
DataSheetBackColor:Spcifieoudterminelacouleurd'arrireplandelatotalitd'unefeuillededonnes.
DatasheetBorderLineStyle :Indiquelestyledetraitutiliserpourlaborduredelafeuillededonnes.
DatasheetCellsEffect : Permet de spcifier si les effets spciaux s'appliquent aux cellules d'une feuille de
donnes.
DatasheetColumnHeaderUnderlineStyle :Indiquelestyledetraitutiliserpourlebordinfrieurdesenttes
decolonnedelafeuillededonnes.
DataSheetFontHeight:Spcifielatailleenpointsutilisepourafficheretimprimerlesnomsdeschampsetles
donnesenmodeFeuillededonnes.
DataSheetFontItalic:MetenitaliquelesnomsdechampsetlesdonnesenmodeFeuillededonnes.
DataSheetFontName:Spcifielapoliceutilisepourafficheretimprimerlesnomsdeschampsetlesdonnes
enmodeFeuillededonnes.
DataSheetFontUnderline :SoulignelesnomsdechampsetlesdonnesenmodeFeuillededonnes.
DataSheetFontWeight : Spcifie l'paisseur de la police utilise pour afficher et imprimer les caractres des
nomsdechampsetdesdonnesenmodeFeuillededonnes.
DataSheetForeColor:Spcifieoudterminelacouleurdutextedelatotalitd'uneFeuillededonnes.
DatasheetGridlinesBehavior:PermetdespcifierletypedequadrillagedevantapparatreenmodeFeuillede
donnes.
DatasheetGridlinesColor:Permetdespcifierlacouleurduquadrillaged'unefeuillededonnes.
HorizontalDatasheetGridlineStyle : Indique le quadrillage horizontal utiliser pour la bordure de la feuille de
donnes.
InsideHeight:Dterminelahauteur(entwips)delafentrecontenantunformulaire.
InsideWidth:Dterminelalargeur(entwips)delafentrecontenantunformulaire.
Pages:Indiquelenombretotaldepages.
Painting:Permetdespcifiersileformulairedoittreredessin.
PaintPalette:Spcifielapalettedevanttreutiliseparleformulaire.
PictureData : Permet de copier l'image du formulaire dans un autre objet qui reconnat la proprit Image
(Picture).
VerticalDatasheetGridlineStyle : Indique le quadrillage vertical utiliser pour la bordure de la feuille de
donnes.
WindowHeight:Indiquelahauteurd'unformulaireexprimeentwips.
WindowLeft :Indiquelapositionl'cran,entwips,dubordgaucheduformulaire.
WindowTop :Indiquelapositionl'cran,entwips,dubordsuprieurduformulaire.
WindowWidth:Renvoielalargeurd'unformulaireexprimeentwips.
Propritsrenvoyantunobjet
- 10 -
Application :Permetd'accderl'objetApplicationd'Access.
ChartSpace :RenvoieunobjetChartSpacequireprsentel'espacegraphique.
Form:Permetdefairerfrenceunformulaireassociuncontrlesousformulaire.
Module:Permetdespcifierunmoduledeformulaire.LesmthodesInsertLines,DeleteLinesetReplaceLinede
l'objetModulepermettentdemodifierlecontenud'unmoduledecode.
Parent:Permetdefairerfrencel'objetpre.
PivotTable :RenvoieunobjetPivotTablequireprsenteleconteneurd'unelistedetableaucroisdynamique.
Printer :RenvoieoudfinitunobjetPrinterquireprsentel'imprimantepardfautdusystmeactuel.
RecordsetClone:Permetdefairerfrencel'objetRecordsetduformulaire.
Propritsrelativesl'impressionduformulaire
PrtDevMode : Permet de dfinir ou d'obtenir des informations relatives au mode du priphrique d'impression
spcifi.
PrtDevNames:Permetdedfiniroud'obtenirdesinformationsrelativesl'imprimantechoisie.
PrtMip:Dfinitouretournedesinformationssurlemodedupriphriquespcifi.
UseDefaultPrinter :Indiquesileformulaireutilisel'imprimantepardfautdusystme.
MthodesdesobjetsForm
Mthodes
GotoPage:Dplacelefocussurlepremiercontrledelapageindique.
Move:Dplaceet/ouredimensionneleformulaireauxcoordonnesindiquesparlesvaleursdesarguments.
Recalc:Recalculeimmdiatementlescontrlesduformulaire.
Refresh : Met jour les donnes du formulaire afin qu'elles contiennent les dernires modifications
ventuellementeffectuespard'autresutilisateurs.
Repaint:Effectuetouteslesmisesjourenattenteduformulaire.
Requery:Metjourlesdonnesduformulairespcifi.
SetFocus:Donnelefocusauformulaire.
UnDo:Restaureunformulairetelqu'iltaitavantd'tremodifi.
Exemple
Affichage de la fiche Client en fonction du nom de la Socit slectionne dans une zone de liste.
Private Sub lstRechCli_AfterUpdate()
Dim rs As Object
' Recherche l'enregistrement correspondant
' au client slectionn
Set rs = Me.Recordset.Clone
rs.FindFirst "[Cli_CodeCLi] = '" & Me![lstRechCli] & "'"
- 11 -
- 12 -
Personnalisationdestats
Un objet Reportfaitpartiedelacollection Reportsquireprsentetouslestatsactuellementouverts.L'objet
ActiveReport(Screen.ActiveReport)etl'objetMedsignentl'tatactif.
Syntaxes
Pourfairerfrenceuntat,vousdisposezdesmmessyntaxesquepourlesformulaires.
Exemple
Reports![ListeCde]
Reports("ListeCde")
Reports![ListeCde]![DateCde]
PropritsdisponiblesenmodeCration
Propritsdel'ongletProprits
1.
2.
Caption
Chanedecaractres
DefaultView
Octet
0 Modesimple
1 Modecontinu
2 Feuillededonnes
3 Tableaucroisdynamique
ENI Editions - All rigths reserved
- 1-
4 Graphiquecroisdynamique
5 Formulairedoubleaffichage
3.
4.
5.
6.
7.
AlloReportView
Boolen
AllowLayoutView
Boolen
Picture
Chanedecaractres
PictureTiling
Boolen
PictureAlignement
Octet
0 Suprieurgauche
1 Suprieurdroit
2 Centr
3 Infrieurgauche
4 Infrieurdroit
5Centreformulaire
8.
PictureType
Octet
0 Intgr(ouincorpor)
1 Attach(ouli)
9.
PictureSizeMode
Octet
0 Dcoupage
1 Echelle
2 Zoom
10.
11.
12.
13.
Width
Entier
AutoCenter
Boolen
AutoResize
Boolen
BorderStyle
Octet
0 Aucun
1 Fin
2 Dimensionnable
3 Traitdoublefixe
14.
ScrollBars
Octet
0 Aucun
1 Horizontale
2 Verticale
3 Lesdeux
15.
16.
17.
ControlBox
Boolen
CloseButton
Boolen
MinMaxButtons
Octet
0 Aucun
1 Minactiv
2 Maxactiv
3 Lesdeuxactivs
18.
19.
20.
21.
22.
- 2-
Moveable
Boolen
GridX
Entier
GridY
Entier
LayoutForPrint
Boolen
GrpKeepTogether
Octet
0 Parpage
1 Parcolonne
23.
PicturePages
Octet
0 Touteslespages
1 Premirepage
2 Pasdepage
24.
PageHeader
Octet
0 Touteslespages
1 Sansentted'tat
2 Sanspiedd'tat
3 Sansentte/piedd'tat
25.
PageFooter
Octet
0 Touteslespages
1 Sansentted'tat
2 Sanspiedd'tat
3 Sansentte/piedd'tat
26.
Orientation
Octet
0 Degauchedroite
1 Dedroitegauche
27.
PaletteSource
Chainedecaractres
Propritsdel'ongletDonnes
1.
2.
3.
4.
5.
6.
RecordSource
Chanedecaractres
Filter
Chanedecaractres
FilterOnLoad
Boolen
OrderBy
String
OrderByOnLoad
Boolen
AllowFilters
Boolen
Propritsdel'ongletvnement
- 3-
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
- 4-
OnCurrent
Chanedecaractres
OnLoad
Chanedecaractres
OnNoData
Chanedecaractres
OnClick
Chanedecaractres
OnGotFocus
Chanedecaractres
OnLostFocus
Chanedecaractres
OnDblClick
Chanedecaractres
OnMouseDown
Chanedecaractres
OnMouseUp
Chanedecaractres
OnMouseMove
Chanedecaractres
OnKeyUp
Chanedecaractres
OnKeyDown
Chanedecaractres
OnKeyPress
Chanedecaractres
OnOpen
Chanedecaractres
OnClose
Chanedecaractres
OnResize
Chanedecaractres
OnActivate
Chanedecaractres
OnDeactivate
Chanedecaractres
OnUnload
Chanedecaractres
OnError
Chanedecaractres
MouseWheel
Chanedecaractres
OnFilter
Chanedecaractres
23.
24.
25.
26.
27.
OnApplyFilter
Chanedecaractres
OnTimer
Chanedecaractres
TimerInterval
Chanedecaractres
OnPage
Chanedecaractres
KeyPreview
Boolen
Propritsdel'ongletAutres
1.
2.
3.
PopUp
Boolen
Modal
Boolen
DisplayOnSharePointSite
Octet
0 Nepasafficher
1 Suivreleparamtredelatable
4.
DateGrouping
0 ParamtresUS
1 Paramtressystme
5.
Cycle
0 Touslesenregistrements
1 Enregistrementencours
2 Pageencours
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
RecordLocks
Boolen
RibbonName
Chanedecaractres
ToolBar
Chanedecaractres
MenuBar
Chanedecaractres
ShortcutMenuBar
Chanedecaractres
HelpFile
Chanedecaractres
HelpContextID
Entierlong
HasModule
Boolen
FastLaserPrinting
Boolen
Tag
Chanedecaractres
- 5-
Propritsnondisponiblesenmodecration
Propritsserapportantaumoded'affichagedel'tat
Moveable :Indiquesil'tatpeuttredplacparl'utilisateur.
Page:Indiquelenumrodepageencours.
Propritsserapportantauxenregistrementsetleurmisejour.
CurrentRecord:Identifiel'enregistrementencours.
Dirty:Permetdedterminersil'enregistrementencoursasubidesmodificationsdepuissaderniresauvegarde.
HasData:Indiquesil'tatestdpendantd'unjeud'enregistrementsvide.
RecordSourceQualifier : Renvoie ou dfinit une chane de caractres indiquant le nom du propritaire de la
sourced'enregistrementsSQLServerpourl'tat
Propritsserapportantlaprsentationdel'tat
DrawMode : Spcifie comment le crayon (la couleur utilise pour le dessin) affecte les couleurs d'arrireplan
surl'tatlorsquevousutilisezlesmthodesLine,CircleouPSetpourdessinersuruntatimprimer.
DrawStyle:SpcifielestyledetraitlorsquevousutilisezlesmthodesLine et Circle pour imprimer des traits
suruntat.
DrawWidth : Spcifie la largeur de trait pour les mthodes Line, Circle et PSet lorsque vous imprimez des
lignessuruntat.
FillColor:Permetdespcifierlacouleurdelatramedesrectanglesetdescerclesdessinsdansuntatl'aide
desmthodesLineetCircle.
FillStyle:Spcifiesiuncercleouuntraitdessinl'aidedelamthodeCircleouLineesttransparent,opaque
ouavecunmotifdetrame.
FontBold : Spcifie si une police doit apparatre en gras lors de l'impression de contrles d'tats ou lors de
l'utilisationdelamthodePrintdansuntat.
Left:Dfinitlapositiongauchedel'tat.
Painting:Permetdespcifiersil'tatdoittreredessin.
PaintPalette:Spcifielapalettedevanttreutiliseparl'tat.
ScaleLeft : Spcifie les units des coordonnes horizontales reprsentant le bord gauche d'une page lorsque
vous utilisez les mthodes Circle, Line, PSet ou Print pour l'impression ou l'aperu d'un tat ou pour son
enregistrementsousformedefichier.
ScaleMode : Spcifie l'unit de mesure pour les coordonnes d'une page quand vous utilisez les mthodes
Circle,Line,PSetouPrintpourl'impressionoul'aperud'untatousonenregistrementsousformedefichier.
ScaleTop : Spcifie les units des coordonnes verticales reprsentant le bord suprieur d'une page lorsque
vous utilisez les mthodes Circle, Line, PSet ou Print pour l'impression ou l'aperu d'un tat ou pour son
enregistrementsousformedefichier.
ScaleWidth : Spcifie le nombre d'units utilises dans la largeur de la page lorsque vous utilisez les mthodes
Circle,Line,PSetouPrintpourl'impressionoul'aperud'untatousonenregistrementsousformedefichier.
- 6-
Top:Dfinitlapositionhautedel'tat.
WindowLeft :Indiquelapositionl'cran,entwips,dubordgauchedel'tat.
WindowTop :Indiquelapositionl'cran,entwips,dubordsuprieurdel'tat.
Propritsrenvoyantunobjet
Application:Permetd'accderl'objetApplicationd'Access.
Module : Permet de spcifier un module d'tat. Les mthodes InsertLines, DeleteLines et ReplaceLine de
l'objetModulepermettentdemodifierlecontenud'unmoduledecode.
Parent:Permetdefairerfrencel'objetpre.
Printer :RenvoieoudfinitunobjetPrinterquireprsentel'imprimantepardfautdusystmeactuel.
Recordset:Dtermineourenvoiel'objetDAORecordsetreprsentantlesenregistrementsd'untat.
Shape : Renvoie une chane reprsentant la commande de type Shape permettant d'effectuer le tri et le
regroupementdel'tatspcifi.Enlectureseule.
Report:Permetdefairerfrencel'tatassociuncontrle soustat.
Propritsrelativesl'impressiondel'tat
CurrentX:Permetdespcifierlacoordonnehorizontaledudbutdelaprochainemthoded'impressionoude
dessind'untat.
CurrentY : Permet de spcifier la coordonne verticale du dbut de la prochaine mthode d'impression ou de
dessind'untat.
MoveLayout:SpcifiesiMicrosoft Accessdoitpasserlapositiond'impressionsuivantesurlapage.
NextRecord:Spcifiesiunesectiondoitpasserl'enregistrementsuivant.
Pages:Indiquelenombretotaldepages.
PrintCount : Renvoie le nombre d'valuations de la proprit SurImpression (OnPrint) pour la section en cours
d'untat.
PrintSection:Spcifiesiunesectiondoittreimprime.
PrtDevMode:Permetdedfinirouderestituerdesinformationsrelativesaumodedupriphriqued'impression
spcifi.
PrtDevNames:Permetdedfinirouderetournerdesinformationsrelativesl'imprimantechoisie.
PrtMip:Dfinitouretournedesinformationssurlemodedupriphriquespcifi.
UseDefaultPrinter:Indiquesil'tatutilisel'imprimantepardfautdusystme.
Autresproprits
FormatCount:Permetdedterminerlenombred'valuationsdelapropritAuFormatage(OnFormat)pourla
sectionencoursdansuntat.
GroupLevel:Faitrfrenceauniveauderegroupementsurlequelporteleregroupementouletrid'untat.
Hwnd : Retourne le descripteur (une valeur unique de type Entier long) attribu la fentre en cours par
- 7-
Microsoft Windows.
PictureData:Permetdecopierl'imagedel'tatdansunautreobjetquireconnatlapropritImage(Picture).
Section:Identifieunesectionetpermetd'accdersesproprits.
Mthodes
Circle:Permetdedessineruncercleouuneellipse.
Line:Permetdedessinerdeslignesoudesrectangles.
Move :Dplaceet/ouredimensionnel'tatauxcoordonnesindiquesparlesvaleursdesarguments.
Print:Envoieletextedfinil'objetReport.
Pset:Dtermineunpointdel'tatpourmodifiersacouleur.
Scale:Dfinitlesystmedecoordonnes.
TextHeight:Retournelahauteurd'unechaneimprimer.
TextWidth :Retournelalargeurd'unechaneimprimer.
- 8-
LesobjetsControl
Unobjet ControlfaitpartiedelacollectionControlsquireprsentetouslescontrlesd'unformulaire,d'untat
ou d'un sousformulaire. L'objet ActiveControl (Screen.ActiveControl ou <NomFormulaire>.ActiveControl)
dsignelecontrleactif.
Syntaxes
Vouspouvezrfrenceruncontrledefaonimplicite:
<Formulaire>|<Etat>!<NomContrle> ex: Me!DateCde
<Formulaire>|<Etat>![<NomContrle>] ex: Me![DateCde]
<Formulaire>|<Etat>("<NomContrle>") ex: Me("DateCde")
<Formulaire>|<Etat>.<NomContrle> ex: Me.DateCde
ouexplicitementcommemembredelacollectionControls :
<Formulaire>|<Etat>.Controls{("<contrle>")|!<contrle>|
(<index contrle>)}
ex:
Me.Controls!DateCde
Me.Controls![DateCde]
Me.Controls("DateCde")
Me.Controls(0)
Chaque contrle a ses proprits, mthodes et vnements particuliers. Seules les proprits et mthodes
communestouslescontrlessonticirpertories.
Pour rfrencer un contrle du formulaire ou de l'tat actif, le mot cl Me n'est pas obligatoire. Vous pouvez directement utiliser le
nom du contrle.
Propritscommuneslaplupartdescontrles
Application:Permetd'accderl'objetApplicationdeMicrosoftAccess.
Form:Permetdefairerfrenceauformulairecontenantlecontrle.
Hyperlink:Renvoieunerfrenceunobjetlienhypertexte.
Object:PermetderetournerunerfrenceunobjetActiveXassociunobjetOLEliouincorpordansun
contrle.
ObjectVerbs:PermetdedterminerlalistedesactionsOLEprisesenchargeparunobjetOLE.
OldValue:Renvoielavaleurnonmodified'uncontrledpendant(anciennevaleur).
Parent:Permetdefairerfrencel'objetpred'uncontrle.
Report:Permetdefairerfrencel'tatcontenantlecontrle.
Mthodescommuneslaplupartdescontrles
Requery:Recalculelavaleurd'uncontrle.
SetFocus:Donnelefocusuncontrle.
SizeToFit:Ajusteuncontrleautexteoul'imagequ'ilcontient.
UnDo:Restaureuncontrletelqu'iltaitavantd'tremodifi.
LamthodeMove
- 1-
La mthode Move est disponible pour la plupart de contrles (CheckBox, ComboBox, CommandButton,
Image,Label,Line,TexteBox...).
Elle permet de dplacer et/ou redimensionner le contrle en fonction des coordonnes indiques par les valeurs
desarguments.
SyntaxedelamthodeMove
<expression>.Move(<Gauche>, <Haut>, <Largeur>, <Hauteur>)
<expression> :Dsigneuncontrle,tatouformulaire.
Gauche : Obligatoire. Position l'cran, en twips, du bord gauche de l'objet par rapport au bord gauche de la
fentredeMicrosoftAccess.
Haut : Facultatif. Position l'cran, en twips, du bord suprieur de l'objet par rapport au bord suprieur de la
fentredeMicrosoftAccess.
Largeur :Facultatif.Largeurdsire,entwips,del'objet.
Hauteur :Facultatif.Hauteurdsire,entwips,del'objet.
- 2-
Lescontrlesd'Access
Prsentation
MicrosoftAccess2007estpourvud'unnombreintressantdecontrlesfacilitantl'laborationd'uneapplication.
Ces contrles sont placs dans des formulaires ou dans des tats de faon aboutir l'interface dsire.
Chacun d'eux possde ses propres caractristiques (proprits), ses propres comportements (mthodes) ainsi
qu'une liste d'vnements auxquels ils peuvent ragir, tout cela accessible par l'intermdiaire de l'explorateur
d'objets.
Ondistinguedeuxtypesdecontrles:
Nom du contrle
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Typed'objetVBA
Logo
Image
Titre
TextBox
Numrodepage
TextBox
DateetHeure
TextBox
Zonedetexte
TextBox
Etiquette
Label
Boutondecommande
CommandButton
Zonedelistedroulante
ComboBox
Zonedeliste
ListBox
SousFormulaire/SousEtat
SubForm/SubReport
- 1-
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
- 2-
Trait
Line
Rectangle
Rectangle
Cadred'objetdpendant
BoundObjectFrame
Grouped'options
OptionGroup
Casecocher
CheckBox
Cased'option
OptionButton
Boutonbascule
ToggleButton
Contrleonglet
TabControl
Page
Page
Graphique
Chart
Cadred'objetindpendant
UnboundObjectFrame
Image
Image
Sautdepage
PageBreak
Lienhypertexte
Label
Picejointe
Attachment
Lesoptionsdedmarrage
Lesoptionsdedmarraged'Access2007permettentdedfinirl'aspectetlecomportementd'uneapplicationlors
desonouverture.
Pourmodifierlesoptionsdedmarrage:
Certaines de ces options correspondent des proprits de la base de donnes courantes (objet Database) et
peuventtremodifiesaumoyendulangageVBA:
1.
2.
3.
4.
5.
6.
7.
PropritVBA
Type
AppTitle
String
AppIcon
String
UseAppIconForFrmRpt
Boolen
StartupForm
String
StartupShowStatusBar
Boolen
AllowSpecialKeys
Boolen
AutoCompact
Boolen
ENI Editions - All rigths reserved
- 1-
8.
9.
10.
11.
12.
RemovePersonalInformation
Boolen
ThemedFormControls
Boolen
StartupShortcutMenuBar
String
AllowFullMenus
Boolen
AllowShortcutMenus
Boolen
Pour modifier une proprit l'aide du langage VBA, vous devez utiliser la collection Properties de l'objet
Database.Silapropritn'apasdjtdfinie,vousdevezlacreraumoyendelamthodeCreateProperty.
L'exemple suivant permet de modifier certaines options de dmarrage.
Sub modifieOptions()
Dim intX As Integer
' Titre de l'application
intX = AddAppProperty("AppTitle", DB_Text, _
"Gestion des Formations")
' Icne de l'application
intX = AddAppProperty("AppIcon", DB_Text,
"C:\Formations\Formation.bmp")
' Option "Utiliser comme icne de formulaire ou
d'tat"
intX = AddAppProperty("UseAppIconForFrmRpt", DB_BOOLEAN,
1)
' Option "Compacter lors de la fermeture"
intX = AddAppProperty("Auto Compact", DB_BOOLEAN, 1)
End Sub
Function AddAppProperty(strName As String, _
varType As Variant, varValue As Variant) As Integer
Dim dbs As Object, prp As Variant
Const conPropNotFoundError = 3270
' Modifie la valeur de la proprit
Set dbs = CurrentDb
On Error GoTo AddProp_Err
dbs.Properties(strName) = varValue
AddAppProperty = True
AddProp_Bye:
Exit Function
AddProp_Err:
' En cas d'erreur, ajoute la proprit
' au moyen de la mthode CreateProperty
If Err = conPropNotFoundError Then
Set prp = dbs.CreateProperty(strName, varType, varValue)
dbs.Properties.Append prp
Resume
Else
AddAppProperty = False
Resume AddProp_Bye
End If
End Function
- 2-
Personnalisationduruban
Prsentation
DansAccess2007,ilestpossibledepersonnaliserintgralementl'apparencedurubanaumoyendulangageXML.
Celangagepermet:
Cliquez avec le bouton droit sur la barre de navigation situe en haut du volet de navigation.
Dans la bote de dialogue Options de navigation, activez l'option Afficher les objets systme, puis cliquez sur le bouton de
commande OK.
Affichagedesmessagesd'erreurscontenuesdanslecodeXML
Par dfaut, les messages d'erreurs dtects dans le code XML ne sont pas affichs. De ce fait, si votre code
XMLcontientdeserreurs,lerubannepourratreaffichetilseradifficiled'identifierlacausedel'erreur.
Pourmodifiercetteoption:
Activez l'option Afficher les erreurs du complment d'interface utilisateur situ sous Gnral.
- 1-
l'erreurainsiqueledescriptifdel'erreur.
Exemple:
Crationd'unetablesystmeUSysRibbons
LatablesystmeUSysRibbonspermetdestockerlecodeXMLpermettantdecrerunouplusieursrubans.
Pourcrercettetable:
RibbonIdNumroAuto
RibbonName Texte sur 255 caractres
RibbonXML Mmo
Slectionnez le champ RibbonId et cliquez sur la commande Cl primaire (situe dans le groupe Outils de l'onglet Cration).
AjoutducodeXMLdepersonnalisationlatableUSysRibbons
PourassocierducodeXMLvotretable UsysRibbons,lasolutionlaplussimpleestdegnrerunformulairede
saisie.Pourcela :
Activez l'onglet Crer, puis cliquez sur Formulaire dans le groupe Formulaires.
Exemple :
Le code XML suivant permet de masquer les onglets Crer et Donnes externes du Ruban:
- 2-
Afin de faciliter la saisie et la lecture du code XML, vous pouvez utiliser un diteur XML (ex : Visual Web Developper Express
tlchargeable depuis le site de Microsoft) pour crer votre code et le copier ensuite dans la table UsysRibbon.
Associationdurubanl'applicationactive
Inscrivez le nom du ruban (ex : ruban1) dans la liste Nom du ruban situe sous Options de la barre d'outils et du ruban.
Cliquez sur le bouton de commande OK. Le message suivant est alors affich :
Fermezvotrebasededonnesetouvrezlanouveauafind'activerlenouveauruban.
Le code XML du ruban est excut l'ouverture de la base de donnes. Pour tester les modifications apportes votre code XML,
vous devez systmatiquement fermer puis rouvrir votre base de donnes.
Associationdurubanunformulaireouuntat
Sous l'onglet Autre de la feuille de proprit, cliquez sur la liste Nom du ruban et slectionnez le ruban afficher lors de
l'ouverture du formulaire ou de l'tat.
- 3-
Ouvrez le formulaire en Mode Formulaire: le ruban slectionn est alors affich. la fermeture du formulaire, le ruban associ
l'application sera restaur.
- 4-
PrsentationdulangageXML
LelangageXML
LelangageXML(eXtensibleMarkupLanguage)estlelangagestandarddedescriptionetd'changededonnes,
utilisnotammentsurleweb.
ToutcommelelangageHTML,lelangageXMLutilisedesbalises(ou"tags")pourdlimiteruncontenu.Unebalise
estfacilementidentifiablecarellecommenceparlecaractre<etsetermineparlecaractre>(lesbalisesde
findecontenucommencentpar/).
ElmentsXMLutilisspourpersonnaliserleruban
LesprincipalesbalisesXMLutilisesdanslecodeXMLd'unruban
Nomdebalise
Description
<customUI>
Baliseprincipaled'unrubanpersonnalis
<ribbon>
Balisecontenantladescriptionduruban
<OfficeMenu>
<tab>
Ongletdansleruban
<group>
Groupedansunongletdansleruban
<labelControl>
Etiquette(titreouintitul)
<button>
Boutondecommande
<splitButton>
Boutondemenu
<toggleButton>
Boutonbascule
<menu>
Menudroulant
<dynamicMenu>
Menudroulantdynamique
<gallery>
Galerieoupalettedechoix
<dialogBoxLauncher>
Lespropritsassociesauxobjetsduruban
Les proprits suivantes permettent de personnaliser les diffrents contrles affichs dans le ruban (bouton de
commande,menudroulant)
Proprit
Description
Id
Identifiantuniqued'uncontrlepersonnalis.
idMso
Identifiant
Microsoft.
enabled
"true"silecontrleestaccessbile,"false"sinon.
Lavaleurpardfautest"true".
insertBeforeMso
Placel'objetavantuncontrleOfficeexistant.
insertAfterMso
Placel'objetaprsuncontrleOfficeexistant.
imageMso
Nomdel'imageutiliserpourlecontrle.
itemSize
Tailledeslmentsdumenu.
label
Texteaffichsurlecontrle.
onAction
MacrooucodeVBAassociaucontrle.
screentip
Titredel'infobulleducontrle.
supertip
Texteapparaissantdansl'infobulleducontrle.
size
Tailleducontrle("normal"ou"large").
showImage
unique
d'un
contrle
standard
- 1-
showLabel
"true"sil'intitulducontrleestaffiche,"false"
sinon.Lavaleurpardfautest"true".
visible
Lespropritssuivantespermettentdepersonnaliserleruban :
OnLoad
startFromScratch
- 2-
Exemplederubanpersonnalis
L'exempledecodeXMLdcritdanscechapitrepermetdecrerlerubanprsentcidessous:
CodeXMLdurubanpersonnalis
<customUI
xmlns="http://schemas.microsoft.com/office/2006/01/customui"
onLoad="Initialisation">
ribbon startFromScratch="true">
' Modification du menu Microsoft Office
<officeMenu>
' Cration d'un bouton de menu
<splitButton id="spltListe1"
insertBeforeMso="FileCloseDatabase">
<menu id="spltMenu"
itemSize="large" label="Listes de formulaires">
<button id="Option1" label="Toutes les listes"
imageMso="FileCreateDocumentWorkspace"
onAction="OuvreListes"/>
<button id="Option2" label="Liste des Clients"
imageMso="DirectRepliesTo"
onAction="OuvreListeClients"/>
<button id="Option3" label="Liste des Employs"
imageMso="DistributionListAddNewMember"
onAction="OuvreListeEmployes"/>
<button id="Option4" label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction="OuvreListeFournisseurs"/>
</menu>
</splitButton>
- 1-
- 2-
<button id="btnMenu2"
label="Liste des Employs "
onAction = "OuvreListeEmployes"/>
<button id="btnMenu3"
label="Liste des Fournisseurs"
onAction = "OuvreListeFournisseurs"/>
<button id="btnMenu4"
label="Toutes les listes"
onAction = "OuvreListes"/>
</menu>
<menu id="menu2"
label="Menu 2"
itemSize="large"
imageMso="DistributionListSelectMembers">
<button id="btnMenu5"
label="Liste des Clients"
imageMso="DirectRepliesTo"
onAction = "OuvreListeClients"/>
<button id="btnMenu6"
label="Liste des Employs "
imageMso="DistributionListAddNewMember"
onAction = "OuvreListeEmployes"/>
<button id="btnMenu7"
label="Liste des Fournisseurs"
imageMso="DistributionListRemoveMember"
onAction = "OuvreListeFournisseurs"/>
<button id="btnMenu8"
label="Toutes les listes"
imageMso="DistributionListSelectMembers"
onAction = "OuvreListes"/>
</menu>
</group>
</tab>
' Onglet Outils Access
<tab id="tabAccess" label="Outils Access">
<group idMso="GroupPrintPreviewPrintAccess"/>
<group id="grpExport" label="Export">
<button idMso="ExportExcel" label="ExportExcel"
screentip="Export Excel"
supertip="Cliquez ici pour exporter au format Excel"/>
<button idMso="FileSaveAsPdfOrXps" label="Export PDF"
screentip="Export PDF"
supertip="Cliquez ici pour exporter au format PDF"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
CodeVBAappelparlescommandesdurubanpersonnalis
LecodeVBAsuivantestappelaumoyendespropritsOnActiondesdiffrentscontrles.
Option Compare Database
Option Explicit
________________________________________________________________________
Sub Initialisation(ruban As IRibbonUI)
' Message de bienvenue
MsgBox "Bienvenue dans l'application NorthWind 2007"
' Verrouille le volet de navigation
DoCmd.LockNavigationPane True
End Sub
________________________________________________________________________
Sub OuvreListes(ctl As IRibbonControl)
' Ouvre les 3 formulaires Listes
DoCmd.OpenForm "Liste des clients"
DoCmd.OpenForm "Liste des employs"
DoCmd.OpenForm "Liste des fournisseurs"
End Sub
________________________________________________________________________
Sub OuvreListeClients(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des clients"
- 3-
End Sub
________________________________________________________________________
Sub OuvreListeEmployes(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des employs"
End Sub
________________________________________________________________________
Sub OuvreListeFournisseurs(ctl As IRibbonControl)
DoCmd.OpenForm "Liste des fournisseurs"
End Sub
________________________________________________________________________
Sub AffichageListes(ctl As IRibbonControl, blnActif As Boolean)
' Affiche ou masque les formulaires
If blnActif Then
DoCmd.OpenForm "Liste des clients"
DoCmd.OpenForm "Liste des employs"
DoCmd.OpenForm "Liste des fournisseurs
Else
DoCmd.Close acForm, "Liste des clients"
DoCmd.Close acForm, "Liste des employs"
DoCmd.Close acForm, "Liste des fournisseurs"
End If
End Sub
- 4-
ImagesdelagaleriedesicnesMicrosoftOffice
Les noms des images utilises pour personnaliser le ruban (ex : FileCreateDocumentWorkspace,
DirectRepliesTo...),correspondentl'intituldel'icnedanslagaleriedesicnesMicrosoftOffice.
Pourconnatrelalistedesnomsd'icnesdelagalerieMicrosoftOffice:
Ouvrez dans Excel 2007 le fichier Office2007IconsGallery.xlsm (fichier livr avec les exemples ou tlchargeable sur le site de
Microsoft).
Cliquez sur l'un des boutons "Galerie" pour afficher la liste des icnes.
Lorsque vous survolez une icne, son nom est affich dans l'infobulle associe:
Sil'ongletDveloppeurn'estpasaffichdansExcel:
Activez l'option Afficher l'onglet Dveloppeur dans le ruban situ sous Meilleurs options pour travailler avec Excel.
Cliquez sur le bouton OK : l'onglet Dveloppeur a t ajout au ruban d'Excel, droite de l'onglet Affichage.
- 1-
LatechnologieAutomation
Prsentation
Automation, appele galement OLE (Object Linking and Embedding) ou OLE Automation, est une technologie
permettantdemanipulerlesobjetsd'uneautreapplicationdirectementpartird'AccessoudeVBAAccess.
Pour fonctionner, Automation ncessite un client et un serveur appel serveur OLE. Le serveur est
l'applicationoulecomposantquifournitlesservicesauclient.Leclient(appelgalementcontrleur)utiliseces
services pour piloter l'application serveur et manipuler ses objets. Par exemple si vous lancez un publipostage
WordpartirdeVBAAccess,AccessestleclientetWordleserveurOLE.
Une bibliothqued'objets est un fichier, dot gnralement d'une extension olb, fournissant les informations
permettant de manipuler les objets mis disposition par un serveur. Vous pouvez utiliser l'Explorateur d'objets
pourexaminerlecontenud'unebibliothqued'objets.
Pour avoir accs aux objets d'une autre application, vous devez rfrencer sa bibliothque d'objets de la faon
suivante:
l'aide de l'explorateur d'objets, il est simple de consulter la liste des objets, mthodes et proprits d'un serveur OLE.
UtilisationdelatechnologieAutomation
Pourpouvoirmanipulerlesobjetsd'uneautreapplication,vousdevezprocderdelafaonsuivante :
- 1-
LancementdeWord.
Dim AppWord as Object
Set AppWord = CreateObject("Word.Application")
ou
Dim appWord As New Word.Application
RfrenceundocumentWordexistant.
Dim DocWord As New Word.Document
Set DocWord = GetObject("C:\Clients\relance.docx")
LesparagraphessuivantsdcriventcommentpiloterdiffrentslogicielsdelasuiteMicrosoftOfficeenutilisantla
technologieAutomation.
Les objets, collections, mthodes et proprits des modles objet de la suite Microsoft Office tant trs nombreux, seuls les plus
utiliss sont dcrits dans les paragraphes suivants.
- 2-
PiloterWorddepuisAccess
LemodleObjetWord
ExtraitdumodleObjetWord:
ObjetsetcollectionsWord
Documents:Collectiondetouslesclasseurs(objetsDocument)ouverts.
- 1-
Dictionaries:Collectiondetouslesdictionnairespersonnelsactifs(objetsDictionary).
EmailOptions:ObjetcontenantlesattributsglobauxqueMicrosoftWordutiliselorsquevouscrezetmodifiez
desmessageslectroniquesetdesrponsescesmessages.
FileConverters : Collection de tous les convertisseurs de fichier (objets FileConvert) disponibles pour ouvrir et
enregistrerdesfichiers.
FontNames:Objetcontenantlalistedesnomsdetouteslespolicesdisponibles.
Languages : Collection des langues (objets Language) utilises dans Word pour les vrifications linguistiques
etlamiseenforme.
ListGalleries : Collection des trois premiers onglets (objets ListGallery) de la bote de dialogue Puces et
numros.
MailMessage : Objet reprsentant le message lectronique actif si Word est votre diteur de courrier
lectronique.
Options : Reprsente les options d'application et de document de Word. La plupart des proprits de l'objet
OptionscorrespondentdeslmentsdelabotededialogueOptions(menuOutils).
Selection:Reprsentelaslectionencoursd'unefentreoud'unvolet.
System:Contientdesinformationssurlesystmedevotreordinateur.
Templates:Collectiondetouslesmodles(objetsTemplate)actuellementdisponibles.
LacollectionDocuments
Mthodes
LacollectionDocumentsestconstituedetouslesobjetsDocumentouvertsdansWord.
Add:CreunnouveauDocumentetl'ajoutelacollectionDocuments.
Ex:Documents.Add Template:="Normal"
Close:FermetouslesdocumentsWordouverts.
Ex :Documents.Close
Open:OuvreleDocumentspcifietl'ajoutelacollectionDocuments.
Ex :Documents.Open _
FileName:="C:\Clients\Relance.doc", _
ReadOnly:=True
Save :Enregistretouslesdocumentsouverts.
Ex :Documents.Save
LesobjetsDocument
UnobjetDocumentpermetdefairerfrenceundocumentWord.
ActiveDocumentdsigneledocumentactif.
Mthodes
Activate:Activeundocumentdjouvert.
Ex:Documents("Achats.doc").Activate
Close:FermeundocumentWordouvert.
Ex:Documents("Achats.doc").Close
ou ActiveDocument.Close
- 2-
PrintPreview:AfficheundocumentenmodeAperuavantimpression.
Ex :ActiveDocument.PrintPreview.
Range:RenvoieunobjetRange(Plage).
Ex :ActiveDocument.Range(0, 50).Bold = True
Save:Enregistreundocument.
Ex :ActiveDocument.Save
SaveAs:Enregistreundocumentsousunnouveaunomet/ousousunnouveauformat.
Ex :ActiveDocument.SaveAs FileName:=strDocName
Objetsetcollections
Characters:Collectiondescaractressitusdansundocument,uneplageouuneslection.
MailMerge:FusionetpublipostagedansWord.
PageSetup:Descriptiondelamiseenpage.
Ex :ActiveDocument.PageSetup.RightMargin = InchesToPoints(1)
Paragraphs:Collectiondesparagraphesd'undocument.
SmartTags : Collection des balises actives (objets SmartTag) d'un document ou d'une plage de texte au sein
d'undocument.
Words:Collectiondesmotsdudocument.
Ex : ActiveDocument.Words.Count
Exemples
Miseengrasdescaractresd'undocumentWord.
Private Sub Word_EnGras()
Dim AppWord As New Word.Application
With AppWord
.Documents.Open CurrentProject.Path & "\Relance.docx"
.ActiveDocument.Select
.Selection.Font.Bold = True
.ActiveDocument.Close wdSaveChanges
.Quit
End With
End Sub
Lancementd'unpublipostage
Le code suivant permet de gnrer une lettre de relance pour les clients ayant une commande livre et non
rgle.Lepublipostagefaitappellarequte"CommandesNonRgles"delabaseClients.mdb.
Private Sub Relances()
Dim AppWord As Word.Application
Dim DocWord As Word.Document
Dim m_Provider As String
' Lancement de Word
Set AppWord = New Word.Application
AppWord.Visible = True
' Ouverture de la lettre type
Set DocWord = AppWord.Documents.Open(CurrentProject.Path & _
"\Relance.docx")
' Provider = Base Access Clients.mdb
m_Provider = "Microsoft.ACE.OLEDB.12.0;Password="""";User
ENI Editions - All rigths reserved
- 3-
ID=Admin;" _
& "Data Source=" & CurrentProject.Path & "\Clients.accdb;
" _
& "Mode=Read;"
' Prparation du publipostage pour les commandes non
rgles
With DocWord.MailMerge
.OpenDataSource Name:= _
CurrentProject.Path & "\Clients.accdb", _
ConfirmConversions:=False, _
ReadOnly:=False, LinkToSource:=True,
AddToRecentFiles:=False, _
Connection:=" & m_Provider & ", _
SQLStatement:="SELECT * FROM `COMMANDES NON REGLEES`"
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
' Lancement du publipostage
.Execute
End With
End Sub
- 4-
PiloterExceldepuisAccess
LemodleObjetExcel
ExtraitdumodleObjetExcel :
ObjetsetcollectionsExcel
Workbooks:Collectiondetouslesclasseurs(objetsWorkbook)ouverts.
Worksheets:Collectiondetouteslesfeuillesdecalculs(objetsWorksheet)d'unclasseur.
Charts:Collectiondetouteslesfeuillesgraphiques(objetsChart)d'unclasseur.
CustomViews :Collectiondevuespersonnalises(objetsCustomView)d'unclasseur.
Names : Collection de tous les objets Name dans l'application ou le classeur. Chaque objet Name reprsente
unnomdfinipouruneplagedecellules.
SmartTagOptions:Objetreprsentantlesoptionsrelativesauxbalisesactives.
- 1-
Ex :activationdesbalisesactives
ActiveWorkbook.SmartTagOptions _
.EmbedSmartTags = True
Styles:Collectiondetouteslesdescriptionsdestyles(objetsStyle)d'unclasseur.
LacollectionWorkbooks
LacollectionWorkbooksestconstituedetouslesclasseursouverts.
Add:Creunnouveauclasseurquidevientleclasseuractifetl'ajoutelacollectionWorkbooks.
Ex:Workbooks.Add
Close:FermetouslesclasseursExcelouverts.
Ex :Worksheets.Close
Open:Ouvreleclasseurspcifiquidevientleclasseuractifetl'ajoutelacollectionWorkbooks.
Ex :Workbooks.Open Filename:="C:\Devis\devis.xls"
Save:Enregistretouslesclasseursouverts.
Ex :Workbooks.Save
LesobjetsWorkbook
UnobjetWorkbookpermetdefairerfrenceunclasseurExcel.
LapropritActiveWorkbookdsigneleclasseuractif.
Activate:Activeunclasseurdjouvert.
Ex:Documents("Achats.xlsx").Activate
Close:FermeunclasseurExcelouvert.
Ex:Documents("Achats.xlsx").Close
ou ActiveDocument.Close
PrintPreview:Affichelafeuilleactived'unclasseurenmodeAperuavantimpression.
Ex :ActiveWorkbook.PrintPreview
Save:Enregistreunclasseur.
Ex :ActiveWorkbook.Save
SaveAs:Enregistreunclasseursousunnouveaunomet/ousousunnouveauformat.
Ex :ActiveWorkbook.SaveAs FileName:= "Devis.xlt"
EcriturededonnesdansdescellulesExcel
Lecodesuivantpermetd'afficherlalistedescommandesnonrgles.
Private Sub ExportXLS_Commandes()
' Objets Access
Dim dbsClients As DAO.Database
Dim rstCommandes As DAO.Recordset
Dim fld As DAO.Field
' Objets Excel
Dim appExcel As Excel.Application
Dim wbkCommandes As Excel.Workbook
Dim wksCommandes As Excel.Worksheet
' Variables de boucles
Dim intLig As Integer
Dim intCol As Integer
' Cration du classeur Excel
- 2-
- 3-
PiloterOutlookdepuisAccess
LemodleObjetOutlook
ExtraitdumodleObjetOutlook :
Exemple :affichagedescontactsOutlook
Cet exemple permet d'afficher la liste des contacts Outlook (nom et adresse email) dans une zone de liste d'un
formulaireAccess.
Pourtestercetexemplevousdevez:
- 1-
- 2-
LeprotocoleDDE
DDE (Dynamic Data Exchange) est un protocole d'change dynamique de donnes entre deux applications
Windows, l'une appele Client ou Destination, l'autre appele Serveur ou Source. Le lien est rompu si l'une
desdeuxapplicationsvienttreferme.
UneliaisonDDEcomprendtroisphasesprincipales:
- initialisation: l'application destination recherche l'application source et tablit avec elle un canal de communication (liaison).
- conversation: des donnes sont changes sur le canal.
- clture: le canal de communication est ferm.
L'initialisation
DDEInitiate
La fonction DDEInitiate permet d'initialiser la conversation entre deux applications. Elle renvoie le numro de
canalsilacommunicationaputretablie,sinonuneerreurseproduit.
Syntaxe
DDEInitiate (<application>,<sujet>)
Application :Nomdel'applicationSource.
Sujet :Groupededonnesutiliser.
Exemple
'cre un lien DDE avec la feuille feuil1 d'Excel
canal = DDEInitiate ("Excel","Feuil1")
Laliaison
DDE
La fonction DDE permet d'entamer une conversation DDE avec une autre application, de demander cette
derniredeslmentsd'informationpourlesafficherdansuncontrlefigurantsurunformulaireousuruntat.
Syntaxe
DDESend
- 1-
La fonction DDESend permet d'entamer une conversation DDE avec une autre application, et d'envoyer un
lmentd'informationcetteapplicationdepuisuncontrlesitusurunformulaireousuruntat.
Syntaxe
DDESend(<Application>, <Rubrique>, <Elment>, <Donnes>)
Application :Expressionchaneidentifiantuneapplication.
Rubrique :Fichierdocumentoufichierdedonnes.
Elment :Rfrenceunedonnedel'applicationSource.
Donnes :Chaneouexpressioncontenantlesdonnesenvoyerapplication.
Exemple
' Affecte la cellule L1C1 le contenu du contrle
' Ville via la proprit Source Contrle d'une zone '
de texte.
=DDESend("excel","classeur1","L1C1",[Ville])
DDEPoke
L'instructionDDEPokeenvoiedesinformationsl'applicationSourcesuruncanalouvert.
Syntaxe
DDERequest
LafonctionDDERequestdemandedesinformationsl'applicationSource.
Syntaxe
DDEExecute
- 2-
L'instructionDDEExecuteenvoieunechanedecommandesl'autreapplicationencoursdeliaison.
Syntaxe
DDEExecute(<Numro de canal>, <Commande>)
Numro de canal :NducanalretournparlafonctionDDEInitiate.
Commande :Chanecontenantunecommandereconnueparl'autreapplication.
Exemple
'Cre une nouvelle feuille de calcul.
DDEExecute Canal,"[New(1)]"
Laclture
DDETerminate
L'instructionDDETerminatefermelecanaldecommunicationDDE.
Syntaxe
DDETerminate(<Numro de canal>)
Numro de canal :NducanalretournparlafonctionDDEInitiate.
Exemple
DDETerminate canal
DDETerminateAll
L'instructionDDETerminateAllfermetouslescanauxdecommunicationDDE.
Syntaxe
DDETerminateAll
- 3-
ImportetexportdedonnesauformatXML
Le langage XML (eXtensible Markup Language) est le langage standard de description et d'change de donnes
sur le Web, tandis que HTML (HyperText Markup Language) est le langage standard de cration et d'affichage
depagesWeb.
XSL (eXtensible Stylesheet Language) est une instance de XML permettant de contrler la prsentation des
documentsXML.
MicrosoftAccess2007offrelapossibilitd'importeroud'exporterdesdonnessouslaformed'unfichierXMLet
desprsentationssouslaformed'unfichierXSL.
En VBA, vous pouvez utiliser les mthodes ImportXML et ExportXML de l'objet Application pour importer ou
exporterdesdonnesauformatXML.
LamthodeExportXML
La mthode ExportXML permet d'exporter les donnes et/ou la prsentation d'un objet Access spcifi. Il est
possibled'exporterauformatXMLlesobjetsAccesssuivants :
- tables,
- requtes,
- formulaires,
- tats,
- pages d'accs aux donnes.
Syntaxe
Application.ExportXML(<ObjectType>, <DataSource>,
[<DataTarget>], [<SchemaTarget>],
[<PresentationTarget>], [<ImageTarget>], [<Encoding>],
[<OtherFlags>])
ObjectType : Obligatoire. Type d'objet Access exporter (acExportDataAccessPage, acExportForm,
acExportReport...).
DataSource :Obligatoire.Chanedecaractresindiquantlenomdel'objetAccessexporter.
DataTarget :Facultatif.Chanedecaractresindiquantlenomdefichieretlechemindesdonnesexportes.
Sicetargumentestomis,lesdonnesnesontpasexportes.
SchemaTarget : Facultatif. Chane de caractres indiquant le nom de fichier et le chemin des informations sur
les schmas exports. Si cet argument est omis, ces informations sont incorpores dans le document des
donnes.
PresentationTarget : Facultatif. Chane de caractres indiquant le nom de fichier et le chemin des
informationsdeprsentationexportes.Sicetargumentestomis,cesinformationsnesontpasexportes.
ImageTarget :Facultatif.Chanedecaractresindiquantlecheminpourlesimagesexportes.Sicetargument
estomis,lesimagesnesontpasexportes.
Encoding :Facultatif.Indiquel'encodagedetexteutiliserpourlefichierXMLexport.
OtherFlags : Facultatif. Entier long qui reprsente la somme des valeurs d'options dcrites dans la liste
suivante.
- 1-
Valeur
Description
Tablesconnexes:inclutlesdiffrentestablesconcernantl'objetspcifiparDataSource.
Propritsrelationnelles:credespropritsdeschmarelationnel.
4
Excutionpartirduserveur : cre un wrapper ASP sinon, c'est un wrapper HTML par dfaut.
S'appliqueuniquementlorsdel'exportationd'tats.
8
Propritsspciales:credespropritsdeschmatendues.
LamthodeImportXML
La mthode ImportXML permet d'importer des donnes et/ou des informations de prsentation dans une table
MicrosoftAccesspartird'unfichierXML.
Syntaxe
Application.ImportXML(<DataSource>, [<ImportOptions>])
Datasource :ChanedecaractrescontenantlenometlechemindufichierXMLimporter.
ImportOptions :Facultatif.Dfinitlesoptionsrelativesl'importdufichierXML.
Constantesutilisablespourdfinirlesoptionsd'importation.
acAppendData : Si une table porte dj le nom du fichier XML, les donnes sont ajoutes la table, sinon la
tableestcre.
acStructureAndData :Valeurpardfaut.Importelastructureetlesdonnes.Siunetableportedjlenomdu
fichierXML,Accessgnreunnouveaunomdetable.
acStructureOnly : Importe uniquement la structure. Si une table porte dj le nom du fichier XML, Access
gnreunnouveaunomdetable.
Exempled'import/exportXML
Dansl'exemplesuivant,nousallonsvoircomment :
Saisissez le code suivant dans un nouveau module appel ImportExportXML et excutez la procdure ExportTabClient.
Application.ExportXML _
ObjectType:=acExportTable, _
DataSource:=strTableName, _
DataTarget:="C:\XML\" & strTableName & ".xml", _
PresentationTarget:="C:\XML\" & strTableName & ".xsl", _
Encoding:=acUTF8
End Sub
tape2:LienentrelesfichiersXMLetXSL
DanslerpertoireXML,lestroisfichierssuivantsonttcrs:clients.xml,clients.xsletclients.htm.
Sivousouvrezlefichierclients.xmldansInternetExplorer,vousobtenezlersultatsuivant:
Pour pouvoir afficher correctement la liste des clients, vous devez soit utiliser le fichier clients.htm qui fait le
lien entre les fichiers xml et xsl, soit modifier le fichier clients.xml afin de lui associer le fichier clients.xsl
(insrerladeuximeligne).
Pour modifier le code contenu dans les fichiers xml ou xsl, vous pouvez utiliser le bloc-note de Windows (Notepad.exe) ou tout autre
diteur de fichiers texte.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Clients.xsl"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata">
<Clients>
tape3 :Exportd'uneprsentationdeformulaire
- 3-
tape4:ImportdufichierClients.XMLaprsmodification
- 4-
Exempledecrationd'unfichierHTML
Vous pouvez partir du langage VBA crer un fichier HTML. Pour cela vous devez utiliser l'objet
FileSystemObject.
Les mthodes et proprits de cet objet sont dtailles dans le chapitre Programmation Windows.
L'exemple suivant permet de crer le fichier ImageListe.htm contenant toutes les images du rpertoire
slectionnparl'utilisateur.
Private Sub CreeHTML()
Dim fso As Object
' Dossier
Dim fld As Object
' Collection Files
Dim fls As Object
' Objet File
Dim fl As Object
' Fichier Html
Dim fHtml As Object
Dim strFolder As String
Dim strHtml As String
' Slection du dossier
strFolder = InputBox("Saisissez le chemin du dossier
contenant " _
& "les images", "Test VBA", "C:\")
' Recherche des fichiers images
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderExists(strFolder) Then
Set fld = fso.GetFolder(strFolder & "\")
Set fls = fld.Files
strHtml = "<html>"
For Each fl In fls
If Left(fl.Type, 5) = "Image" Then
strHtml = strHtml & "<img src=" & "'" & strFolder & "\"
_
& fl.Name & "'" height=" & x & 100 & x & ">" _
& fl.Name & "<BR>"
End If
Next
' Cre le fihier HTML
strHtml = strHtml & "</html>"
Set fHtml = fso.CreateTextFile(strFolder & "\" & _
"ImageList.htm", True)
fHtml.Write (strHtml)
Else
MsgBox "Dossier " & strFolder & " non trouv"
End If
End Sub
Aperu dans Internet Explorer d'un fichier HTML cr par le code de l'exemple.
- 1-
- 2-
PrsentationdesAPI
L'interface de programmation Windows API (Application Programming Interface) offre des fonctions qui
permettent de contrler les aspects les plus internes du systme d'exploitation. Vous pouvez tendre et
personnaliser vos applications Access en appelant des fonctions Windows API partir de VBA. Bien qu'Access
continue voluer et que son langage de programmation natif (VBA) intgre de plus en plus de fonctions
systmes,ilestncessairepourcertainestchesdesfonctionsdel'API.
Une API est un ensemble de fonctions que vous pouvez utiliser pour travailler avec un composant, une
application ou le systme d'exploitation. Elle se compose gnralement d'une ou de plusieurs DLL (Dynamic Link
Libraryoubibliothquedeliaisondynamique).
L'API la plus couramment utilise est l'API Windows qui inclut les DLL constituant le systme d'exploitation
Windows. Chaque application Windows interagit directement ou indirectement avec l'API Windows. Ceci garantit
uncomportementcohrentdetouteslesapplicationsfonctionnantsousWindows.
LesDLLdeWindowslespluscourammentutilisessontlessuivantes:
Kernel32.dll:Fonctionsdebasniveaudusystmed'exploitation,tellesquegestiondelammoireetgestiondes
ressources.
User32.dll : Fonctions de gestion Windows, telles que traitement des messages, horloges, menus et
communication.
GDI32.dll : Bibliothque GDI (Graphics Device Interface) qui contient des fonctions de sortie vers les
priphriques(graphisme,contexted'affichageetgestiondespolices).
D'autres API sont galement disponibles comme par exemple l'interface MAPI (Mail Application Programming
Interface)quipermetd'criredesapplicationsdecourrierlectronique.
Pourobtenirdesinformationssurlesfonctionsdel'APIWindows,ilexistedeuxsourcesd'informations :
- la visionneuse d'API (fichier excutable ApiLoad.Exe inclus dans Microsoft Office XP Developer et dans Microsoft Visual Basic)
permet d'afficher les constantes, dclarations et les types d'API. Les lments slectionns peuvent tre copis de la
Visionneuse d'API vers les applications VBA.
Les informations de la visionneuse d'API sont contenues dans des fichiers texte (win32api.txt, mapi32.txt...) pouvant tre
exports dans une base mdb pour en faciliter la consultation ultrieure.
- la plateforme Microsoft SDK (Software Development Kit) contient une documentation complte de l'API Windows et est
disponible gratuitement sur le site Microsoft Developer Network.
- 1-
Appeld'unefonctiondel'APIWindows
Pour appeler une fonction de l'API Windows, vous devez la dclarer en utilisant l'instruction Declare dans la
section Dclarations d'un module de votre projet (gnralement un module ddi aux procdures gnrales de
l'application).
Syntaxedel'instructionDeclare
Dans les versions 32 bits de Visual Basic, le respect des minuscules et majuscules est obligatoire pour les noms
defonctionsetdeprocduresdesDLL.
[Public|Private] Declare Sub <nom_proc> Lib "<Nom_DLL>"_
[Alias "<Nom_alias>"] [([liste_arguments])]
[Public|Private] Declare Function <Nom_fonc> _
Lib "<Nom_DLL>"_
[Alias "<Nom_alias>"] [([Liste_arguments])] [As <Type>]
Nom_proc, Nom_fonc :Nomdelaprocdureoudelafonctiontelqu'utilisdansVisualBasic.
Nom_DLL :NomdelaDLL.
Nom_alias :NomdelaprocdureoudelafonctiondanslaDLL.
Liste_arguments :Paramtrespasserlaprocdure(cf.chapitreLelangageVisualBasic).
Type :Typedelavaleurduretourd'uneprocdureFunction.
CertainesDLLnefournissentpasdenompourleursprocduresetleursfonctionsmaispluttunnombreordinal.
Ladclarationdetellesprocduresoufonctionsutiliselammesyntaxe,maisilfautdfinirlenombreordinalau
niveaudel'Aliassouslaformed'undise(#)suividunombre(ex:Alias"#52").
Passagedesarguments
Les fonctions et procdures des DLL sont crites pour la plupart en langage C et utilisent sa syntaxe. Aussi, le
passaged'argumentsuneprocdureouunefonctiond'uneDLLdepuisVisualBasic,n'estpastoujourssimple.
AuniveaudesDLLutilisantlasyntaxeduC,touslesargumentssontpasssparvaleurs,sauflestableaux.
LeschanesenlangageCsontconsidrescommedestableauxdecaractres.
Certains arguments de procdures de DLL peuvent accepter diffrents types de donnes (un peu comme les
Variant), ils doivent tre dclars avec le type Any (ex : variable As Any). Visual Basic, pour ce type
d'argument, considre que celuici est pass systmatiquement par rfrence s'il y a lieu de le passer par
valeur,ilfautl'expliciterauniveaudel'appel(etnondeladclaration)delaprocdureoudelafonctionavecla
mentionByVal.
Pardfaut,VisualBasicpasselesargumentsparRfrence.
Tableaudesdclarationsdesarguments
Dclaration
en langage C
BOOL
Dclaration Visual
Basic
Appel
ByVal <variable>
As Boolean
ByVal <variable> As
Long
WORD
ByVal <variable> As
Long
NULL
As Any ou ByVal
<variable> As Long
- 1-
int, short
Byval <variable>
As Integer
char, BYTE
Byval <variable>
As Byte
ByVal <variable> As
Long
ByVal <variable> As
Long
Sub <procdure>
Sans objet.
ByVal <variable> As
String
<variable> As Long
<variable> As Any
<variable> As Byte
Pointeur vers
un entier (LPINT)
Pointeur vers
une structure
- 2-
<variable> As Long
<variable>
As <type>
ListedefonctionsAPIWindows
Cettelistecomportelesfonctionsdel'APIWindowscourammentutilises.Desexemplesd'utilisationdecertaines
decesfonctionssontdonnesdansleparagraphesuivant.
GetWindowsDirectory() : Renvoie le chemin complet du rpertoire de Windows (applications, outils du
systme).
GetSystemDirectory() :RenvoielechemincompletdurpertoiresystmedeWindows.
GetSystemInfo() : Renvoie tout un ensemble d'informations sur le systme. Ces donnes sont stockes dans
unestructuredetypeSYSTEM_INFO.
GetActiveWindow():Renvoielehandledelafentreactive.
FindWindow():Renvoielehandledelafentreenfonctiondesonnometdelaclassepartirdelaquelleellea
tdfinie.
SetFocus():Attribuelefocusd'entrelafentrerfrenceparsonhandle.
GetPrivateProfileString() :Renvoieuneoptionextraited'unfichier.Inipartird'unnomdesectionetdecl.
WNetGetUser() :Renvoielenomduloginrseauutilispourlasessionencours.
- 1-
Exemplesd'utilisationdefonctionsAPIWindows
RcuprationdurpertoireWindows
Dclaration de la fonction API.
Private Declare Function GetPrivateProfileString Lib
"KERNEL32" _
Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Appel de la fonction API.
Function GetWinPath() As String
' Cette fonction VBA renvoie le rpertoire Windows
Dim strResult As String
Dim strProfile As String
strResult = String(255, " ")
strProfile = GetWindowsDirectory(strResult, 255)
' Tronque la chane au premier caractre nul
If strProfile <> "" Then
strResult = Trim(strResult)
GetWinPath = Left(strResult, InStr(1, strResult,
vbNullChar) - 1)
Else
GetWinPath = ""
End If
End Function
Lancementdel'applicationExcelsinonactive
Cetexemplepermetderecherchersil'applicationExcelestactive,etdelancersonexcutionsibesoinest.
Deux fonctions API sont ici utilises : FindWindow permet de rechercher la fentre Excel, FindExecutable de
rechercherl'emplacementdufichierExcel.exe.
Dclaration de la fonction API.
' Cette fonction API recherche une fentre
Public Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName As String, ByVal _
lpWindowName As String) As Long
' Cette fonction API recherche un fichier excutable
Public Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, ByVal lpResult As String) As
Long
Appel des fonctions API.
Private Function LanceExcel() As Boolean
Dim strClassName As String
Dim strWindowName As String
Dim Hwnd As Long
Dim blnExe As Boolean
Dim strRepExcel As String
Dim Result As Long
' Initialisation
- 1-
LanceExcel = False
' Recherche de la fentre Excel active
strClassName = vbNullString
strWindowName = "Microsoft Excel - Classeur1"
Hwnd = FindWindow(strClassName, strWindowName)
' Si non trouve recherche du rpertoire Excel
' et lancement de l'application Excel
If Hwnd = 0 Then
strRepExcel = String$(255, 0)
Result = FindExecutable("Excel.exe", "C:\", strRepExcel)
If Result = 0 Then Exit Function
blnExe = Shell(strRepExcel, vbNormalFocus)
If Not blnExe Then Exit Function
End If
LanceExcel = True
End Function
Rcuprationd'unevaleurdansunfichier.ini
LefichierAppDevis.iniestconstitudestroislignessuivantes :
[BASE]
BasePath=C:\DEVIS
BaseName=DEVIS.ACCDB
L'exemple suivant permet de rcuprer le nom et le chemin d'accs dans le fichier AppDevis.ini situ dans le
rpertoireWindows(enfaisantappellafunctionGetWinPathdel'exemple1).
Dclaration de la fonction API.
Public Declare Function GetPrivateProfileString Lib
"kernel32" _
Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Appel de la fonction API.
Public Function LireCle(Section As String, Cl As String, _
Fichier As String) As String
' Cette fonction renvoie la valeur de la cl
' qu'on peut trouver dans un fichier .ini quelconque
Dim strResult As String
Dim strProfile As Integer
Dim i As Integer
strResult = String(255, " ")
strProfile = GetPrivateProfileString(Section, Cl, "", _
strResult, 255, Fichier)
If strProfile = 0 Then
LireCle = ""
Exit Function
End If
' Tronque la chaine au premier caractre nul
strResult = Trim(strResult)
LireCle = Left(strResult, InStr(1, strResult, vbNullChar) 1)
End Function
Appel de la fonction VBA LireCle.
- 2-
- 3-
L'objetFileSystemObject
L'objet FileSystemObject donne accs au systme de fichier d'un ordinateur. Il permet notamment de
rechercher,crer,supprimeroudplacerdesfichiersoudesdossiers.
Mthodes
Mthoderelativesauxfichiers
CopyFile:Copieunouplusieursfichiersd'unemplacementversunautre.
CreateTextFile:Creunfichiersurledisqueportantlenomspcifietrenvoieunobjet TextStreampouvant
treutilispourlireoucriredanslefichier.
DeleteFile:Supprimeunfichierspcifi.
FileExists:Renvoieunboolenindiquantsilefichierspcifiexiste.
MoveFile:Dplaceunouplusieursfichiersd'undossierversunautre.
OpenTextFile : Ouvre le fichier spcifi et renvoie un objet TextStream pouvant tre utilis pour lire le fichier
ouyeffectuerunajout.
Mthoderelativesauxdossiers
CopyFolder:Copieundossierd'unemplacementversunautre.
CreateFolder:Creundossier.
DeleteFolder:Supprimeledossierspcifietsoncontenu.
FolderExists:Renvoieunboolenindiquantsiledossierspcifiexiste.
MoveFolder:Dplaceunouplusieursdossiersd'unemplacementversunautre.
Mthoderelativesauxlecteurs
DriveExists:Renvoieunboolenindiquantsilelecteurlogiquespcifiexiste.
GetDrive:RenvoieunobjetDrivecorrespondantaulecteurdansuncheminspcifi.
GetDriveName:Renvoieunechanecontenantlenomdulecteurpouruncheminspcifi.
Proprits
Drives:RenvoieunecollectionconstituedetouslesobjetsDrivedisponiblessurlamachinelocale.
Exemple
L'exemple suivant permet d'afficher la liste des lecteurs disponibles et l'espace disponible sur chacun d'eux.
Sub
Dim
Dim
Dim
Dim
AfficheLecteur()
fso As Object
strMsg As String
drv As Object
drvs As Object
- 1-
- 2-
Prsentation
noncduproblme
Le service Ressources Humaines d'une entreprise souhaite effectuer un suivi des formations auxquelles
participentsesemploys.
L'applicationAccess,raliseceteffetetprsentedanscechapitre,permet:
- 1-
Formulaire"Formations"
Ceformulairepeuttresoitouvertdirectementpartird'Accesspourajouterdesstages,soitappelpartirdu
formulaire"Recherche"pourmodifierousupprimerunstageexistant.
LapropritsourceduformulaireestFormations(TableFormations).
Listedescontrles
Nom du contrle
Description
txtInitul
cboOrganisme
cboDomaine
txtCout
txtCoutStage
Zone de texte
txtDateDeb
txtDateFin
txtDuree
sFrmParticip
10
txtNbStag
Zone de texte
11
cmdEnregistrer
Bouton de commande
12
cmdSupprimer
Bouton de commande
13
cmdFermer
Bouton de commande
- 1-
Contrle
Proprit spcifique
Form
txtNbStag
txtCoutStag
Verrouill = Oui
CodeVBA
LecodeVBAassociceformulairemontrelesaspectssuivants :
- synchronisation entre formulaire et sousformulaire : lors de l'ajout ou de la suppression d'un participant, le nombre de
stagiaires et le cot par stagiaires sont recalculs et raffichs,
Option Explicit
Dim BlnMaj As Boolean
________________________________________________________________________
Private Sub cmdEnregistrer_Click()
Dim intRep As String
' Contrle des champs obligatoires
If Not Ctrl_Info Then Exit Sub
If IsNull(txtDateDeb) Or IsNull(txtDateFin <> "") Then
If MsgBox("Dates non<+>saisies, confirmez-vous " _
& "l'enregistrement ?", vbQuestion & vbYesNo) = vbNo Then
txtDateFin.SetFocus
Exit Sub
End If
End If
- 2-
si modifi
acEditMenu, 8, , acMenuVer70
acEditMenu, 6, , acMenuVer70
acEditMenu, acUndo, , acMenuVer70
Err_Suppr:
MsgBox "Suppression impossible : " & Err.Number, vbCritical
On Error GoTo 0
End Sub
________________________________________________________________________
Private Sub Form_AfterUpdate()
' Indicateur de mise jour
BlnMaj = True
End Sub
________________________________________________________________________
Private Sub Form_Load()
' Dsactive les boutons Supprimer
' et Enregistrer si mode ajout donnes
If Me.DataEntry Then
cmdEnregistrer.Enabled = False
CmdSupprimer.Enabled = False
Else
' Calcul du cot par stagiaire
Me.Recalc
If txtNbStag > 0 Then
txtCoutStag = txtCout / txtNbStag
End If
BlnMaj = True
End If
End Sub
________________________________________________________________________
Private Sub sFrmParticipant_Enter()
' Contrle des informations obligatoires
Ctrl_Info
End Sub
________________________________________________________________________
Private Sub txtCout_AfterUpdate()
' Calcul du cot / Stagiaire
If txtCout > 0 And txtNbStag > 0 Then
txtCoutStag = txtCout / txtNbStag
End If
End Sub
________________________________________________________________________
Private Sub txtDateDeb_LostFocus()
' Calcul de la dure du stage
ENI Editions - All rigths reserved
- 3-
Calc_Dure
End Sub
________________________________________________________________________
Private Sub txtDateFin_LostFocus()
' Calcul de la dure du stage
Calc_Dure
End Sub
________________________________________________________________________
Private Sub txtIntitule_BeforeUpdate(Cancel As Integer)
' Active le bouton Supprimer
CmdSupprimer.Enabled = True
End Sub
________________________________________________________________________
Private Function Ctrl_Info() As Boolean
' Contrle si les champs obligatoires ont t saisis
If IsNull(txtIntitule) Then
MsgBox "Intitul obligatoire", vbCritical
txtIntitule.SetFocus
Exit Function
End If
If IsNull(cboOrganisme) Then
MsgBox "Organisme obligatoire", vbCritical
cboOrganisme.SetFocus
Exit Function
End If
If IsNull(cboDomaine) Then
MsgBox "Domaine obligatoire", vbCritical
cboDomaine.SetFocus
Exit Function
End If
If IsNull(txtCout) Then
MsgBox "Montant du stage obligatoire", vbCritical
txtCout.SetFocus
Exit Function
End If
Ctrl_Info = True
CmdSupprimer.Enabled = True
cmdEnregistrer.Enabled = True
End Function
________________________________________________________________________
Private Sub Calc_Dure()
Dim intDuree As Integer
' Si les deux dates sont renseignes
' Contrle des dates et calcul de la dure
If txtDateDeb <> "" And txtDateFin <> "" Then
intDuree = DateValue(txtDateFin) - DateValue(txtDateDeb)
If intDuree < 0 Then
MsgBox "Vous devez spcifier une date de dbut antrieure " _
& " la date de fin", vbCritical, "Gestion des Formations"
Exit Sub
Else
txtDuree = NbJourOuvres(DateValue(txtDateDeb), _
DateValue(txtDateFin))
End If
End If
End Sub
Sousformulaire"SFParticipants"
Le formulaire "Formations" et le sousformulaire "SF Participants" sont lis sur les champs FOR_IDFORM et
PART_IDFORM.
- 4-
Nom du contrle
1
cboEmploye
txtNbStag
Contrle
Description
Zone de liste droulante base sur la table Employes
associe au champ FOR_IDEMP
Zone de liste indpendante
Proprit spcifique
Form
Source = Participants
txtNbStag
CodeVBA
Private Sub cboEmploye_AfterUpdate()
' Si Doublons : la mthode Refresh choue
On Error GoTo Doublons
Me.Refresh
On Error GoTo 0
' Recalcule le cot par stagiaire
' Si le formulaire principal est Formations
If UCase(Screen.ActiveForm.Name) = "FORMATIONS" Then
CalcCoutStage
End If
Exit Sub
' Gestion des doublons : message d'erreur
Doublons:
If Err.Number = 3022 Then
MsgBox "Participant dj saisi"
Else
MsgBox "Erreur lors de l'ajout du participant : " _
& Err.Number, vbCritical
End If
' Remise blanc du champ
cboEmploye = ""
End Sub
________________________________________________________________________
Private Sub Form_AfterDelConfirm(Status As Integer)
' Recalcule le cot par stagiaire
' Si le formulaire principal est Formations
If UCase(Screen.ActiveForm.Name) = "FORMATIONS" Then
CalcCoutStage
End If
End Sub
________________________________________________________________________
Private Sub CalcCoutStage()
Dim frmFormat As Object
' Calcule le cot / Stagiaire
Set frmFormat = Forms![FORMATIONS]
frmFormat.Recalc
If frmFormat.txtCout <> 0 And txtNbStag <> 0 Then
frmFormat.txtCoutStag = frmFormat.txtCout / txtNbStag
End If
' Active le bouton de commande Enregistrer
If txtNbStag <> 0 Then frmFormat.cmdEnregistrer.Enabled = True
End Sub
- 5-
- 6-
Formulaire"Recherche"
Ceformulairepermetd'afficheretd'imprimerlalistedesstagesrpondantcertainscritres.Ceformulairen'est
associaucunesourcededonnes.
Listedescontrles
Nom du contrle
Description
cboOrganisme
cboDomaine
cboEmploye
txtDateDeb
txtOperat1
txtDateFin
txtOperat2
cmdRechercher
Bouton de commande
cmdEffacer
Bouton de commande
10
cmdImprimer
Bouton de commande
11
cmdFermer
Bouton de commande
12
sFrmformation
CodeVBA
LecodeVBAassociceformulairemontrelesaspectssuivants :
- 1-
- 2-
l'tat
- Domaine : " & cboDomaine.Column(1)
- Organisme : " & cboOrganisme.Column(1)
- Employe : " & cboEmploye.Column(1)
CodeVBA
- 3-
CodeVBA
- 4-
FonctionsetinstructionsVBA
Manipulationdechanesdecaractres
Fonctions
Format():Miseenformed'unechane.
Instr():Recherched'unesouschanedecaractres.
Lcase():Conversionenminuscules.
Left():Extractiondelapartiegauched'unechanedecaractres.
Len():Longueurd'unechane.
Ltrim():Suppressiondesespacesgauche.
Mid() : Renvoie une valeur de type Variant (String) contenant un nombre indiqu de caractres extraits d'une
chanedecaractres.
Right():Extractiondelapartiedroited'unechanedecaractres.
Rtrim():Suppressiondesespacesdroite.
Space():Crationd'unechaned'espaces.
StrComp():Comparaisondechanes.
StrConv:RenvoieunevaleurdetypeVariant(String)convertieauformatindiqu.
String():Crationd'unechanedecaractresrpts.
Trim():Suppressiondesespacesgauche/droite.
Ucase():Conversionenmajuscules.
Instructions
Lset:Alignementgauched'unechanedecaractres.
OptionCompare:Mthodedecomparaisonpardfaut.
Rset:Alignementdroited'unechanedecaractres.
Contrledudroulementduprogramme
Fonctions
Choose():Renvoielavaleurd'unelistedechoixenfonctiond'unindice.
DoEvents() : Arrte momentanment l'excution afin que le systme d'exploitation puisse traiter d'autres
vnements.
IIf():Renvoieunevaleurenfonctiond'unecondition.
Switch():Renvoielavaleurassocielapremireexpressionvraie.
Instructions
- 1-
Call:AppelleuneprocdureSub.
Do...Loop:Crationd'uneitration.
End:Terminaisondeprogramme.
ExitDo:Sortied'uneitration.
ExitFor:Sortied'uneitration.
ForEach...Next:Permetdepasserenrevuetousleslmentsd'unecollectionoud'untableau.
For...Next:Crationd'uneitration.
Function...
EndFunction:Dfinitledbutetlafind'unefonction.
GoSub...Return:Appeld'unsousprogramme.
Goto:Effectueunbranchementinconditionnelversunelignedtermined'uneprocdure.
If...Then...Else:Crationd'unealternative.
On...GoSub:Excutiondesousprogrammesenfonctiond'unevariable.
On...Goto:Branchementversplusieurstiquettesdeprogrammeenfonctiond'unevariable.
PropertyGet:Dclarationd'uneprocdurePropertyGet.
PropertyLet:Dclarationd'uneprocdurePropertyLet.
PropertySet:Dclarationd'uneprocdurePropertySet.
SelectCase:Crationd'unealternative.
Stop:InterruptionprovisoireducodeACCESSBASIC.
Sub...EndSub:Dfinitledbutetlafind'uneprocdure.
While...Wend:Crationd'uneitration.
With:Permetd'excuterunesried'instructionssurunobjet.
Conversiondedonnes
Fonctions
Asc():ValeurAsciid'uncaractre.
Cbool():Conversiond'uneexpressionenBoolean.
CByte():Conversiond'uneexpressionenByte.
CCur():ConversiondechanedecaractresnombredetypeCurrency.
Cdate():Conversiond'uneexpressionenDate.
CDbl():Conversiondechanedecaractresnombredetypedouble.
- 2-
CDec():Conversiond'uneexpressionenDcimal.
Chr():CaractreAsciid'unnombre.
CInt():Conversiond'unechanedecaractresenunnombredetypeentier.
CIng():Conversiond'unechanedecaractresenunnombredetypelong.
CSng():Conversiond'unechanedecaractresenunnombredetypesingle.
CStr():Conversiond'uneexpressionauformatString.
CVar():Conversiond'unechanedecaractresenunnombredetypevariant.
CVErr:Renvoieuncoded'erreurspcifiparl'utilisateur.
DateSerial():Crationd'unnombredatepartirdeAAMMJJ.
DateValue() :Conversiond'uneexpressionchaneoud'uneexpressionquireprsenteunedateendate.
Day():Jourd'unedate.
Hex():Conversiond'unnombreenunechanelereprsentantenHexadcimal.
Oct():Conversiond'unnombreenunechanelereprsentantenOctal.
Str()::Conversiondenombreenchanedecaractres.
Val():Conversiondechanedecaractresennombre.
Dateetheure
Fonctions
Date():Dateetheurecourante.
DateAdd():Ajoutunedate.
DateDiff():Diffrenceentredeuxdates.
DatePart():Extractiond'unepartiededate.
DateSerial():Retourneunedatepartirdujour,dumoisetdel'anne.
DateValue():Retourneunedatepartird'unechane.
Day():Retournelenumrodujourdanslemois.
Hour():Retournelenumrodel'heure(023)d'uneexpressionheure.
IsDate():Indiquesil'argumentVariantpeuttreconvertienDate.
Minute():Retournelenombredeminutes(059)d'uneexpressionheure.
Month():Retournelenumrodumoisd'unedate.
Now():Dateetheurecourante.
Second():Retournelenombredesecondes(059)d'uneexpressionheure.
- 3-
Time():Renvoiel'heuresystme.
Timer():NombredesecondescoulesdepuisMinuit.
TimeSerial():Retourneletempssried'uneheure.
TimeValue():Retourneuneheurepartird'unechane.
WeekDay():Retournelenumrodujourdanslasemainepartird'unedate.
Year():Retournelavaleurdel'annepartird'unedate.
Instructions
Date:Permetdemodifierladatesystme.
Time:Permetdemodifierl'heuresystme.
Dclaration
Instructions
Const:Dfinituneconstantesymbolique.
Declare:DclareunesousroutinedeDLL.
Deftype:Dfinitiond'untypepardfaut.
Dim:Dfinitunevariable.
Let:Affecteunevaleurunevariable.
OptionBase:Dfinitlapluspetitevaleurdel'indiced'untableau.
OptionCompare:Dfinitlemodedecomparaisondesfichierstextes.
OptionExplicit:Imposeladclarationdesvariables.
OptionPrivate
Module:Interditaucontenud'unmoduled'trerfrencl'extrieurdel'application.
Private:Dfinitunevariableouuneprocdurecommetantprive.
Public:Dfinitunevariableglobale.
Redim:Redfinitlesdimensionsd'untableaudynamique.
Set:Affecteunobjetunevariable.
Static:Dfinitunevariablestatique.
Type:Dfinitdesvariablesstructuresutilisateurs.
Domaine
Fonctions
DAvg():Moyenned'undomaine.
- 4-
DCount():Dnombrementsurundomaine.
DFirst():Premierd'undomaine.
DLast():Dernierd'undomaine.
DLookUp():Recherchedansundomaine.
DMax():Maximumd'undomaine.
DMin():Minimumd'undomaine.
DStDevP():Ecarttyped'unepopulationd'undomaine.
DStDev():Ecarttyped'unchantillond'undomaine.
DSum():Sommed'undomaine.
DVar():Varianced'unchantillond'undomaine.
DVarP():Varianced'unepopulationd'undomaine.
changedynamiquededonnes
Fonctions
DDE():CreuncanalDDEetdemanded'uneinformation.
DDEInitiate():Envoid'unecommandeviauncanalDDE.
DDERequest():Demanded'uneinformationviauncanalDDE.
DDESend():Envoid'uneinformationviauncanalDDE.
Instructions
DDEExecute:UtiliseuncanalDDEouvertpourenvoyerunecommandeuneapplication.
DDEPoke:UtiliseuncanalDDEouvertpourenvoyerdesdonnesuneapplication.
DDETerminate:Fermetured'uncanalDDE.
DDETerminateAll:FermeturedetouslescanauxDDEouverts.
Entres/sortiesfichiers
Fonctions
Curdir():Retourneledernierrpertoireutilisdanslabotededialogue"Ouvrirunebasededonnes".
Dir():Recherchedefichierscorrespondantsuncheminetunnomgnrique.
Eof():Findefichier.
FileAttr():Renvoielemodedegestiond'unfichierouvert.
FileDateTime():Retourneladateetl'heuredecrationoudederniremodificationd'unfichier.
FileLen():Retournelatailled'unfichier.
- 5-
FreeFile():Renvoieleprochainnumrodefichierdisponible.
GetAttr():Retournelesattributsd'unfichieroud'unrpertoire.
Loc():Positionactuelledanslefichier.
Lof():Renvoielalongueurd'unfichier.
Seek():Renvoielapositioncourantedansunfichier.
Spc():DplacementdexespacesdansuneinstructionPrint.
Tab():DplacementdextabulationsdansuneinstructionPrint.
Instructions
Chdir:Changementderpertoirecourant.
Chdrive:Changementd'unitdedisquecourante.
Close:Fermetured'unfichier.
FileCopy:Permetlacopiedefichier.
Get:Lecturededonnesdansunfichiersquentiel.
Input:Lecturedansunfichiersquentiel.
Kill:Suppressiondefichierdudisque.
LineInput:Lectured'unelignedansunfichiersquentiel.
Lock:Verrouillaged'accsunsegmentdefichier.
Mkdir:Crationd'unrpertoire.
Name:Affectationd'unnouveaunomunfichierdisque.
Open:Ouvertured'unfichier.
Print:Ecriturededonnesdansunfichiersquentiel.
Put:Ecritured'unevariabledansunfichier.
Reset:Fermeturedetouslesfichiers.
RmDir:Suppressiond'unrpertoire.
SetAttr:Modificationdesattributsd'unfichier.
Unlock:Dverrouillaged'accsunsegmentdefichier.
Width:Affectationd'unelargeurdeligneensortiesurunfichier.
Write:criturededonnesdansunfichiersquentiel.
Finance
Fonctions
- 6-
DDB() : Amortissement d'un bien au cours d'une priode spcifique en utilisant la mthode d'amortissement
dgressiftauxdoubleoutouteautremthodeprcise.
FV() : Valeur future d'une annuit sur la base d'une srie de versements priodiques constants et d'un taux
constant.
IPmt():Montantdel'intrtpourunepriodedonnesurlabasedeversementspriodiquesconstantsetd'un
tauxd'intrtfixe.
IRR():Tauxderentabilitinterned'unesriedeversements.
MIRR():Tauxderentabilitinternemodifid'unesriedeversements.
Nper() : Nombre de priodes pour une annuit sur la base de versements priodiques constants et d'un taux
d'intrtconstant.
NPV() : Valeur actuelle nette d'un investissement sur la base d'une srie de versements priodiques et d'un
taux.
Pmt() : Versement pour une annuit sur la base d'une srie de versements priodiques constants et d'un taux
constant.
PPmt():Versementprincipalpourunepriodedonned'uneannuitsurlabasederemboursementspriodiques
constantsetd'untauxd'intrtconstant.
PV() : Valeur prsente d'une annuit sur la base de versements priodiques constants et d'un taux d'intrt
constant.
RATE():Tauxd'intrtparprioded'uneannuit.
SLN():Amortissementconstantd'unbiendurantunepriodedtermine.
SYD():Amortissementd'unbienpourunepriodedonnedemanireproportionnellel'ordrenumriqueinverse
desannes.
Gestiond'erreurs
Fonctions
CVErr:RenvoielavariableError.
Err():Coded'erreursouslaformed'uninteger.
Error():Retournelemessagestandardcorrespondantunnumrod'erreur.
IsError():Indiquesiuneexpressionestunevaleurd'erreur.
Instructions
Error:Simuleuneerreur.
Onerror:Choixdubranchementeffectuerencasd'erreur.
Resume:Choixdubranchementeffectueraprstraitementd'erreur.
Graphiquesdanslestatsimprims
Fonctions
QBColor():Renvoielavaleurd'unecouleurRVBenfonctiond'unnumrodecouleur.
- 7-
RGB():RenvoieunentierlongreprsentantunecouleurRVB.
Liaisonsetincorporationd'objets
Fonctions
CreateObject() :CreetrenvoieunerfrenceunobjetActiveX.
GetObject() :RenvoieunerfrenceunobjetfourniparuncomposantActiveX.
Manipulationd'objets
Mthodes
CreateControl:Creuncontrledansunformulaireouvert.
CreateForm:Creunformulaire.
CreateReport:Creuntat.
CreateReportControl:Creuncontrledansuntatouvert.
DeleteControl:Dtruituncontrledeformulaire.
DeleteReportControl:Dtruituncontrled'tat.
Mathmatiques
Fonctions
Abs():Valeurabsolued'unnombre.
Atn():Arctangented'unnombre.
Cos():Cosinusd'unangleenradians.
Exp() :Exponentielle.
Fix():Partieentired'unnombre.Pourlesnombresngatifs,renvoielepremiernombreentierngatifsuprieur
ougal.
Int() :Partieentired'unnombre.Pourlesnombresngatifs,renvoielepremiernombreentierngatifinfrieur
ougal.
Log():Logarithmenprien.
Rnd():Renvoieunnombrealatoire.
Sgn():Valeurindiquantlesigned'unnombre.
Sin():Sinusd'unangleenradians.
Sqr():Racinecarred'unnombre.
Tan():Tangented'unangleenradians.
Instructions
Randomize:Initialisationdugnrateuralatoire.
- 8-
SQL
Fonctions
Avg():Retournelamoyennedesvaleursd'unchampd'unesried'enregistrements.
Count():Dnombrementd'enregistrements(contrlesouexpressionsSQL).
First():Retournelavaleurd'unchampdupremierenregistrementd'unerequte,formulaireoutat.
Last():Retournelavaleurd'unchampdudernierenregistrementd'unerequte,formulaireoutat.
Max():Retournelemaximumdesvaleursd'unchampd'unesried'enregistrements.
Min():Retourneleminimumdesvaleursd'unchampd'unesried'enregistrements.
StDev(), StDevP() : Retourne une estimation de l'cart type d'une population ou d'un chantillon de
population.
Sum():Retournelasommedesvaleursd'unchampd'unesried'enregistrements.
Var(),VarP():Retourneuneestimationdelavarianced'unepopulationoud'unchantillondepopulation.
Tableaux
Fonctions
IsArray():RenvoieunevaleurdetypeBoolean(boolen)quiindiquesiunevariableestuntableau.
Array():RenvoieunevariabledetypeVariantcontenantuntableau.
Instructions
Erase:Rinitialisationdetableaustatiqueetlibrationdelammoirealloueuntableaudynamique.
Lbound,Ubound:Recherchedesbornesinfrieuresetsuprieuresd'untableau.
OptionBase:Fixelaborneinfrieuredestableaux.
ReDim:Redimensionnementdynamiquedetableaux.
Vrificationdevariables
Fonctions
IsDate():Testesiunevariableestdetypedate.
IsEmpty():Testesiunevariableestvide.
IsMissing():Indiquesiunargumentfacultatifatpassuneprocdure.
IsNull():TestesiunevariableestNull.
IsNumeric():Testesiunevariableestdetypenumrique.
IsObject():Indiquesiuneexpressionfaitrfrenceunobjet.
TypeName():Renvoieunechaneindiquantletyped'unevariable.
VarType():Dtermineletypededonnessourced'unevariabledetypevariant.
ENI Editions - All rigths reserved
- 9-
Fonctionsetinstructionsdiverses
Fonctions
Command():ContientlapartieargumentdelalignedecommandeutilisepourlancerMicrosoftAccess.
CreateGroupLevel():Crationd'unniveauderegroupementdansuntat.
CurrentUser():Renvoielenomdel'utilisateuractuellementconnect.
DoEvents():RendleprocesseurprovisoirementWINDOWSpourqu'ilpuissetraiterlesvnements.
Environ():Renvoielachaneassocieunevariabled'environnement.
GetAllSettings:Renvoielalistedescls(etleursvaleursrespectives)figurantdansuneentred'applicationde
labasederegistredeWindows.
GetSetting:Renvoieunevaleurdecldel'entreduregistreWindowsd'uneapplication.
InputBox : Affiche une invite dans une bote de dialogue, puis renvoie le contenu de la zone de texte sous la
formed'unevaleurdetypeString.
MsgBox():Affichaged'unebotedemessage.
Shell():Excutiond'unprogramme.
StrReverse:Renvoieunechanecontenantdescaractresdontl'ordreatinversparrapportunechane
donne.
Instructions
AppActivate:Activationd'unefentred'applicationWindows.
Beep:metunBip.
SendKeys:Envoid'unesquencedetouchesclavier.
DeleteSetting:Supprimeunesectionouunparamtredecld'uneentrederegistreWindows.
Rem :Permetd'incluredesremarquesexplicativesdansunprogramme.
SaveSetting:Sauvegardeoucreuneentred'applicationdansleregistreWindows.
Codeserreursrcuprables
Des erreurs rcuprables peuvent survenir lors de l'excution d'une application. Certaines d'entre elles peuvent
galementseproduirelorsdudveloppementoudelacompilation.Vouspouveztesteretrpondredeserreurs
rcuprablesl'aidedel'instructionOnErroretdel'objetErr.
CodeErreur Description
3
ReturnsansGoSub.
Appeldeprocdureincorrect.
Dpassementdecapacit.
Mmoireinsuffisante.
- 10 -
Indiceendehorsdelaplage.
10
Cetableauestfixeoutemporairementverrouill.
11
Divisionparzro.
13
Typeincompatible.
14
Espacedechaneinsuffisant.
16
Expressiontropcomplexe.
17
Impossibled'excuterl'oprationrequise.
18
Interruptionparl'utilisateur.
20
Reprisesanserreur.
28
Espacepileinsuffisant.
35
Sub,FunctionouPropertynondfinie.
47
Tropdeclientsd'applicationpourlaDLL.
48
ErreurdechargementdelaDLL.
49
Conventiond'appeldeDLLincorrecte.
51
Erreurinterne.
52
Nomounumrodefichierincorrect.
53
Fichierintrouvable.
54
Moded'accsaufichierincorrect.
55
Fichierdjouvert.
57
Erreurd'entre/sortiedepriphrique.
58
Cefichierexistedj.
59
Longueurd'enregistrementincorrecte.
61
Disqueplein.
62
L'entredpasselafindefichier.
63
Numrod'enregistrementincorrect.
67
Tropdefichiers.
68
Priphriquenondisponible.
70
Permissionrefuse.
71
Disquenonprt.
74
Impossiblederenommeravecunlecteurdiffrent.
- 11 -
75
Erreurdanslechemind'accs.
76
Chemind'accsintrouvable.
91
VariableobjetouvariableblocWithnondfinie.
92
BoucleFornoninitialise.
93
Formatdechaneincorrect.
94
UtilisationincorrectedeNull.
97
dfinition.
Impossible d'appeler une procdure Friend sur un objet qui n'est pas une instance de classe de
98
Un appel de proprit ou de mthode ne peut pas faire rfrence un objet priv ni en tant
qu'argumentnientantquevaleurrenvoye.
298
ImpossibledechargerlaDLLsystme.
320
Impossibled'utiliserdesnomsdepriphriquesdecaractresdanslesnomsdefichiersspcifis.
321
Formatdefichierincorrect.
322
Impossibledecrerlefichiertemporairencessaire.
325
Formatincorrectdanslefichierressource.
327
Lavaleurdel'objetdedonnesnommestintrouvable.
328
Paramtreincorrect.Impossibled'criredestableaux.
335
Impossibled'accderauregistresystme.
336
Lecomposantn'estpascorrectementenregistr.
337
Composantintrouvable.
338
Excutionincorrecteducomposant.
360
Objetdjcharg.
361
Impossibledechargeroudedchargercetobjet.
363
Lecontrlespcifiestintrouvable.
364
L'objettaitdcharg.
365
Impossiblededchargerdanscecontexte.
368
Lefichierspcifiestprim.Ceprogrammerequiertuneversionplusrcente.
371
L'objetspcifinepeuttreutiliscomepropritairedelafeuillepourlamthodeShow.
380
Valeurdepropritincorrecte.
381
Indexdutableaudepropritsincorrect.
382
PropertySetnepeutpastreexcuteenmodeexcution.
- 12 -
383
PropertySetnepeuttreutiliseavecunepropritenlectureseule.
385
Indexdetabledepropritrequis.
387
PropertySetnonautorise.
393
PropertyGetnepeutpastreexcuteenmodeexcution.
394
PropertyGetnepeutpastreexcutesurunepropritencritureseule.
400
Feuilledjafficheaffichagemodalimpossible.
402
Lecodedoitd'abordfermerlafeuillemodaledepremierplan.
419
Autorisationd'utiliserl'objetrefuse.
422
Propritintrouvable.
423
Propritoumthodeintrouvable.
424
Objetrequis.
425
Utilisationd'objetincorrecte.
429
Uncomposantnepeutpascrerl'objetoufournirunerfrencecetobjet.
430
CetteclassenegrepasAutomation.
432
NomdefichieroudeclassenontrouvpendantuneoprationAutomation.
438
Cetobjetnegrepascettepropritoumthode.
440
ErreurAutomation.
442
Laconnexionlabibliothquedetypesoud'objetspourunprocessusdistantatperdue.
443
L'objetAutomationn'apasdevaleurpardfaut.
445
L'objetnegrepascetteaction.
446
L'objetnegrepaslesargumentsnomms.
447
L'objetnegrepaslesparamtresrgionauxencours.
448
Argumentnommintrouvable.
449
Argumentnonfacultatifouaffectationdepropritincorrecte.
450
Nombred'argumentsincorrectouaffectationdepropritnonvalide.
451
Cetobjetn'estpasunecollection.
452
Numroincorrect.
453
FonctionDLLspcifieintrouvable.
454
Ressourcedecodeintrouvable.
455
Erreurdeverrouillagederessourcedecode.
ENI Editions - All rigths reserved
- 13 -
457
Cetteclestdjassocieunlmentdecettecollection.
458
CettevariableutiliseuntypenongrparVisualBasic.
459
Cecomposantnegrepaslejeud'vnements.
460
FormatdePressepapiersincorrect.
461
Mthodeoumembrededonnesintrouvable.
462
Leserveurdistantn'existepasoun'estpasdisponible.
463
Laclassen'estpasenregistresurlamachinelocale.
480
ImpossibledecreruneimageenmodeAutoRedraw.
481
Imageincorrecte.
482
Erreurd'imprimante.
483
Legestionnaired'imprimantenegrepaslapropritspcifie.
484
Problme pour obtenir des informations du gestionnaire d'imprimante du systme. Assurezvous
quelegestionnaired'imprimanteestinstallcorrectement.
485
Typed'imageincorrect.
486
Impossibled'imprimerl'imagedefeuillesurcetyped'imprimante.
520
ImpossibledeviderlePressepapiers.
521
Impossibled'ouvrirlePresse papiers.
735
Impossibled'enregistrerlefichierdansunrpertoireTEMP.
744
Letexterecherchestintrouvable.
746
Remplacementstroplongs.
31001
Mmoireinsuffisante.
31004
Pasd'objet.
31018
Classenondfinie.
31027
Impossibled'activerl'objet.
31032
Impossibledecrerunobjetincorpor.
31036
Erreurl'enregistrementdanslefichier.
31037
Erreurdechargementpartirdufichier.
- 14 -
ConstantesVBA
VisualBasicpourApplicationspermetdedfinirdesconstantesafind'amliorerlalisibilitducodeetd'enfaciliter
lamaintenance.
Vous pouvez galement utiliser les constantes VBA (constantes intrinsques) suivantes partout dans votre
code.
Constantesdecouleur
Constante
Valeur
Description
vbBlack
0x0
Noir
vbRed
0xFF
Rouge
vbGreen
0xFF00
Vert
vbYellow
0xFFFF
Jaune
vbBlue
0x0FF0000
Bleu
vbMagenta
0x0FF00FF
Magenta
vbCyan
0x0FFFF00
Cyan
vbWhite
0x0FFFFFF
Blanc
Constantesdedate
Constante
Valeur
Description
vbSunday
Dimanche
vbMonday
Lundi
vbTuesday
Mardi
vbWednesday
Mercredi
vbThursday
Jeudi
vbFriday
Vendredi
vbSaturday
Samedi
Constantesdestouchesclavierlettresetchiffres
LesvaleursdestouchesAZsontlesmmesqueleursquivalentsASCII.
Constante
Valeur
Description
vbKeyA
65
Touche A
vbKeyB
66
Touche B
vbKeyC
67
Touche C
...
...
...
vbKeyZ
90
Touche Z
Lesvaleursdestouches09sontlesmmesqueleursquivalentsASCII.
Constante
Valeur
Description
vbKey0
48
Touche 0
vbKey1
49
Touche 1
vbKey2
50
Touche 2
...
...
...
vbKey9
57
Touche 9
- 1-
Constantesdetouchesdefonction
Constante
Valeur
Description
vbKeyF1
0x70
Touche F1
vbKeyF2
0x71
Touche F2
...
...
...
vbKeyF11
0x7A
Touche F11
...
...
...
vbKeyF16
0x7F
Touche F16
Constantesdetouchesdiverses
Constante
Valeur
Description
vbKeyCancel
0x3
Touche ANNULER
vbKeyBack
0x8
vbKeyTab
0x9
Touche Tab
vbKeyClear
0xC
Touche EFFACER
vbKeyReturn
0xD
Touche Entre
vbKeyShift
0x10
Touche Shift
vbKeyControl
0x11
Touche Ctrl
vbKeyMenu
0x12
Touche MENU
vbKeyPause
0x13
Touche PAUSE
vbKeyCapital
0x14
vbKeyEscape
0x1B
Touche Echap
vbKeySpace
0x20
Touche ESPACE
vbKeyPageUp
0x21
Touche Pg Up
vbKeyPageDown
0x22
Touche Pg Dn
vbKeyEnd
0x23
Touche Fin
vbKeyHome
0x24
Touche Dbut
vbKeyUp
0x25
vbKeyDown
0x26
vbKeyRight
0x27
vbKeyLeft
0x28
vbKeySelect
0x29
Touche Slection
vbKeyPrint
0x2A
vbKeyExecute
0x2B
Touche EXCUTER
vbKeySnapshot
0x2C
Touche SNAPSHOT
vbKeyInsert
0x2D
Touche Ins
vbKeyDelete
0x2E
Touche Suppr
vbKeyHelp
0x2F
Touche AIDE
vbKeyNumlock
0x90
vbKeyLButton
0x1
vbKeyRButton
0x2
- 2-
Raccourcisclavier
F1 :Aidesurlemotclsurlequelsetrouvelecurseur.
F5 :Excuteuneprocdure.
F8 :ModePaspasdtaill.
ShiftF8 :ModePaspasprincipal.
CtrlShiftF8:ModePaspassortant.
CtrlF8 :Excutejusqu'aucurseur.
ShiftF9 :Affichelavaleurencours.
F9 :Afficheoudsactiverlepointd'arrt.
CtrlShiftF9 :Supprimetouslespointsd'arrt.
CtrlF9 :Dfinitl'instructionsuivante.
- 1-