You are on page 1of 428

Date de publication : 01/01/2004 Dernire mise jour : 05/01/2009

Cette FAQ a t ralise partir des contributions des membres du forum Access et Office de www.developpez.com. Si vous dsirez contribuer l'amlioration de cette FAQ veuillez contacter le responsable. Vous souhaitez ajouter vos contributions, pas de soucis, un forum Contribuez a t ouvert ce sujet.

Ont contribu cette FAQ :

vodiem - mnssylvain - ClaudeLELOUP - titi95 - Domi2 Alain36 - Mahefasoa - Team Access - FreeAccess - OtObOx ShaftyW - jpcheck - isa911 - Heureux-oli - Jean Luc Ravenne - Philippe JOCHMANS - francishop - damkre - micniv The_Super_Steph - mimosa7 - Meduse - kloun - keita SpyesX - ckeromen - Rom4u - naphta - mout1234 - random - BBert - Miss Ti - shepp - Sierra.77 - LedZeppII - Morgan BILLY - Lou Pitchoun - guydav - Celia1303 - cakeke - Zorro - MasterOfChakhaL - jfox - armagued - Lo - smicky77 marchand_de_sable - Trini - jbaudin - DMboup - loufab fdraven - ma_mat - LeLaid - mouuaahh - petitmic - hhkiki Lili21 - aurel64 - vmolines - BrunoM45 - =JBO= - nightfall - Isa38 - Maxence HUBICHE - Cafeine - Bidou - Etienne Bar - Demco - Lucifer - THOGAL - Frank - Drosera - Gal Donat - ZEUSGR - Ludolitaliano - Arkham46 - MashiMaro - NESTLE - STEF_1 - Gandalf24 - ARO - grafikm_fr pipololo - hpalpha - xp - sasmira_ - Papy Turbo - Michelle - MultiClic - thierryguilbert - gripoil - Ova - obob - Coin - FRED.G - Angelico - raph692 - Rdesfx - extros - MC2 yoyo.zibou - thorgal85 - 6psyk9 - SQLpro - vbabien - shwin - norac - Gdal - bigquick - Cupidon - Hannibal - Morsi stephane eyskens - olivier] - Tofalu - sunme - argyronet dok flint - sellig - philou22 - tee_grandbois - DonFelipe Faw - Didier L - GAGNON - Petogaz - HPJ - tibadabo cladlemeilleur - jacma - User - pokemoon94 - Keops93 - JeanMarc Rabilloud - khany - ThierryAIM - elifqaoui - abelman -

1. 2. 3. 4. 5.

Gnralits (7) ........................................................................................................................................................................... 5 Gnral (39) ............................................................................................................................................................................... 7 Messages d'erreur et Bugs (24) ............................................................................................................................................... 20 Administrer une base de donnes (18) ....................................................................................................................................28 Tables et Champs (69) ............................................................................................................................................................ 38 5.1. Tables (23) ...................................................................................................................................................................... 40 5.2. Champs (31) ....................................................................................................................................................................52 5.3. Trucs et Astuces (11) ..................................................................................................................................................... 65 6. Requtes (66) ........................................................................................................................................................................... 71 6.1. Manipulation des requtes (5) ........................................................................................................................................ 76 6.2. Expressions et critres (15) ............................................................................................................................................ 78 6.3. Suppressions, modifications et insertions (8) .................................................................................................................84 6.4. Conception (16) .............................................................................................................................................................. 86 6.5. Trucs et Astuces (10) ..................................................................................................................................................... 92 7. Formulaires (205) .................................................................................................................................................................... 96 7.1. Contrles (89) ............................................................................................................................................................... 109 7.1.1. Zones de liste et zones de liste modifiable (31) ................................................................................................. 124 7.1.1.1. Trucs et Astuces (3) ....................................................................................................................................134 7.1.2. Zones de texte (12) ..............................................................................................................................................137 7.1.2.1. Trucs et Astuces (2) ....................................................................................................................................141 7.1.3. TreeView (5) ........................................................................................................................................................142 7.1.4. Onglet (3) .............................................................................................................................................................146 7.2. Donnes (26) .................................................................................................................................................................150 7.2.1. Position dans le formulaire (10) ..........................................................................................................................152 7.2.2. Modification et ajout de donnes (8) .................................................................................................................. 156 7.2.3. Source de donnes (5) ......................................................................................................................................... 159 7.3. Prsentation (28) ........................................................................................................................................................... 161 7.4. Trucs et Astuces (30) ................................................................................................................................................... 170 8. Etats (42) ................................................................................................................................................................................185 8.1. Impressions (12) ........................................................................................................................................................... 192 8.2. Trucs et Astuces (11) ................................................................................................................................................... 196 9. Fichiers et rpertoires (41) .................................................................................................................................................... 207 9.1. Cration/Suppression/Modifications (11) ..................................................................................................................... 213 9.2. Recherches et Localisation (13) ................................................................................................................................... 219 9.3. Informations (9) ............................................................................................................................................................ 229 10. Systme (28) ........................................................................................................................................................................ 235 11. VBA (314) ........................................................................................................................................................................... 257 11.1. Le langage (24) ...........................................................................................................................................................258 11.2. Manipulation des donnes (61) .................................................................................................................................. 268 11.2.1. Dates et Heures (25) ..........................................................................................................................................282 11.2.2. Trucs et Astuces (10) .........................................................................................................................................299 11.3. Astuces de programmation (38) ................................................................................................................................. 305 11.3.1. Conseils d'optimisation du code (2) .................................................................................................................. 324 11.4. API utiles (12) ............................................................................................................................................................ 325 11.5. Interface et graphisme (26) ........................................................................................................................................ 339 11.5.1. Trucs et Astuces (7) .......................................................................................................................................... 346 11.6. Tables et relations (5) .................................................................................................................................................349 11.7. Interaction avec d'autres applications (51) ................................................................................................................. 351 11.7.1. Applications Office (32) .................................................................................................................................... 361 11.7.1.1. Excel (13) ..................................................................................................................................................363 11.7.1.2. Outlook (6) ................................................................................................................................................370 11.7.1.3. Word (4) ....................................................................................................................................................374 11.7.1.4. Access (4) ................................................................................................................................................. 376 11.7.1.5. Power Point (1) .........................................................................................................................................380

-3Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

11.7.2. Trucs et Astuces (7) .......................................................................................................................................... 381 11.8. Dbogage et problmes divers (17) ............................................................................................................................384 11.9. Macros (5) ...................................................................................................................................................................390 11.10. SQL et VBA (25) ..................................................................................................................................................... 392 11.11. Utilisateurs (7) .......................................................................................................................................................... 403 11.12. Rfrences (3) ........................................................................................................................................................... 408 11.13. Divers (40) ................................................................................................................................................................ 409 11.13.1. Trucs et Astuces (17) .......................................................................................................................................421

-4Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Gnralits Comment obtenir de meilleures rponses ?


Auteurs : Team Access , La rdaction vous propose un tutoriel pour apprendre utiliser ce forum : Aide aux nouveaux arrivants sur Developpez.com

Comment mettre le tag [Rsolu] ?


Auteurs : Team Access , Quand votre problme est rsolu, pensez l'indiquer en mettant le tag rsolu dans le titre. Pour cela, il suffit de cliquer sur le bouton en bas gauche de la discussion.

lien : Comment obtenir de meilleures rponses ?

Comment participer l'amlioration de la FAQ ?


Auteurs : Team Access , Pour contribuer la FAQ Access sur www.developpez.com, postez vos trucs et astuces dans le forum Access : vos contributions.

O touver des tutoriels pour MS-Access et les bases de donnes ?


Auteurs : Team Access , www.developpez.com vous propose de nombreux tutoriels et cours sur Access. Cours et tutoriels sur Access

Remerciements
Auteurs : Team Access , Merci tous ceux qui ont particip la rdaction de cette FAQ. En particulier, et dans le dsordre Maxence Hubiche, Etienne Bar, Jean-Marc Rabilloud, Cafine, Michel Blavin, Papy Turbo, FRED.G, Tofalu, shwin et toute l'quipe de developpez.com en particulier l'quipe SGBD, spciale ddicace aux redacteurs de la FAQ Delphi qui a servi d'exemple et aux crateurs de l'outil qui nous permet de crer les FAQ de ce Forum. Remerciements galement aux utilisateurs qui permettent, en rpondant aux questions, d'accrotre la base de connaissance qu'est la FAQ Access.

-5Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Enfin, je tiens remercier le travail des correcteurs, savoir Nightfall, Alacazam, Pascal Jankowski et SheikYerbouti, mais aussi l'norme travail de NoNo qui produit les outils facilitant grandement la mise jour et la cration des FAQ.

Que signifie le tag [Dlestage]


Auteurs : Team Access , Le tag dlestage devant le titre d'un sujet du forum signifie que : La rponse a t traite dans la FAQ, les cours, les sources, etc. La question est abandonne par son posteur La question est sans intrt pour le reste de la communaut

Ces messages sont vous la suppression par les modrateurs dans l'unique but de diminuer la taille de la base de donnes et garantir ainsi des performances optimales. lien : Vous avez dit base de connaissances ?

Vous avez dit base de connaissances ?


Auteurs : Team Access , "Si tu donnes un poisson un homme, il mangera un jour. Si tu lui apprend pcher, il mangera toujours." Lao-Tseu Le philosophe expliquait ici l'importance de la formation. Notre objectif, sur ce site, est de fournir un ensemble complet de sources d'informations, de qualit, et ce dans quelque page que vous la cherchiez : dans les cours dans les sources sur le forum

La qualit passe par la clart. Aussi, AVANT de poser une question, vrifiez qu'elle n'ait pas dj t solutionne, afin d'viter de surcharger le forum de questions inutiles et de le rendre ainsi inexploitable travers les rsultats de son moteur de recherche. Lorsque vous posez une question, prenez le temps de la rdiger en un franais correct, et faites votre possible pour que les ides exprimes soient la plus clair possible pour le lecteur. Si par contre vous rpondez, ne rpondez pas tort et travers ! Par exemple, il ne convient pas de donner une rponse une personne qui ne fait pas d'effort de recherche, participant la pollution de la base de connaissance. Encouragez le, formez-le plutt chercher sa solution. Enfin, soyez le plus srieux, professionnel possible. Pensez au lecteur de passage ou press par un souci. Apprendre que "vous avez perdu les clefs et que vous devez passer chez Martine avant d'aller au boulot..." ne l'intressera certainement pas. Donc, pas de trolls.

-6Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Gnral A quoi servent les transactions ?


Auteurs : Team Access , Parfois, vous avez besoin d'excuter une succession de requtes de mise jour. Une transaction permet, lorsqu'elle est ouverte, de lancer ces requtes une--une et de valider ou annuler le rsultat la fin. Imaginez, qu'une requte choue au milieu de la transaction, il ne faut pas que les modifications apportes par les autres requtes soient enregistres, au risque de corrompre l'ensemble des donnes. Vous devez donc annuler la transaction (rollback). En revanche, si tout s'est bien pass, vous pouvez la valider (commit).

Access n'a pas pu crer une base de donnes MDE


Auteurs : Frank , Ton problme est que tu dois avoir une erreur dans un de tes modules. Ouvres tes modules un un puis compile les. Attention galement aux erreurs dues au mlange de versions des formats de base de donnes. Ainsi, par exemple, bien que Access 2002 sache travailler nativement avec des fichiers MDB au format Access 2000, il ne peut convertir en MDE que les fichiers MDB 2002......

Application installer sur des postes ne possdant pas MS-Access


Auteurs : Team Access , Il faut possder pour cela la version Microsoft Office dveloppeur, dans laquelle on trouvera le Runtime Microsoft Access, qui est une version de MS-Access n'ayant aucun outil de cration ou de modification, qui ne permet donc que l'exploitation de bases de donnes existantes.

lien : lien : lien :

Dploiement et empaquetage d'applications professionnelles Access 2000 et XP Dploiement et empaquetage d'applications professionnelles Access 2003 Dploiement et empaquetage de vos applications Access 2007 avec l'utilisation du Runtime.

Changer le mot de passe d'un utilisateur ?


Auteurs : Team Access , Il faut se logger en tant qu'utilisateur : pour chaque mot de passe que vous voulez changer, vous devez vous logger avec le login de l'utilisateur et son mot de passe. Ensuite vous changez le mot de passe (outils/scurit/gestion.../changer le mot de passe en vrifiant que ce soit le bon utilisateur).

Comment afficher l'aide DAO dans Access 2000 ?


Auteurs : MC2 , Ce bug de l'installation d'Access 2000 est rpertori sur le site de Microsoft.
-7Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

La rsolution se trouve dcrite sur leur site l'URL : http://support.Microsoft.com/default.aspx?scid=kb;fr;249065&Product=acc2000Fra L dessus, regardez dans ..\Fichiers Communs\... si vous ne trouvez pas dans ...\Common Files\... et dans ...\1036 la place de ...\1033.

Comment appeler une Procdure Stocke Oracle depuis Access ?


Auteurs : Team Access ,
Private Sub Callproc_Click() ' This code demonstrates calling an Oracle Packaged Procedure and Function ' using the ODBC {Call...} Syntax From Visual Basic using the Microsoft ' Activex Data Objects (ADO) 2.1 (or above) interface via the Oracle ODBC Driver. ' The PL/SQL package called is ' ' create or replace package odbpack as ' ' Procedure Proc(param1 in number,param2 in out number, ' param3 out number); ' ' Function Func(param1 in varchar2, param2 in out varchar2, ' param3 out varchar2) return number; ' end odbpack; ' / ' ' create or replace package body odbpack as ' Procedure Proc(param1 in number,param2 in out number, ' param3 out number) is ' begin ' param2 := param1+param2; ' param3 := param1; ' end; ' ' Function func(param1 in varchar2, param2 in out varchar2, ' param3 out varchar2) return number is ' begin ' param2 := param1||param2; ' param3 := param1; ' return length(param2); ' end; ' end odbpack; ' / ' ' 'Dim er As adoError 'On Error GoTo CnEh Dim cnn1 As ADODB.Connection Dim cmdExeproc As ADODB.Command ' Open connection. Set cnn1 = New ADODB.Connection ' Modify the following line to reflect a DSN within your environment strCnn = "DSN=W805; UID=LeLogin; PWD=LeMotDePasse;" cnn1.Open strCnn Set cmdExeproc = New ADODB.Command cmdExeproc.ActiveConnection = cnn1 cmdExeproc.CommandText = "{call odbpack.proc(?,?,?)}" ' ' ' In the next set of code, we have to manually set the parameter types since ADO and ODBC cannot derive this information when calling packaged procedures.

-8Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

cmdExeproc.Parameters(0).Value = 1 cmdExeproc.Parameters(1).Direction = adParamInputOutput cmdExeproc.Parameters(1).Value = 2 cmdExeproc.Parameters(2).Direction = adParamOutput cmdExeproc.Execute MsgBox ("Return Values from Proc are : " & _ cmdExeproc.Parameters(1).Value & _ " and " & _ cmdExeproc.Parameters(2).Value) Set cmdExeproc = New ADODB.Command cmdExeproc.ActiveConnection = cnn1 cmdExeproc.CommandText = "{? = call odbpack.func(?,?,?)}" ' ' ' In the next set of code, we have to manually set the parameter types since ADO and ODBC cannot derive this information when calling packaged procedures. cmdExeproc.Parameters(0).Direction = adParamReturnValue cmdExeproc.Parameters(1).Value = "Odd" cmdExeproc.Parameters(2).Direction = adParamInputOutput cmdExeproc.Parameters(2).Value = "Fred" cmdExeproc.Parameters(3).Direction = adParamOutput cmdExeproc.Execute MsgBox ("Return Values from Func are : " & _ cmdExeproc.Parameters(0).Value & _ " and " & _ cmdExeproc.Parameters(2).Value & _ " and " & _ cmdExeproc.Parameters(3).Value) Close Connection cnn1.Close End Sub '

Comment compacter une base de donnes ?


Auteurs : Bidou , 1/ Une solution 'manuelle' : Menu Outils/Utilitaires de bases de donnes/Compacter une base de donnes. 2/ Une solution 'automatique' ( partir de MS Access 2000) : Menu Outils/Options, Onglet 'Gnral', cocher 'Compacter lors de la fermeture'. 3/Une solution par code :
Sub cmdCompacter_Click () sNomBase= "C:\Mes documents\Base.MDB" sNomBaseTmp= "C:\Mes documents\BaseTmp.MDB" DBEngine.CompactDatabase sNomBase, sNomBaseTmp '1. Compactage dans une nouvelle base Kill sNomBase '2. Suppression de la base originale Name sNomBaseTmp As sNomBase '3. Renommer la base compacte avec le nom de la base originale End Sub

-9Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Remarque : Cette dernire solution ne vous permet pas de compacter la base de donnes en cours. lien : Pourquoi faut-il compacter les bases de donnes ?

Comment crer une sorte d'emploi du temps ?


Auteurs : Maxence HUBICHE , TABLE1 LaDate LeDebut LaFin LeSujet 12/11/2003 10:15:00 11:15:00 test 13/11/2003 09:00:00 09:30:00 essai TABLE2 DD DF 09:00:00 09:30:00 09:30:00 10:00:00 10:00:00 10:30:00 10:30:00 11:00:00 11:00:00 11:30:00 11:30:00 12:00:00 12:00:00 12:30:00 REQUETE1
TRANSFORM First(IIf([ledebut]<[dd] And [lafin]>[df] Or [Ledebut]>=[DD] And [LeDebut]<[DF] Or [LaFin]>[DD] And [LaFin]<=[DF],[LeSujet],"")) AS Expr2 SELECT Table2.DD, Table2.DF FROM Table2, Table1 GROUP BY Table2.DD, Table2.DF PIVOT Choose(Weekday([LaDate]),"dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi") In ("Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimanche");

Cet exemple correspond un emploi d'une semaine. Pour utiliser ce code sur un mois il faut remplacer le PIVOT par :
PIVOT Day([LaDate]) In(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)

Comment diminuer le poids de ma base de donnes ?


Auteurs : Demco , Voici un lien expliquant comment compacter votre base de donnes. lien : Comment compacter une base de donnes ?

Comment empcher le lancement du formulaire de dmarrage ou de la macro AUTOEXEC ?


Auteurs : Team Access , Il suffit de maintenir la touche shift (majuscule) enfonce pendant l'ouverture. Cette astuce fonctionne avec la plupart des applications Office. lien : lien : lien : Comment ouvrir un formulaire ou excuter du code au dmarrage ? Inhiber la touche MAJ au dmarrage Comment rcuprer les menus Access aprs modification des options de dmarrage ?

Comment faire cohabiter Access 97 et 2000 ?


Auteurs : Maxence HUBICHE , Il faut installer d'abord Access 97 puis Access 2000. Toujours le plus rcent la fin.

- 10 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ensuite, il suffit de faire deux raccourcis depuis les fichiers MSAccess.exe se trouvant dans les dossiers d'installation dfinis.

Comment modifier l'icne de mon application ?


Auteurs : Team Access , Il existe une option permettant de dfinir l'icne de l'application afficher dans la barre de titre de la base de donne : Menu Outils / Dmarrage / Icne de l'application

Comment ouvrir un formulaire ou excuter du code au dmarrage ?


Auteurs : Team Access , Pour ouvrir un formulaire au dmarrage de l'application, rendez-vous dans le menu Outils puis Dmarrage. Dfinissez la proprit Formulaire de dmarrage. Pour excuter un traitement au lancement de l'application, crez une macro nomme AutoExec incluant les actions dont vous avez besoin. En gnral, le dveloppeur dote cette macro d'une seule action : Excuter Code, permettant ainsi de lancer une fonction VBA au dmarrage de son produit. lien : Comment empcher le lancement du formulaire de dmarrage ou de la macro AUTOEXEC ?

Comment ouvrir une application Access avec une en ligne de commande paramtre
Auteurs : FRED.G , Pour tout savoir, cherchez Options de la ligne de commande de dmarrage dans l'aide Access. Intressez-vous notamment au paramtre /cmd et la fonction Command.

lien :

Utilisation des options de dmarrage de la ligne de commande

Comment rcuprer le chemin d'accs la Base contenant les tables ?


Auteurs : Lili21 ,
Function GetLinkedDBName(TableName As String) ' *** ex: GetLinkedDBName ("ENFANT") ' *** \\serveur\base de donnes\Base_de_donnees.mdb ' Dim db As Database, Ret On Error GoTo DBNameErr Set db = CurrentDb() Ret = db.TableDefs(TableName).Connect GetLinkedDBName = Right(Ret, Len(Ret) - (InStr(1, Ret, "DATABASE=") + 8)) Exit Function DBNameErr: GetLinkedDBName = 0 End Function Function DriveLinkedTable() As String

- 11 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' Retrouve le chemin complet de la base attache ' ex: \\serveur\base de donnes\ Dim X As String, I As Integer Dim Path As String X$ = GetLinkedDBName("ENFANT") ' Chemin complet ' Voir ci-dessus la fonction GetLinkedDbName() For I = Len(X$) To 1 Step -1 If Mid$(X$, I, 1) = "\" Then Exit For Next Path$ = Left$(X$, I - 1) & "\" DriveLinkedTable = Path$ End Function

La fonction GetLinkedDBName() retourne le chemin rseau de la table passe en paramtre. La fonction DriveLinkedTable() retourne ce mme chemin mais sans le nom du fichier de la base de donnes. lien : Comment rcuprer le chemin d'accs la Base contenant les tables par ADO ?

Comment rcuprer les menus Access aprs modification des options de dmarrage ?
Auteurs : Demco , Vous avez jou avec les options de dmarrage et maintenant vous vous retrouvez sans menus lorsque vous lancer Access ? Il vous suffit d'ouvrir le fichier Access en maintenant la touche shift de votre clavier appuye. Tout vous sera alors affich et il vous suffira de retourner dans les options de dmarrage pour arranger tout cela. lien : Comment empcher le lancement du formulaire de dmarrage ou de la macro AUTOEXEC ?

Comment utiliser ma base Access sur l'Internet ?


Auteurs : Gal Donat , Tout d'abord, Access est un front end Windows, non un front end Web. Donc on ne peut utiliser l'interface (les formulaires) sur l'Internet, cependant les tables et leurs donnes sont utilisables. Pensez peut-tre aussi passer d'Access MySQL. MySQL est gratuit et se combine parfaitement avec le langage PHP. Qu'utiliser alors pour l'interface ? Toute technologie de page dynamique -> PHP et ASP en tte.

Conception d'une base de donnes


Auteurs : Team Access , Cyril Gruau nous propose un cours de conception de bases de donnes. Indispensable !

lien : lien :

Conception de bases de donnes (fichier PDF) Conception de bases de donnes (fichier PDF) - lien de secours

- 12 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Access - Les Bases

Connatre la liste des personnes connectes la base ?


Auteurs : Team Access , Consultez le lien ci-dessous.

lien : COMMENT FAIRE : Vrification des personnes connectes une base de donnes avec Jet UserRoster dans Access 2000

Copie d'objets d'une base une autre


Auteurs : Lucifer , La solution est d'importer les objets voulus (requtes, formulaires, tables, macros ou tats). Pour se faire ouvrez votre base de destination (crez-en une vierge si besoin est) et faites Insertion > Table > Importer la table. Il ne vous reste alors qu' naviguer entre les diffrents onglets et importer les objets dont vous avez besoin.

Est-il possible de reconstruire une mdb a partir d'une mde.


Auteurs : raph692 , Non ! MDE : Fichier de base de donnes "semi-protg" : un MDE est un MDB dans lequel il n'est plus possible d'ajouter ou de modifier des formulaires, des tats ou des modules VBA. Contrairement l'ide reue, le MDE n'est pas une protection intgrale d'un MDB : les tables, requtes et macros sont toujours accessibles. Mais le MDE a subi une pseudo compilation. Tous les lments disponibles pour la modification des modules (et modules de classes, donc tats et formulaires inclus) ne sont plus accessibles. lien : Qu'est-ce qu'un fichier mde ?

Faire une application Client/Serveur


Auteurs : Team Access , MS Access n'est pas fait pour faire ce type d'application. Depuis la version 2000, il est cependant possible de crer des projets MS Access. Les projets MS Access sont la grosse nouveaut permettant de crer des clients de bases de donnes SQL Serveur. Dans ce cas-l, on peut crer une application rellement client serveur. Pour ce type d'architecture vous pourrez utiliser MSDE (version restreinte de SQL Server) qui est fournie sur le CD d'Office.

- 13 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment utiliser une application en mode multi-utilisateurs par Morgan BILLY

Gestion de la scurit - Niveau Base de donnes


Auteurs : Maxence HUBICHE , Il s'agit simplement de la mise en place d'un mot de passe sur le fichier de base de donnes. La scurit de Niveau base de donnes n'est pas fiable.

Gestion de la scurit - Niveau utilisateur


Auteurs : Maxence HUBICHE , La scurit de niveau Utilisateur est bien plus fine. Elle est d'ores et dj active, mais les paramtres sont tellement ouverts qu'on ne le voit pas : Lorsque MS-Access se lance, une lecture est faite au niveau de la base de registres, allant chercher le fichier systme qui va rgir le DBEngine (DAO). Une fois ces paramtres dfinis, la base de donnes s'ouvre, d'o le schma DBENGINE-WORKSPACE-DATABASE, et la proprit SystemDB du DBEngine. C'est l'ouverture du Workspace que les user et pwd sont demands, d'o la syntaxe CREATEWORKSPACE(<<Name>>,<<USER>>,<<PWD>>,...). ---------------------------------------------------------Le fichier SystemDB, on peut le voir en lancant l'utilitaire wrkgadm.exe. Il est mme conseill d'en crer un spcifique, en laissant le system.mdw existant intact. A quoi sert l'utilitaire : -Crer de nouveaux fichiers de scurit -Modifier la base de registres en dfinissant le fichier de scurit actif pour la prochaine session MS-Access. A quoi sert ce fichier : A dfinir les Users et Groups --------------------------------------------------------Etapes : 1-Crer un fichier de scurit 2-Ouvrir MS-Access 3-Faire Outils/Scurit, dfinir tous les Users et Groups (minimum 1 User : MoiMeme, 1 Group : MonGroup) 4-Faire toutes les associations Users-Groups (dont MoiMeme-MonGoupe) 5-Mettre un des nouveaux Users ( MoiMeme) dans le groupe des Administrateurs 6-Enlever le User Administrateur du Groupe Administrateurs 7-Donner un mot de passe l'Administrateur 8-Quitter MS-Access 9-Ouvrir MS-Access (pour mettre en place ces nouveaux paramtres) 10-Mettre le nom du nouveau User (MoiMeme) et aucun mot de passe 11-Crer une base de donnes (ainsi ce sera MoiMeme qui sera le propritaire de la base) 12-Faire Outils/Scurit pour paramtrer les droits: Retirer tous les droits du groupe des Utilisateurs Retirer tous les droits du groupe des administrateurs Mettre tous les droits au groupe des dveloppeurs Et faire cela sur chacun des types d'objets, dont la base de donnes. Ainsi, la base de donnes ne pourra pas tre ouverte pas l'utilisateur par dfaut (Utilisateur Administrateur) 13-Importer tous les objets de la base d'origine. --------------------------------------------------------Cette base ne pourra tre ouverte que si 1- on a le bon fichier mdw 2- si on connat le mot de passe Ensuite la meilleure solution est de crer un raccourci dont les proprits sont les suivantes :
- 14 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

"Chemin\vers\MSAccess.exe" "Chemin\vers\votre\fichier.mdb" \fichier.mdw"

/Wrkgrp "Chemin\vers\votre

Astuce si vous ne voulez pas taper votre mot de passe chaque fois :
/user NomUtilisateur /pwd LeMotDePasse

Normalisation des noms


Auteurs : Team Access , Utiliser les prfixes conventionnels est mme fortement recommand. Il est ainsi beaucoup plus ais de relire son code. Vous vous en rendrez vraiment compte en relisant le code d'autres programmeurs. lien : Tlcharger le fichier Excel des principaux prfixes normaliss lien : Descriptif des conventions typographiques du code Visual Basic

Pourquoi faut-il compacter les bases de donnes ?


Auteurs : Team Access , Au fur et mesure de l'utilisation de votre base de donnes, la taille du fichier tend accrotre considrablement. Ceci est d la mthode utilise par Access pour stocker les enregistrements. Il vous est donc recommand de compacter rgulirement votre fichier. De plus, depuis Access 2000, le compactage inclu la rparation du fichier s'il est endommag. lien : Comment compacter une base de donnes ?

Que signifie VBA?


Auteurs : Team Access , VBA pour Visual Basic dition (ou en Anglais : "for") Application (cd. orient vers les applications bureautiques de Microsoft, Access, Excel, Word, ...). Certains lments qu'on peut tre amen grer dans une application en Access ou en Excel, par exemple, sont identiques. D'autres sont spcifiques. VBA peut tre vu comme une restriction de VB. Mais l'interface de dveloppement d'Access, par exemple, apporte pas mal de facilits.

Quelles sont les limites de MS-Access ?


Auteurs : Team Access , Les limites de Microsoft Access sont consultables dans l'aide sous le mot-cl "Spcifications de Microsoft Access". Vous y trouverez le nombre d'utilisateurs admissible, la taille maximale de la base de donnes, le nombre d'objets autoriss, etc.

- 15 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Qu'est-ce qu'un fichier mde ?


Auteurs : Team Access , Un fichier Mde est une base de donnes Access stocke dans un tat compil. La modification des formulaires, tats, macros et modules y est impossible. La cration d'un fichier Mde amliore les performances de l'application, rduit sa taille et protge sa partie applicative des modifications. Attention, lorsque vous convertissez votre base en Mde, gardez prcieusement une copie du fichier Mdb originel car la compilation est irrversible. lien : Gestion de la scurit - Niveau utilisateur lien : Gestion de la scurit - Niveau Base de donnes lien : Est-il possible de reconstruire une mdb a partir d'une mde.

Rparer une base de donnes sans passer par l'interface Access


Auteurs : Team Access , Il faut lancer ce qui suit en ligne de commande (pour Access 2000) :
"C:\Program Files\Office2000\Office\MSACCESS.EXE" "C:\Mes documents\MaBase.mdb" /repair

La base sera ainsi rpare mais non ouverte. Sinon, intressez-vous la mthode "CompactDataBase".

Une application dveloppe sous Access est-elle compatible avec toutes les versions d'Access ?
Auteurs : Demco , Lire une application avec une version d'Access suprieure ou gale celle utilise lors du dveloppement ne devrait pas poser de problme. Cependant, l'inverse n'est pas vrai. A savoir qu'une base dveloppe sous Access 2003 ET enregistre au format Access 2003 ne sera pas exploitable par les versions antrieures d'Access.

Utiliser des triggers (dclencheurs)


Auteurs : Team Access , Les triggers ne sont pas grs sur les bases de donnes MS-Access.

Aide Access non complte


Auteurs : Miss Ti , Certains fichiers d'aide sont placs dans le dossier C:\Program Files\Common Files alors que l'aide cherche dans le dossier C:\Program Files\Fichiers communs. Il vous suffit de copier l'aide dans le second dossier.

- 16 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Comment activer/dsactiver la correction automatique pour toutes les applications Office


Auteurs : LedZeppII , Pour Activer / Dsactiver la correction orthographique des applications Office, il faut passer par la base de registre. Pour votre scurit, faites une sauvegarde de la base de registre avant de raliser la modification. Pour accder la base de registre tapez regedit dans la fentre Excuter du menu Dmarrer. Ceci dsactive la correction :
[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\AutoCorrect] "ACOptions"=dword:00000000 "CorrectTwoInitialCapitals"=dword:00000000 "CapitalizeSentence"=dword:00000000 "CapitalizeNamesOfDays"=dword:00000000 "ToggleCapsLock"=dword:00000000 "ReplaceText"=dword:00000000

Ceci active la correction :


[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\AutoCorrect] "ACOptions"=dword:00000001 "CorrectTwoInitialCapitals"=dword:00000001 "CapitalizeSentence"=dword:00000001 "CapitalizeNamesOfDays"=dword:00000001 "ToggleCapsLock"=dword:00000001 "ReplaceText"=dword:00000001

Comment lister les objets, mthodes et proprits disponibles dans une version d'Access donne
Auteurs : Cafeine , Dans un premier temps il faut ajouter la rfrence : TypeLib Information (C:\Winnt\system32\tblinf32.dll) Ce code va vous permettre de lister les objets, mthodes et proprits disponibles dans une version d'Access donne. Collez ce code dans un module.
Public Function GetMethod(ByVal strRefName As String, ByVal strObject As String, _ Optional ByVal item As String = "*") As Collection Dim objTLI As TypeLibInfo Dim objInterFace As InterfaceInfo Dim objMember As MemberInfo Dim i As Integer Dim strTypeName As String, strLastAdded As String Set objTLI = New TypeLibInfo objTLI.ContainingFile = Application.References(strRefName).FullPath For i = 1 To objTLI.TypeInfos.Count If (objTLI.TypeInfos(i).Name = strObject) Then Set objInterFace = objTLI.TypeInfos(i).Interfaces(1) Exit For End If Next i

- 17 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If Not (objInterFace Is Nothing) Then For Each objMember In objInterFace.Members If Not (Left$(objMember.Name, 1) = "_") And _ Not (objMember.Name = strLastFound) And _ (objMember.InvokeKind = INVOKE_FUNC Or _ objMember.InvokeKind = INVOKE_EVENTFUNC) And _ (objMember.Name Like item) Then Debug.Print objMember.Name strLastFound = objMember.Name End If Next objMember End If End Function

Appel de la fonction :
'Exemple d'appel pour l'objet Formulaire GetMethod "Access", "Form"

Le dernier argument est facultatif, il permet de faire une recherche prcise, exemple avec les proprits commencant par A
'Exemple d'appel pour l'objet Formulaire GetMethod "Access", "Form", "a*"

lien :

Comment dclarer une rfrence dans MS-Access ?

C'est quoi un twips ?


Auteurs : Maxence HUBICHE , C'est une unit de mesure utilise par le VBA (et Access) qui correspond 1/1440 pouces soit 2,54cm Ce qui fait qu'un cm contient peu prs 567 twips Cette unit de mesure est compltement dissocie de la notion de pixel. Son objectif est de permettre un positionnement impeccable d'une fentre (au sens global du terme... cela englobe donc les contrles, etc.) sur un cran, et ceci, quel que soit la rsolution de ce dernier. lien : lien : lien : Obtenir la relation entre le nombre de pixels affichs l'cran et une mesure physique. Position d'un formulaire Comment connatre le nombre de twips par pixel sur le machine en cours ?

Comment Afficher l'aide ADO avec F1 ?


Auteurs : Team Access , L'aide ADO n'est pas affiche lorsque vous faites rfrence la bibliothque d'objets ADO 2.7 ou ultrieur La solution se trouve dcrite sur le site de Microsoft l'URL : http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B827041

- 18 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Avis sur les variables Globales


Auteurs : Maxence HUBICHE , Les variables globales, c'est beurk de chez beurk parce que : Une variable est un espace mmoire stockant des donnes. Moins on utilise d'espace mmoire pour stocker des donnes, plus on en a pour l'application elle-mme. Elles ont une dure de vie quivalente la dure du projet (de l'ouverture la fermeture de la base, en gros), ce qui signifie qu'elles conservent leurs valeurs pendant toute la dure d'excution de la base. Or, il est extrmement rare qu'une variable soit utilise EN PERMANENCE. Donc, on se retrouve avec des donnes en mmoire, avec des temps de latence extrmement longs. Donc, on monopolise de la mmoire pour... rien, la majeure partie du temps de travail de l'application. Stocker l'info dans une table, dans une proprit de la base, dans la base de registre, dans un fichier texte (etc.) reviendrait donc rigoureusement au mme, mais sans utiliser la mmoire.

Comment faire fonctionner Access97 sous Windows VISTA ?


Auteurs : titi95 , Deux problmes rencontrs lors de l'installation d'Access97 sous Windows VISTA 1. impossibilit de crer le fichier System.mdw (groupe de travail) l'installation ou ensuite en utilisant le Wrkgadm.exe. Mme en ouvrant "en tant qu'administrateur". Solution : rcuprer l'ancien fichier et le coller sous Windows\system32. 2. ouverture impossible d'Access : "mmoire insuffisante" Erreur Microsoft. Solution : tlcharger la mise jour SR1 d'Office 97 Office 97 Service Release 1 Ouvrir le .exe de la mise jour avec l'option "administrateur" (clic droit)

- 19 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Messages d'erreur et Bugs A l'ouverture d'Access 97 j'ai le message "mmoire insuffisante"
Auteurs : Tofalu , Ce problme peut se produire si votre ordinateur dispose d'au moins 1Go de mmoire RAM. Les problmes de ce type sont rsolus en appliquant le Office 97 Service Release 1. Ce service pack est disponible sur le site de Microsoft (voir lien ci-dessous).

lien :

Office 97 Service Release 1

Comment supprimer les messages d'Access nous demandant si on est sr de vouloir ouvrir l'application ?
Auteurs : Tofalu , Pour remdier ce problmes il faut respecter ces diffrentes tapes : 1. Installer le service pack 8 du moteur Jet (disponible sur le site Microsoft) 2. Puis dans la base des registres : Sous la cl : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines], crer ou modifier la valeur DWord nomme SandBoxMode avec la valeur 2 Sous la cl : [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security], crer ou modifier la valeur DWord nomme Level avec la valeur 1 Pour faire ceci automatiquement, vous pouvez crer le fichier .reg suivant qu'il vous suffira de lancer afin que les dis changements s'appliques. Depuis le Bloc Note crez un fichier dont vous mettrez le contenu suivant :

Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines] "SandBoxMode"=dword:00000002 [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security] "Level"=dword:00000001

Enregistrez ce fichier avec l'extension .reg.

Conflit d'criture : Cet enregistrement a t modifi par un autre utilisateur...


Auteurs : Papy Turbo , Raison probable : Par SQL, vous devez essayer de modifier quelque chose dans la mme table (ou dans une des tables concernes) que celle affiche dans le formulaire actif. Conclusion : si l'enregistrement que vous modifiez par SQL est contenu dans la mme page (une page = le bloc d'enregistrements qu'Access bloque entirement quand vous modifiez un seul enregistrement de la page) que l'enregistrement en cours dans le formulaire, il y a un conflit : 2 utilisateurs la fois (vous par formulaire + vous par

- 20 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

SQL ou VBA...) essaient de modifier la mme page en mme temps. (disons que ce message serait plus explicite que celui qu'Access affiche) La solution est dlicate mettre au point, mais en gros a consiste toujours enregistrer le formulaire avant de faire un quelconque accs aux donnes en criture . Quelque chose comme :

Private Sub Ouvr_AfterUpdate() If Me.Ouvr Then 'enregistrer le formulaire, si besoin, avant une modif sur la base If Me.Dirty Then DoCmd.RunCommand accmdSaveRecord End If DoCmd.RunSQL "UPDATE T_JourOuvr " & _ "SET T_JourOuvr.ValeurPourCalculBrutVeille = 0 " & _ "WHERE (((T_JourOuvr.Date)=" & _ [Formulaires]![F_ValiderJourFriMoisSuivant]![Date] & "));" End If End Sub

Empcher l'affichage des avertissements de scurit lis aux macros lors de l'ouverture d'une base.
Auteurs : FRED.G , "Pour arrter l'affichage des avertissements lis aux macros, modifiez le niveau de scurit sur la valeur Faible dans l'onglet Niveau de scurit (dans le menu Outils, pointez sur Macro et cliquez sur Scurit)." Si vous n'avez pas l'option Scurit dans le sous-menu Macro, vous pouvez l'y glisser-dposer en allant la chercher dans : Menu Affichage -> Barres d'outils -> Personnaliser... -> Onglet Commandes -> Catgorie Outils -> Commande Scurit...

Erreur d'excution '2164' '2165' : Impossible de dsactiver/masquer le contrle actif


Auteurs : Demco , On ne peut dsactiver le contrle qui est actif comme il est dit clairement dans le message. Il vous suffit donc de donner le curseur un autre contle avant :

Private Sub MonBouton_Click() Me.AutreBouton.SetFocus Me.MonBouton.Enable = False End Sub

Erreur d'excution '3464' : Type de donnes incompatible dans l'expression du critre


Auteurs : Demco , Dans le cas o cette erreur arrive lors d'une requte SQL excute depuis VBA : Vous essayez par exemple d'insrer une valeur dans un champ de type texte sans mettre d'apostrophe, exemple :

DoCmd.RunSQL "UPDATE MaTable SET nom=" & MaZonedeTexte & " WHERE id=" & ZonedeTexteID

- 21 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans ce cas vous essayez de rentrer une valeur de dans le champ nom de type texte sans le mettre entre apostrophes. Essayez plutt :

DoCmd.RunSQL "UPDATE MaTable SET nom ='" & MaZonedeTexte & "' WHERE id=" & ZonedeTexteID

Ainsi cela fonctionnera. Pour mieux comprendre la diffrence entre les deux criture, affichez les deux lignes grce des MsgBox, vous verrez rapidement la diffrence. Je vous invite galement consulter le tutorial de cafeine ci-dessous.

lien :

Initiation - Dbogage : requtes crites par VBA

Erreur 429 : Un composant Activex ne peut crer d'objet


Auteurs : Ova , Cette erreur peut apparatre sur un poste alors que l'on n'a aucun problme sur un autre. - Soit il y a une erreur de code (voir le dtail chez Microsoft en suivant le lien plus bas), - Soit la DLL DAO360.dll est absente (cas classique : il suffit de l'installer) - Soit elle est prsente ... mais mal enregistre. Microsoft conseille de dsinstaller Office, puis de rinstaller. Gnralement, aprs a marche. Cas (trs) particulier (et c'est la prcision...) : Si l'utilitaire de sauvegarde automatique d'Outlook est install (backup des *.pst), on obtient l'erreur 429. Si on le dsinstalle, a marche. Il semble donc que les 2 soient incompatibles. L'erreur se dclenche uniquement si l'application "fille" (Word, Excel, Outlook...) est ferme. Si elle est ouverte, a marche (CreateObject se comporte comme GetObject). Voila, nous n'avons aucune explication technique cela ... mais la dsinstallation du backup d'Outlook a rsolu notre problme. lien : http://support.Microsoft.com/default.aspx?scid=kb;fr;244264

Erreur 429 Un composant active X ne peut crer l'objet Access 97


Auteurs : aurel64 , Concernant cette erreur d'Access (97) voici un solution pour rgler le problme. 1) Vrifier dans le rpertoire : C:\Program Files\Fichiers communs\Microsoft Shared\DAO\ que dao350.dll ainsi que dao360.dll sont bien prsentes Si ce n'est pas le cas je pense qu'un rinstallation s'impose... 2)Une fois cette vrification effectue, ouvrez la base de registre (Dmarrer, excuter , taper : regedit) 3)Sauvegarder entirement votre base de registre avant toutes modifications 4)Une fois dans la base de registre allez dans : HKEY_CLASSES_ROOT\CLSID 5)Dans cette arborescence vous devez trouver 9 cls se rapportant respectivement dao350.dll et dao360.dll (respecter l'ordre)
- 22 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans mon cas les 9 cls concernant la dll dao350 taient manquantes mme aprs rinstallation complte d'office 97 pro + patch SR2 6)Une fois identifies il ne vous reste plus cas rcuprer ces cls d'un autre poste (de version identique bien sur) ou de les crer sur le model existant (exemple dao360) rfrences des cls et sous cls a crer : {00000010-0000-0010-8000-00AA006D2EA4} InprocServer32 ProgID {00000019-0000-0010-8000-00AA006D2EA4} Dernire tape, il vous reste rajouter dans l'arborescent HKEY_CLASSES_ROOT les cls : DAO.DBEngine.35 DAO.Field.35 DAO.Group.35 DAO.Index.35 DAO.PrivateDBEngine.35 DAO.QueryDef.35 DAO.Relation.35 DAO.TableDef.35 DAO.User.35 HKEY_CLASSES_ROOT\Typelib {00025E01-0000-0000-C000-000000000046} 4.0 5.0 {00025E04-0000-0000-C000-000000000046}

Impossible de compacter ma base de donnes, erreur : La table TempMSysAccessobjects existe dj


Auteurs : Tofalu , Faites une sauvegarde de la base. Ensuite, Dans Outils, option, Onglets Affichage, activez la case : Objets Systmes. Vous allez ainsi voir toutes les tables systmes de ta base. Essayez de supprimer les tables systmes qui commencent par Temp. Normalement, aprs vous pouvez compacter.

L'assistant Access ne se dclenche plus (par exemple lorsque je cre un sous formulaire ou un bouton de commande, etc.).
Auteurs : dok flint , Mthode douce, par Maxence Hubiche : dans la bote outils, cliquez sur le 2 bouton (baguette magique) pour qu'il soit enfonc. (attention il s'agit de la baguette magique qu'il y a dans la BOITE A OUTILS pas dans la BARRE D'OUTILS)... Mthode forte (si le problme n'a pas t rsolu en douceur...), par dok flint : avant tout, assurez-vous que les assistants ont t slectionns dans les options d'installation d'Access. Si tel est le cas, alors le problme avec les assistants peut venir d'un problme au niveau d'Access. La solution est d'essayer de dsinstaller Office puis le rinstaller. Si a ne marche toujours pas, il faut employer les grands moyens, en rinstallant Windows.

- 23 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Autre mthode : l'aide de l'explorateur Windows, recherchez le fichier dao360.dll et notez son chemin. Ensuite, allez dans le menu Dmarrer\Excuter et tapez : regsvr32 "chemin_du_fichier/dao360.dll" et cliquez sur OK. Relancez Access.

Ma dll n'est pas prise en compte lors de l'empaquetage ?


Auteurs : argyronet , Bien, prenez votre fichier dll et dplacez-le vers WinSys32. Ensuite cliquez deux fois dessus. Comme il risque de n'y avoir aucune association de fichier par rapport l'extension DLL ce qui est normal, vous aurez la boite de dialogue permettant d'en slectionner un qui va apparatre. De l, cliquez sur Parcourir... Localisez regsvr32.exe dans le dossier WinSys32 et validez. Vous aurez un message comme quoi il est bien inscrit. Ensuite rfrencez-le proprement dans votre projet Access. Crez votre MDE aprs avoir compil et vrifi votre code. Il ne vous reste plus qu' crer votre paquetage.

Message d'erreur : Erreur d'accs au fichier. Il se peut que la connexion rseau ait t perdue. / Error accessing file. Network connection may have been lost
Auteurs : sasmira_ , La rponse se trouve sur le site de Microsoft : http://support.microsoft.com/default.aspx?scid=kb;fr;304548

Message d'erreur : Le projet ne peut pas etre afficher.


Auteurs : argyronet , Une solution possible est que ce soit un message d'empchement de visualisation de projet li un problme de version. Par exemple, votre projet a t cr en Access 2000 et vous l'ouvrez avec Access XP ou 2003. Si c'est le cas, il faut d'abord le convertir au bon format avant de pouvoir accder au code.

Mon application fonctionne sur certains postes, mais pas sur tous.
Auteurs : Demco , Il s'agit probablement d'une DLL manquante. Pour le savoir : _Aller dans un module (o il y a le code VBA).

- 24 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

_Faire outils/rfrence. La liste des dll s'affiche alors. A ct de l'une d'elle est srement crit : "MANQUANTE" Il faut dcocher cette rfrence et fermer le formulaire. Aprs, cela devrait fonctionner ! :)

Pourquoi vb s'arrte sur une erreur malgr "on error goto" ou "on error resume next" ?
Auteurs : nightfall , Pour corriger ce problme, allez dans le menu Outils - Options, cliquez sur l'onglet "Gnral" et pour l'option "Rcupration d'erreur", slectionnez la valeur "Arrt sur les erreurs non gres". lien : FAQ VB

Erreur 2191 lors d'un tri d'enregistrement dans un tat


Auteurs : loufab , Pour viter cette erreur, il faut dfinir le champ trier et activer le tri. L'ordre de tri se dfini avec OrderBy et OrderByOn. Placez le code dans Open_Report et mettez un On Error Resume Next au dbut.
On Error Resume Next Me.OrderBy = "table.champ" Me.OrderByOn = True

[ODBC]Erreur Argument Invalide suite migration serveur - Liaison des tables


Auteurs : shepp , Suite une migration de serveur, d'une version 97 d'ACCESS sur un serveur Windows 2000 SP4 (Environnement CITRIX) une version 2003 sur un serveur Windows 2003 Standars Edt SP1 (Environnement CITRIX PS4), une erreur "Argument Invalid" est leve. Le problme vient de la version du fichier MSJET40.DLL. Il faut qu'il soit en version 4.06 ou infrieur. Hors, sous Windows 2003, la version est 4.09. Il faut la remplacer en mode sans echec pour viter la mise jour du fichier en question par le systme.

Comment viter le message d'erreur "L'action Open Report a t annule" l'ouverture d'un tat ?
Auteurs : Maxence HUBICHE , Lors de l'ouverture d'un tat sans donnes un message d'erreur : "L'action Open Report a t annule" s'affiche, pour viter cela il suffit d'intercepter l'erreur leve par Access (err 2501). Le principe est de faire une gestion d'erreur.
Private Sub OpenReport() On Error GoTo err_OpenReport DoCmd.OpenReport ("MonEtat")

err_OpenReport: - 25 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Select Case err.Number Case 2501 'rien faire Case Else MsgBox err.Description End Select End Sub

Problme lors d'un dplacement rapide d'un enregistrement un autre avec gestion d'images.
Auteurs : Arkham46 , Dans une base Access grant des images par lien lorsque l'on se dplace rapidement d'un enregistrement l'autre au bout d'un moment il quitte purement et simplement sans message. Apparemment c'est la bote de dialogue de progression du filtre d'import qui n'apprcie pas la manipulation. En empchant cette bote de progression d'apparatre, cela semble rsoudre le problme. Pour cela, il faut modifier la valeur de la cl de registre ShowProgressDialog. Pour le filtre Jpeg par exemple :
HKEY_LOCAL_MACHINE\Software\Microsoft\Shared Tools\Graphics filters\Export\Jpeg\Options \ShowProgressDialog = "No"

Erreur 3033 : Autorisation pour utiliser l'objet MSysTables


Auteurs : Lou Pitchoun , Lorsque vous scurisez une base de donnes et que vous attribuez des droits des groupes, veuillez faire attention ce que ces groupes doivent ou peuvent effectuer comme action dans l'application. En effet, si des groupes doivent excuter du code qui modifie une requte : veillez leur donner les droits en ce qui concerne la modification de la structure des requtes, auquel cas cette erreur apparaitra :
Erreur d'excution 3033: Vous n'avez pas l'autorisation requise pour utiliser l'objet MSysTables. Demandez l'autorisation requise votre administrateur systme ou la personne ayant conu cet objet.

A noter : lorsque vous cocherez 'Modifier la structure' pour les requtes, cette case sera systmatiquement coche pour les tables.

Pourquoi ma fentre de base de donnes apparat vide ?


Auteurs : loufab , Fentre de base de donnes apparait vide (version 2000 et 2002). Avec des bases de donnes issue d'anciennes versions et qui n'ont pas t converties, la fentre de base de donnes peut s'afficher vide lorsque le mode d'affichage est en icne. Il suffit alors de changer de mode d'affichage, (liste ou dtails) pour faire apparaitre les objets.

- 26 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Une conversion et un compactage suffisent rgler ce problme.

Pourquoi un nouveau Module insr n'apparat pas dans l'diteur ?


Auteurs : loufab , Module insrer dans VBE n'apparat pas dans la fentre base de donnes : Il peut arriver suivant les versions d'ACCESS qu'un module directement insr partir du VBE (click droit dans l'explorateur de projet, insrer un module) n'apparat pas dans la fentre base de donnes. Pourtant il y est et ses procdures et fonctions sont accessibles. Il suffit de sauvegarder le nouveau module pour qu'il apparaisse dans la fentre de base de donnes.

Touche Shift inactive avec installation du runtime avant version d'Access.


Auteurs : isa911 , Problme rapport par isa911 : Installation d'une base sur un nouveau poste, la touche shift est inactive sans l'avoir fait par code. Aprs analyse du problme le Runtime d'Access a t install avant Access. Dans le lien suivant vous trouverez la solution pour rsoudre ce souci : (kb235280) Solution issu de MSDN

lien :

Solution issu de MSDN (kb235280)

Access 2003 : Images jpg non supportes par Access.


Auteurs : ShaftyW , Il se peut lorsque vous intgr des images avec l'extension jpg que vous rencontriez des soucis, Access vous signale que l'image n'est pas supporte, pour cela vous pouvez tlcharger sur le site de Microsoft une application corrigeant ce problme : Office File Converter Pack

lien :

Gestion de photos par formulaire par Charles A. [cafeine]

- 27 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Administrer une base de donnes Comment dconnecter les utilisateurs d'une base de donnes ?
Auteurs : Morsi , L'ide est que le formulaire principale de l'application sache quand est ce qu'il faut lancer la routine de dconnexion des utilisateurs. Pour cela, on cre une table avec un seul champs de type oui/non et un seul enregistrement : Administration(LogOff(oui/ non)). L'administrateur de la base peut ensuite cacher cette table (proprit, table cach) et lui seul peut cocher la case LogOff. Il faut maintenant utiliser l'vnement minuterie du formulaire principale qui lance la vrification de la routine qui dconnectera les utilisateurs (on utilise un intervalle de 5 minutes). Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Private Sub Form_Timer() On Error GoTo Err_LogOffChk Dim Lancer As Boolean Dim rcd As DAO.Recordset Set rcd = CurrentDb.OpenRecordset("Administration") rcd.MoveFirst Lancer = rcd.Fields(0) rstLO.Close CurrentDb.Close ' --Si la case est coche If Lancer Then Application.Quit acQuitSaveAll Exit_LogOff: Exit Sub Err_LogOffChk: MsgBox Err.Number & vbCrLf & Err.Description, vbInformation, "Erreur" Resume Exit_LogOff End Sub

lien : lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ? Comment utiliser une application en mode multi-utilisateurs par Dolphy35

Documenter une base Access


Auteurs : Cafeine , Menu outils / analyse / documentation. lien : Comment sortir un descriptif dtaill de toutes ses tables et de leurs attributs ?

Ouvrir une base en mode exclusif


Auteurs : Morsi ,
Function Ouvrir_Base_Exclusif() Dim Bd As Database On Error Resume Next Set Bd = DbEngine (0).OpenDatabase("C:\Ma_base.mdb", True) If Err.Number<> 0 Then Msgbox Err.Number & " Impossible d \'ouvrir la base en mode Exclusif " & vbcrlf & Err.Description, VbInformation Else

- 28 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MsgBox "La base de donnes est ouverte en mode exclusif.", VbInformation End If End Function

Si on obtient le numro d'erreur 3262, c'est que la base est ouverte en mode partag par un autre utilisateur.

Crer une date d'expiration pour une application


Auteurs : Morsi , Pour mettre une date d'expiration la base et dsactiver le run-time de votre application Access, appelez cette fonction l'ouverture du formulaire de dmarrage
Public Function DateExpirationApplication() If Date >= DateSerial(2003, 12, 31) Then MsgBox "La date d\'expiration de l\'application est dpasse", vbExclamation DoCmd.Quit End If End Function

Inhiber la touche MAJ au dmarrage


Auteurs : Frank , Il est intressant des fois d'inhiber l'effet de la touche MAJ (Ne pas excuter les vnement de chargement de la base) pour ne pas afficher le conteneur de la base l'utilisateur. Pour cela on dispose de deux procdures, l'une qui l'inhibe SetBypassProperty, l'autre qui l'active UnSetBypassProperty.
Sub SetBypassProperty() Const DB_Boolean As Long = 1 ChangeProperty "AllowBypassKey", DB_Boolean, False End Sub Sub UnSetBypassProperty() Const DB_Boolean As Long = 1 ChangeProperty "AllowBypassKey", DB_Boolean, True End Sub Function ChangeProperty(strPropName As String, varPropType As Long, varPropValue As Variant) As Integer Dim dbs As Database, prp As Variant Const conPropNotFoundError = 3270 Set dbs = CurrentDb On Error GoTo Change_Err dbs.Properties(strPropName) = varPropValue Change_Bye: Exit Function Change_Err: If Err = conPropNotFoundError Then ' Proprit non trouve. Set prp = dbs.CreateProperty(strPropName, _ varPropType, varPropValue) dbs.Properties.Append prp Resume Next Else ' --Erreur inconnue. Resume Change_Bye End If

- 29 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

lien : Comment empcher le lancement du formulaire de dmarrage ou de la macro AUTOEXEC ?

Afficher la liste des connects une BDD


Auteurs : Morsi , Pour connatre la liste des connects une base de donnes, il suffit d'explorer le fichier .ldb. Pour ce fait, on aura besoin de dfinir un type :
Private Type Un_Connect ' --nom PC PC(1 To 32) As Byte ' --nom utilisateur User(1 To 32) As Byte End Type

Cette fonction renvoie alors la chane des connects:


Public Function WHO_IS() As String ' -- retourne une liste spare par des points virgules indiquant le nom de l'ordinateur ainsi que ' -- l'utilisateur connect la base. On Error GoTo Err_WHO_IS Dim Mon_LDB As Integer, i As Integer Dim Mon_Chemin As String Dim Mon_Log As String, Ma_Connexion As String Dim Nom_PC As String, Nom_Utilisateur As String Dim utilisateur As Un_Connect Mon_Chemin = CurrentDb.Name CurrentDb.Close ' --Aller chercher le LDB Mon_Chemin = Left(Mon_Chemin, InStr(1, Mon_Chemin, ".")) + "LDB" Mon_LDB = FreeFile ' --Ouvrir le LDB Open Mon_Chemin For Binary Access Read Shared As Mon_LDB ' -- Lire le LDB Do While Not EOF(Mon_LDB) ' -- Chaque enregistrement lu est plac dans la variable utilisateur pour y tre trait. Get Mon_LDB, , utilisateur With utilisateur i = 1 Nom_PC = "" ' -- nom du PC While .PC(i) <> 0 Nom_PC = Nom_PC & Chr(.PC(i)) i = i + 1 Wend i = 1 Nom_Utilisateur = "" ' -- nom de l'utilisateur While .User(i) <> 0 Nom_Utilisateur = Nom_Utilisateur & Chr(.User(i)) i = i + 1 Wend End With Mon_Log = Nom_PC & " | " & Nom_Utilisateur If InStr(Ma_Connexion, Mon_Log) = 0 Then Ma_Connexion = Ma_Connexion & Mon_Log & ";" End If Loop Close Mon_LDB ' --WHO_IS contient la liste des utilisateurs WHO_IS = Ma_Connexion

- 30 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exit_WHO_IS: Exit Function Err_WHO_IS: MsgBox Err.Number & vbCrLf & Err.Description, vbInformation, "Erreur" Close Mon_LDB Resume Exit_WHO_IS End Function

Formulaire Login/mot de passe


Auteurs : Morsi , Pour excuter ce code, il faut activer la rfrence : Microsoft DAO 3.x Object Library Le formulaire login/mot de passe permettra un utilisateur de s'identifier et la base de le reconnatre et de dcider de lui donner ou non la permission d'accder la base. Pour ce faire, on aura besoin d'une table T_User et d'un formulaire " F_Connexion " Table T_User (TRIGRAMME, NOM, PRENOM, GROUPE, PASWD) tous les champs sont de type texte. Un enregistrement exemple de cette table : T_User(SED, SEBASTIEN, DULOT, Administrateur, root) L'vnement on_click du bouton Connexion :
Private Sub connexion_Click() Me.Requery Dim sql, User_id, User_groupe As String Dim rs As DAO.Recordset Static i As Byte sql = "SELECT * FROM T_USERS WHERE TRIGRAMME = \'" & Me.txt_user & "\' AND PASWD =\'"& Me.txt_pass & "\';" Set rs = CurrentDb.OpenRecordset(sql) If Not rs.EOF Then DoCmd.OpenForm "F_Autre_Formulaire", acNormal, , , , acWindowNormal DoCmd.close acForm, "F_CONNEXION" User_id = rs("TRIGRAMME").value User_groupe = rs("GROUPE").value Else MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion" i = i + 1 End If If i = 3 Then Msgbox "Vous avez dpass le nombre de tentatives autoriss", vbCritical DoCmd.Quit End If End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Lister les tables lies


Auteurs : Morsi , Pour connatre l'origine des tables lies, il suffit d'explorer la table MsysObjects. Vous pouvez alors crer un formulaire avec trois zones de texte dans la section dtail : Nom de la table, Nom tranger de la table, Chemin de la table. Dans la source de donne du formulaire, il faut mettre cette requte :
- 31 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

SELECT Name, ForeignName, Database FROM MSysObjects WHERE MSysObjects.Type=6;

N'oublier pas de renseigner la source de donne des zones de listes.

Comment dans du code vrifier qu'un utilisateur appartient un groupe ?


Auteurs : Bidou , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Exemple en DAO :
Dim Utilisateur As DAO.User, MonGroup As DAO.Group Set Utilisateur = DBEngine.Workspaces(0).Users(DBEngine.Workspaces(0).UserName) For Each MonGroup In Utilisateur.Groups If MonGroup.Name = "Admins" Then MsgBox Utilisateur.Name & " est dans le groupe " & MonGroup.Name Exit For End If Next

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Tester la version d'Access utilise


Auteurs : Bidou ,
Dim Valeur As Variant Valeur = SysCmd(acSysCmdAccessVer)

Si Valeur vaut 8.0, la version est access97. 9.0 correspond Access 2000 etc.

Comment nettoyer le journal des connexion afin d'enlever les utilisateurs qui ne sont en fait plus connect ?
Auteurs : Lucifer , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library, Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library
Const JET_SCHEMA_USERROSTER = "{947bb102-5d43-11d1-bdbf-00c04fb92675}" Sub WriteUserConnected() 'To determine who is logged onto a database Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim i, j As Long Dim rsUC As DAO.Recordset Set rsUC = db.OpenRecordset("T_USER_CONNECTED", dbOpenDynaset) Set cn = CurrentProject.Connection

- 32 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' ' ' '

The user roster is exposed as a provider-specific schema rowset in the Jet 4.0 OLE DB provider. You have to use a GUID to reference the schema, as provider-specific schemas are not listed in ADO's type library for schema rowsets

Set rs = cn.OpenSchema(adSchemaProviderSpecific, , JET_SCHEMA_USERROSTER) 'Output the list of all users in the current database. db.Execute "DELETE * FROM T_USER_CONNECTED" While Not rs.EOF With rsUC .AddNew !COMPUTER_NAME = rs.Fields(0) !LOGIN_NAME = rs.Fields(1) !CONNECTED = rs.Fields(2) !SUSPECTED_STATE = rs.Fields(3) .Update End With rs.MoveNext Wend End Sub

Pensez crer une table T_USER_CONNECTED.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Rparer une base Access par dcompilation


Auteurs : =JBO= , Il y a beaucoup de messages qui voquent des applications corrompues qu'il faut reprendre en exportant tout ce qui peut l'tre dans un nouveau fichier MDB, les problmes de mmoire "written" "read", etc. Bien souvent, ces problmes pourraient tre rsolus par une dcompilation. Je m'explique: L'application Access permet d'utiliser diffrentes Options dans la ligne de commande de dmarrage. Dans l'aide, chercher: >> Options de la ligne de commande de dmarrage Il existe une option non documente /decompile; elle permet de remettre en ordre de marche une application MDB qui donne des signes de dysfonctionnement incomprhensibles. Voici un exemple d'utilisation:

"C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" "d:\bd1.mdb" /decompile

Il existe beaucoup de pages sur le web qui traitent la question. Entre autres, le lien: http://www.granite.ab.ca/access/decompile.htm CONSEILS:

- 33 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

1. Faire une sauvegarde du fichier avant de le dcompiler. 2. Aprs avoir dcompil le fichier, le compacter pour rcuprer tout l'espace libr par la dcompilation. CERISE SUR LE GATEAU DE LA BASE DE REGISTRE : Astuce pour ne plus avoir retaper toujours et encore cette sacre ligne de commande, ni crer des raccourcis ad hoc. Sur mon PC, j'ai modifi la base de registre de Windows pour que le menu contextuel gr par le bureau (Windows explorer inclus) donne enfin un accs rapide aux fonctions de dcompactage et de dcompilation. Le code qui suit doit tre copi dans un fichier nomm [AccessDecomp.reg] (c'est l'extension .reg qui importe). Il ne reste plus qu' l'excuter pour enrichir le menu contextuel. ATTENTION: ceci ne convient que pour Access 2000 (version 9). Pour d'autres versions merci d'adapter votre cas et de nous communiquer les modifications utiles.

REGEDIT4 [HKEY_CLASSES_ROOT\Access.Application.9\shell] [HKEY_CLASSES_ROOT\Access.Application.9\shell\Compacter] "EditFlags"=hex:01,00,00,00 @="&Compacter" [HKEY_CLASSES_ROOT\Access.Application.9\shell\Compacter\command] @="\"C:\\Program Files\\Microsoft Office\\Office\\MSACCESS.EXE\" \"%1\" /COMPACT " [HKEY_CLASSES_ROOT\Access.Application.9\shell\Dcompiler] "EditFlags"=hex:01,00,00,00 @="&Dcompiler" [HKEY_CLASSES_ROOT\Access.Application.9\shell\Dcompiler\command] @="\"C:\\Program Files\\Microsoft Office\\Office\\MSACCESS.EXE\" \"%1\" /DECOMPILE "

Hlas, mme si dcompiler apporte souvent une solution, il n'empche que de temps autre il faut quand mme "reprendre" un fichier MDB rcalcitrant. Et, mon avis, c'est le pire dfaut d'Access et c'est un norme dfaut !!!

A l'ouverture de ma base de donnes, j'obtiens le message d'erreur "signet non valide"


Auteurs : Maxence HUBICHE , Cela signifie que le fichier de la base de donnes est corrompu. Dans la plupart des cas, un simple compactage de la base de donnes ou une rparation avec l'utilitaire JetComp sera suffisant. Si cela ne rsout pas le problme, il vous faudra importer un un chacun des objets dans une nouvelle base de donnes.

Comment faire si je dois reprendre une application Access et que tout est sur le serveur (formulaires, tats, ...) ?
Auteurs : Papy Turbo , Si jamais vous devez travailler sur une base de donnes ne respectant pas le schmas classique de Client/Serveur il faut que vous spariez : les tables (qui restent sur le serveur), -> n'oubliez pas la sauvegarde quotidienne

- 34 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

de l'application : tout le reste ainsi que les mmes tables, mais attaches. -> pas besoin de sauvegardes tous les jours, juste une seule copie de sauvegarde pour tout le monde.

Une fois ces modifications apportes vous allez constater des performances hors du commun (il n'est pas rare de voir des formulaires mettre jusqu' 20 minutes pour s'ouvrir, lorsque l'application est sur le serveur, puis 15 30 secondes, aprs avoir recopi l'application localement...) lien : Comment grer le fait que plusieurs utilisateurs aient accs mon application ?

Comment grer le fait que plusieurs utilisateurs aient accs mon application ?
Auteurs : Papy Turbo , Tout d'abord, une chose ne jamais faire est de mettre l'application sur le serveur puis de crer un raccourci pour chaque utilisateur devant l'utiliser. Car dans ce cas deux utilisateurs sur deux postes diffrents peuvent ouvrir le mme formulaire partag sur un serveur. Voici la logique suivre : on partage les tables contenant les donnes, dans une base de donnes situe sur un serveur, on ne partage jamais l'application (tables attaches, formulaires, requtes, tats, etc.). Chaque poste possde une application.

Sinon, ds qu'un utilisateur modifie un formulaire, il faut s'attendre voir les mmes modifications sur tous les postes, avec de longs dlais (passage d'info par le rseau), d'o un cafouillage total pour Access. lien : Comment faire si je dois reprendre une application Access et que tout est sur le serveur (formulaires, tats, ...) ?

Les formulaires de mon application partage sont trs long ouvrir


Auteurs : Papy Turbo , Votre projet doit tre divise en deux fichiers Access : la base de donnes et l'application (formulaires, tats,...). il faut imprativement que vous recopiez l'application sur chaque poste et que la base de donnes soit sur le Serveur. En effet, seule la base de donnes est destine tre partage. L'application ne doit jamais l'tre, sous peine de mettre trs longtemps (jusqu' plusieurs minutes si le rseau est encombr) pour ouvrir certains formulaires, d'obtenir des erreurs quasi incomprhensibles lorsque plusieurs utilisateurs ouvrent les mmes formulaires en mme temps : affichage incomplet de certains contrles, etc. s'il y a des tables locales, dans l'application elle-mme, ces tables doivent tre propres chaque utilisateur et non pas partages, sous peine de voir les donnes changer toutes seules lorsqu'un autre utilisateur les modifie...

De plus, ceci est cohrent avec une bonne politique de sauvegarde : une copie de secours de l'application (pourquoi pas sur le serveur) suffit pour rinstaller l'application en cas de panne sur un poste. Inutile de la sauvegarder tous les jours, si elle n'est pas modifie par un programmeur.

- 35 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

des copies quotidiennes de la base de donnes sont indispensables dans les sauvegardes (backups).

Comment modifier le mot de passe de la base de donnes en VBA ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Il faut appliquer la mthode NewPassword de l'objet DataBase en utilisant DAO
Sub ChangeMotPass() On Error GoTo err Dim odb As DAO.Database Set odb = CurrentDb odb.NewPassword "ancien", "nouveau" MsgBox "Mot de passe chang" fin: Set odb = Nothing Exit Sub err: Select Case err.Number Case 3031 MsgBox "Mot de passe non valide", vbCritical, "Scurit" Case Else MsgBox "Une erreur est survenue pendant le changement du mot de passe", _ vbCritical, "Erreur" End Select Resume fin End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment ajouter/modifier une proprit sur une base de donnes ?


Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

Sub SetProperty(strName As String, intType As Variant, vValue As Variant) Dim prpNew As DAO.Property Dim db As DAO.Database Set db = CurrentDb() ' Tente de dfinir la proprit spcifie. On Error GoTo Err_SetProperty db.Properties(strName) = vValue Exit_SetProperty: db.Close Set db = Nothing Exit Sub

- 36 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Err_SetProperty: ' L'erreur 3270 signifie que la proprit est ' introuvable. Select Case Err.Number Case 3270 ' Cre une proprit, dfinit sa valeur et ' l'ajoute la collection Properties. Set prpNew = db.CreateProperty(strName, intType, vValue) db.Properties.Append prpNew Case Else MsgBox "erreur n" & Err.Number & vbCrLf & Err.Description End Select GoTo Exit_SetProperty End Sub

exemples d'utilisation :

setproperty "NouvellePropriete", dbboolean, false

ou

setproperty "RepTravail", dbtext, "C:\Program Files\Office\"

Il sera ensuite facile de rcuprer dans le code cette proprit :

Dim strPath as String strPath = CurrentDB.Properties("RepTravail")

lien : Dfinition et manipulation de donnes avec DAO par Tofalu lien : Comment dclarer une rfrence dans MS-Access ? lien : Comment modifier le titre de l'application ?

- 37 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Tables et Champs Comment grer les images dans une base de donnes ?
Auteurs : Demco , Comme souvent la solution se trouve sur le site de sqlpro.

lien : Grer les images dans une base de donnes lien : Comment afficher dans un formulaire une image se trouvant dans un dossier ? lien : Gestion de photos par formulaire

Comment rcuprer le nom des tables et de leurs champs ?


Auteurs : Gal Donat , Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Public Sub test() Dim Db As DAO.Database Dim tbd As DAO.TableDef Dim fld As DAO.Field Set Db=CurrentDb For Each tbd In Db.TableDefs For Each fld In tbd.Fields MsgBox "Table : " & tbd.Name & " Colonne : " & fld.Name Next Next End Sub

lien : Lister les tables et les champs d'une base de donnes lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment sortir un descriptif dtaill de toutes ses tables et de leurs attributs ?


Auteurs : ZEUSGR , Voir : Outils / Analyse / Documentation lien : Lister les tables et les champs d'une base de donnes

[Dbutant] Comment remplir une table l'aide d'un formulaire ?


Auteurs : FRED.G , La faon la plus simple est d'utiliser des contrles dans un formulaire dpendant. Pour cela il faut crer un nouveau formulaire en utilisant l'Assistant ou en l'ouvrant en mode Cration. Pour dfinir soi-mme les contrles dans le formualire, il suffit de les faire glisser depuis la barre d'outils "Bote outils", vers une section (Dtail ou autre) du formulaire.

- 38 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour lier un contrle (par ex. un zone de texte) d'un formulaire un champ d'une table, il suffit de dfinir la proprit Recordsource (Source) du formulaire en choisissant la table en question ou une requte base sur la table, puis de dfinir la proprit Controlsource (Source contrle) du contrle en choisissant un champ de la table ou requte source. Ainsi les champs lis seront automatiquement mis jour dans la table correspondante lors de la saisie dans les contrles du formulaire. Remarque : pour dfinir en mode Cration les proprits du formulaire, il faut faire un clic droit sur le petit carr qui se trouve l'intersection des rgles en haut gauche du formulaire. pour dfinir les proprits d'un contrle, il faut faire un clic droit sur celui-ci.

- 39 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Tables et Champs > Tables Comment attacher une table Oracle ?
Auteurs : Lucifer , Dans Panneau de configuration/Outils d'administration/Source de donnes ODBC crez un dsn via l'administrateur de source de donnes. Sur l'onglet system DSN. Cliquez sur Add Choisissez dans la liste le bon pilote (au choix celui de Microsoft ou celui d'oracle). Vous avez 3 informations renseigner : Le nom du DSN que vous voulez crer Le nom du User Le nom de la source (chane que vous utilisez pour vous connecter via SQL Plus (3me zone) et que vous retrouvez dans votre tnsnames.ora) Dans Access, dans l'onglet table, faites Nouveau/Attacher la table. Choisissez dans type de fichier source de donnes ODBC, vous choisissez le DSN que vous venez de crer puis slectionnez la ou les tables attacher. lien : Comment utiliser Access pour excuter des requtes sur d'autres types de base de donnes ?

Comment connatre la date de cration d'une table en DAO ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Coller ce code dans un nouveau module:
Public function DateCreation(PTable as string) as Date On error goto err Dim DB as DAO.Database Dim T as DAO.Tabledef Set DB=CurrentDb Set T=DB.TableDefs(PTable) DateCreation=T.DateCreated Goto fin: err: Msgbox "Impossible d\'accder la table" fin: Set DB=nothing Set T=nothing End Function

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment connatre la date de dernire modification d'une table en DAO ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Coller le code suivant dans un nouveau module :

- 40 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Public function DateMaj(PTable as string) as Date On error goto err Dim DB as DAO.Database Dim T as DAO.Tabledef Set DB=CurrentDb Set T=DB.TableDefs(PTable) DateMaj=T.LastUpdated Goto fin: err: Msgbox "Impossible d\'accder la table" fin: Set DB=nothing Set T=nothing End Function

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Quelle est la diffrence entre table lie et table importe ?


Auteurs : Demco , Table importe : amne toute la table sur la base de donnes, elle n'aura aucun lien avec la table d'origine, si vous modifiez les donnes dans l'une, a n'aura aucune rpercutions dans l'autre. Table lie : les tables lies ont les MEMES DONNEES. Si vous modifiez des donnes dans une, elles seront modifies dans l'autre. En fait, les deux tables lies sont une et mme table.

Comment exporter plusieurs tables en mme temps ?


Auteurs : argyronet , Il faut utiliser la commande DoCmd.TransfertDatabase pour transfrer une table. Il vous suffit de crer un tableau contenant le nom de toutes les tables, et d'inclure la commande prcdente dans une boucle qui lira un un chaque nom de table. lien : Comment rcuprer le nom des tables et de leurs champs ?

Est-il possible de modifier les tables systmes ?


Auteurs : Lucifer , Non, d'ailleurs elles sont en lecture seule.

Comment connatre le nombre d'enregistrements d'une table ou d'une requte ?


Auteurs : Demco , Pour une table ou bien une requte :
Dim LaVariable As Integer LaVariable = DCount("monChamp","NomTableOuNomRequete")

- 41 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ou bien (seulement pour une table) :


Currentdb.TableDefs("NomTable").RecordCount

Comment renommer une table avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Puis dans un module, crire le code suivant :
Function RenommerTable(Ancien As String, Nouveau As String) As Boolean On Error GoTo err: Dim MCat As New ADOX.Catalog Dim MTable As ADOX.Table Set MCat.ActiveConnection = CurrentProject.Connection Set MTable = MCat.Tables(Ancien) MTable.Name = Nouveau RenommerTable = True err: Set MCat = Nothing Set MTable = Nothing End Function

Utilisation :
MsgBox RenommerTable("Produit", "Produit2")

Affiche true si la table Produit t renomme avec succs en Produit2. Renvoie false en cas d'echec.

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment supprimer une table avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Puis dans un module, crire le code suivant :
Function SupprimerTable(NomTable As String) As Boolean On Error GoTo err Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection MCat.Tables.Delete (NomTable) SupprimerTable = True err: Set MCat = Nothing End Function

- 42 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Utilisation :
MsgBox SupprimerTable("test")

Affiche vrai si la table test a t corectement supprime.

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment faire pour que toutes les tables lies ne soient plus prsentes dans ma base de donnes ?
Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Public Function xKillLinks() Dim Set Dim For BD As DAO.Database BD = CurrentDb tb As DAO.TableDef Each tb In BD.TableDefs If left(tb.name, 4) <> "MSys" Then If Len(tb.connect) > 0 Then DoCmd.RunSQL "DROP TABLE [" & tb.name & "] ;" Debug.Print "effacement de " & tb.name & " -=#=> " & tb.connect End If End If Next tb End Function

Comment savoir si une table existe ?


Auteurs : Team Access , Une mthode parmi d'autres : ici par capture d'erreur.
Function ExistTable2( ByVal strTabl As String) As Boolean Dim str As String On Error GoTo err01 str = CurrentDb.TableDefs(strTabl).name ExistTable2= True Exit Function err01: Select Case Err.Number Case 3265 ExistTable2 = False End Select End Function

lien : lien :

Comment tester l'existence d'une requte en VBA et la supprimer ? Comment supprimer une table si elle existe ?

Comment tester l'existence d'une table avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet :

- 43 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Puis dans un module, crire le code suivant :
Function ExisteTable(NomTable As String) As Boolean On Error GoTo err: Dim MCat As New ADOX.Catalog Dim MTable As ADOX.Table Set MCat.ActiveConnection = CurrentProject.Connection Set MTable = MCat.Tables(NomTable) ExisteTable = True err: Set MCat = Nothing Set MTable = Nothing End Function

Utilisation :
Debug.print ExisteTable("Produit")

Affiche dans la fentre de deboguage True si la table produit existe, False sinon.

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment afficher les tables masques ?


Auteurs : Team Access , Pour afficher les tables et autres objets masqus, rendez-vous dans le menu Outils, puis Options. Activez la case : Objets masqus.

Comment fusionner deux tables, en ne gardant pas les enregistrements de la table 2 identiques ceux de la table 1 ?
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Un moyen assez simple et de crer une table identique la premire mais vide avec vos champs qui ne doivent pas tre identiques en cl primaires. Ensuite, via VBA, vous insrez les donnes d'une table vers l'autre Par exemple :

Sub Insertion(oRst1 As DAO.Recordset, orst2 As DAO.Recordset) On Error GoTo err Dim Fld As DAO.Field orst2.AddNew For Each Fld In oRst1.Fields If (Fld.Attributes And dbAutoIncrField) = 0 Then orst2.Fields(Fld.Name).Value = Fld.Value End If Next Fld

- 44 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

orst2.Update err: End Sub Sub copier() Dim NomTable1 As String, NomTable2 As String Dim oRst1 As DAO.Recordset, orst2 As DAO.Recordset Dim odb As DAO.Database Dim Message As String Set odb = currentdb NomTable1 = "TblClient" NomTable2 = "TblClientSansDoublons" Set oRst1 = odb.OpenRecordset(NomTable1) Set orst2 = odb.OpenRecordset(NomTable2) While Not oRst1.EOF Insertion oRst1, orst2 oRst1.MoveNext Wend If Not orst2.EOF Then orst2.MoveLast Message = "Opration termine" & vbCrLf & vbCrLf & _ "La table source comportait : " & oRst1.RecordCount & " enregistrement(s)," & vbCrLf & _ "la table de destination en comporte " & orst2.RecordCount MsgBox Message, vbInformation, "MAJ termine" End Sub

Pour que cela fonctionne vous devez ajouter la rfrence Microsoft DAO votre projet.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment ouvrir une table en mode exclusif ?


Auteurs : Morsi , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Function Ouvrir_Table_Exclusif (Bd As Database, Ma_Table As String) As Integer Dim rcd As DAO.Recordset On Error GoTo Erreur Set rcd = Bd.OpenRecordset(Ma_Table, dbOpenTable, dbDenyRead) ' -- Mes traitemens en mode exclusif Rcd.Close Set rcd = Nothing Exit Function Erreur: Msgbox Err.Number & vbcrlf & Err.Description End Function

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment lier des tables en VBA dans une base de donnes protges par un mot de passe ?
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Il faut utiliser DAO pour crer l'objet TableDef reprsentant la nouvelle table. L'emplacement de la source et le mot de passe seront inscrits dans la proprit Connect de cet objet.

- 45 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exemple pour lier une table :

Sub lier() Dim strMotPasse As String Dim strCheminBd As String Dim strNomTable As String Dim strConnect As String Dim oDb As DAO.Database Dim oTbl As DAO.TableDef 'Dfinit mot passe, nom table, chemin base de donnes strMotPasse = "pass" strCheminBd = "c:\test.mdb" strNomTable = "Table1" 'Instancie l'objet Database Set oDb = CurrentDb 'Dfinit la chaine de connexion permettant la liaison strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb" 'Cre la nouvelle table Set oTbl = oDb.CreateTableDef(strNomTable) With oTbl .Connect = strConnect .SourceTableName = strNomTable End With 'Ajoute la table la base de donnes oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh End Sub

Exemple pour lier toutes les tables d'une base de donnes :

Sub lierToutes() Dim strMotPasse As String Dim strCheminBd As String Dim strConnect As String Dim strNomsTables() As String Dim strTemp As String Dim i As Integer Dim oDb As DAO.Database Dim oDbSource As DAO.Database Dim oTbl As DAO.TableDef Dim oTblSource As DAO.TableDef 'Dfinit mot passe, nom table, chemin base de donnes strMotPasse = "pass" strCheminBd = "c:\test.mdb" 'Dfinit la chaine de connexion permettant la liaison des tables strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb" 'Instancie l'objet Database de la base courante Set oDb = CurrentDb 'Instancie l'objet Database de la base protge Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect) 'Parcours l'ensemble des tables de la base de donnes protge 'et stocke leur nom For Each oTblSource In oDbSource.TableDefs 'ignore les tables system If (oTblSource.Attributes And dbSystemObject) = 0 Then strTemp = strTemp & oTblSource.Name & "|" End If Next 'Ferme la base de donnes sources (impratif pour la liaison) oDbSource.Close: Set oDbSource = Nothing 'parcours le tableau de noms de tables strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|") For i = 0 To UBound(strNomsTables) 'Cre une nouvelle table dans la base de donnes courante

- 46 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Set oTbl = oDb.CreateTableDef(strNomsTables(i)) 'Lie les deux tables oTbl.Connect = strConnect oTbl.SourceTableName = strNomsTables(i) 'Ajoute la table la base de donnes oDb.TableDefs.Append oTbl Next i 'Rafraichit la liste des tables oDb.TableDefs.Refresh End Sub

Pour que cela fonctionne, il ne faut pas oublier d'ajouter la rfrence Microsoft DAO au projet

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment savoir si une table est verrouille ?


Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Le code ouvre un recordset avec un lockedit Optimistic et une option DenyWrite, en cas d'erreur on suppose que a signifie que la table n'est pas accessible en criture.
Dim db As DAO.Database Dim rs As DAO.Recordset On Error GoTo ILT_Err Set db = CurrentDb() Set rs = db.OpenRecordset(strTbl, dbOpenTable, dbDenyWrite, dbOptimistic) rs.Close IsLockedTable = False ILT_End: Set rs = Nothing Set db = Nothing Exit Function ILT_Err: Select Case Err.Number Case 3008 ' la table est verrouille par un autre processus IsLockedTable = True GoTo ILT_End Case Else Err.Raise Err.Number, Err.Source, Err.Description, Err.HelpFile, Err.HelpContext IsLockedTable = True GoTo ILT_End End Select End Function

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

- 47 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment dclarer une rfrence dans MS-Access ?

Comment rcuprer le chemin d'accs la Base contenant les tables par ADO ?
Auteurs : naphta , Ce code permet de retrouver le chemin des liaisons des tables lies de la bdd :
Public Sub Chemin_Tables() Dim cnDB Dim catDB Dim tblDB As New ADODB.Connection As New ADOX.Catalog As ADOX.Table

Set cnDB = CurrentProject.Connection Set catDB.ActiveConnection = cnDB

For Each tblDB In If tblDB.Type = Debug.Print Debug.Print End If Next cnDB.Close Set cnDB = Nothing Set tblDB = Nothing Set catDB = Nothing End Sub

catDB.Tables "LINK" Then tblDB.Name tblDB.Properties("Jet OLEDB:Link Datasource")

lien :

Comment rcuprer le chemin d'accs la Base contenant les tables ?

Comment obtenir la cl primaire d'une table en ADO ?


Auteurs : Frank , Cet exemple dmontre le PrimaryKey et les proprits uniques d'un index. Le code cre une nouvelle table avec deux colonnes. Le PrimaryKey et les proprits uniques sont employs pour faire rfrence une colonne, la clef primaire, pour laquelle on ne permet pas des valeurs doubles.
Sub PrimaryKeyX() Dim Dim Dim Dim Dim catNorthwind As New ADOX.Catalog tblNew As New ADOX.Table idxNew As New ADOX.Index idxLoop As New ADOX.Index colLoop As New ADOX.Column

' Relier le catalogue catNorthwind.ActiveConnection="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "data source=c:\Program Files\" & _ "Microsoft Office\Office\Samples\Northwind.mdb;" ' Nommer nouvelle table tblNew.Name = "NewTable" ' Apposer un champ numrique et des textes la nouvelle table. tblNew.Columns.Append "NumField", adInteger, 20 tblNew.Columns.Append "TextField", adVarWChar, 20

- 48 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' Apposer le nouvel index principal primaire sur la colonne de NumField ' la nouvelle table idxNew.Name = "NumIndex" idxNew.Columns.Append "NumField" idxNew.PrimaryKey = True idxNew.Unique = True tblNew.Indexes.Append idxNew ' Apposer un index sur Textfield la nouvelle table. ' Noter la technique diffrente : Indication de l'index ' et du nom de colonne comme paramtres de la mthode d'apposer tblNew.Indexes.Append "TextIndex", "TextField" ' Apposer la nouvelle table catNorthwind.Tables.Append tblNew With tblNew Debug.Print tblNew.Indexes.Count & " Indexes in " & _ tblNew.Name & " Table" ' numrer la collection d'index. For Each idxLoop In .Indexes With idxLoop Debug.Print "Index " & .Name Debug.Print " Primary key = " & .PrimaryKey Debug.Print " Unique = " & .Unique ' numrer la collection de colonnes de chaque objet d'index. Debug.Print " Columns" For Each colLoop In .Columns Debug.Print " " & colLoop.Name Next colLoop End With Next idxLoop End With ' Supprimer la nouvelle table car c'est une dmonstration catNorthwind.Tables.Delete tblNew.Name Set catNorthwind = Nothing End Sub

Comment mettre jour des tables lies aprs modifications ?


Auteurs : Tofalu , La mthode RefreshLink n'est utilisable que sur des tables lies. Elle permet, aprs avoir modifi la proprit Connect, de rafrachir les informations de connexion entre la table attache et la source de donnes. Pour ce code il vous faut activer la rfrence : Microsoft DAO 3.x Object Library
Dim Db as DAO.Database Set Db=CurrentDb

- 49 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Db.Tabledefs("MaTable").RefreshLink

lien :

Dfinition et manipulation de donnes avec DAO

Comment renommer une table en SQL ?


Auteurs : Demco , Le code suivant cre une nouvelle table avec toutes les donnes de la prcdente
select * into NouvTable from AncienneTable;

Puis il ne reste plus qu' supprimer l'ancienne table l'aide de DROP TABLE en SQL lien : Comment effacer tout le contenu d'une table ?

Comment renommer une colonne en SQL ?


Auteurs : Demco , Il ne semble pas qu'Access permette de faire cela. La parade classique consiste crer une nouvelle colonne et y dplacer les donnes :
ALTER TABLE MaTable ADD COLUMN NouvColonne Text(255) UPDATE MaTable SET NouvColonne = VieilleColonne ALTER TABLE MaTable DROP COLUMN VieilleColonne

Comment supprimer une table si elle existe ?


Auteurs : Morgan BILLY , La fonction suivante permet de tester si une table passe en paramtre existe et l'efface si c'est le cas et renvoi True, sinon la fonction renvoi False. Pour ce code activer la rfrence Microsoft DAO 3.x Object Library Collez cette fonction dans un nouveau module :
Function Delete_Table(NomTable As String) As Boolean Dim db As DAO.Database Dim tbl As DAO.TableDef Delete_Table = False Set db = CurrentDb For Each tbl In db.TableDefs If tbl.Name = NomTable Then db.TableDefs.Delete (tbl.Name) Delete_Table = True Else Delete_Table = False End If Next tbl End Function

- 50 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

L'appel de la fonction est ralis de cette faon :


Dim tbl As String tbl = "Table1" If Delete_Table(tbl) = True Then MsgBox "La table " & tbl & " a bien t fface." Else MsgBox "Aucune table portant le nom de " & tbl & " a t trouve." End If

lien : lien :

Comment tester l'existence d'une requte en VBA et la supprimer ? Comment savoir si une table existe ?

- 51 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Tables et Champs > Champs Ajout d'un champ NumroAuto une table existante en SQL
Auteurs : Maxence HUBICHE ,
ALTER TABLE MaTable ADD COLUMN MonChampID COUNTER

lien : Cration d'un champ NumroAuto en SQL

Comment avoir un champ de texte de plus de 255 caractres ?


Auteurs : Team Access , Il faut utiliser un champ de type mmo, celui-ci accepte jusqu' 65 535 caractres.

Comment changer le format d'un numro auto ?


Auteurs : xp , Vous voulez un numro automatique de format 00001 par exemple ? Dans la structure de tables, il faut taper dans la proprit format du numro auto : 00000.

Cration d'un champ NumroAuto en SQL


Auteurs : Maxence HUBICHE ,
CREATE TABLE MaTable ( MonChampID COUNTER, MonAutreChamp Text(10))

lien : Ajout d'un champ NumroAuto une table existante en SQL

Comment supprimer les trous des champs NumroAuto ?


Auteurs : Maxence HUBICHE , Cette question est trange en elle-mme, car cela ne convient pas, dans une base de donnes. Lorsqu'on cre une cl primaire en NumroAuto, c'est pour viter d'avoir crer des identifiants. Ces identifiants sont crs automatiquement ; Ils ne sont pas "porteurs d'information" ; Il ne s'agit pas d'un compteur.

"Combler les trous dans un numroAuto" est tout simplement une aberration. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Maintenant, si vous avez un champ numrique, vous pouvez combler les trous dans la numrotation en rcuprant le premier numro libre grce la fonction suivante :
Function NextID(LeChamp As String, LaTable As String) As Long '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-

- 52 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Fonction renvoyant le prochain Identifiant, en fonction des valeurs existantes dans une table. 'Arguments : ' LeChamp => Nom du champ Identifiant numrique Long concern ' LaTable => Nom de la table contenant cet identifiant 'Retour : ' 1 s'il n'y a rien dans la table ' Le Nombre maximum +1 s'il y a une suite ininterrompue de nombres ' La valeur du nombre manquant en cas de trou. '-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=Dim sSQL As String Dim rs As DAO.Recordset Dim n As Long 'Chane SQL en fonction de LeChamp et de LaTable, retournant NULL ou le numro du trou sSQL = "Select Min([" & LECHAMP & "]-1) As NextID From " & LATABLE & " As T1 " sSQL = sSQL & "Where ((([" & LECHAMP & "]-1)>0) And (((Select [" & LECHAMP & "] " sSQL = sSQL & "From " & LATABLE & " T2 " sSQL = sSQL & "Where T2.[" & LECHAMP & "]=T1.[" & LECHAMP & "]-1)) Is Null));" Set rs = CurrentDb.OpenRecordset(sSQL, dbOpenSnapshot) 'Nbre d'enregistrements dans laTable n = DCount("[" & LeChamp & "]", "[" & LaTable & "]") If n = 0 Then 'S'il n'y a pas d'enregistrements, mettre 1 NextID = 1 ElseIf IsNull(rs(0)) Then 'Si la requte ne renvoie rien, incrmenter de 1 le maximum NextID = DMax("[" & LeChamp & "]", "[" & LaTable & "]") + 1 Else NextID = rs(0) 'Sinon, il y a un trou. Renvoyer la valeur du trou End If End Function

lien : lien : lien :

Comment rinitialiser un champ de type numro Auto ? Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment interdire les doublons sur la combinaison de plusieurs champs ?


Auteurs : FRED.G , Il faut crer dans la table un index multichamp et dfinir sa proprit unique "oui". Pour crer l'index : 1) Afficher la table en mode cration 2) Menu Affichage >> Index 3) Slectionner dans la colonne "Nom du champ", tous les champs concerns en laissant vides les champs de la colonne "Nom de l'index", sauf le premier champ, celui o commence la liste car il faut y inscrire le nom de l'index multichamp.)

Comment modifier la lgende d'un champ d'une table via VB


Auteurs : Drosera ,
Function ModifTable() 'gestion d'erreur pour garantir la mise jour de l'cran On Error GoTo GestionErreur 'empche la mise jour de l'cran DoCmd.Echo False 'ouvre la table en mode cration DoCmd.OpenTable "maTable", acViewDesign 'change la proprit caption du champ 'colonne2' CurrentDb.TableDefs("maTable")("colonne2").Properties("caption").Value = "nouvelle lgende" 'ferme la table en sauvegardant DoCmd.Close acTable, "maTable", acSaveYes - 53 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exit_function: DoCmd.Echo True Exit Function GestionErreur: MsgBox Err.Description Resume Exit_function End Function

Comment modifier le type d'un champ de ma table ?


Auteurs : Team Access , Il vous faut utiliser ALTER en SQL.
Alter Table [TABLE] Alter Column [NOMCHAMP] [Type];

Comment connaitre le nombre de champs d'une table ?


Auteurs : Tofalu , En utilisant DAO. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Puis dans un module :
Function NbDeChamp(NomTable as string) As Integer On error goto err Dim Db As DAO.Database Dim T As DAO.TableDef Set Db=CurrentDb Set T=Db.Tabledefs(NomTable) NbDeChamp=T.fields.count err: End Function

Puis pour connaitre le nombre de champ de la table essaiyez :


MsgBox NbDeChamp("essai")

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment ajouter un champ dans une table ?


Auteurs : Team Access , Mthode DAO Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Sub addDefault () Dim fldDate As Field Set fldDate = CurrentDb.TableDefs!Clients.CreateField("DateSignature",dbDate)

- 54 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

fldDate.DefaultValue= "Now()" CurrentDb.TableDefs("Clients").Fields.Append fldDate End Sub

Mthode SQLPar exemple pour un champ boolen :


ALTER TABLE Clients ADD COLUMN chkSigne YESNO;

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment renommer un champ avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Puis dans un module, crire le code suivant :
Function RenommerChamp(NomTable As String, Ancien As String, Nouveau As String) As Boolean On Error GoTo err: Dim MCat As New ADOX.Catalog Dim MTable As ADOX.Table Dim MField As ADOX.Column Set MCat.ActiveConnection = CurrentProject.Connection Set MTable = MCat.Tables(NomTable) Set MField = MTable.Columns(Ancien) MField.Name = Nouveau RenommerChamp = True err: Set MCat = Nothing Set MTable = Nothing Set MField = Nothing End Function

Utilisation :
MsgBox RenommerChamp("produit2", "stock", "Stock1")

Renomme le champ stock de la table produit en stock1 et affiche true si l'opration a russie, false sinon.

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment renommer un champ avec DAO ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Dans un module placer le code suivant :
Public sub RenommerChamp(PTable as string,POld as string ,PNew as String) On error goto err: Dim VTable as DAO.Tabledef Dim VField as DAO.Field set VTable=currentDb.TableDefs(PTable) set VField=VTable.Fields(POld) VField.Name=PNew

- 55 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

set VField=Nothing set VTable=Nothing exit sub err: msgbox "L\'action renommer le champ a choue" End Sub

Voici comment renommer le champ test de la table MaTable en essai


RenommerChamp "MaTable","test","essai"

lien : Comment renommer un champ en SQL ? lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment renommer un champ en SQL ?


Auteurs : Tofalu , C'est impossible en SQL sous Access. Il faut utiliser DAO ou ADO. (voir liens ce-dessous) lien : lien : Comment renommer un champ avec DAO ? Dfinition et manipulation de donnes avec DAO par Tofalu

Comment supprimer un champ avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Puis dans un module, crire le code suivant :
Function SupprimerChamp(NomTable As String, NomChamp) As String On Error GoTo err Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection MCat.Tables(NomTable).Columns.Delete (NomChamp) SupprimerChamp = True err: Set MCat = Nothing End Function

Utilisation :
MsgBox SupprimerChamp("Produit", "C1")

- 56 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ceci affiche true si le champ C1 a t corectement supprim de la table Produit.

lien :

Tutoriel de JM Rabilloud sur ADOX

Quel type de champ choisir pour un code postal ?


Auteurs : Lucifer , En rgle gnrale on utilise du numrique lorsqu'on a des calculs faire dessus (quantit, prix, compteur, ...), sinon on utilise du texte. Donc ici, le code postal se mettra au format texte.

Comment vrifier l'existence d'un champ avec ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library
Function ExisteChamp(NomTable As String, NomChamp As String) As Boolean On Error GoTo err: Dim MCat As New ADOX.Catalog Dim MTable As ADOX.Table Dim MField As ADOX.Column Set MCat.ActiveConnection = CurrentProject.Connection Set MTable = MCat.Tables(NomTable) Set MField = MTable.Columns(NomChamp) ExisteChamp = True err: Set MCat = Nothing Set MTable = Nothing Set MField = Nothing End Function

Utilisation :
Debug.print ExisteChamp("Produit", "stock")

Affiche dans la fentre de debogage True si le champ existe dans la table Produit , false sinon.

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment modifier les masque de saisie d'un champ ?


Auteurs : Drosera , Il faut utiliser la proprit InputMask du champ, exemple :

- 57 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Forms!MonFormulaire!Tlphone.InputMask = "##-##-##-##-##"

Champs calculs dans une table Access


Auteurs : Maxence HUBICHE , Vous ne pouvez pas mettre de champs calcul dans une table Access. La maintenance de ces derniers n'est pas toujours efficace. Vous devez donc faire une requte. Dans cette requte, prenez tous les champs de la table et faites un champ calcul (ex : Select Champ1 + Champ2 From ...). Utilisez galement la fonction vraifaux() si besoin est (afin de ne pas diviser par 0 par exemple).

Comment rcuprer la liste des champs des tables et leurs descriptions ?


Auteurs : FRED.G , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

Dim db As DAO.Database, tdf As DAO.TableDef, fld As DAO.Field Dim strDescription As String Set db = CurrentDb On Error GoTo GestionErreur For Each tdf In db.TableDefs For Each fld In tdf.Fields strDescription = fld.Properties("Description") If MsgBox("Nom : " & fld.Name & vbCrLf & vbCrLf & _ "Description : " & strDescription, _ vbOKCancel, _ "Champs de la table : " & tdf.Name) = vbCancel Then Exit Sub Next fld Next tdf Set fld = Nothing Set tdf = Nothing Set db = Nothing Exit Sub GestionErreur: Select Case Err.Number Case 3270 strDescription = "" Resume Next Case Else MsgBox "Erreur inconnue.", vbCritical Set fld = Nothing Set tdf = Nothing Set db = Nothing exit sub End Select

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

- 58 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment dclarer une rfrence dans MS-Access ?

Comment connaitre les noms des champs composant la cl primaire d'une table ?
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Ben le soucis c'est que une cl primaire peut tre compose. Sinon, si tu souhaites connaitre le nom de la cl primaire, je doit bien avoir a quelque part... Puis dans un module :

Public Function NomClePrimaire(NomTable As String) As String On Error GoTo err Dim oInd As DAO.Index Dim oDb As DAO.database Dim oTbl As DAO.tabledef Dim oFld As DAO.Field Set oDb = CurrentDb Set oTbl = oDb.TableDefs(NomTable) 'Parcours les index For Each oInd In oTbl.Indexes 'S'il s'agit d'une cl primaire, alors traiter If oInd.Primary Then For Each oFld In oInd.Fields NomClePrimaire = NomClePrimaire & oFld.Name & "," Next oFld Exit For End If Next oInd 'Enleve la dernire virgule NomClePrimaire = Left(NomClePrimaire, Len(NomClePrimaire) - 1) Exit Function err: End Function

Utilisation :

Msgbox NomClePrimaire("MaTable")

Dans le cas de cls primaires composes, cela retourne le nom des champs spars par des virgules.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment faire pour afficher des 0 aprs la virgule ?


Auteurs : fdraven , Dans la table, quand vous slectionnez le champ qui doit tre numrique, vous devez avoir : taille du champ : rel simple Format : standard Dcimal : 3

- 59 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ainsi, si le nombre stock est 16, il sera affich : 16.000.

Comment modifier la valeur par dfaut d'un champ d'une table en SQL ?
Auteurs : cakeke ,
ALTER TABLE <table1> ALTER COLUMN <champ1> <typeChamp1> DEFAULT <valeurParDfaut>

Comment crer une cl primaire compose en VBA avec ADO ?


Auteurs : Tofalu , Il faut ajouter la rfrence Microsoft ADO Ext. For DDL and Security votre projet puis travailler avec les objets ADOX.Key. Exemple :

Sub PrimaryKeyADO() Dim oCat As ADOX.Catalog Dim oTbl As ADOX.Table Dim oKey As ADOX.Key 'Instancie un nouvel objet ADOX.Catalog Set oCat = New ADOX.Catalog 'Lie le catalogue la base de donnes Set oCat.ActiveConnection = CurrentProject.Connection 'Accde la table Set oTbl = oCat.Tables("MaTable") 'Cre une nouvelle cl primaire Set oKey = New ADOX.Key 'Affecte les diffrentes proprits With oKey .Name = "PK_MaTable" .Type = adKeyPrimary 'Ajoute les trois champs la cl primaire With .Columns .Append "champ1" .Append "champ2" .Append "champ3" End With End With 'Ajoute la cl primaire la table oTbl.Keys.Append oKey End Sub

Comment crer une cl primaire compose en VBA avec DAO


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library puis travailler avec les objets DAO.Index. Exemple :

Sub PrimaryKey() - 60 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim oDb As DAO.Database Dim oTbl As DAO.TableDef Dim oIdx As DAO.Index 'Instancie un objet Database courant Set oDb = CurrentDb 'Accde la table Set oTbl = oDb.TableDefs("MaTable") 'Cre la cl primaire sur les champs : 'champ1, champ2, champ3 Set oIdx = oTbl.CreateIndex("PK_MaTable") With oIdx .Fields.Append .CreateField("Champ1") .Fields.Append .CreateField("Champ2") .Fields.Append .CreateField("Champ3") .Primary = True .Required = True End With oTbl.Indexes.Append oIdx End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment obtenir une valeur alatoire unique dans un champ ?


Auteurs : Tofalu , Si votre champ est de type numrique entier long, vous pouvez utiliser une mthode peu documente du moteur Jet : la fonction GenUniqueId Crer votre champ, dfinissez son type et fixer sa valeur par dfaut : =GenUniqueId()

Comment modifier la position d'une colonne dans une table en VBA ?


Auteurs : Tofalu , Sous DAO, il s'agit de la proprit OrdinalPosition de l'objet Field. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Dim db As DAO.Database Dim fld As DAO.Field Dim tbl As DAO.TableDef Set db = CurrentDb Set tbl = db.TableDefs("essai") Set fld = tbl.Fields("c1") fld.OrdinalPosition = 3

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

- 61 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment dclarer une rfrence dans MS-Access ?

Comment mettre une valeur par dfaut dans un champ d'une table ?
Auteurs : loufab , La propit Valeur par dfaut directement dans les proprits du champ, dans la structure de la table.

Comment crer un lien hypertexte en dynamique ?


Auteurs : Cafeine , Il n'est pas possible de crer un champ de type hypertexte via un SQL ALTER, puisqu' ma connaissance les possibilits sont "rduites" cela :
Texte : VARCHAR (255 caractres), CHAR(n) ou TEXT(n) (n caractres), LONGTEXT (mmo, 32K max.) ; Fichier binaire : LONGBINARY (Objet OLE) ; Compteur : COUNTER (NumroAuto).Boolen : BIT ; Nombre entier : SHORT (entier), SMALLINT (entier), LONG (entier long), INTEGER (entier long), BYTE (octet) ; Nombre rel : SINGLE (rel simple), DOUBLE (rel double), NUMERIC (rel double) ; Montaire : CURRENCY, MONEY ; Date/Heure : DATE, TIME, DATETIME ;

Pour faire cela je vous renvoi vers le tuto DAO de Tofalu dans la partie 4 au paragraphe 4.4.2.

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

Comment crer un champ de type dcimal ?


Auteurs : Tofalu , c'est une des impossibilits avec DAO. seul remde : ADO Pour ce code il est ncssaire de mettre les rfrences => Microsot ADO Ext 2.X for dll and security et Microsoft ActiveX Data Object 2.X Library
CurrentProject.Connection.Execute "ALTER TABLE TABLE1 ADD COLUMN ESSAI3 DECIMAL(18,0)"

Comment connaitre le nom du champ vide qui ne saurait tre null ?


Auteurs : Meduse , l'erreur 3314 nous indique qu'on essaie de remplir un enregistrement alors qu'un des champs (voir plusieurs) de la table ne peut tre null. En VBA a correspond la proprit Required de l'objet Field : si Required = True, le champ ne peut pas accepter de Null.
Sub NoNull() Dim db As DAO.Database, tdf As DAO.TableDef, fld As DAO.Field Dim strDescription As String

- 62 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Set db = CurrentDb Set tdf = db.TableDefs("maTABLE") For Each fld In tdf.Fields If fld.Required = True Then If IsNull(Me.Controls(fld.Name)) Then MsgBox "REMPLISSEZ MOI LE CHAMP" & fld.Name End If Next fld Set fld = Nothing Set tdf = Nothing Set db = Nothing Exit Sub

Comment trier les champs par ordre alphabtique dans une table ?
Auteurs : Tofalu , Quand vous disposez d'une grande table, il est parfois ncessaire de trier les champs par ordre alphabtique pour s'y retrouver facilement. Cela peut tre fait en VBA avec DAO en attribuant la mme proprit OrdinalPosition tous les champs. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Sub ranger() Dim db As DAO.Database Dim fld As DAO.Field Dim tbl As DAO.TableDef Set db = CurrentDb Set tbl = db.TableDefs("essai") For Each fld In tbl.Fields fld.OrdinalPosition = 1 Next End Sub

En utilisant plusieurs valeurs de OrdinalPosition, il est possible de crer des groupes. Exemple pour afficher les cls primaires en haut de la liste des champs :
Sub ranger() Dim db As DAO.Database Dim fld As DAO.Field Dim tbl As DAO.TableDef Set db = CurrentDb Set tbl = db.TableDefs("essai") For Each fld In tbl.Fields If IsPrimary(fld, tbl) Then fld.OrdinalPosition = 1 Else fld.OrdinalPosition = 2 End If Next End Sub Function IsPrimary(fld As DAO.Field, tbl As DAO.TableDef) As Boolean On Error GoTo err Dim ind As DAO.Index

- 63 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim tfld As DAO.Field For Each ind In tbl.Indexes If ind.Primary Then Set tfld = ind.Fields(fld.Name) IsPrimary = True End If Next ind err: End Function

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

- 64 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Tables et Champs > Trucs et Astuces La cration d'un champ dans une table lie m'est refus.
Auteurs : Maxence HUBICHE , Il faut crer le champ directement dans la table source. Donc si la table est une table d'une base Access, il est possible de passer par un autre workspace (ou une autre connexion, mais a ncessiterait l'ajout des adox). Dans ce Workspace, ouvrez la database en fonction de la proprit connect de la table (ou de la proprit qui donne la base d'origine) et l, vous pourrez ajouter votre champ.

Comment crer un formulaire instantan par rapport une table X en VBA ?


Auteurs : Cafeine , _ Premire possibilit :
DoCmd.SelectObject acTable, "VotreTable", True DoCmd.RunCommand acCmdNewObjectAutoForm

_ Seconde possibilit :
Sub NouvForm(ByVal NomTable As String) Dim frm As Form Set frm = CreateForm With frm .RecordSource = NomTable .RecordsetType = 0 .Caption = NomTable .DefaultView = 2 .ViewsAllowed = 2 .ScrollBars = 0 .NavigationButtons = True End With AjouterTB frm, NomTable DoCmd.Restore DoCmd.Close acForm, frm.Name, acSaveYes End Sub Sub AjouterTB(f As Form, s As String) Dim rs As Recordset Dim fld As Field Dim c As Control Dim l As Control Dim i As Long Set rs = CurrentDb.OpenRecordset(s, dbOpenSnapshot) For Each fld In rs.Fields Set c = CreateControl(f.Name, acTextBox, acDetail, "", fld.Name, 1440, 360 * i, 1440, 360) Set l = CreateControl(f.Name, acLabel, , c.Name, fld.Name, 0, 360 * i) i = i + 1 Next

- 65 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

[VBA] Comment masquer une table ?


Auteurs : Team Access ,
Application.SetHiddenAttribute acTable, NomdeTaTable, True

Comment faire pour trouver le plus grand nombre contenu dans une table ?
Auteurs : Gdal , Si la table n'est pas trop grosse on peut utiliser Dmax dans la proprit source contrle du champ txt_1 Source contrle.....=MaxDom("nombre";"[Chiffre]") PS: Cette solution est moins rapide que la deuxime pour les tables contenant beaucoup d'enregistrements, car les fonctions domaine (Dmax,dlookup,dmin,etc... sont trs lentes par rapport un recordset) On cre un recordset Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Dim rst As DAO.Recordset Set rst = CurrentDb.OpenRecordset("SELECT MAX([Nombre])AS Maximum FROM [Chiffre]") Me!txt_1 = rst!Maximum 'txt_1 est une zone de texte rst.Close

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Rtablir les liaisons des tables lies aprs dplacement d'une base fractionne
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Comme leurs noms l'indiquent, la premire fonction ne permet de lier qu'une seule table avec un nom donn, alors que la seconde liera toutes les tables. Vous devrez bien videmment modifier ces codes afin qu'ils rpondent parfaitement votre attente. Voici les variables et valeurs que vous aurez besoin de mettre jour : strMotPasse, strCheminBd, strNomTable

Sub Dim Dim Dim Dim Dim Dim

lier() strMotPasse As String strCheminBd As String strNomTable As String strConnect As String oDb As DAO.Database oTbl As DAO.TableDef

'Dfinit mot passe, nom table, chemin base de donnes strMotPasse = "pass"

- 66 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

strCheminBd = "c:\test.mdb" strNomTable = "Table1" 'Instancie l'objet Database Set oDb = CurrentDb 'Dfinit la chaine de connexion permettant la liaison strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=" & strCheminBd 'Cre la nouvelle table Set oTbl = oDb.CreateTableDef(strNomTable) With oTbl .Connect = strConnect .SourceTableName = strNomTable End With 'Ajoute la table la base de donnes oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh End Sub

Sub Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim

lierToutes() strMotPasse As String strCheminBd As String strConnect As String strNomsTables() As String strTemp As String i As Integer oDb As DAO.Database oDbSource As DAO.Database oTbl As DAO.TableDef oTblSource As DAO.TableDef

'Dfinir mot passe et chemin base de donnes strMotPasse = "pass" strCheminBd = "c:\test.mdb" 'Dfinit la chaine de connexion permettant la liaison des tables strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=" & strCheminBd 'Instancie l'objet Database de la base courante Set oDb = CurrentDb 'Instancie l'objet Database de la base protge Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect) 'Parcours l'ensemble des tables de la base de donnes protge 'et stocke leur nom For Each oTblSource In oDbSource.TableDefs 'ignore les tables system If (oTblSource.Attributes And dbSystemObject) = 0 Then strTemp = strTemp & oTblSource.Name & "|" End If Next 'Ferme la base de donnes sources (impratif pour la liaison) oDbSource.Close: Set oDbSource = Nothing 'parcours le tableau de noms de tables strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|") For i = 0 To UBound(strNomsTables) 'Cre une nouvelle table dans la base de donnes courante Set oTbl = oDb.CreateTableDef(strNomsTables(i)) 'Lie les deux tables oTbl.Connect = strConnect oTbl.SourceTableName = strNomsTables(i) 'Ajoute la table la base de donnes oDb.TableDefs.Append oTbl Next i 'Rafraichit la liste des tables oDb.TableDefs.Refresh End Sub

lien :

Comment avec l'API GetOpenFileNameA ouvrir plusieurs fichiers la fois ?

- 67 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien : lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ? Comment utiliser une application en mode multi-utilisateurs par Dolphy35

Comment savoir quelle valeur vient de prendre un champ NumroAuto aprs l'ajout d'un enregistrement ?
Auteurs : Petogaz , Vous venez d'ajouter un enregistrement et vous voulez avoir le numroauto qui vient de s'incrmenter. L'obtention de ce numro est diffrent selon qu'il s'agisse de la mthode DAO ou ADO. Sous DAO le numro est disponible immdiatement aprs l'appel de AddNew.exemple (pour obtenir le code de la ville) : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
rst.AddNew Debug.print rst("Code Ville")<---'vous obtenez le code qui est un numroauto 'Ajout d'autres infos rst("Nom Ville") = "TEST" rst("Code postal") = "57000" rst.Update

par contre avec la methode ADO le code est disponible aprs l'appel de Update. exemple : Pour excuter ce code il faut activer les rfrences : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library
rst.AddNew rst("Nom Ville") = "TEST" rst("Code postal") = "57000" rst.Update Debug.Print rst("Code ville")

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment crer son propre numroAuto ?


Auteurs : User , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Une table Table1 avec un champ num (cl primaire) de type Long Integer. Un formulaire Form1 li la Table1 avec un contrle Num (verrouill) li au champ Num de table1: Et sur l'vnement BeforeInsert du form:
Private Sub Form_BeforeInsert(Cancel As Integer) Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset(Me.RecordSource, dbOpenSnapshot) If rs.EOF Then

- 68 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me!Num = 1 Else rs.MoveLast Me!Num = rs!Num + 1 End If rs.Close Set rs = Nothing End Sub

et pour rinitialiser les numroAuto :


Public Function Init_numeroAuto() Dim rs As DAO.Recordset Dim i As Long On Error Resume Next Set rs = CurrentDb.OpenRecordset("Table1", dbOpenDynaset) i = 1 While Not (rs.EOF) rs.Edit rs!Num = i rs.Update rs.MoveNext i = i + 1 Wend rs.Close Set rs = Nothing End Function

ATTENTION : Ces fonctions sont valables pour des applications monopostes. Attention en rseau aux accs concurrents et simultans.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Est-il possible de changer le nom d'une table, champ ou requte et que chaque partie de code bas sur un de ces lments soit automatiquement mis jour ?
Auteurs : Papy Turbo , Il faut cocher l'option l'option : Outils > Options > onglet Gnral > Correction automatique de nom, Access fera la mise jour dans la base en cours. a veut dire hlas, que si vos tables sont dans une base spare, seule cette base sera mise jour, pas l'application. C'est un problme qu'on souhaite voir rsolu dans une prochaine version d'Access. Une alternative :

- 69 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans le code, une recherche/remplacement globale permet de tout remplacer d'un coup, mais faut chercher dans chaque requte, formulaire, c'est un travail assez pnible.

Comment rcuprer la valeur du dernier numro auto insr dans une table ?
Auteurs : Frank , Premire solution, on cherche tout simplement le numro auto le plus lev :

Select Max(monchampsAuto) From matable;

Cette seconde solution ne fonctionnera qu' partir d'Access 2000.

Select @@identity From maTable;

Info : La variable @@IDENTITY est une variable globale SQL qui permet de retrouver la dernire valeur utilise pour un numro automatique d'une table.

Comment rinitialiser un champ de type numro Auto ?


Auteurs : Tofalu , Il vous suffit pour cela de vider la table en question et de la compacter. Mettez par exemple les enregistrements dans une table temporaire. lien : Comment supprimer les trous des champs NumroAuto ?

Comment vider les tables d'erreurs ?


Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Function PurgeErreurs() Dim tbl As TableDef For Each tbl In CurrentDb.TableDefs If InStr(tbl.Name, "importerrors") or Instr(tbl.Name, "PasteErrors") Then Debug.Print "Effacement de " & tbl.Name CurrentDb.TableDefs.Delete tbl.Name End If Next tbl Set tbl = Nothing End Function

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

- 70 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes Comment voir le code SQL gnr par le QBE ?
Auteurs : Team Access , Pour basculer du mode assistant (QBE) au mode SQL, cliquez sur le menu Affichage, puis Mode SQL.

Compter le nombre d'enregistrements


Auteurs : Team Access , Utilisez la fonction Dcount de MS-Access
nb = DCount("*","NomRequete")

ou la proprit recordcount de l'objet recordset en VBA.


rst.Recordcount

Pour utiliser cette propit il faut toujours que le recordset soit rempli et avant de lire la proprit il est souvent ncessaire de faire un
rst.MoveLast

Sauf s'il s'agit d'un Recordset de type dbOpenTable.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Exporter des requtes sur plusieurs onglets Excel.


Auteurs : Team Access , DoCmd.TransferSpreadsheet cre un onglet pour chaque requte exporte. cf. aide Access.

Comment crer une requte depuis VBA ?


Auteurs : Team Access , Ce code vous permet de crer une requte qui s'ajoutera au requtes Access dj prsentes.
CurrentDb.CreateQueryDef("MaReqCreee", "Select * FROM Table1")

Comment utiliser en VBA une requte existante ?


Auteurs : Drosera , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Dim qdf As DAO.QueryDef

- 71 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim rcs As DAO.Recordset 'rfrence la requte Set qdf = CurrentDb.QueryDefs("NomQuery") 'code qui utilise qdf 'par exemple qdf.Parameters("NomParamtre") = valeur qdf.Execute Set rcs = qdf.OpenRecordset

'<== si requte paramtre '<== si requte action '<== pour travailler sur les donnes

'libration de la rfrence Set qdf = Nothing

lien : lien : lien :

Crer un jeu de donnes (recordset) Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment tester l'existence d'une requte ?


Auteurs : Tofalu , Voici une Fonction permettant de vous dire si une requte xiste en renvoyant True : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Function testQuery(strName As String) As Boolean 'Pour fonctionner ce code ncessite la rfrence ' - Microsoft DAO X Object Library On Error GoTo err Dim oDb As DAO.Database Dim oQdf As DAO.QueryDef 'Accde la base de donnes courante Set oDb = CurrentDb Set oQdf = oDb.QueryDefs(strName) 'Retourne Vrai testQuery = True fin: 'Libre les objets Set oDb = Nothing Set oQdf = Nothing Exit Function err: 'Remonte toutes les erreurs diffrents de l'erreur 3265 '(la requte n'existe pas) If err.Number <> 3265 Then err.Raise err.Number, err.Source, err.Description End If Resume fin End Function

Exemple d'utilisation :
MsgBox testQuery("RqtClasses")

Une autre faon de tester une requte sans DAO ni ADO :


- 72 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sub test() Const QUERYTYPE = 5 'Teste l'existence de la requte RqtClasses If DLookup("Type", "MSysObjects", BuildCriteria("Type", dbInteger, QUERYTYPE) & _ " AND " & BuildCriteria("Name", dbText, "RqtClasses0")) = 5 Then MsgBox "La requte existe" Else MsgBox "La requte n'existe pas" End If End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment faire appel aux donnes d'une table d'une autre base de donnes en SQL ?
Auteurs : Demco ,
Select * From TABLE1 In 'C:\MesDocuments\mabase.mdb\' ;

Comment utiliser Access pour excuter des requtes sur d'autres types de base de donnes ?
Auteurs : Maxence HUBICHE , Voici comment excuter par exemple des requtes sur une base de donnes Oracle : Depuis Access crez une nouvelle requte. En mode cration de la requte, faites le menu : Requte > Spcifique SQL > SQL Direct Les requtes SQLDirect permettent d'tablir une connexion un serveur distant, d'crire une requte pour le serveur PL-SQL donc et de la faire s'excuter par le serveur. En cas d'erreur de syntaxe, essayez d'enlever le ";" en fin de requte.

Pour chaque requte Access rajoute ", *" dans le Select, comment l'empcher de faire a ?
Auteurs : argyronet , Dans l'onglet Tables/requtes des options d'Access, dcochez [Tous les champs].

Comment ignorer les accents dans une requte SQL ?


Auteurs : Tofalu , Il faut crer une fonction personnalise qui remplace la lettre accentue par la mme mais sans l'accent. Dans un module :
Public Chaine Chaine Chaine Chaine Function sansAccent(ByVal Chaine As String, EnMajuscule As Boolean) As String = LCase(Chaine) = Replace(Chaine, Chr(232), "e") = Replace(Chaine, Chr(233), "e") = Replace(Chaine, Chr(234), "e")

- 73 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Chaine = Replace(Chaine, Chr(235), "e") Chaine = Replace(Chaine, Chr(249), "u") Chaine = Replace(Chaine, Chr(250), "u") Chaine = Replace(Chaine, Chr(251), "u") Chaine = Replace(Chaine, Chr(242), "o") Chaine = Replace(Chaine, Chr(244), "o") Chaine = Replace(Chaine, Chr(254), "o") Chaine = Replace(Chaine, Chr(255), "y") Chaine = Replace(Chaine, Chr(224), "a") Chaine = Replace(Chaine, Chr(225), "a") Chaine = Replace(Chaine, Chr(226), "a") Chaine = Replace(Chaine, Chr(238), "i") Chaine = Replace(Chaine, Chr(239), "i") chaine = Replace(chaine, Chr(244), "o") If EnMajuscule Then Chaine = UCase(Chaine) sansAccent = Chaine End Function

Et la requte :
SELECT * FROM MaTable WHERE SansAccent(MonChamp,True)=sansaccent("lve",true)

lien :

Comment enlever les accents d'une chane

Quelles sont les limites des champs mmos dans une requte ?
Auteurs : =JBO= , Dans une requte avec regroupement des donnes, les champs Mmos sont tronqus 255 caractres et convertis en champs texte.

Comment rcuprer le nombre d'enregistrement concerns aprs le lancement d'une requte ?


Auteurs : fdraven , Pour rcuprer le nombre d'enregistrements aprs l'excution d'une requte il existe deux mthodes : Mthode 1 (par DAO) : Pour ce code il est ncessaire de mettre la rfrence => Microsoft DAO 3.x Object Library
Dim db as Database Dim LSQL as String Set db = CurrentDb() LSQL = "INSERT INTO ..." db.Execute LSQL MsgBox CStr(db.RecordsAffected) & " enregistrements insrs."

Mthode 2 (par ADO) : Pour ce code il est ncessaire de mettre les rfrences => Microsot ADO Ext 2.X for dll and security et Microsoft ActiveX Data Object 2.X Library
Dim cnn As New ADODB.connection, iAffected As Integer Dim sSQL As String cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= Nomdemabase;" sSQL = "INSERT INTO ..."

- 74 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' Excution de la requte cnn.Execute sSQL, iAffected, adExecuteNoRecords Debug.Print "Enregistrements insrs = " & iAffected cnn.Close

- 75 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes > Manipulation des requtes Comment crer une requte avec le modle ADO ?
Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Ensuite, utiliser le code suivant :
Sub CreerRequete(Nom As String, SQL As String) Dim MaCom As New ADODB.Command Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection MaCom.CommandText = SQL MCat.Procedures.Append Nom, MaCom Set MCat=Nothing Set MaCom=Nothing End Sub

Exemple d'utilisation :

CreerRequete "test", "select * from matable"

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment modifier le SQL d'une requte avec le modle ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Ensuite, utiliser le code suivant :
Sub ModifierRequete(Nom As String, SQL As String) On Error GoTo err Dim MaCom As New ADODB.Command Dim MaProc As ADOX.Procedure Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection Set MaProc = MCat.Procedures.Item(Nom) MaCom.CommandText = SQL Set MaProc.Command = MaCom Set MCat = Nothing Set MaProc = Nothing Set MaCom = Nothing Exit Sub err: If err.Number = 3265 Then MsgBox "impossible de trouver la requete " & Nom End Sub

Exemple d'utilisation :

- 76 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ModifierRequete "test", "select champ1 from matable"

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment supprimer une requte avec le modle ADO ?


Auteurs : Tofalu , Tout d'abord ajouter les rfrences suivantes dans votre projet : Microsot ADO Ext 2.X for dll and security Microsof ActiveX Data Object 2.X Library Ensuite, utiliser le code suivant :
Sub SupprimerRequete(Nom As String) On Error GoTo err Dim MCat As New ADOX.Catalog Set MCat.ActiveConnection = CurrentProject.Connection MCat.Procedures.Delete (Nom) Exit Sub err: If err.Number = 3265 Then MsgBox "impossible de trouver la requete " & Nom End Sub

Exemple d'utilisation :
SupprimerRequete "MaRequete"

lien :

Tutoriel de JM Rabilloud sur ADOX

Comment effacer une requte en VBA ?


Auteurs : Lucifer ,
CurrentDb.Querydefs.Delete "MaRequete"

lien : Comment effacer une table en VBA ?

Comment rechercher un mot dans plusieurs champs dans une Requte ?


Auteurs : Tofalu , Ce code SQL permet de rechercher le mot toto dans les CHAMP1, CHAMP2 et CHAMP3
SELECT * FROM MATABLE WHERE CHAMP1="toto" OR CHAMP2="toto" OR CHAMP3="toto"

- 77 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes > Expressions et critres Dfinir un critre de requte sensible la casse
Auteurs : Maxence HUBICHE , Les requtes Access ne sont pas case sensitive. Mais la fonction Instr() a un argument de dfinition de la mthode de comparaison.
Select * from XXX where instr(1,Nom,'tOtO', 0)<>0

Comment dfinir un paramtre ( dfinir par l'utilisateur chaque excution d'une requte) servant de critre pour le rsultat de la requte ?
Auteurs : Maxence HUBICHE , Pour faire un VRAI paramtre, il y a 2 tapes : 1/ Aller dans Requtes/Paramtres ... et dfinir le paramtre Par exemple : Nom du paramtre : Choisir Anne Type de donnes : Entier 2/ L'utiliser en l'inscrivant entre crochets. Exemple :
... WHERE [Choisir Anne] = ...

Comment dfinir un type pour les paramtres d'une requte ?


Auteurs : Demco ,
Parameters [Entrez une valeur numrique :] integer; Select * From LATABLE Where MONCHAMP = [Entrez une valeur numrique :];

Ainsi, si vous saisissez 'blablabla' un message d'erreur vous indiquera que la valeur saisie est incorrecte et vous invitera recommencer. Donc integer pour un entier, date pour une date, text pour du texte etc.

Comment obtenir le mois, le jour ou l'anne d'une date dans une requte ou en VBA ?
Auteurs : Demco , Avoir le jour :
Day(LaDate)

Avoir le mois :
Month (LaDate)

- 78 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Avoir l'anne :
Year(LaDate)

Types des champs


Auteurs : Team Access , Dans les instructions SQL, la plupart des versions MS Access attendent des dates au format amricain (mm/dd/yyyy). Dans les clauses de la requte, les champs typs utilisent des caractres de type :
MonChamp=Valeur 'Numrique MonChamp="Valeur" 'Texte

(on peut aussi avoir 'Valeur', mais cette solution est dangereuse. En effet, s'il y a une apostrophe dans Valeur, la clause SQL se perd dans ces apostrophes...)
MonChamp=#Valeur# ' Date

Requte de slection d'un mot avec ou sans accent dans access 2000
Auteurs : Maxence HUBICHE , Vous voulez que lorsque vous tapez par exemple "infirmiere", on trouve "infirmire", "infirmire" ou "infirmiere" et vice versa. Bref vous souhaitez slectionner le mot quelque soit l'accent se trouvant sur le 'e'. Il suffit d'crire la requte comme ceci :
Select * From MATABLE Where MONCHAMP Like '%infirmi[e]re%\'

Quel symbole remplace le % du SQL ?


Auteurs : Frank , Utilisez : *
Select * From MATABLE Where VILLE Like "*an"

Mes requtes sur des champs dont le nom contient le symbole # ne marchent pas ?
Auteurs : Demco , Tout d'abord, il faut viter d'utiliser des symboles pour les noms de table ou de champ. Mais si vous ne pouvez chaper cette contrainte, solutionnez le problme en mettant des crochets.

- 79 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Select [MonChamp#]...

Le signe * ne fonctionne pas dans ma requte ?


Auteurs : Maxence HUBICHE , Exemple :
Select * From MATABLE Where VILLE Like "*bord*"

Essayez le signe %
Select * From MATABLE Where VILLE Like "%bord%"

C'est par exemple utile lorsque l'on exploite une base de donnes Access avec Visual Basic.

Comment inclure des champs d'un formulaire dans une requte ?


Auteurs : Demco , Tofalu , La zone de texte se nomme zdt champ de type numrique :
MonSQL = "Select * From MATABLE Where MONCHAMP = " & zdt

champ de type Chane de caractres :


MonSQL = "Select * From MATABLE Where MONCHAMP = '" & zdt & "'"

ou bien :

monsql = "Select * From MATABLE Where " & BuildCriteria("MonChamp", dbText, zdt)

champ de type Date :


MonSQL = "Select * From MATABLE Where MONCHAMP = #" & zdt & "#"

ou bien :

monsql = "Select * From MATABLE Where " & BuildCriteria("MonChamp", dbDate, zdt)

Comment utiliser la valeur d'une variable vba dans une requte Access ?
Auteurs : FRED.G , Ce sujet est trait ici.

- 80 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Les liens ci-dessous pourront galement rpondre vos questions ce sujet. lien : Comment inclure des champs d'un formulaire dans une requte ? lien : Est-il possible de crer une requte paramtre dont la valeur du paramtre proviendrait d'une variable ?

Est-il possible d'effectuer des calculs simples en fonction d'une ou plusieurs conditions ?
Auteurs : Gal Donat , FRED.G , Exemple de question : ma requte extrait des donnes et produit, par ligne, les champs "ID" et "VAL1", "VAL2","VAL3". Est-il possible de crer un nouveau champ "TOTAL", indpendant, et dont la valeur est conditionne par la valeur de ID. Exemple : si ID = "A", TOTAL = VAL1 + VAL2 si ID = "B", TOTAL = VAL2 + VAL3 si ID = "C", TOTAL = VAL1 + VAL2 + VAL3 3 fonctions permettent d'effectuer un tel calcul : 1) IIf (VraiFaux()). Pour vrifier plusieurs conditions, il possible d'imbriquer plusieurs Iff. Pour notre exemple :
Select TEST.ID, IIf([ID]='A',[VAL1]+[VAL2],IIf([ID]='B',[VAL2]+[VAL3],IIf([ID]='C', [VAL1]+[VAL2]+[VAL3]))) AS Total From TEST;

2) Switch() (PremVrai()). Les arguments de cette expression fonctionnent comme ceci : Condition vrifier; Rsultat si condition vraie Pour notre exemple :
Select TEST.ID, Switch([ID]='A',[VAL1]+[VAL2],[ID]='B',[VAL2]+[VAL3],[ID]='C', [VAL1]+[VAL2]+[VAL3]) AS Total From TEST;

3) Choose() (Choisir()). Cette fonction n'est utile que si la condition vrifier correspond un nombre renvoy par un seul et mme champ de la requte. Gnralement, le champ vrifier est la colonne lie d'une petite zone de liste. Dans cette fonction le premier argument est le champ vrifier. Le deuxime argument indique la valeur renvoyer si le premier argument vaut 1, le troisime argument indique la valeur renvoyer si le premier argument vaut 2, etc. Revenons notre exemple. Si le champ ID avait renvoy un nombre et qu'au lieu de A, B, C... nous avions 1, 2, 3..., voici comment nous aurions pu utiliser la fonction Choose :
Select TEST.ID, Choose([ID],[VAL1]+[VAL2],[VAL2]+[VAL3],[VAL1]+[VAL2]+[VAL3]) AS Total From TEST;

Remarque : ces 3 fonctions valuent systmatiquement la totalit de leurs arguments par consquent, mieux vaut les utiliser pour de petits calculs conditionnels.

- 81 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour faire des tests complexes sur de nombreuses conditions, il sera prfrable de crer une fonction personnalise utilisant une instruction If Then Else ou Select Case.

Comment slectionner les enregistrements dont le champ date concerne le mois prochain ?
Auteurs : Trini , Par exemple je suis en janvier 2006 et je veux avoir tous les enregistrement concernant le mois de fvrier 2006. Je dois faire appel au critre suivant :

WHERE (((Year([madate]))=Year(DateAdd("m",1,Date()))) AND ((Month([madate]))=Month(DateAdd("m",1,Date()))));

O madate est le champ de type date qui nous intresse.

Rechercher un mot dans un champ


Auteurs : Maxence HUBICHE , Prenons l'exemple suivant : Dans ma table, je souhaite retourner tous les enregistrements o le champ MonChamp contient le mot Masson. En utilisant le critre Comme '*masson*', je retournerais aussi les enregistrements contenant Tomasson. Si au contraire, je place des espaces entre les toiles et le mots, je ne retournerait pas par exemple Lucien (Masson). Pour cela, il suffit d'utiliser le critre suivant afin de vrifier que ce qui se trouve de chaque cot de masson n'est pas une lettre ce qui signifierait que masson est un mot lui seul. Comme '*[!a-z]masson[!a-z]*' Ou Comme 'masson[!a-z]*' Ou Comme '*[!a-z]masson' Ou 'masson'

Comment rechercher le caractre * dans une requte ?


Auteurs : Cafeine , Imaginons cette table :

Champ1 ---------Erreur Erreur de saisie **Erreur**

Le but est de raliser une recherche qui retourne les lignes commenant par deux toiles.

SELECT Champ1 FROM MATABLE WHERE CHAMP1 LIKE "***"

Le caractre * tant un joker, cette requte retourne toutes les lignes.

- 82 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans l'implmentation SQL d'Access les caractres jokers (wildcard) doivent tre mis dans une charlist entre crochets [], ce qui donnerait ici :

SELECT Champ1 FROM MATABLE WHERE CHAMP1 LIKE "[*][*]*"

- 83 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes > Suppressions, modifications et insertions Comment effacer tout le contenu d'une table ?
Auteurs : Frank ,
Delete From NOMTABLE

Rsultat de requte non modifiable ?


Auteurs : Arkham46 , Il est normal que vous ne puissiez pas modifier les requtes contenant un Group By dans la mesure o les donnes affiches sont des oprations sur plusieurs lignes. Si vous modifiez une somme par exemple, comment cette somme peutelle tre rpartie sur chacune des lignes ?

Requte d'insertion avec donnes dcimales


Auteurs : Demco , Votre requte d'insertion bug car elle contient une valeur dcimale. Par exemple :
Insert Into ... Values ... "val1",19,6,"val3"

Dans ce cas, il y aura une erreur car elle prendra la valeur 19,6 pour deux valeurs diffrentes spares par une virgule. Voici deux solutions pour rsoudre le problme : Remplacer la virgule par un point grce la fonction Replace(). Ou alors mettre la valeur numrique entre guillemets ("19,6").

Je n'arrive pas supprimer un enregistrement d'une table


Auteurs : Frank , Il faut vrifier dans les relations si suppression en cascade est coche. (Outils/Relations) ATTENTION ! Ceci doit se faire sous rserve que cette suppression soit logique du point de vue de cette application (par exemple, il est gnralement logique qu'on ne supprime pas un client qui a des factures dans la base).

Comment supprimer le champ d'une table en SQL ?


Auteurs : Demco ,
Alter Table NOMTABLE

- 84 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Drop Column NOMCHAMP

Dfinir "null interdit" en SQL pour cration/ajout de champ.


Auteurs : Tofalu ,
Alter Table MATABLE Add MONCHAMP MonType NOT NULL

Mettre uniquement NULL pour autoriser l'utilisation de la valeur NULL sur ce champs.

Comment effacer une table en VBA ?


Auteurs : Team Access , Voici la procdure qui permet d'effacer une table :
Sub DeleteTable(ByVal NomTable As String) On Error Resume Next DoCmd.DeleteObject acTable, NomTable Err.Clear End Sub

Il faut passer en paramtre le nom de la table supprimer. lien : Comment effacer une requte en VBA ? lien : Comment effacer toutes les donnes de la base ?

Comment crer un index sur un champ en SQL ?


Auteurs : Demco ,
Create Index IDX1 On LATABLE(LECHAMP);

- 85 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes > Conception Diffrence entre DISTINCT et DISTINCTROW ?


Auteurs : Maxence HUBICHE , Il y a une grosse diffrence entre DISTINCTROW et DISTINCT. - On utilise DISTINCTROW lorsqu'on choisit de travailler sur des lignes qui, l'origine sont sans doublons. si ma table contient : Nom ------- Prnom Dupont ---- Jean Dupont ---- Pierre Dupond --- Jean Dupont ---- Jean un
Select DistinctRow NOM From MATABLE

me renverra : Dupont Dupont Dupond Car j'ai 2 Dupont Jean(1), 1 Dupont Pierre(2) et 1 Dupond Jean(3) - Contrairement au DISTINCTROW, le DISTINCT s'intresse quant lui au rsultat affich. Il n'affiche que des lignes sans doublons. Ainsi, avec la mme table que prcdemment, un petit
Select Distinct NOM From MATABLE

ne renverra que : Dupont Dupond

Comment viter les doublons dans une requte (pour charger une zone de liste par exemple) ?
Auteurs : Demco , Il suffit d'utiliser "DISTINCT" dans la requte source. Exemple :
Select distinct NOM From TEMPLOYE;

- 86 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Vous obtiendrez tous les noms des employs. Si plusieurs employs ont le mme nom, il n'apparatra qu'une fois.

Comment fonctionnent les jointures/relations ?


Auteurs : Maxence HUBICHE , Maxence HUBICHE vous dvoile tout ce que vous avez besoin de savoir sur les jointures quoi servent-elles et comment les mettre en place.

lien :

Tutoriel sur les jointures/relations dans MS-Access

Requte donnant la liste des enregistrements de la table 1 qui ne sont pas dans la table 2
Auteurs : Demco ,
Select LECHAMP From TABLE1 Where LECHAMP Not In (Select LECHAMP2 From TABLE2);

Comment, dans une requte, ajouter un champ "ordre" qui s'incrmente pour chaque identifiant ?
Auteurs : Maxence HUBICHE , Imaginons qu'un employ a plusieurs promotions au cours de sa carrire. Chaque promotion est stocke avec sa date d'obtention. On veut avoir le rcapitulatif des promotions de chaque employ. On veut aussi connatre le numro de la promotion (3 si c'est la troisime promotion de l'employ, ...).
Select *, (Select Count(*) From LATABLE T2 Where T2.ID=T1.ID And T2.DATE<=T1.DATE) As NUMORDRE From LATABLE T1;

Comment chercher en SQL le premier ou dernier enregistrement d'une table ?


Auteurs : Demco , Pour le premier :
Select First(MONCHAMP) From LATABLE;

Pour le dernier :
Select Last(MONCHAMP) From LATABLE;

Comment calculer le nombre d'enregistrements correspondants au critre de la requte ?


Auteurs : Team Access , Il faut utiliser count() sur le(s) champ(s) concern(s). Pour en savoir plus --> http://sqlpro.developpez.com/SQL_AZ_2.html#SELECT_stat Exemple :

- 87 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Select count(CHAMP1) From LATABLE Where CHAMP2 = 3 And CHAMP3 LIKE "*blabla*"

lien : Compter le nombre d'enregistrements

Regroupement (GROUP BY) sur les n premires lettres des enregistrements d'un champ ?
Auteurs : Lucifer , Utile par exemple pour le code postal (franais), pour grouper par dpartement :
Select Distinct Left(LECHAMP,2) As CODE_POSTAL From PERSONNE;

Comment n'avoir que les x premires rponses d'une requte ? (Comme LIMIT en MySQL)
Auteurs : Gal Donat , Deux solutions :
Select TOP 5 PERCENT MATABLE.MONCHAMP1, MATABLE.MONCHAMP2 From MATABLE;

Pour rcuprer 5 lignes sur 100 (5%)


Select TOP 5 MATABLE.MONCHAMP1, MATABLE.MONCHAMP2 From MATABLE;

Pour rcuprer 5 lignes.

Ma requte fonctionne avec l'oprateur In, mais pas avec l'oprateur Not In ni mme NOT EXISTS...
Auteurs : Tofalu , Ceci peut se produire lorsque la sous-requte renvoie des valeurs Nulles. La solution est donc de filtrer ces valeurs directement dans la sous-requte en spcifiant par exemple une clause Where. Par exemple :
Select MATABLE.CHAMP1 From MATABLE Where MATABLE.CHAMP1 Not In (Select MONCHAMP Where ((tbl.LaDate) Is Not Null)) Select MATABLE.CHAMP1 From MATABLE Where MATABLE.CHAMP1 Not In (Select MONCHAMP Where Not IsNull(MONCHAMP))

Comment faire une requte qui ne retourne que les enregistrements d'un interval dsir ? (Limit 50,50 de MySQL) ?
Auteurs : Maxence HUBICHE , Tofalu , Comment faire pour qu'une requte ne renvoie que les enregistrements 50 100 par exemple ? Ceci est facilement possible sous MySQL en passant par un "LIMIT 50,50", mais n'existe pas encore sous Access.

- 88 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Il est cependant possible d'arriver nos fins grces divers astuces : En crant deux requtes. Une qui slectionne les 100 enregistrements, puis une seconde qui ne slectionne que les 50 derniers enregistrements de la requte prcdente. Ainsi nous aurons bien les enregistrements 50 100. Crons donc la premire requte que nous nommerons "Req1"

Select TOP 100 ID, ladate FROM LaTable Order By ladate Asc;

Ensuite, il ne reste qu' slectionner les 50 derniers enregistrements de la requte ci-dessus :

Select TOP 50 ID, ladate FROM Req1 OrderBy ladate Desc;

En passant par DAO et un tableau. Vous trouverez les dtails de cette fonctionnalit DAO dans le tutorial de Tofalu dont le lien est ci-dessous. Une fois les donnes d'un RecordSet dans un tableau, vous pouvez atteindre trs facilement les enregistrements dsirs.

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

Comment ne slectionner que les enregistrements qui diffrent entre deux champs de deux tables distinctes ?
Auteurs : MashiMaro ,
Select * From Table1 AS T1 Where Not Exists (Select null From Table2 AS T2 Where T1.[champT1]=T2.[champT2])

Cette requte slectionnera tous les enregistrements de Table1 dont le champ "champT1" possde une valeur ne se trouvant pas dans le champ "champT2" de la seconde table.

Comment retourner toutes les lignes de deux ensembles avec UNION ?


Auteurs : vmolines , Une requte UNION limine les doublons dans les lignes qu'elle renvoie. Pour forcer la clause UNION conserver les doublons dans les rsultats retourns, utilisez UNION ALL en mode SQL.

SELECT * FROM TABLE1 UNION ALL

- 89 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

SELECT * FROM TABLE2

Vider rapidement une table attache en ODBC ?


Auteurs : =JBO= , guydav , La commande SQL TRUNCATE n'est pas reconnue par Access. Il faut donc utiliser une requte SQL Direct pour passer l'ordre SQL directement au moteur de base de donnes (MySQL) par exemple. Vous pouvez ainsi excuter n'importe quelle requte compatible avec le serveur qui tait incompatible avec le SQL de Jet. 1. Crez la liaison ODBC avec le gestionnaire de liaisons (Dmarrer -> paramtres -> source de donnes ODBC). Dans cet exemple, la base s'appelle "base_MySQL" sur le serveur "nom_du_serveur" 2. Crez la requte avec Crer une requte en mode cration. Fermez la liste des tables et requtes. Clic droit sur la table -> Spcifique SQL -> SQL Direct 3. Ecrivez la requte

TRUNCATE Matable;

4. Dans la barre de titre de la requte, clic droit -> proprits ->Chane connexion ODBC : Indiquez le chemin de connexion sous la forme

ODBC;DATABASE=base_MySQL;DSN=base_MySQL;OPTION=0;PORT=0;SERVER=nom_du_serveur;

5. Excutez la requte. Un message d'avertissement apparat car la requte ne renvoie rien (forcment, c'est une requte de destruction de donnes !). Pour viter ce message, vous pouvez modifier la proprit Renvoie enr. de la requte SQL Direct Non.

Comment catgoriser des clients (rductions) pour diter une Facture ?


Auteurs : loufab , Nous allons dans cette Q/R expliquer comment catgoriser des clients pour leur attribuer une rduction qui sera dduite sur la facture. Pour cela nous allons dvelopper trois mthodes : Mthode statique : Les taux de remises sont crites directement dans le code.
= montant - (montant * iif(categorie like "A";0.1;iif(categorie like "B";0.2;0.3)))

montant est le champ contenant la somme. catgorie est le champ contenant la catgorie client. 2 inconvnients :
- 90 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

l'imbrication des iif qui peut prendre des proportions avec la quantit de catgorie. L'obligation d'diter le code lorsque que l'on ajoute ou change une catgorie. Notez qu'avec une catgorie numrique 1 au lieu de A, 2 au lieu de B... on peut utiliser Choose() qui se rduit une fonction au lieu d'une par catgorie. Mthode paramtre : Cette mthode a 2 avantages : L'ajout, la modification, la suppression de catgorie peut se faire par l'utilisateur, pas de code modifier. Pas d'imbrication de iif(). Inconvnient : On doit crer une table supplmentaire pour grer les remises. Table : tbl_param Champ 1 : param (texte 1) contient A, B, C Champ 2 : valeur (double) contient la remise sous forme 0.1, 0.2...
=Montant - (Montant * dlookup("Valeur";"tbl_param";"Param like " & Categorie))

3me mthode De loin la plus simple. Catgorie ne contient pas A B ou C mais directement 1, 2, 3 (la valeur de la remise * par 10)
=Montant - (Montant * Categorie/10)

Comment crer numrotation dans une requete ?


Auteurs : Philippe JOCHMANS , Voici un exemple en utilisant la fonction de Domaine DCount Soit une table (tbl_DetailFacture) avec 3 champs - strArticle - lngQte - curPrixUnit Le code classe par ordre croissant les prix unitaire
SELECT strArticle,lngQte,curPrixUnit, DCount("[strArticle]","[tbl_DetailFacture]","[CurPrixUnit]<=" & [CurPrixUnit]) AS Cumul FROM tbl_DetailFacture ORDER BY curPrixUnit;

Ceci donne dans le champ cumul une numrotation des champs. Pour que cela fonctionne correctement, il faut que la clause de la fonction de Domaine DCount soit sur le champ que que l'on veut trier.

lien : lien :

Classer les rsultats d'une requte Classer des donnes par plage

- 91 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Requtes > Trucs et Astuces Existe-t-il une alternative FULL OUTER en SQL ?
Auteurs : SQLpro , Un Full Outer est l'quivalent de :
Select ... From T1 Left Outer Join T2 On... Union Select ... From T2 Left Outer Join T1 On...

Comment viter d'avoir une division par zero dans une requte SQL
Auteurs : Lucifer , Lorsque nous avons une expression comme celle-ci :
( [A] / [B] )

o [B] est susceptible de prendre pour valeur 0, alors nous pouvons utiliser ceci :
iif( [B]=0, 0, [A]/[B] )

Passage de paramtres dans des requtes


Auteurs : philou22 , Pour passer des paramtres une requte, il y a bien sr les Paramtres de la requte, voire des variables dfinies en VB, mais il existe aussi une solution simple : Une table ne contenant qu'un seul enregistrement. Cet enregistrement peut bien sr contenir beaucoup de champs tels que TxTVA1, TxTVA2, Date_fin_periode etc.... On insre la table dans la requte ncessitant les paramtres et on se sert des champs comme critres ou constantes. Attention : Garantir un seul enregistrement (il y a un post la-dessus sur ce site) sinon gare aux petits lapins comme on dit chez nous (multiplication des enregistrements) Ne marche pas si on a des jointures externes dans la requte (c.a.d des flches sur les liens), mais il suffit souvent de dcaler le pb en faisant une deuxime requte.

- 92 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On a avec cette solution la souplesse d'utilisation des tables ... et des possibilits quasi infinies puisqu'on peut facilement modifier les paramtres via des requte appropries.

Critre de requte entre un champ date et un champ date et heure.


Auteurs : Etienne Bar , Nous avons dans une table, un champ de type Date qui contient la date plus l'heure, ex : 12/05/2004 19:45:20. Voici la requte permettant de connatre toutes les lignes d'une table dont le champ date correspond la date du jour :
Select * From LATABLE Where int( LADATE ) = Date()

La fonction int() permet de ne slectionner seulement la date et non la date suivie de l'heure.

Connatre le temps de traitement d'une requte


Auteurs : bigquick , Ce code va permettre de rcuprer le temps d'excution de la requte en prenant le moment avant excution puis en ralisant la diffrence la fin de l'excution
Sub TpsRequete() Dim sngDebut As Single sngDebut = VBA.DateTime.Timer 'execution de la requete DoCmd.RunSQL CurrentDb.QueryDefs("MaRequete").SQL MsgBox "Temps d'executiuon : " & Str(VBA.DateTime.Timer - sngDebut) & " secondes" End Sub

Comment pour chaque requte obtenir la liste des tables qu'elle utilise ?
Auteurs : MashiMaro , ATTENTION : L'utilisation des tables systme (MSYSxxxxxxx) n'est pas recommand. L'utilisation de telles procdures se fait vos risques et pril.
SELECT A.name AS Requete, B.name1 AS Lst_Table FROM MSysObjects AS A INNER JOIN MSysQueries AS B ON A.id=B.objectid WHERE A.type=5 and B.attribute=5;

MSysObjects est la table qui contient tous les objets qui existent dans ta base. Dans cette base, type=5 permet d'identifier les Requtes MSysQueries est la table qui contient tout le dtail des requtes qui existent dans ta base. Dans cette base, attribute=5 permet de dfinir (par rapport l'id) ce qui est contenu dans le FROM (table ou requte). D'autres valeur d'attribute vous permet de savoir si vous tes dans le SELECT le WHERE ou l'ORDER BY.

- 93 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour visualiser ces tables, il faut aller dans le menu Outils->Options... l'onglet affichage et cocher Objets Systeme.

Comment faire pour afficher 'Oui' ou 'Non' plutt que 0 ou -1 dans le rsultat d'une requte ?
Auteurs : Maxence HUBICHE , Premire solution en agissant sur la table : Onglet donnes Source contrle : ton champ Origine source : Liste valeurs Contenu : -1;oui;0;non Onglet Format Nbre colonnes : 2 Largeurs Colonnes : 0 Seconde solution en agissant sur la requte : Il suffit dans le Select de la requte de mettre une condition sur l'affichage de la valeur du champ.

iif(TonChamp;'Oui';'Non')

Diffrence de syntaxe entre SQL server et Access pour les requtes avec jointures
Auteurs : mouuaahh , Les requtes contenant des jointures peuvent tre valides sous SQL SERVER et pas sous Access. Pour rsoudre ce problme, il suffit de placer le nom des tables entre crochets. Sinon vrifiez la compatibilit des mots cls SQL.

Comment enlever des occurences dans un SELECT ?


Auteurs : Cafeine , Tofalu , Voici une petite fonction intgrer dans votre SELECT pour enlever les occurences.

Function myRTrim2(vChaine As Variant, strSearch As String) As Variant If Not IsNull(vChaine) Then Do While vChaine Like "*" & strSearch vChaine = Left(vChaine, Len(vChaine) - Len(strSearch)) Loop myRTrim2 = vChaine End If

- 94 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Comment incrmenter un champ dans une requte SQL ?


Auteurs : francishop , Ce code permet d'incrmenter un champ d'une requete SQL :
SELECT TonChamp, (SELECT COUNT(TonChamp) FROM tbl_Exemple AS LaTable_Alias2 WHERE TonChamp < FROM tbl_Exemple ORDER BY TonChamp; tbl_Exemple.TonChamp)+1 AS Classement

Ceci permet de faire un clasement ChampNum 1 5 3 2 4 Test1 Test2 Test3 Test4 Test5 Champ 1 2 3 4 5 ChampIncrementer

- 95 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires Comment faire une recherche multi-critres ?


Auteurs : Cafeine , Dans le Tutoriel de recherche multi-critres, Cafeine, vous montre comment implmenter cette fonction indispensable qui rendra vos applications rellement productives.

lien :

Tutoriel de recherche multi-critres

Comment ouvrir un formulaire au dmarrage ?


Auteurs : Team Access , Menu Outils/Dmarrage et le menu droulant Afficher le formulaire.

Comment savoir si un formulaire est ouvert ?


Auteurs : Etienne Bar , A partir d'Access 2000 vous pouvez faire :
currentproject.AllForms("NomDuForm").IsLoaded

Sinon : Il suffit de mettre ce code dans un module :


Function IsLoaded(ByVal strFormName As String) As Integer ' Retourne True si le formulaire spcifi est ouvert. Const conObjStateClosed = 0 Const conDesignView = 0 If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then If Forms(strFormName).CurrentView <> conDesignView Then IsLoaded = True End If End If End Function

Autre solution :
Public Function is_form_opened(fname As String) As Boolean On Error GoTo not_opened Dim LeFichier As String LeFichier = Forms(fname).Name is_form_opened = True Exit Function not_opened: If (Err.Number = 2450) Then is_form_opened = False err.clear End If

- 96 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Dsactiver la molette de la souris dans un formulaire.


Auteurs : Frank , Un formulaire peut devenir pnible utiliser car la molette de la souris fait dfiler les enregistrements. Cette solution fonctionne pour MS Access 2000 et 2003. (si vous avez test pour d'autres versions n'hsitez pas nous le faire savoir) Il arrive cependant que l'erreur "nom ambigu dtect" se manifeste pour les version 2002 et ultrieures. Rfrez-vous dans ce cas au tutoriel dont le lien est en bas de cet article. 1ere tape: Ouvrir un module VBA, aller dans Outils/Rfrences, cliquer sur Parcourir et localiser la dll MouseWheel.dll puis cliquer sur Ouvrir. Cela permet d'enregistrer la dll dans les Rfrences Access. 2eme tape : Mettre le code suivant dans chaque formulaire qui requiert un contrle de la roulette de la souris.
' Dclaration dans chaque formulaire aprs Option Explicit et Option Compare Database Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel 'Procdure rajouter dans chaque formulaire Private Sub clsMouseWheel_MouseWheel(Cancel As Integer) Cancel = True End Sub Private Sub Form_Load() 'Code rajouter dans l'vnement chargement de chaque formulaire Set clsMouseWheel = New MouseWheel.CMouseWheel Set clsMouseWheel.Form = Me clsMouseWheel.SubClassHookForm End Sub Private Sub Form_Close() 'Code rajouter dans l'vnement fermeture de chaque formulaire If Not (clsMouseWheel Is Nothing) Then clsMouseWheel.SubClassUnHookForm Set clsMouseWheel.Form = Nothing Set clsMouseWheel = Nothing End If End Sub

Pour plus d'information, voir le site de Microsoft.

- 97 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Tlcharger la DLL.

lien :

Gestion de la roulette de la souris dans les formulaires

Un formulaire bas sur une requte s'affiche l'cran comme une page blanche.
Auteurs : MashiMaro , Cela signifie que la requte source du formulaire ne retourne aucun rsultat et que l'ajout est interdit. Il suffit donc de modifier les proprits ou de prvoir ce cas.

Comment ouvrir un formulaire en mode feuille de donnes ?


Auteurs : Gandalf24 ,
DoCmd.OpenForm "NomFormulaire", acFormDS ...

Comment excuter une procdure (sub) d'un sous formulaire ?


Auteurs : STEF_1 , Tofalu ,
Call Form_NomDuSousForm.Champ_AfterUpdate

Il faut que le sub (ici Champ_AfterUpdate) soit dclar comme public :


Public Sub Champ_AfterUpdate() 'Code excuter .... End Sub

Comment ouvrir un formulaire en fonction d'une valeur contenue dans un autre formulaire ?
Auteurs : Demco , Tofalu , Il faut utiliser la commande DoCmd.OpenForm : Aide Access (f1) : DoCmd.OpenForm nomformulaire[, affichage][, nomfiltre][, conditionwhere][, modedonnes][, modefentre][, openargs] C'est la condition Where (" conditionwhere ") qu'il faut modifier. Si on veut ouvrir en fonction de la valeur d'un contrle d'un autre formulaire :
"[nom_champ] =" & Forms![nom_formulaire]![nom_contrle dans autre formulaire]

Si on veut ouvrir en fonction de la valeur d'un contrle du formulaire en cours :

- 98 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

"[nom_champ] =" & Me.[MonControle]

lien : lien :

Comment inclure des champs d'un formulaire dans une requte ? Ma requte ne fonctionne pas suivant le type des variables qu'elle utilise ?

Comment fermer un formulaire en VBA ?


Auteurs : Demco , Il y a deux cas possibles. On veut fermer le formulaire sur lequel on est :
DoCmd.Close

On veut fermer un autre formulaire :


DoCmd.Close acForm, "F_MonForm"

Comment interdire le click droit dans un formulaire ?


Auteurs : Maxence HUBICHE , Demco , Proprit du formulaire Menu contextuel non. Ou bien en passant par le code :

Me.ShortcutMenu = False

lien :

Comment interdire l'utilisation du clic droit de la souris sur un contrle ?

Comment utiliser une partie de code commune plusieurs formulaires ?


Auteurs : Demco , Vous pouvez crire du code dans un module et l'appeler depuis vos formulaires. Exemple : Dans un module crivez le code suivant.
Sub MonMessage(txt As String) MsgBox txt End Sub

Puis dans votre formulaire, crivez simplement :


MonMessage "coucou"

- 99 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Fonctionne pareillement avec les fonctions.

Est-il possible d'insrer un sous-formulaire en continuous form dans un sous-formulaire qui est dj en continuous form ?
Auteurs : Etienne Bar , Oui condition d'afficher les sous-formulaires en mode feuille de donnes.

Comment passer le focus d'un formulaire un autre ?


Auteurs : FRED.G ,
Forms!Form2!MonContle.SetFocus

ou
DoCmd.SelectObject acForm, Form2, False

Empcher la fermeture d'un formulaire


Auteurs : MC2 ,
Private Sub Form_Unload(Cancel As Integer) If MsgBox("Etes-vous certain ?", vbYesNo) = vbNo Then Cancel = True End Sub

Comment excuter une procdure (sub) d'un autre formulaire ?


Auteurs : FRED.G ,
Forms!NomAutreForm.NomSub

Note : il faut que la procdure soit dclare en Public Sub :


Public Sub NomSub() 'Code excuter .... End Sub

lien : Comment dclencher un vnement par le code ?

Message d'erreur "Mmoire libre insuffisante" lors de l'utilisation d'un formulaire


Auteurs : Tofalu , Un petit tour sur le site du fabricant s'impose.

- 100 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

http://support.microsoft.com/default.aspx?scid=kb;fr;236977

Comment rcuperer la valeur d'une cellule dans un formulaire tabulaire ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Tout d'abord, il faut que les colonnes soient ordonnes dans le mme ordre que la prsentation des champs dans la requte. Si on a :
Select Nom, Prenom From Table

Il faut que la premire colonne soit nom, la seconde prenom. Ensuite dans le code du formulaire, coller la fonction suivante :
Private function Cells(Ligne as integer,Colonne as integer) as string On error goto err Dim R as dao.recordset set r=me.recordsetclone r.movefirst While Ligne>0 r.movenext ligne=ligne-1 Wend Cells=R.fields(Colonne).value err: End Function

On accde une cellule avec :


MsgBox Cells(3,4)

Nb les indices commencent 0. (La premire colonne a pour numro 0 et idem pour la premire ligne) Si toutefois, vous ne voulez pas ordonner les colonnes comme les champs, cela donnera.
Private function Cells(Ligne as integer,Colonne as string) as string On error goto err Dim R as dao.recordset set r=me.recordsetclone r.movefirst While Ligne>0 r.movenext ligne=ligne-1 Wend Cells=R.fields(Colonne).value err: End Function

Et au lieu du numero de la colonne, on passera son nom.

- 101 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MsgBox Cells(2,"Nom")

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment afficher une page Web dans un formulaire ?


Auteurs : Tofalu , Le contrle ActiveX Microsoft Web Browser vous permet de faire cela.

Comment ouvrir un formulaire en mode ajout ?


Auteurs : Cafeine ,
DoCmd.GoToRecord acDataForm, Me.name, acNewRec

Comment faire pour rduire un formulaire ? (effet du bouton tiret en haut droite des fentres Windows)
Auteurs : Demco , Insrez ceci dans le code :

DoCmd.Minimize

lien :

Comment mettre un plein cran une fentre de formulaire ?

Comment changer le titre d'un formulaire ?


Auteurs : Drosera , En VBA :
Me.Caption = "Nouveau nom du formulaire"

Comment imprimer un formulaire au format Paysage ?


Auteurs : Arkham46 , Vous pouvez modifier le paramtre Orientation de l'objet Printer depuis Access 2002.

DoCmd.OpenForm "F_AFFICHAGE" Forms("F_AFFICHAGE").Printer.Orientation = acPRORLandscape DoCmd.PrintOut

- 102 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DoCmd.Close acForm, "F_AFFICHAGE"

Comment obtenir la description d'un formulaire ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Vous pouvez vous inspirer de cet exemple. Attention, si la description n'a pas t renseigne, la proprit n'existe pas.
Public Function GetDescForm(strFormName As String) As String Dim oDb As DAO.Database Set oDb = CurrentDb GetDateUpdatedForm = oDb.Containers("Forms").Documents(strFormName).Properties("Description") End Function Sub test() MsgBox GetDescForm("Formulaire1") End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment obtenir la date de modification d'un formulaire ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Public Function GetDateUpdatedForm(strFormName As String) As Date Dim oDb As DAO.Database Set oDb = CurrentDb GetDateUpdatedForm = oDb.Containers("Forms").Documents(strFormName).LastUpdated End Function Sub test() MsgBox GetDateUpdatedForm("Formulaire1") End Sub

Attention, un bug est recens sous Access 2000 : LastUpdated retourne la date de cration du formulaire.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment fermer tous les formulaires ouverts ?


Auteurs : Papy Turbo , Il faut parcourir la collection Forms de l'application.

Public Sub CloseAllForms() Do WHILE Forms.Count Docmd.Close acForm, Forms(0).Name Loop

- 103 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

lien :

Comment fermer un formulaire en VBA ?

Comment trier un formulaire tabulaire en cliquant sur l'tiquette de la colonne ?


Auteurs : kloun , Le code suivant permet de trier l'affichage d'un Formulaire tabulaire en cliquant sur l'tiquette d'une colonne. Si l'orde est de A->Z lors du clic celui-ci passe de Z->A et vice-versa
Global gBol as Boolean Private Sub MonEtiquette_Click() Me.OrderByOn = True If gBol = False Then Me.OrderBy = "MaColonne asc" gBol = True Else Me.OrderBy = "MaColonne desc" gBol = False End If End Sub

Comment modifier la proprit d'un formulaire en VBA ?


Auteurs : Tofalu , Pour modifier la proprit Description d'un formulaire il faut accder l'objet en DAO via la collection containers et l'objet document L'exemple suivant insre la date et l'heure courante dans la proprit Description du formulaire "MonFormulaire" Il faut ajouter la rfrence : Microsoft DAO 3.x Object Library
Sub ecrireDecr() On Error GoTo err 'Script qui affecte la date et l'heure la proprit Description ' d'un formulaire Dim oDb As DAO.Database Dim oDoc As DAO.Document Set oDb = CurrentDb Set oDoc = oDb.Containers("Forms").Documents("MonFormulaire") oDoc.Properties("Description") = Now fin: Exit Sub err: Select Case err.Number Case 3270 'Si la proprit n'existe pas la crer With oDoc .Properties.Append .CreateProperty("Description", dbText, Now) .Properties.Refresh End With Case Else err.Raise err.Number End Select Resume fin

- 104 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

Comment effectuer une action lors d'un changement d'enregistrement d'un sous-Formulaire ?
Auteurs : Faw , Il suffit de mettre votre code dans l'vnement Sur Activation de votre sous formulaire

Comment dfinir l'inactivit d'un utilisateur dans un formulaire ?


Auteurs : DMboup , Ce code permet de tester toutes les secondes si le focus ne se dplace dans le formulaire ou si une touche n'est pas appuye pendant un temps paramtr, un message de non activit s'affiche. Ce code permet de fermer un Formulaire ou la base en cours au bout d'un temps prdfini. Voici le code du Module du Formulaire test :
Option Compare Database Public ExpiredTime ' Sub Form_Timer() ' IDLEMINUTES determines how much idle time to wait for before ' running the IdleTimeDetected subroutine. Const IDLEMINUTES = 0.05 Static PrevControlName As String Static PrevFormName As String Dim ActiveFormName As String Dim ActiveControlName As String Dim ExpiredMinutes On Error Resume Next ' check le forumulaire active et le control name ActiveFormName = Screen.ActiveForm.Name If Err Then ActiveFormName = "No Active Form" Err = 0 End If ActiveControlName = Screen.ActiveControl.Name If Err Then ActiveControlName = "No Active Control" Err = 0 End If ' verifie actif actuel and reinitialise temps expiration si: ' 1. aucun enregistrement d'action encore (code roule pour ' la premiere fois). ' 2. les noms precedents sont differents des noms courants ' (usager a fait quelque chose de different pendant l'intervalle de temps If (PrevControlName = "") Or (PrevFormName = "") _ Or (ActiveFormName <> PrevFormName) _ Or (ActiveControlName <> PrevControlName) Then PrevControlName = ActiveControlName PrevFormName = ActiveFormName

- 105 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ExpiredTime = 0 Else ' ...otherwise the user was idle during the time interval, so ' increment the total expired time. ExpiredTime = ExpiredTime + Me.TimerInterval End If ' Does the total expired time exceed the IDLEMINUTES? ExpiredMinutes = (ExpiredTime / 1000) / 60 If ExpiredMinutes >= IDLEMINUTES Then ' ...si oui, je reset le temps d'expiration a 0... ExpiredTime = 0 ' ...et appelle la sous-routine idletimedetected. IdleTimeDetected ExpiredMinutes End If End Sub Sub IdleTimeDetected(ExpiredMinutes) Dim Msg As String Msg = "Aucune activite " Msg = Msg & ExpiredMinutes & " minute(s)!" MsgBox Msg, 48 End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If Not IsNull(KeyCode) Then ExpiredTime = 0 End If End Sub

Const IDLEMINUTES = 0.05 correspond 5 secondes Modifiez les proprits du Formulaire comme suit : Aperu des touches sur OUI Intervalle minuterie = 1000

Comment conserver la modification d'une tiquette dans un formulaire en VBA ?


Auteurs : Lou Pitchoun , Pour conserver le changement d'une tiquette aprs fermeture du formulaire, il faut d'abord l'ouvrir en mode cration (acDesign) et cach (acHidden). Ensuite on modifie le texte de l'tiquette, on sauvegarde le formulaire et on l'ouvre normalement.
DoCmd.OpenForm NomFormulaire, acDesign, , , , acHidden Forms![NomFormulaire]![NomEtiquette].Caption = "Nouvelle lgende" DoCmd.Close acForm, NomFormulaire, acSaveYes DoCmd.OpenForm NomFormulaire

Nota : ne fonctionne pas pour les fichiers mde, ne fonctionne q'avc des fichiers mdb.

Comment Ouvrir un Formulaire modal indpendant en mode Continu de faon visualiser tous les enregistrements ?
Auteurs : Arkham46 , Le code suivant permet de redfinir la hauteur de Formulaire en fonction du nombre d'enregistrements :

- 106 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub Form_Load() Me.InsideHeight = Me.Section(acHeader).Height + Me.Section(acFooter).Height + Me.RecordsetClone.RecordCount * Me.Section(acDetail).Height End Sub

Comment ajuster la taille d'un sous-form en fonction du nombre d'enregistrements ?


Auteurs : The_Super_Steph , micniv , Ce code permet d'ajuster la taille d'un sous-formulaire en fonction du nombre d'enregistrements qu'il contient. Sur l'vnement SurActivation du formulaire, il suffit de mettre le code suivant :
Private Sub Form_Current() Me.TonSousForm.Form.InsideHeight = Me.TonSousForm.Form.Section(acHeader).Height _ + Me.TonSousForm.Form.Section(acFooter).Height _ + Me.TonSousForm.Form.Section(acDetail).Height _ * (Me.TonSousForm.Form.RecordsetClone.RecordCount _ - Me.TonSousForm.Form.AllowAdditions) Me.TonSousForm.Height = Me.TonSousForm.Form.WindowHeight End Sub

Aprs, s'il y a des zones de textes en-dessous, il suffit de modifier leur position en fonction du sous-formulaire, par exemple :
Me.TazoneDeTexte.Top = Me.TonSousForm.Top + Me.TonSousForm.Height + AutantDeTwipsQueTuVeux

... et ainsi de suite ! Evolution de micniv Une volution pour ce script intressant : limiter la hauteur du sous-form n lignes afficher qd ncessaire la barre de dfilement vertical
Dim objSousForm As Object Dim frmSousForm As Form Dim nbMaxLignes As Long 'Vos dclarations Set objSousForm = Me!TonSousForm Set frmSousForm = objSousForm.Form nbMaxLignes = 3 'limite la hauteur n lignes et affiche le dfilement vertical

If frmSousForm.RecordsetClone.RecordCount <= nbMaxLignes Then frmSousForm.InsideHeight = frmSousForm.Section(acHeader).Height _ + frmSousForm.Section(acFooter).Height _ + frmSousForm.Section(acDetail).Height _ * (frmSousForm.RecordsetClone.RecordCount _ - frmSousForm.AllowAdditions) objSousForm.Height = frmSousForm.WindowHeight frmSousForm.ScrollBars = 0 'aucune barre de dfilement Else frmSousForm.InsideHeight = frmSousForm.Section(acHeader).Height _ + frmSousForm.Section(acFooter).Height _ + frmSousForm.Section(acDetail).Height _ * (nbMaxLignes - frmSousForm.AllowAdditions) objSousForm.Height = frmSousForm.WindowHeight

- 107 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

frmSousForm.ScrollBars = 2 End If

'barre de dfilement verticale

'Aprs, s'il y a des zones de textes en-dessous, il suffit de 'modifier leur position en fonction du sous-formulaire, 'par exemple : Me.TaZoneDeTexte.Top = objSousForm.Top + objSousForm.Height + AutantDeTwipsQueTuVeux

Set objSousForm = Nothing Set frmSousForm = Nothing

- 108 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles Comment atteindre un contrle d'un sous formulaire ?
Auteurs : FRED.G , Exemple pour une zone de texte :
Forms![NomFormulaire]![NomSousFormulaire].Form![MaZoneDeText]

lien : Comment atteindre un contrle d'un autre formulaire ?

Comment atteindre un contrle d'un autre formulaire ?


Auteurs : FRED.G , Voici le code le permettant :
Forms![NomFormulaire]![MaZoneDeText]

lien : Comment atteindre un contrle d'un sous formulaire ?

"#Supprim" apparat dans les contrles de mon formulaire aprs avoir supprim un enregistrement ?
Auteurs : Team Access , Il suffit de rafrachir les donnes du formulaire :
Me.Requery

Comment changer la valeur de plusieurs contrles en mme temps ?


Auteurs : Team Access , Pour changer la valeur des CheckBox :
For Each ctrl In Me.Controls If ctrl.ControlType = acCheckBox Then ctrl.Value = 0 End If Next ctrl

Sinon, si vous respectez les normes de prfixes pour les noms de contrles, voici une solution :
Dim ctl As Control For Each ctl In Me.Controls 'On vrifie les 3 premire lettre du nom du contrle Select Case Left(ctl.Name, 3) 'Si c'est une chekBox Case "chk" ctl.Value = -1 'Si c'est un label Case "lbl" ctl.Caption = "- * - * -" 'Si c'est une zone de texte Case "txt"

- 109 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ctl.Visible = False ctl.Value = "" 'Si c'est un combo Case "cmb" ctl.Visible = False End Select Next ctl

Il faut donc respecter une certaine norme dans l'appellation des contrles. Le nom d'une zone de texte commence par "txt" (ex : txtNom), les labels par "lbl", ...

lien :

Normalisation des noms

Est-il possible de crer dynamiquement des contrles ?


Auteurs : Team Access , Oui ! grce la fonction CreateControl() lien : Comment crer dynamiquement des contrles de type rectangle sur le formulaire en cours ? lien : Comment crer dynamiquement un contrle dans un formulaire et lui associer du code vba sur un vnement ?

Comment savoir si un contrle du formulaire est vide ?


Auteurs : Demco , Utiliser la fonction Nz() :
If Nz(Me.MonChamp, "") = "" Then MsgBox "Champ vide" End If

Ou alors la fonction len() :


If Len(Me.MonChamp) = 0 Then MsgBox "Champ vide" End If

Quand je suis sur le formulaire B, comment savoir quel bouton a t cliqu pour l'ouvrir ?
Auteurs : Drosera , Grce ce code :
Forms("formulaireA").ActiveControl.Name

Comment rendre (inv)visible un groupe de contrles ?


Auteurs : Maxence HUBICHE , Placer un groupe d'options (contrle appartenant la bote outils), modifiez ses attributs : -> Apparence "A deux dimensions"

- 110 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

-> style de bordure "Transparent" De cette manire le Groupe d'options ne se voit pas. Placer tous les contrles dessus. Si votre Groupe d'options s'appelle MonGroupe, il suffit de faire :
MonGroupe.Visible = False

pour le rendre invisible et son contenu


MonGroupe.Visilble = True

pour le faire rapparatre et son contenu.

Comment verrouiller le contrle d'un formulaire ?


Auteurs : Frank ,
MonControle.Locked = True

Pour le rendre nouveau modifiable :


MonControle.Locked = False

Comment ajouter une nouvelle page sur le contrle onglet ?


Auteurs : Drosera , Il faut utiliser la mthode Add du contrle onglet. L'ajout d'une page d'onglet doit se faire dans le formulaire en mode cration. Ce code ouvre le formulaire 'NomDuFormulaire' en mode cration et ajoute une page au contrle onglet 'NomDuControlOnglet' .
DoCmd.OpenForm "NomDuFormulaire", acDesign Forms("NomDuFormulaire")("NomDuControlOnglet").Pages.Add

Comment prremplir un champ d'un formulaire qu'on ouvre en fonction d'un autre formulaire
Auteurs : Maxence HUBICHE , Attaquons en essayant d'tre le plus synthtique possible : 1- le langage VBA est un langage bas sur plusieurs bibliothques. Tu peux les explorer en faisant F2 depuis un module quelconque. (Je dirai mme, tu DOIS les explorer...). Pour grer ces bibliothques, il faut aller dans Outils/Rfrences, o une boite de dialogue te liste les rfrences actives dans le projet (la base de donnes...) et les autres rfrences existant sur ton ordinateur. 2- pour trouver de l'aide il te faut prendre de bonnes habitudes : la rechercher d'abord dans l'aide en ligne. Pour cela, sur les mots que tu ne connais pas, appuies sur le touche F1. Tu obtiendras ainsi l'aide relative au mot slectionn. C'est une partie extrmement importante. Il faut lire beaucoup d'informations pour progresser en VBA. la rechercher ensuite dans les posts existant sur le site. Pour cela, il y a un outils rechercher en haut de chaque page. Enfin, si aprs tout cela, tu n'as toujours pas trouv, alors il faut poser la question le plus clairement possible en donnant tous les moyens ceux qui seraient amens te rpondre de comprendre ce que tu veux. J'en profite pour t'indiquer que le lien dans ma signature m'a beaucoup fait rire, propos de la manire de poser des questions.
- 111 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ceci tant pos, examinons ton problme. Tu souhaite que, lorsque tu cliques sur un bouton d'un premier formulaire (formAuteurs), un autre formulaire (formLivres) s'ouvre et que ce dernier soit prrempli avec une information venant du premier formulaire. En examinant ce problme, on dtermine 2 prdicats importants : Quand et Quoi. Quoi dtermine la ou les actions entreprendre. Quand dtermine le moment o elles sont dclench, l'vnement qui les lance. Examinons d'abord le QUOI Ouvrir un formulaire donn (formLivres) en lui passant un lment du formulaire courant. Cette ouverture doit se faire en mode ajout. Nous avons donc prpar un formulaire formLivres bas sur la table des livres. Si nous travaillions de manire interactive avec access, nous prendrions l'option 'OUVRIR' du formulaire, aprs avoir slectionn son nom. Nous allons faire de mme, mais en code. La ligne suivante :

Application.DoCmd.OpenForm "formLivres",,,,acFormAdd,,me.[NAuteur]

retrace exactement cette demande : On y retrouve une premire indication importante :

Application.DoCmd.OpenForm

qu'on pourrait traduire par : "Dans l'application Access en cours (Application), faire la commande (DoCmd) ouvrir le formulaire (OpenForm)" Ouvrir le formulaire d'accord, mais lequel ? Comment ? en mode cration ? en boite de dialogue ? en filtrant les donnes ? ... beaucoup de questions dont on trouvera la rponse dans la suite de la ligne : Copies la ligne dans un module, puis fait F1 aprs avoir slectionn OpenForm. Voici un extrait de ce que tu obtiendras : l'aide Access a crit: expression.OpenForm(NomFormulaire, Afficher, NomFiltre, ConditionWhere, ModeDonnes, Modefentre, ArgOuverture) Il s'agit de la syntaxe utilises pour la mthode OpenForm. La premire chose attendue : Le nom du formulaire. Comme c'est du texte qui est attendu, on le mettra entre guillemets"" Afficher correspond au mode d'affichage : en mode cration, en mode formulaire, ... par dfaut, c'est dire si tu ne mets rien, ce sera en mode formulaire. NomFiltre et ConditionWhere correspondent des manires diffrentes de filtrer, de n'afficher qu'une certaine quantit d'enregistrements. ModeDonnes te permet notamment en mettant acFormAdd de dire que tu ne souhaite qu'ajouter de nouvelles donnes. ModeFentre te permettra par exemple de faire une boite de dialogue Enfin ArgOuverture (que nous appelons, bicoz VBA is in inglich , OpenArgs) te permet de dfinir une chaine de caractres que recevra le formulaire qui s'ouvre. C'est la raison pour laquelle nous y mettons ME.[NAuteur], ce qui corresponda dire : La valeur du contrle [NAuteur] qui est en Moi(sous-entendu le formulaire dans lequel se trouve ce code). Voyons maintenant le QUAND Il s'agit, d'aprs ton nonc de cliquer sur un bouton... Donc, cette action dcrite plus haut se fera sur le clique du bouton. Chaque objet des formulaires contient des vnements (actions de l'utilisateur ou du systme) que nous pouvons intercepter pour y mettre une srie d'actions entreprendre. Lorsque nous programmons en VBA ces vnements, nous cons ce que nous appelons des procdure evnementielles. Dans ton cas, si tu demandes les proprits de ton bouton, que tu regardes l'onglet evnements, tu trouveras l'vnement sur clic. Un double-clic dans la zone blanche de droite fera apparaitre [Procdure vnementielle]. Cliques maintenant sur les 3 points droite, et tu te retrouvera dans un module (celui du formulaire, c'est inscrit dans la barre de titre du module) dans une sub (procdure) dclare Private( car limite au formulaire) qui a un nom compos :

Private sub cmdLivres_Click() End Sub

Je suis parti du principe que le bouton s'appelait cmdLivres La premire partie du nom fait rfrence au nom de l'objet, la deuxime l'vnement concern. Pour prcisier que c'est ce moment l que nous voulons faire l'action examine plus haut, il va falloir mettre l'action dans la procdure, ce qui donne le rsultat suivant :
- 112 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private sub cmdLivres_Click() Application.DoCmd.OpenForm "formLivres",,,,acFormAdd,,me.[NAuteur] End Sub

La premire partie du travail est termine. Maintenant que nous avons russi ouvrir un formulaire en lui passant des informations, il va falloir que ce dernier (formLivres) exploite ces informations. Alors ? Il va faire QUOI et QUAND ? Tu remarques que nous sommes toujours dans le mme cas du Quoi et du Quand! QUOI Il va vrifier s'il a recu un openarg. si c'est le cas, il mettra la valeur recue dans son [NAuteur], sinon, il n'y a rien lieu de faire. Cela se traduit comme suit :

If IsNull(Me.OpenArgs) Then 'rien faire Else Me.[NAuteur]=Clng(Me.OpenArgs) End if

Si en moi (Me) les OpenArgs ne sont pas dfinis (IsNull()), alors puisqu'il n'y a rien faire, nous ne prciserons aucune ligne particulire en dessous, mais juste un petit commentaire. On le fait toujours prcder d'un '(apostrophe). Sinon (Else) mets la valeur de l'openarg convertie en entier long (Clng(Me.OpenArg)) dans le contrle [NAuteur] qui est en Moi. Fin des tests (End If). Reste savoir quand cette vrification doit se faire ! A l'ouverture du formulaire semble stre une bonne solution. QUAND Dans les proprits du formulaire formlivres, tu regardes l'onglet des vnements, et tu trouves sur ouverture. tu accde la procdure vnementielle de la mme manire que pour le bouton et tu obtiens :

Private Sub Form_Open(Cancel As Integer) End Sub

Pour que la srie d'actions dcrites ci-dessus s'accomplissent, tu n'as plus qu' les mettre dans cette procdure d'vnement. Le rsultat est donc :

Private Sub Form_Open(Cancel As Integer) If IsNull(Me.OpenArgs) Then 'rien faire Else Me.[NAuteur]=Clng(Me.OpenArgs) End if End Sub

En rsum, tu as fait 2 procdure vnementielles; Une que tu dclenches en cliquant sur un bouton. une qui se dclenche chaque ouverture du formulaire livres. Dans chaque procdure, tu as mis les actions que tu voulais voir s'accomplir ce moment prcis. Ce sont les principe de base que tu viens de voir ici. Il ne te reste plus qu' acqurir plus de vocabulaire, et de syntaxes. C'est l'exprience ou la formation qui t'amneront tout ca. Mais dans tous les cas, la lecture de l'aide reste indispensable!

Comment slectionner une page d'un onglet en VBA


Auteurs : FRED.G , Il faut dfinir la proprit Value de l'onglet. Value doit correspondre la proprit PageIndex (IndexPage) de la page slectionner. Exemple :

- 113 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me!NomOnglet.Value = 0

Afficher une image dans une page d'onglet


Auteurs : Cafeine ,
MonOnglet.Pages(0).Picture = "c:\temp\bmpaide.bmp"

Pour effacer l'image :

MonOnglet.Pages(0).Picture=""

[VBA DAO] Dfinir la valeur par dfaut d'un champ


Auteurs : Cafeine ,
Dim fldDate As DAO.Field Set fldDate = CurrentDb.TableDefs!NomTable.Fields("MonChampDate") fldDate.DefaultValue = "Now()" Set fldDate = Nothing

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Peut-on sauter des champs dans un Formulaire?


Auteurs : Maxence HUBICHE , Dans les proprits du controle, Solution 1 : Arrt tabulation=non Solution 2 : activ = non

Comment dtecter une modification dans n'importe quel champ (dpendant) d'un formulaire
Auteurs : Team Access , Lorsqu'un formulaire dpendant subit des modifications sur un de ses champs, son vnement Si Modification (Dirty) est dclench. D'autre part, si vous ne souhaitez pas utiliser cet vnement, il existe aussi la proprit Dirty du formulaire dont la valeur est gale True lorsque le contenu de celui-ci est modifi

Existe-t-il un moyen de vrifier la saisie d'un utilisateur dans un champ via des expressions rgulires.
Auteurs : THOGAL , Nous voulons par exemple un champ dans lequel l'utilisateur doit rentrer obligatoirement de 1 3 chiffres suivis de 0 5 lettres...

- 114 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Il faut dfinir la proprit masque de saisie (InputMask) dans proprit du contrle de formulaire ou du champ de table : 0aa????? Comment connatre tous les caractres spciaux utiliser pour crer des masques de saise personnaliss ? >> vous allez sur access, vous vous positionnez sur une proprit masque de saisie et l, vous appuyez sur F1. Access va vous donner tous les caractres spciaux des masques !

Comment limiter le nombre de caractres la saisie dans un champ


Auteurs : Tofalu , _ Contrle li : Il suffit de dfinir la proprit "Taille du champ" directement dans la table. _ Contrle indpendant : Il est possible d'utiliser la proprit masque de saisie, dans les proprits de la zone de texte il faut entrer un masque de saisie proprits/donnes/masque de saisie exemple : ###### permet de taper 123456 seulement. Il est aussi possible d'utiliser la proprit "Valide si". Par exemple, "NbCar([NomControle])<=5" empchera d'entrer plus de 5 caractres. Pour personnaliser le message d'erreur, entrer du texte dans la proprit "Message si erreur".

Comment dsactiver le bouton "prcdent" lorsqu'on est sur le premier enregistrement ?


Auteurs : FRED.G ,
Private Sub Form_Current() On Error GoTo GestErr If Me.CurrentRecord > 1 Then Me!BoutonPrcdent.Enabled = True Else Me!BoutonPrcdent.Enabled = False End If Exit Sub GestErr: Select Case Err Case 2164 Me!AutreContleActifDeTonChoix.SetFocus Resume Case Else MsgBox Err.Description, , "Erreur n" & Err.Number Exit Sub End Select End Sub

- 115 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On peut imaginer une volution du code pour l'adapter galement au bouton suivant dans la cas o nous somme sur le dernier enregistrement.

Comment faire pour que la premire lettre saisie dans un contrle soit en majuscule, puis les autres en minuscules.
Auteurs : Papy Turbo , Vous avez un champ par exemple Nom de famille, et vous voulez que quelque soit ce que tape l'utilisateur, le rsultat soit de la forme "Martin" mme s'il a tap "mARtIn".
Private Sub txtMemo_KeyPress(KeyAscii As Integer) If KeyAscii > 64 Then 'on vrifie si on se trouve au le premier caractre If txtMemo.Selstart = 0 Then KeyAscii = Asc(UCase(Chr(KeyAscii))) Else KeyAscii = Asc(LCase(Chr(KeyAscii))) End If End If End Sub

Comment atteindre un contrle dont le nom est dans une variable


Auteurs : Gal Donat ,
Me.Controls(MaVar).value = "Mon texte"

De mme, pour parcourir une collection d'objet dont les noms sont Ctrl1, Ctrl2 ... :
dim Ctl as control For i = 1 To 180 set ctl=Me.controls("Ctrl" & i) ctl.value = "mon texte" Next i

Comment numrer les contrles d'un formulaire dans une boucle ?


Auteurs : ThierryAIM , Ce code imprime le nom de chaque contrle de Form1 dans la fentre de dbogage:
Dim Ctrl As Control For Each Ctrl in Form1.Controls Debug.Print Ctrl.Name

- 116 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Next

lien : FAQ VB

Comment contrler la saisie, empcher la saisie de certains caractres ?


Auteurs : Team Access , Pour utiliser ceci vous avez besoin des valeurs ascii des touches que vous voulez "verrouiller". Code a mettre sur l'vnement OnKeyPress du contrle concern :
If KeyAscii = 32 Or KeyAscii = 34 Then MsgBox "Ce caractre est interdit", vbInformation KeyAscii = 0 End If

lien : Comment limiter le nombre de caractres saisis dans une zone de texte indpendante ?

Je n'arrive pas dfinir en vba la valeur par dfaut d'un contrle affichant une date dans un formulaire.
Auteurs : FRED.G , Il faut convertir la valeur en numrique de type Double et a marche :
Dim MaDateParDfaut as date MaDateParDfaut = #09/02/2005# txtMaDate.defaultValue = cdbl(MaDateParDfaut)

Comment viter qu'Access ne corrige automatiquement les mots saisis dans un contrle ?
Auteurs : Morsi , La correction automatique d'Access peut-tre gnante, par exemple lorsque l'on souhaite saisir un mot de passe. En effet, si vous saisissez par exemple un mot comme "chateau", Access va le corriger en "chteau". Vous n'allez rien remarquer puisque les caractres saisis sont masqus par des "*". Mais le mot de passe saisi ne sera pas reconnu... Pour rgler ce problme il faut imprativement passer par un formulaire pour entrer les donnes. En effet, il est possible de dsactiver la correction automatique pour un contrle en utilisant sa proprit AutoCorrectionPermise (AllowAutoCorrect). Mais cela n'est pas possible pour une table. Conseil : pensez dsactiver la touche F7 afin que l'utilisateur n'appelle pas lui-mme le correcteur d'access :
Private Sub MonContrle_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyF7 Then KeyCode = 0 End Sub

lien : Comment masquer ce qui est tap dans une zone de texte (pour un mot de passe) ?

Comment empcher l'utilisateur de saisir du texte dans un contrle


Auteurs : Papy Turbo , Nous travaillons ici sur un contrle se nomm ListeDeroulante.

- 117 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub ListeDeroulante_KeyPress(KeyAscii As Integer) If KeyAscii >31 Then KeyAscii = 0 Beep End If End Sub

Ce code ne bloquera pas la souris, mais aucune touche ne passera, sauf les touches de contrle (Tab, Enter, Backspace...) dont les codes sont infrieurs 32 (= espace, le 1er caractre).

Comment dterminer sur quel contrle se trouve le focus ?


Auteurs : Maxence HUBICHE , Il suffit d'utiliser :
Screen.Activecontrol

Comment forcer l'utilisateur utiliser la virgule et non le point lors de la saisie de nombres ?
Auteurs : shwin , La zone de texte avec laquelle nous travaillons se nomme zdtNombre. Il suffit de mettre le code suivant :
Private Sub zdtNombre_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode = 190) Then KeyCode = 188 End If End Sub

Ainsi, lorsque l'utilisateur appuiera sur la touche "." du clavier, cel insrera tout de mme une virgule ",".

Pourquoi mon code affiche un nombre dcimal dans une tiquette, alors que le champ dure de la requte est en heure abrg du type hh:mm ?
Auteurs : FRED.G , Parce que les dates sont stockes sous la forme d'un nombre rel double. Or dans une requte, ce nombre peut tre format pour n'en afficher que la partie dcimale sous forme d'heures. Mais dans une tiquette, il n'y a pas de proprit format. La solution est d'utiliser la fonction Format() :

- 118 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MonLabel.caption = Format(DSum("dure", "reqt", strfiltre),"hh:mm")

Comment crer dynamiquement un contrle dans un formulaire et lui associer du code vba sur un vnement ?
Auteurs : ma_mat , Tout d'abord, il faut ouvrir le formulaire en mode cration. Ensuite pour crer un contrle par le code il faut utiliser la mthode CreateControl de l'objet Application. Pour crer une procdure vnementielle, il faut utiliser la mthode CreateEventProc de l'objet Module.

Dim ctl As Control 'Cre un contrle "Groupe d'options" : Set ctl = CreateControl("NomFormulaire", acOptionGroup, , NomPag, , 1200, 3800, 6300, 2700) With ctl 'Dfinit un nom pour le contrle .Name = "Options" 'Dclare l'vnement "Aprs mise jour" du contrle .AfterUpdate = "[Event Procedure]" End With

'Normalement il ne nous reste plus qu' crire la procdure 'vnementielle avec Module.CreateEventProc 'Mais tant donn que nous avons cr un groupe d'option 'il faut maintenant crer l'intrieur, 'un contrle pour chaque option (nous allons pour cela nous servir 'de l'argument "Parent" de la mthode CreateControl). 'Crons par exemple un bouton d'option : Set ctl = CreateControl("NomFormulaire", acOptionButton, , ctl.Name, , 1500, 4000) With ctl .Name = "option1" .OptionValue = 1 End With

'Et maintenant, cration du code excuter sur AfterUpdate de Options : Dim mdl As Module Dim lng As Long 'Sert rcuprer le numro de la ligne d'insertion de la procdure Set mdl = Forms![NomFormulaire].Module lng = mdl.CreateEventProc("AfterUpdate", "Options") mdl.InsertLines lng + 1, _ vbTab & _ "If(option1.value = 2) then MsgBox " & Chr(34) & "Vous avez choisi 1." & Chr(34) 'On libre mmoire alloues aux variables. Set ctl = Nothing Set mdl = Nothing

Comment interdire l'utilisation du clic droit de la souris sur un contrle ?


Auteurs : Faw , Par exemple pour une zone de liste vous utilisez :

- 119 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me.MaListe.ShortcutMenuBar = ""

lien :

Comment interdire le click droit dans un formulaire ?

Comment crer dynamiquement un contrle dans un formulaire et lui associer du code vba sur un vnement ?
Auteurs : Tofalu , marchand_de_sable , Je me permets un petit ajout pour associer du code VBA au contrle. En effet, la mthode CreateEventProc n'est pas forcment des plus simple utiliser. On peut donc dfinir au pralable une fonction, et l'associer l'vnement que l'on veut. Attention, la fonction peuttre dfinie dans n'importe quel module, mais doit tre Public. Exemple :

Public Function maFonction () MsgBox "Message dclench par l'vnement BeforeUpdate" End Function

Pour associer ce code mon contrle, il faut soit que le formulaire soit ouvert en mode cration et insrer le code qui suit, soit mettre ce mme code sur l'vnement OnLoad() du formulaire :

monControl.BeforeUpdate = "=maFonction()"

Le tour est jou. ATTENTION : vous remarquerez que cette fonction ne retourne aucune valeur, ce qui en fait une procdure, cependant, si vous la dclarez en tant que tel (comme Sub), cela ne fonctionne pas... lien : Est-il possible de crer dynamiquement des contrles ?

Comment rcuprer la position du curseur dans un contrle ?


Auteurs : Demco , Vous pouvez utiliser l'attribut SelStart du contrle pour obtenir (ou mme dfinir) cette information. Dans l'exemple suivant nous voulons connatre la position du curseur dans une zone de texte nomme MaZdt :

MsgBox MaZdt.SelStart

Comment dterminer la position d'un contrle par le code ?


Auteurs : jfox ,
Me.MonBouton.Left=5670

- 120 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me.MonBouton.Top=5670

lien :

Crer dynamiquement un formulaire

Comment dplacer le pointeur de la souris vers un contrle ?


Auteurs : Arkham46 , Cafeine , Vous pouvez vous insiprer de cet exemple. Dans l'entte du module du formulaire, dclarez :

Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _ ByVal X As Long, ByVal Y As Long) As Long Private Sub MoveMyMouseToControl(pCtrl As String) Dim lx As Long, ly As Long, lw As Long, lh As Long Call Me.Controls(pCtrl).accLocation(lx, ly, lw, lh) apiSetCursorPos lx + lw / 2, _ ly + lh / 2 End Sub

Utilisation :

MoveMyMouseToControl "txtNumClient"

La souris sera dplace au milieu du contrle txtNumClient Il s'agit d'une fonction non documente. Si elle ne fonctionne pas (suivant votre version) vous pouvez utiliser :

Option Explicit Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' attribue la position de la souris Private Declare Function apiSetCursorPos Lib "user32" Alias "SetCursorPos" ( _ ByVal X As Long, ByVal Y As Long) As Long ' retourne le rectangle d'un objet windows Private Declare Function GetWindowRect Lib "user32" _ (ByVal hwnd As Long, lpRect As RECT) As Long Private Declare Function apiGetFocus Lib "user32" _ Alias "GetFocus" () As Long Private Sub MoveMyMouseToControl(ByVal strCtl As String) Dim ctl As Control Dim hCtl As Long Dim myRect As RECT For Each ctl In Me.Controls If ctl.name = strCtl Then

- 121 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' nous calculons le rectangle en pixels ' dans lequel s'inscrit le contrle ' nous calculons les coordonnes du centre du ' rectangle afin d'y placer la souris ctl.SetFocus hCtl = apiGetFocus GetWindowRect hCtl, myRect apiSetCursorPos myRect.Left + (myRect.Right - myRect.Left) / 2, _ myRect.Top + (myRect.Bottom - myRect.Top) / 2 End If Next ctl Set ctl = Nothing End Sub

Comment donner le focus un controle d'un sous formulaire ?


Auteurs : Lou Pitchoun , Voici un code permettant de donner le focus un controle d'un sous formulaire aprs (par exemple) avoir quitter une boite de dialogue

Me.NomSsForm.SetFocus Me.[NomSsForm].Form![NomControle].SetFocus

lien :

Les syntaxes d'appel : Interaction des formulaires et tats

Comment afficher une info bulle pendant le survol d'un controle ?


Auteurs : Petogaz , Pour afficher une Info Bulle lors d'un survol d'un control, il suffit d'aller dans les proprits de ce contrle : - onglet "autres" sur la ligne - "Texte d'info-bull" mettre le texte voulu. lien : Comment dfinir en VBA le texte d'une Info Bulle ?

Comment modifier le pointeur de la souris lors d'un survol de Contrle ?


Auteurs : Faw , Le code suivant permet de changer la forme du curseur lors du survol d'un contrle. Placez la fonction suivante dans un nouveau Module :
Private Const IDC_HAND = 32649 Private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal lpCursorName As Long) As Long Private Declare Function SetCursor Lib "user32" (ByVal hCursor As Long) As Long Function ChangeMouseToHand() Dim hCur As Long hCur = LoadCursor(0, IDC_HAND) If (hCur > 0) Then SetCursor hCur

- 122 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If End Function

Pour afficher la main lors du survol d'un contrle il suffit d'appeler cette fonction. Pour exemple : votre contrle s'appel ctrMonControl, dans l'vnement sur Sur souris dplace de ce contrle appeler la fonction.
Private Sub ctrMonControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Appel Fonction pour changer le curseur ChangeMouseToHand End Sub

Pour rinitialiser le curseur afin de retrouver le curseur par dfaut mettez le code ci-dessous sur l'vnement Sur souris dplace du Formulaire :
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Initialisation du curseur Screen.MousePointer = 0 End Sub

- 123 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > Zones de liste et zones de liste modifiable Y a-t-il moyen d'liminer la barre de dfilement horizontale lors de l'utilisation d'une zone de liste sur plusieurs colonnes?
Auteurs : Drosera , Il suffit de paramtrer convenablement la largeur des colonnes et celle de la liste.

Comment dans une zone de liste modifiable, supprimer le message d'erreur "le texte entre n'appartient pas a la liste" ?
Auteurs : Team Access , Il faut utiliser l'evnement NotInList de la zone de liste :
Private Sub MaListe_NotInList(NewData As String, Response As Integer) Response = acDataErrContinue End Sub

Comment dslectionner les valeurs d'une liste choix multiples?


Auteurs : Rdesfx ,
Dim VarLr As Variant For Each VarLr In Me!MaListe.ItemsSelected Me!MaListe.Selected(VarLr) = False Next VarLr

Absence dans liste droulante - Proposer d'ajouter la valeur manquante dans la table source
Auteurs : Maxence HUBICHE , En VBA bibliothque Access :

Private Sub Modifiable0_NotInList(NewData As String, Response As Integer) If MsgBox("Voulez-vous ajouter " & NewData & " la liste des prnoms ?", _ vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then DoCmd.RunSQL "INSERT INTO tblPrenoms ( Prnom ) SELECT """ & NewData & """;" Response = acDataErrAdded Else Response = acDataErrContinue Modifiable0.Undo End If End Sub

En VBA bibliothque ADO :

Private Sub Modifiable0_NotInList(NewData As String, Response As Integer) dim cn as adodb.connection set cn = currentproject.connection If MsgBox("Voulez-vous ajouter " & NewData & " la liste des prnoms ?", _ vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then

- 124 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

cn.execute "Insert into tblPrenoms values(\'" & NewData & "\');" Response = acDataErrAdded Else Response = acDataErrContinue Modifiable0.Undo End If End Sub

Comment remettre l'affichage d'une zone de liste modifiable blanc ?


Auteurs : Team Access ,
MaZoneDeListe.Value = Null

lien :

Commer vider le contenu une zone de liste modifiable ?

Comment connatre le nombre de ligne d'une zone de liste ?


Auteurs : Team Access , La proprit ListCount d'une zone de liste (ou de zone de liste modifiable) retourne le nombre d'lments de celle-ci. Vous pouvez donc interroger cette proprit avec une syntaxe similaire :

Msgbox MaZoneDeListe.ListCount

Comment slectionner une ligne d'une zone de liste modifiable en VBA ?


Auteurs : gripoil , Slectionner la premire ligne :
Me.Modifiable = Me.Modifiable.ItemData(0)

Slectionner la dernire ligne :


Me.Modifiable = Me.Modifiable.ItemData(Me.Modifiable.ListCount - 1)

lien : Comment slectionner une ligne d'une zone de liste en VBA ?

Comment slectionner une ligne d'une zone de liste en VBA ?


Auteurs : gripoil , Slectionner la premire ligne :
Me.Liste.Selected(0) = True

Slectionner la dernire ligne :


Me.Liste.Selected(Me.Liste.ListCount - 1) = True

lien : Comment savoir quelle ligne d'une zone de liste modifiable est slectionne ?
- 125 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien : Comment slectionner une ligne d'une zone de liste modifiable en VBA ?

Impossible de changer la valeur d'une liste ou bote de texte ?


Auteurs : Papy Turbo , 1- regardez si le contrle n'est pas verrouill, dans les proprits Donnes > Verrouill ou, en VBA : NomControle.Locked = False 2- vrifiez que la source du contrle (proprit Donnes > Source contrle) n'est pas lie un champ calcul (non modifiable). La Source elle mme ne doit videmment contenir aucun calcul (type <=[Nom] & " " & [Prnom]>, ou bien <=[PrixUnitaire] * [Quantite]>). 3- vrifiez si le formulaire n'est pas verrouill, proprits Donnes > Modif autorise ou, en VBA, NomFormulaire.AllowEdits = True 4- vrifiez que la proprit Donnes > Type Recordset du formulaire n'est pas un Instantan (non modifiable), mais bien un recordset dynamique ("Feuille de rponse dynamique" ou bien "Feuille rp.dyn.(MAJ globale)"). 5- vrifiez que la requte source du formulaire (proprit Donnes > Source du formulaire) n'est pas verrouill (parce que trop complexe ?), en l'ouvrant directement et en essayant d'y modifier une valeur dans le champ source de ce contrle (celui du point 2.).

Comment Rafrachir les donnes de ma zone de liste ?


Auteurs : Demco , FRED.G , Vous possdez une zone de liste contenant les donnes d'une table. Vous insrez alors une ligne dans cette mme table, mais elle n'apparat pas dans la liste. Il suffit de rafrachir les donnes de la zone de liste en utilisant la mthode requery.

' Me.Refresh sert dans le cas o le contenu de la zone de liste ' prend en compte les donnes actuelles du formulaire ' Comme par exemple si une zone de liste utilise dans sa requte source ' la valeur d'une autre zone de liste du formulaire. Me.Refresh Me.MaZoneListe.Requery

Comment modifier la requte source d'une zone de liste modifiable ?


Auteurs : Demco , Il suffit de modifier la proprit RowSource de la zone de liste modifiable :

- 126 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me.MaListe.RowSource = "Select ...."

Comment savoir quelle ligne d'une zone de liste modifiable est slectionne ?
Auteurs : Demco ,
MsgBox Me.MaListe.ListIndex

Comment ajouter un ou des lments une zone de liste ?


Auteurs : Team Access , NouvelElement est tout simplement l'lment ajouter la liste :
Me!MyList.RowSource=Me!MyList.RowSource & ";NouvelElement"

Pour ajouter plusieurs lments :


Private Sub Form_Open(Cancel As Integer) ' Initialisation de la liste, elle contient deux colonnes pays et ville Me!list.ColumnHeads = True Me!list.ColumnCount = 2 Me!list.ColumnWidths = "4320;4320" 'on dtermine la largeur des colonne Me!list.RowSource = "Pays;Capitale;Chine;Beijing;Brsil;Brasilia " End Sub Private Sub Command_Click() Me!list.RowSource = Me!list.RowSource & ";Nouveau pays;Nouvelle ville" End Sub

Command est le bouton que l'on presse pour ajouter les lments la liste. Attention : il s'agit d'une liste de type Liste de valeurs

Comment rcuprer la valeur d'une colonne de la ligne slectionne dans une zone de liste ?
Auteurs : Demco , Sachant que l'indice de la premire colonne est 0 :
NomListe.Column(indiceColonne -1)

Donc pour la colonne 2 on aura :

- 127 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

NomListe.Column(1)

lien :

Comment rcuprer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?

Comment autoriser plusieurs slections dans une zone de liste ?


Auteurs : Team Access , Dfinir la proprit SelectionMultiple (MultiSelect) "tendue" ou "simple" suivant la mthode de slection souhaite.

Selectionner tous les lments zone de liste en VBA ?


Auteurs : Cafeine , Exemple de code pour un bouton appel cmdSelectAll et une liste lstRes :
Private Sub cmdSelectAll_Click() Dim i As Long For i = 0 To Me.lstRes.ListCount - 1 Me.lstRes.Selected(i) = True Next i End Sub

Empcher la mise jour (modification) d'une zone de liste modifiable tout en permettant la slection de ligne dans la liste
Auteurs : Gal Donat ,
Private Sub MaListeModifiable_BeforeUpdate(Cancel As Integer) Cancel = True End Sub

Comment selectionner une ligne dans une zone de liste en fonction du texte d'une de ses colonnes ?
Auteurs : Tofalu , Voici une petite fontion qui peut faire l'affaire :
Function Selectionner(Liste As ListBox, Colonne As Integer, Chercher As String) Dim i As Integer Dim Trouve As Boolean For i = 0 To Liste.ListCount - 1 If Liste.Column(Colonne, i) = Chercher And Not Trouve Then Me.Liste.Selected(i) = True If Liste.MultiSelect = 0 Then Trouve = True Else Me.Liste.Selected(i) = False End If Next i End Function

Utilisation :
Selectionner Liste0, 1, "Monsieur"

- 128 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ceci selectionne les valeurs Monsieur dans la deuxime colonne. Cela selectionnera une ligne si la zone de liste n'accepte pas la selection multiple ou bien plusieurs si elle le permet.

Comment empcher la saisie au clavier dans une zone de liste ?


Auteurs : Tofalu , Sur l'vnement Touche Appuye de la zone de liste :
Private Sub Maliste_KeyDown(KeyCode As Integer, Shift As Integer) KeyCode = 0 End Sub

Comment vrifier qu'une valeur existe dans une zone de liste ?


Auteurs : Tofalu , Cette fonction renvoie true si la valeur passe en paramtre est trouve dans la zone de liste qui figure dans le premier paramtre.
Private Function verifliste(Liste As ListBox, Valeur As String) As Boolean Dim i As Integer For i = 0 To Liste.ListCount - 1 If Liste.ItemData(i) = Valeur Then verifliste = True Next i End Function

Utilisation : Vrfier que toto ne fait pas partie de la zone de liste ZL3 :
Private Sub Commande0_Click() MsgBox verifliste(Me.ZL3, "toto") End Sub

Comment faire correspondre deux zones de listes


Auteurs : Petogaz , Crez votre formulaire. placez la premire liste droulante qu'on nommera lstville et l'aide de l'assistant rcuprez le CP et le code section donc dans contenu vous devririez avoir un requte qui resemble ceci :
Select DISTINCT [Table1].[Code des sections], [Table1].CP FROM [Tables1] Inner Join [Table2] On [Table1].[Code des sections] = [Table2].[Code Section];

Cette requte vous permettra d'obtenir la liste de toute les villes (en supposant qu'il s'agisse des CP puisqu'il n' y a pas de champ ville). Ensuite pour la liste des rues qu'on nommera lstrue dans les proprit Arrow Donnes Arrow Contenu, mettez cette requte :
Select DISTINCT [Table2].Rue From [Table2] - 129 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Where ((([Table2].[Code Section])=[forms]![formulaire1]![lstville]));

O formulaire1 est le nom de votre formulaire Pour terminer, il faut une mise jour de votre 2me liste (lstRue) :
Private Sub lstville_AfterUpdate() Me.lstRue.Value = Null Me.lstRue.Requery End Sub

Comment faire en sorte que le contenu d'une zone de liste droulante dpende de la valeur d'une autre liste ?
Auteurs : Demco , Imaginons que nous ayons les zones de liste lstPays et lstVilles qui contiennent respectivement une liste de pays et une liste de villes. Bien videmment, lorsque nous slectionnons un pays nous voulons que seules les villes appartenantes ce pays n'apparaissent dans lstVille. Nous supposons que ces deux zones de liste sont bases sur les tables TPays et TVille, et qu'elles sont dans un formulaire que nous appellerons F_Geographie. Une fois les deux zones de liste bases sur les deux tables, nous modifierons la source de donnes de lstVille : Proprits onglet Donnes Contenu :
Select TVille.ID, TVille.Nom From TVille Where TVilles.IDPays = Forms!F_Geographie.lstPays

O ID est l'identifiant de la ville, Nom son nom et IDPays la cl trangre contenant l'identifiant du pays auquel appartient la ville. Et comme vous l'aurez compris, Forms!F_Geographie.lstPays fait rfrence la zone de liste lstPays appartenant au formulaire F_Geographie. Il vous reste alors rafrachir les donnes de la zone de liste lstVille lorsqu'un nouveau pays est slectionn :

Private Sub lstPays_Change() Me.lstVille.Requery End Sub

Et le tour est jou ! lien : A quoi correspond le Me. que je vois devant le nom de certains objets dans des lignes de code ?

Commer vider le contenu une zone de liste modifiable ?


Auteurs : Demco ,

- 130 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MaZoneDeListe.RowSource = ""

lien :

Comment remettre l'affichage d'une zone de liste modifiable blanc ?

Comment rcuprer la valeur d'une colonne dans une zone de liste pour une ligne quelconque ?
Auteurs : Tofalu , Sachant que l'indice de la premire ligne et de la premire colonne est 0 :

NomListe.Column(indiceColonne -1, indiceligne -1)

Donc pour la colonne 2, ligne 3 on aura :

NomListe.Column(1,2)

lien :

Comment rcuprer la valeur d'une colonne de la ligne slectionne dans une zone de liste ?

Comment archiver les dernires valeurs saisies dans une liste ? (pratique pour les champs de recherche)
Auteurs : FRED.G , Version : Office VBA >=2002 ( cause des mthodes AddItem et RemoveItem) Description : Ce code enregistre dans la liste d'une zone de liste droulante, les valeurs saisies dans ce mme contrle. * La dernire valeur saisie est places en haut de la liste * Les doublons sont vits * La constante NB_ITEMS permet de dfinir le nombre de valeurs archivs * Les valeur Null ou chanes de longueur nulle sont ignores * Les valeurs saisies sont traites sous le type String

Conditions : * La proprit RowSourceType doit tre Value List * Les proprits ColumnCount & BoundColumn doivent tre 1 * Dans cet exemple, la zone de liste s'appelle MyComboBox

Private Sub MyComboBox_AfterUpdate() Const NB_ITEMS As Long = 20 'Nombre d'lments archivs dans la liste Dim b As Byte 'Maj de la liste des derniers critres recherchs With MyComboBox 'Si la valeur saisie est un Null _ ou une chane de longeur nulle _ ou gale au premier item, _ alors aucune Maj de la liste n'est ncessaire. If Nz(.Value, "") = "" Or .Value = .Column(0, 0) Then Exit Sub 'Etant donn qu'on ne souhaite pas de doublons, _ on va parcourir tous les lments _ pour liminer un ventuel doublon avant d'ajouter notre valeur en haut de liste.

- 131 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

For b = 1 To .ListCount - 1 If .Column(0, b) = .Value Then .RemoveItem b: Next b 'Ajoute la nouvelle saisie .AddItem Item:=.Value, Index:=0

Exit For

'Limite la liste NB_ITEMS lments If .ListCount = NB_ITEMS Then .RemoveItem NB_ITEMS - 1 End With End Sub

Comment conserver la slection lors d'un affichage de requetes dans zones de listes
Auteurs : Rom4u , Lorsqu'on affiche une requete dans une zone de liste (propriete rowsource de la liste), et que l'on change cette requete par programme (ordre de tri, filtre...) il suffit de dclarer dans la proprit "colonne lie" de la zone de liste un champ unique (sans doublon). Ainsi lors d'un changement d'ordre de tri ou autre, la ligne slectionne le reste (pas besoin de faire de nouvelles recherches par boucle dans un recordset par exemple).

Comment drouler une liste modifiable lors de sa rception du Focus ?


Auteurs : Faw , Pour drouler une liste modifiable lors de la rception du focus il faut dans son vnement Rception Focus mettre ce code :
Private Sub Modifiable_GotFocus() Me.Modifiable.Dropdown End Sub

lien :

Comment drouler une liste droulante sur le survol de la souris ?

Comment drouler une liste droulante sur le survol de la souris ?


Auteurs : Philippe JOCHMANS , Le code suivant permet lors du survol de la liste droulante cboLaListe par la souris, de lui donner le Focus et de la drouler.
Private Sub cboLaliste_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) With Me.cboLaliste .SetFocus .Dropdown End With End Sub

Ensuite sur l'vnement MouseMove de la zone dtail de ton formulaire tu mets le focus sur un autre contrle.
Private Sub Dtail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.cmdTest.SetFocus

- 132 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

lien :

Comment drouler une liste modifiable lors de sa rception du Focus ?

- 133 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > Zones de liste et zones de liste modifiable > Trucs et Astuces Comment limiter le nombre de selections d'une ListeBox ?
Auteurs : Maxence HUBICHE , Dans l'vnement Avant Mise jour de votre liste, collez ceci (en prenant soin de remplacer lstChamps par le nom de votre zone de liste) :
On Error GoTo GestErr Static lngItems() As Long Dim lngLoop As Long Dim varItems As Variant lstChamps.Selected(0) = False lstChamps.Selected(1) = False If lstChamps.ItemsSelected.Count > 10 Then Cancel = True 'dsactiver tous les champs For lngLoop = 2 To lstChamps.ListCount - 1 lstChamps.Selected(lngLoop) = False Next 'ractiver uniquement la slection prcdente For lngLoop = 0 To UBound(lngItems) lstChamps.Selected(lngItems(lngLoop)) = True Next Else 'redfinir la slection en cours ReDim lngItems(lstChamps.ItemsSelected.Count - 1) For lngLoop = 0 To lstChamps.ItemsSelected.Count - 1 lngItems(lngLoop) = lstChamps.ItemsSelected(lngLoop) Next Cancel = False End If FinProg: Exit Sub GestErr: If Err.Number = 91 Then For lngLoop = 0 To lstChamps.ListCount lstChamps.Selected(lngLoop) = False Next End If Resume FinProg

Ajouter Tous en haut d'une liste droulante


Auteurs : FRED.G , Pour ajouter "[Tous]" (ou tout autre texte) en premier choix d'une zone de liste (droulante ou pas), il est possible d'utiliser une requte UNION dans la proprit Contenu (RowSource) du contrle. Imaginons que l'on veuille afficher et trier toutes les valeurs du champ Champ1 de la table Table1, mais faire prcder ces valeurs par la mention "[Tous]", le SQL notre requte pourrait tre :

SELECT A.Champ1 FROM (SELECT B.Champ1, 1 AS IndexTri FROM Table1 AS B Union SELECT TOP 1 "[Tous]", 0 FROM Table1 AS C) AS A ORDER BY A.IndexTri, A.Champ1

- 134 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Remarque : pour optimiser les performances on peut, le cas chant, crer une table permanente (appelons la TableListe) avec les deux champs suivants : EnTte (Type : String; Null Interdit : Oui; Chaine vide autorise : Non; Index : Sans doublon), IndexTri (Type : Byte; Null Interdit : Oui; Valeur par dfaut : 0; Valide Si : =0) On utilise cette table en crant un enregistrement pour chaque valeur d'entte que l'on veut rendre disponible dans sa base, par exemple :

[Tous] [Toutes] [Aucun] ...

Ensuite, le SQL de notre requte Union servant pour la source de nos listes ressemblera :

SELECT A.Champ1 FROM (SELECT B.Champ1, 1 AS Position FROM Table1 AS B Union SELECT TableListe.Entte, TableListe.IndexTri FROM TableListe WHERE TableListe.Entte="[Tous]") AS A ORDER BY A.IndexTri, A.Champ1

A noter aussi, concernant les performances, que d'une manire gnrale, pour les requtes complexes ou ciblant plusieurs dizaines ou centaines de milliers d'enregistrements, il est prfrable d'enregistrer sa requte plutt que d'excuter la vole son quivalent SQL (si les tables sources bnficient d'indexes). Dans ce dernier cas, on n'crira plus l'instruction SQL dans la proprit RowSource de la zone de liste, mais simplement le nom de la requte enregistre.

Comment remplir dynamiquement une liste droulante avec les annes ?


Auteurs : Philippe JOCHMANS , Le but d'une application est de durer dans le temps, sans avoir retoucher le code chaque changement d'anne. Souvent on choisit une anne l'aide d'une liste droulante, ce que l'on fait c'est que dans la proprit contenu (RowSource) on saisi les annes. Ce que je vous propose, c'est que cela soit fait automatiquement. Dans les deux cas que je vais vous proposer, il faut que la proprit Origine Source de la liste droulante soit Listes Valeurs. Version Access 2002, 2003 :
Private Sub cboAnnee_GotFocus() Dim i As Integer Me.cboAnnee.RowSource = "" For i = 1 To 5 Me.cboAnnee.AddItem Year(DateAdd("yyyy", i - 2, Date)) Next i End Sub

Version Access 97 et 2000 : Je vous propose cette version, car la mthode Additem n'est apparue qu' partir de 2002.
Private Sub cboAnnee2_GotFocus()

- 135 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim i As Integer Dim strSource As String For i = 1 To 5 strSource = strSource & ";" & Year(DateAdd("yyyy", i - 2, Date)) Next i Me.cboAnnee2.RowSource = Right(strSource, Len(strSource) - 1) End Sub

Ces exemples vont vous donner 5 annes, de 2006 2010, l'anne prochaine en 2008, vous aurez donc de 2007 2011.

- 136 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > Zones de texte Comment changer la couleur du texte d'une zone de texte ?
Auteurs : Demco ,
MaZoneTexte.ForeColor = QBColor(1) MaZoneTexte.ForeColor = QBColor(4) '(Pour le bleu) '(Pour le rouge)

Comment changer la couleur de fond d'une zone de texte ?


Auteurs : Demco ,
MaZoneDeTexte.BackColor = QBColor(1) 'pour du bleu

Comment masquer/rendre invisible toutes les zones de texte vides ?


Auteurs : Lucifer , Tofalu , Premire solution :
Private Sub Form_Current() Dim ctl As Control 'Pour chaque contrle du formulaire For Each ctl In frm.controls ' On verifie que le contrle soit bien une zone de texte If ctl.ControlType = acTextBox Then ' On verifie le contenu du contrle If nz(ctl.Value,"") = "" Then ' Il est vide on le rend invisible ctl.Visible = False End If End If Next ctl End sub

Une autre solution en utilisant TypeOf :

Private Sub Form_Current() Dim ctl As Control 'Pour chaque contrle du formulaire For Each ctl In frm.Controls ' On verifie que le contrle soit bien une zone de texte If TypeOf ctl Is TextBox Then ' On verifie le contenu du contrle If Nz(ctl.Value,"") = "" Then ' Il est vide on le rend invisible ctl.Visible = False End If End If Next ctl

- 137 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End sub

lien : Comment rendre des colonnes d'un formulaire invisibles ?

Comment masquer ce qui est tap dans une zone de texte (pour un mot de passe) ?
Auteurs : Demco , Il faut utiliser le masque de saisie de la zone de texte. Tapez "password" ou "Mot de passe" (sans les guillemets) dedans. lien : Comment viter qu'Access ne corrige automatiquement les mots saisis dans un contrle ?

Comment avoir un TextBox (zone de texte) multiligne ?


Auteurs : Tofalu , Allez dans les proprits de la zone de texte : Onglet Autres, effet touche entre --> Nouvelle ligne dans le champ. On peut galement utiliser la proprit Onglet Toutes, Barre de dfilement --> Verticale. Sinon il est toujours possible de passer la ligne avec un simple Ctrl+Entre. lien : Comment afficher un texte d'info bulle sur plusieurs lignes ?

Comment utiliser une zone de texte comme un champ de calcul (comme dans Excel)
Auteurs : Faw , Par exemple vous voulez taper 3+4 dans une zone de texte et qu'elle vous affiche 7 : Utilisez un bouton dans lequel vous mettrez le code suivant (Input est la zone de texte) :
Me!Input = Eval(Nz(Me!Input, 0))

Sur pression du bouton, le calcul s'effectuera.

Comment s'assurer qu'un utilisateur n'a saisi que des chiffres et aucune lettre dans une zone de texte
Auteurs : Papy Turbo , Papy Turbo :
Private Sub ControlNumerique_KeyPress(KeyAscii As Integer) If (KeyAscii > 31 And KeyAscii < 48) Or (KeyAscii > 59) Then Beep KeyAscii = 0 End If End Sub

Cette solution empche d'insrer autre chose qu'un chiffre dans la zone de texte. Les virgules sont acceptes. Une autre solution consiste laisser l'utilisateur saisir ce qu'il veut, puis avant de valider la saisie, d'en vrifier le contenu (FRED.G) :
Private Sub txtAtteindre_BeforeUpdate(Cancel As Integer) - 138 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Le code suivant sert vrifie que la valeur spcifie _ 'dans le contle txtAtteindre est de type numrique : With Me!txtAtteindre 'On applique la fonction IsNumeric la proprit Value du contle slectionn _ 'afin de vrifier si le type est bien du numrique : If Not IsNumeric(.Value) Then 'On avertit l'utilisateur : MsgBox "Vous devez saisir un numro d\'enregistrement valide.", vbExclamation 'On repositionne le curseur sur le contrle slectionn : .SelStart = 0 ' Positionne le curseur au dbut du champ .SelLength = Len(.Value) ' Slectionne l'ensemble des donnes affiches dans le champ 'On annule la mise jour de l'vnement BeforeUpdate en utilisant son argument Cancel : Cancel = True End If End With End Sub

Comment limiter le nombre de caractres saisis dans une zone de texte indpendante ?
Auteurs : Tofalu , Il faut traiter l'vnement KeyDown de la zone de texte et vrifier la taille du texte dj inscrit. Ainsi, si le texte ne doit pas dpasser 10 caractres, on aura :
Private Sub Texte13_KeyDown(KeyCode As Integer, Shift As Integer) If Len(Texte13) > 9 Then KeyCode = 0 End Sub

lien : Comment contrler la saisie, empcher la saisie de certains caractres ?

Comment remplacer la virgule par un point dans une zone de texte ?


Auteurs : Cafeine , Lorsque vous utilisez le point du pav numrique, Access le convertit en virgule suivant les options rgionales de Windows. Cela se transforme en France par une virgule. Pour viter cela, vous pouvez modifier le caractre saisi lors de la frappe de la zone de texte (vnement Touche appuye)

Private Sub MonTextBox_KeyPress(KeyAscii As Integer) If KeyAscii = 59 Then KeyAscii = 46 End Sub

Comment mettre un champ de type texte clignotant ?


Auteurs : Faw , Pour donner de l'effet vos contrle, vous pouvez le rendre clignotant : Sur l'vnement Sur minuterie de votre Formulaire mettez ce code :

- 139 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me.MonControl.Visible = Not (me.MonControl.Visible)

Ensuite il y a deux faons de lancer la minuterie : En fixe : sur l'vnement Intervalle minuterie du Formulaire, la base de temps est en milisecondes Exemple : 1000 provoque l'xcution du code Sur minuterie toutes les secondes. En VBA : Le principe du code est de lancer la minuterie et de paramtrer le temps par code, ceci peut tre pratique pour lancer le code un moment prcis. Pour le lancement :
Me.TimerInterval = 1000

Pour l'arrter :
Me.TimerInterval = 0

- 140 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > Zones de texte > Trucs et Astuces Comment crer une zone de texte de type ovale ?
Auteurs : sasmira_ , En bricolant un peu : Crez un oval dans Word (car Access ne sait pas pas) par exemple en choisissant la couleur voulue de votre remplissage. Faites un copier-coller vers ton formulaire Access et dans les proprits de votre oval, mettez style de fond transparent et style de bordure transparent. Placez une zone de texte ayant la mme couleur que votre ovale avec style de bordure transparent.

Renvoyer dans une zone de texte la valeur d'un champ en fonction du contenu d'une zone de liste
Auteurs : FRED.G , Une solution simple consiste ajouter une colonne au contenu de la zone de liste modifiable. Cette colonne n'est autre que le champ contenant (dans la table ou requte source de la liste) les donnes afficher dans la zone de texte, en fonction du choix fait dans la liste. Remarque : il est possible de masquer cette colonne en utilisant la proprit Largeur Colonnes de la liste. Une fois que la colonne t ajoute au contenu de la zone de liste, il sera possible d'utiliser l'vnement Aprs Maj de cette-ci et sa proprit Column, pour mettre jour la valeur de la zone de texte. Exemple : Soit une table de Clients (numClient, NomClient...) On veut que lorsque l'on selectionne le numclient dans une zone de liste, le nom du client selectionn s'affiche dans une zone de texte. Nous aurons dfinir les proprits de la zone de liste par exemple comme ceci : Type Contenu : table/requete Contenu : SELECT NumClient,NomClient FROM TblClient NbColonne : 2 Colonne lie : 1 Largeurs colonnes : 2; 0 (0 sert masquer une colonne...) Puis dans le code :
Private Sub MaListe_AfterUpdate() MaTextBox = MaListe.Column(1) 'J'ai mis 1 comme numro de colonne mais 'le numro rel doit tre le numro de la colonne affichant les initiales moins 1. End Sub

- 141 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > TreeView Dans un TreeView, comment remettre en surbrillance le noeud sur lequel on vient d'ajout un fils ?
Auteurs : argyronet , En rcuprant l'index, vous pouvez repointer le noeud sur lequel vous avez ajout un fils. Par exemple, vous tes sur un noeud, vous stockez son index, vous ajoutez le fils puis vous activez le noeud ainsi :

oTreeView.Nodes(intOriginalIndex).Selected = True

Comment rcuprer les lignes coches d'un Treeview ?


Auteurs : Team Access ,
Dim currentNode As MSComctlLib.node 'parcours du node courrant Dim nbCheckedNodes As Integer 'Pour chaque node contenu dans la collection nodes de ton objet treeview For Each currentNode In LeTreeViewDeTonFormulaire.Nodes 'Traitement du node courrant. Exemple compter les nodes cochs If currentNode.Checked Then nbCheckedNodes = nbCheckedNodes + 1 End If End Sub

Dans cette exemple nous nous contentons de compter le nombre de lignes slectionnes. Vous pourrez donc facilement imaginer comment procder divers traitements sur les lignes qui vous intressent.

Connaitre la gnration d'un noeud dans un treeview


Auteurs : Tofalu , Pour cela on peut utiliser une procdure rcursive qui remonte l'arbre. Cette procdure est la suivante :

Private Sub ChercheGeneration(oNode As Node, intGeneration As Integer) If Not oNode.Parent Is Nothing Then intGeneration = intGeneration + 1 'Appeler la procdure pour le parent ChercheGeneration oNode.Parent, intGeneration End If End Sub

Exemple d'utilisation sur l'vnement Double Clic du Treeview

Private Sub MonTreeView_DblClick() Dim Generation As Integer ChercheGeneration MonTreeView.SelectedItem, Generation MsgBox Generation End Sub

- 142 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Notons que la numrotation commence zro.

Comment imprimer un control de type Treeview ?


Auteurs : argyronet , Ce code permet d'imprimer dans un tat le mme treeview de votre Formulaire. Il faut imprativement faire rfrence la librairie d'objet de VB6 (VB6.olb) car ce code utilise l'objet Printer

Option Compare Database Option Explicit Const Const Const Const COORDINATE_XY As Integer = 1440 TEXT_HEIGHT As Integer = 192 OFFSET_TORIGHT As Integer = 256 OFFSET_TODOWN As Integer = 128

Private Sub cmdPrint_Click() '*************************************************** ' Faire rfrence VB6.olb (C:\Program Files\Microsoft Visual Studio\VB98) '*************************************************** Dim oTreeView As TreeView Set oTreeView = TreeViewMain.Object Printer.CurrentX = COORDINATE_XY Printer.CurrentY = COORDINATE_XY PrintTreeView oTreeView , Printer, COORDINATE_XY Printer.EndDoc Set oTreeView = Nothing MsgBox "Impression de l'arborescence termine !", 64 End Sub Private Sub PrintTreeView(ByVal TVWObject As TreeView, ByVal DevicePrinter As Object, DeviceCoordinates As Integer) Dim oNode As Node 'Prparation de l'impression du Treeview Set oNode = TVWObject.Nodes(1) Do Until oNode Is Nothing DevicePrinter.CurrentX = DeviceCoordinates PrintCurrentNode oNode, DevicePrinter Set oNode = oNode.Next Loop Set oNode = Nothing End Sub Private Sub PrintCurrentNode(ByVal TVWNode As Node, ByVal DevicePrinter As Printer) Dim sngNodeChildOffset As Single Dim sngX1 As Single Dim sngY1 As Single Dim sngX2 As Single Dim sngY2 As Single Dim sngTreeLineHeight As Single ' Arboresence... With DevicePrinter sngNodeChildOffset = .CurrentX + OFFSET_TORIGHT sngX1 = .CurrentX + OFFSET_TORIGHT / 2 sngTreeLineHeight = TEXT_HEIGHT + OFFSET_TODOWN Printer.Print TVWNode.Text sngY1 = DevicePrinter.CurrentY End With ' Noeuds enfants

- 143 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Set TVWNode = TVWNode.Child Do Until TVWNode Is Nothing ' Dessine une ligne pour chaque noeud... sngX2 = DevicePrinter.CurrentY sngY2 = sngX2 + sngTreeLineHeight / 2 DevicePrinter.Line (sngX1, sngY1)-(sngX1, sngY2) DevicePrinter.Line -Step(OFFSET_TORIGHT / 2, 0) ' ...de faon recursive DevicePrinter.CurrentY = sngX2 DevicePrinter.CurrentX = sngNodeChildOffset PrintCurrentNode TVWNode, DevicePrinter Set TVWNode = TVWNode.Next Loop End Sub

Comment piloter le clic droit dans un contrle TreeView ?


Auteurs : =JBO= , Ci-joint un code permettant de piloter le clic droit dans un TreeView nomme TV
' Si Clic droite + Node vis, appliquer l'effet DropHighlight sur le Node point ' Private Sub TV_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long) ' Il peut n'y avoir aucun objet sous la souris If Button = vbKeyRButton Then Set TV.DropHighlight = TV.HitTest(X, Y) Else Set TV.DropHighlight = Nothing End If End Sub ' Si la souris est dplace et que le bouton droit n'est pas enfonc, ' alors annuler l'effet DropHighlight. ' Private Sub TV_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long) Screen.MousePointer = 0 If Not (TV.DropHighlight Is Nothing) And Button <> vbKeyRButton Then ' Le Node est "abandonn" Set TV.DropHighlight = Nothing End If End Sub ' Si Bouton droit est relch et Node point est le mme que celui rfrenc par DropHighLight, ' alors configurer et afficher un menu PopUp. ' Puis annuler l'effet DropHighlight. ' Private Sub TV_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Long, ByVal Y As Long) Dim oNode As MSComctlLib.Node, p As Parametrage If Button = vbKeyRButton Then Set oNode = TV.HitTest(X, Y) ' vrifier qu'un Node est effectivement point et que c'est celui de l'vnement _MouseDown If Not (oNode Is Nothing) Then If Not (TV.DropHighlight Is Nothing) Then If oNode = TV.DropHighlight Then ' placer ici le code de paramtrage et d'ouverture du menu contextuel ...

- 144 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If End If End If End If Set TV.DropHighlight = Nothing End Sub

- 145 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Contrles > Onglet Quel est l'vnement qui permet de savoir quand on entre dans une page d'un contrle onglet.
Auteurs : Rdesfx , Il faut utiliser "Sur Changement" et tester la page active

Me![CtlTab1].Value => (n de la page selectionne)

Comment avoir le nom de l'onglet ou autre auquel appartient un contrle ?


Auteurs : Drosera ,
Me.Texte1.Parent.Name

O Texte1 est le nom du contrle.

Comment mettre des couleurs sur un contrle onglet ?


Auteurs : Philippe JOCHMANS , 1 ? Prparation : L'onglet comporte une proprit Style de Fond, celle-ci sera rgle Transparent par le code. De plus chaque page de l'onglet a une proprit Remarque (TAG), dans celle-ci vous mettrez la couleur que vous souhaitez, il s'agit d'un nombre de type long, que vous pouvez rcuprer en slectionnant une couleur sur n'importe quel autre contrle. Sur votre formulaire positionnez un contrle rectangle (que nous nommerons recFondOnglet), celui-ci aura un fond opaque (rgl la proprit Style de Fond standard), et positionnez le en arrire plan (Menu : Format/Mettre en Arrire plan). La position et la taille de ce formulaire seront rgles par le code. Sur ce formulaire vous allez positionner 4 contrles, ce sera des boutons de commandes MS Forms 2.0, vous les trouverez sous le nom Microsoft Forms 2.0 CommandButton dans le menu : Insertion/Contrle ActiveX ? Ces boutons seront nomms cmdOngletX avec X variant de 0 3, car dans l'exemple nous avons 4 onglets. La taille et la position de ces contrles seront rgls par le code, ceux-ci se positionneront la place des onglets. Nous utilisons ce contrle, car celui-ci va toujours rester au-dessus. 2 - Code :
Option Compare Database Option Explicit ' ===== dclaration des variables publiques ===== Public tabCouleur() As Long ' stockage des couleurs dans un tableau Public Sub PrepaCouleurOnglet(frm As Form, ctrlOnglet As TabControl) ' ====================================================================================== ' Procedure : Module :Module1 // Procdure : PrepaCouleurOnglet ' DateTime : 09/11/2007 17:43 ' Auteur : Philippe JOCHMANS - http://Philippe JOCHMANS.developpez.com ' Description : Cette procdure va permettre de paramtrer les couleurs du contrle ' onglet '=======================================================================================

- 146 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' ===== dclaration ===== Dim intNbrPage As Integer Dim i As Integer Dim ctrl As Control

' nombre de pages

' mise en transparence du contrle onglet frm.Controls(ctrlOnglet.Name).BackStyle = 0 ' positionnement du rectangle servant de fond With frm.recFondOnglet .Top = frm.Controls(ctrlOnglet.Name).Top .Left = frm.Controls(ctrlOnglet.Name).Left .Height = frm.Controls(ctrlOnglet.Name).Height .Width = frm.Controls(ctrlOnglet.Name).Width End With ' rpartition des onglets automatique pour que ceux-ci soient correctement disposs. frm.Controls(ctrlOnglet.Name).TabFixedWidth = frm.Controls(ctrlOnglet.Name).Width / frm.Controls(ctrlOnglet.Name).Pages.Count ' rcupration du nombre de pages intNbrPage = frm.Controls(ctrlOnglet.Name).Pages.Count ' redimensionnement du tableau ReDim tabCouleur(0 To intNbrPage - 1) ' on rempli le tableau avec les couleurs de la proprit remarque (tab) des pages For i = 0 To intNbrPage - 1 tabCouleur(i) = frm.Controls(ctrlOnglet.Name).Pages(i).Tag Next i ' on met les couleurs dans les boutons de commandes on en profite pour les positionner ' et les retailler ' ceux-ci son nomms cmdOngletX avec X de 0 au nombre d'onglets -1 For Each ctrl In frm.Controls ' on test le nom des contrles pour trouver les boutons If Left(ctrl.Name, 9) = "cmdOnglet" Then ' on affecte la couleur ctrl.BackColor = tabCouleur(Mid(ctrl.Name, 10)) ' on change les proprits des boutons de commandes With ctrl ' hauteur .Height = frm.Controls(ctrlOnglet.Name).TabFixedHeight + 40 ' largeur .Width = frm.Controls(ctrlOnglet.Name).TabFixedWidth - 10 ' lgende .Caption = frm.Controls(ctrlOnglet.Name).Pages(CLng(Mid(ctrl.Name, 10))).Caption ' position par rapport au haut du formulaire .Top = frm.Controls(ctrlOnglet.Name).Top ' position par rapport au bord gauche du formulaire .Left = frm.Controls(ctrlOnglet.Name).Left + CLng(Mid(ctrl.Name, 10)) * frm.Controls(ctrlOnglet.Name).TabFixedWidth + 10 End With End If Next ctrl End Sub

Ensuite appelez ce code sur l'vnement Load du formulaire. (Dans notre cas, le contrle onglet se nomme mstTest.
Private Sub Form_Load() ' prparation de l'onglet Call PrepaCouleurOnglet(Me, Me.mstTest) ' on affecte la couleur la premire page Me.recFondOnglet.BackColor = tabCouleur(0) End Sub

- 147 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ensuite mettez le code suivant sur l'vnement Change de votre formulaire.


Private Sub mstTest_Change() ' sur l'vnement change de notre contrle onglet on va affecter les couleurs au rectangle de fond Select Case Me.mstTest.Value Case 0 Me.recFondOnglet.BackColor = tabCouleur(0) Case 1 Me.recFondOnglet.BackColor = tabCouleur(1) Case 2 Me.recFondOnglet.BackColor = tabCouleur(2) Case 3 Me.recFondOnglet.BackColor = tabCouleur(3) End Select End Sub

Ensuite ce code sur l'vnement click des boutons de commandes.


Private Sub cmdOnglet0_Click() Me.mstTest.Value = 0 End Sub Private Sub cmdOnglet1_Click() Me.mstTest.Value = 1 End Sub Private Sub cmdOnglet2_Click() Me.mstTest.Value = 2 End Sub Private Sub cmdOnglet3_Click() Me.mstTest.Value = 3 End Sub

Voil le rsultat :

- 148 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

rendu du code 3 ? Remarque : Ce code ne fonctionne que si le style d'onglet de votre contrle n'est pas en Multi-Ligne. Si vous rajoutez des contrles sur vos pages, n'oubliez pas de remettre le rectangle en arrire plan. Cet exemple est fait avec plusieurs couleurs, vous pouvez bien sr n'en prendre qu'une. Attention : Si vous utilisez Access 2003, il faut que l'option "Utilisez les styles Windows" soit dcoch dans l'onglet Formulaire des options pour cette astuce fonctionne. Ce code fonctionne sur les versions Access 2000, 2002 et 2003, il n'a pas t test sur les versions 97 et 2007. Tlcharger la base exemple

- 149 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Donnes Comment fermer un formulaire sans sauvegarder l'enregistrement en cours ?
Auteurs : Team Access , Pour annuler la saisie d'un enregistrement dans un formulaire, il faut utiliser la mthode Undo de ce dernier. Lorsque l'utilisateur ferme un formulaire, son vnement Avant MAJ (BeforeUpdate) est excut pour enregistrer les donnes. Pour quitter le formulaire sans enregistrer, il faut donc placer l'appel de Me.Undo sur l'vnement BeforeUpdate du formulaire. Exemple :

Private Sub Form_BeforeUpdate(Cancel As Integer) If MsgBox("Voulez-vous enregistrer les modifications ?", vbYesNo, "Confirmation") = VbNo Then Me.Undo End If End Sub

Comment afficher le nombre d'enregistrements du sous formulaire dans le formulaire principal ?


Auteurs : ARO , Soit un sous formulaire nomm SF_CONTACT possdant un champ id_contact. Dans le pied de formulaire du sous formulaire , ajouter une zone de texte (Nbcontact pour l'exemple) avec comme source
= compte([id_contact])

Et fixer la proprit Visible du pied de formulaire Non. Sur le formulaire principal, ajouter une zone de texte "Compteur" avec comme source :
= [SF_contact].[Formulaire]![Nbcontact]

Erreur 3021 - Aucun enregistrement en cours


Auteurs : Tofalu , Une des raisons possibles est l'utilisation de ces deux ligne qu'il faut viter :

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

En effet, ce code n'est pas du tout portable. Privilgiez donc une suppression via requte ou sur le recordset du formulaire.

lien :

Dfinition et manipulation de donnes avec DAO

- 150 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Excuter une requte action (ajout, suppression ou mise jour)

- 151 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Donnes > Position dans le formulaire Dans un formulaire en fin d'enregistrement un appui sur la touche Tab provoque le passage l'enregistrement suivant. Comment revenir plutt au dbut de la fiche ?
Auteurs : Petogaz , il suffit de rgler la proprit Cycle du formulaire (onglet Autre) et mettez-la "Enregistrement en cours".

Comment savoir si la ligne courante est celle d'un nouvel enregistrement


Auteurs : FRED.G , Vrifier la proprit NewRecord du formulaire.

Comment se positionner sur le premier/dernier/prcdent/ suivant/nouvel enregistrement d'un formulaire dpendant ?


Auteurs : Demco , Se positionner ... ... sur le premier enregistrement :
DoCmd.GoToRecord , , acFirst

... sur le dernier enregistrement :


DoCmd.GoToRecord , , acLast

... sur le prcdent enregistrement :


DoCmd.GoToRecord , , acPrevious

... sur l'enregistrement suivant :


DoCmd.GoToRecord , , acNext

... sur un nouvel enregistrement :


DoCmd.GoToRecord , , acNewRec

lien : Comment se positionner sur le premier/dernier/prcdent/suivant/nouvel enregistrement d'un sousformulaire ?

- 152 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment se dplacer de X enregistrements dans un formulaire ?

Comment se positionner sur le premier/dernier/prcdent/ suivant/nouvel enregistrement d'un sous-formulaire ?


Auteurs : Tofalu , Pour cela il faut utiliser le Recordset du sous formulaire. Se positionner ... ... sur le premier enregistrement :

Me.CadreSousFormulaire.Form.Recordset.MoveFirst

... sur le dernier enregistrement :

Me.CadreSousFormulaire.Form.Recordset.MoveLast

... sur le prcdent enregistrement :

Me.CadreSousFormulaire.Form.Recordset.MovePrevious

... sur l'enregistrement suivant :

Me.CadreSousFormulaire.Form.Recordset.MoveNext

... sur un nouvel enregistrement :

Me.CadreSousFormulaire.Form.Recordset.AddNew

... se dplacer de X enregistrements :

Me.CadreSousFormulaire.Form.Recordset.Move X

- 153 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

o X est un entier positif ou ngatif. lien : Comment se positionner sur le premier/dernier/prcdent/suivant/nouvel enregistrement d'un formulaire dpendant ?

Comment obtenir le numro de l'enregistrement actuel du formulaire ?


Auteurs : Drosera , Utilisez la proprit CurrentRecord (voir aide Access).

Comment ouvrir un formulaire en se positionnant sur un enregistrement spcifique ?


Auteurs : Drosera , Il faut utiliser la proprit SelTop du formulaire dans la procdure Form_Open. Dans cette exemple nous nous placerons sur le dernier enregistrement si le formulaire contient moins de 6 enregistrements, et sur le cinquime en partant de la fin dans le cas contraire. Ceci sera par exemple utilise dans un formulaire en mode feuille de donnes. En effet, si nous nous positionnons sur le dernier enregistrement, seul celui-ci apparatra sur le formulaire. Ainsi, se positionner sur le cinquime en partant de la fin nous assure de voir l'cran au les cinq dernier enregistrements.

Private Sub Form_Open(Cancel As Integer) Dim lng As Long 'obtient le nombre d'enregistrements lng = Me.RecordsetClone.RecordCount 'atteint le dernier Me.SelTop = lng 'remonte de 6 enregistrements si cela est possible If lng > 5 Then Me.SelTop = lng - 5 End If End Sub

Comment se positionner sur un nouvel enregistrement de mon sous formulaire ?


Auteurs : Didier L , Faw , Il suffit dans un premier temps de sonner le curseur au sous formulaire, puis dans un second temps de se positionner sur le nouvel enregistrement :

Me.MonSsFormulaire.SetFocus DoCmd.RunCommand acCmdRecordsGoToNew

Comment, partir d'une valeur de mon formulaire, se positionner sur les enregistrement correspondant du sous formulaire ?
Auteurs : FRED.G , Il faut dfinir les champs Pres et Fils dans votre contrle contenant le sous formulaire :

- 154 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Champ pre : txtPere Champ fils : txtFils O txtPere est le nom du contrle du formulaire contenant la valeur qui nous intresse et o txtFils est le nom du contrle du sous formulaire qui doit correspondre la valeur du formulaire principal. Par exemple si txtPere contient "1", seuls les enregistrements du sous formulaire donc txtFils est gale "1" seront affichs.

Comment obtenir la position en pourcentage de l'enregistrement actuel du formulaire ?


Auteurs : Tofalu , Pour cela, il faut utiliser la proprit PercentPosition du Recordset DAO du formulaire :

Msgbox Me.Recordset.PercentPosition

Comment se dplacer de X enregistrements dans un formulaire ?


Auteurs : Tofalu , Pour cela il faut utiliser la proprit Move du Recordset du formulaire. Exemple pour reculer de 5 enregistrements :

Me.Recordset.Move -10

lien : Comment se positionner sur le premier/dernier/prcdent/suivant/nouvel enregistrement d'un formulaire dpendant ? lien : Comment se positionner sur le premier/dernier/prcdent/suivant/nouvel enregistrement d'un sousformulaire ?

- 155 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Donnes > Modification et ajout de donnes Comment interdire la manipulation d'enregistrements dans un formulaire dpendant ?
Auteurs : Demco , Tofalu , Comment interdire les : Modifications :
Me.AllowEdits = False

Ajouts :
Me.AllowAdditions = False

Suppressions :
Me.AllowDeletions = False

Une autre possibilit est dfinir la proprit du Recordset du formulaire Instantan.

Comment interdir les modifications des donnes d'un sous-formulaire ?


Auteurs : Demco ,
Me.sF_SousForm.Form.AllowEdits = False

Comment empcher Access d'enregistrer de lui-mme les modifications/ajouts d'enregistrements du formulaire ?


Auteurs : Team Access , Il ne faut pas faire un formulaire li. Mthode : Crer formulaire dconnect Crer un Recordset Afficher les donnes du Recordset dans le formulaire Faire autant de boutons que d'actions dans votre formulaire (Validation, Suppression, Suivant, Prcdent, ...). A chaque bouton correspond bien sr une action (Requte de suppression, d'ajout ...). lien : Crer un jeu de donnes (recordset)

Comment empcher la mise jour/l'ajout des donnes d'un formulaire dpendant ?


Auteurs : Team Access , Pour qu'Access n'enregistre pas les modifications faites dans un formulaire, il faut utiliser l'vnement BeforeUpdate et y placer la ligne suivante :

- 156 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cancel = True

Comment fait-on pour un avoir un message de confirmation avant sauvegarder un enregistrement modifi ?
Auteurs : BrunoM45 , Il faut mettre le message de confirmation sur l'vnement "BeforeUpdate" du formulaire :

Private Sub Form_BeforeUpdate(Cancel As Integer) If MsgBox("Voulezvous confirmer la modification", vbQuestion + vbYesNo, "CONFIRMATION") = vbNo Then Me.undo Cancel = true End if End Sub

Comment supprimer l'enregistrement en cours dans un formulaire dpendant ?


Auteurs : Demco , Voici le code gnr par Access l'aide de l'assistant de cration de bouton.

Private Sub btnSuppr_Click() On Error GoTo Err_btnSuppr_Click

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 Exit_btnSuppr_Click: Exit Sub Err_btnSuppr_Click: MsgBox Err.Description Resume Exit_btnSuppr_Click End Sub

Vous devinerez donc que ce sont les lignes suivantes qui suppriment l'enregistrement :

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Sauvegarde de l'enregistrement en cours par le code, aprs modification/ajout d'un enregistrement.


Auteurs : Arkham46 , Access n'enregistre les modifications ou les nouvelles donnes qu'aprs changement d'enregistrement. Voici le code permettant d'obliger Access sauvegarder les modifications portes l'enregistrement actuel :

- 157 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DoCmd.RunCommand acCmdSaveRecord

Comment mettre jour des donnes calcule d'une table depuis un formulaire ?
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library L'vnement Form_Error (Sur erreur) est lev chaque erreur du formulaire. C'est donc dans cet vnement que va se drouler le traitement de correction. Etape 1 : vrifier l'erreur qui est leve. Celle qui nous concerne est 3022, risque de doublons. Etape 2 : on rcupre le jeu de donnes du formulaire (puisque c'est ici que figure la quantit dj valide). Etape 3 : on se positionne sur le bon enregistrement (en fonction de numCommande et NumProduit). Etape 4 : si l'enregistrement existe (normalement il existe sinon l'erreur n'aurait pas eu lieu, mais on est jamais assez prudent), dans ce cas on met jour sa quantit. C'est dire : quantit avant + nouvelle quantit. Etape 5 : on annule la saisie de l'utilisateur, on recharge le formulaire et enfin, on dit VBA que l'erreur a t corrig (acDataErrContinue).
Private Sub Form_Error(DataErr As Integer, Response As Integer) Dim oRst As DAO.Recordset If DataErr = 3022 Then Set oRst = Me.RecordsetClone With oRst .FindFirst "NumProduit=" & Me.NumProduit & " AND NumCommande=" & Me.NumCommande If Not .NoMatch Then .Edit .Fields("Qte").Value = .Fields("Qte") + Me.Qte .Update Me.Undo Me.Requery Response = acDataErrContinue End If End With Set oRst = Nothing End If End Sub

Ici la structure de ma table tait : NumCommande,NumProduit,Qte Les champs du formulaires taient nomms pareil.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

- 158 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Donnes > Source de donnes Comment trier un formulaire sur un champ spcifi en VBA
Auteurs : Faw , Vos enregistrements affichs dans le formualire sont le rsultat d'une requte. Pour les trier en fonction du champ1 :
Forms![NomDuForm].OrderBy = "[Champ1]" Forms![NomDuForm].OrderByOn = True

Comment changer la source d'un sous-formulaire ?


Auteurs : Demco , Alain36 , Mthode 1 : La proprit RecordSource (Source) permet de spcifier la source des donnes d'un formulaire. Le paramtre affect la proprit RecordSource (Source) peut tre un nom de table, un nom de requte ou une instruction SQL.
Forms![NomFormulaire]![NomSousFormulaire].Form.RecordSource = "SELECT ...."

Mthode 2 : La proprit SourceObject (ObjetSource) vous permet d'identifier le formulaire ou l'tat qui reprsente la source du sous-formulaire ou du sous-tat dans un formulaire ou un tat
Forms![Formulaire]![SousFormulaire].SourceObject = "FormulaireSource"

Comment changer la source d'un formulaire ?


Auteurs : Demco ,
Me.NomDeMonFormulaire.Form.RecordSource = "Select ..."

Comment filtrer un formulaire partir d'une valeur contenue dans une variable ?
Auteurs : Team Access , Si vous filtrez un formulaire diffrent du formulaire en cours (par exemple dans un module) il faut faire :
Forms("NomDuFormulaire").filter="[LeChampCle]=" & tempon Forms("NomDuFormulaire").filterOn=true

Si on veut filtrer le formulaire en cours :


Me.filter="[LeChampCle]=" & tempon Me.FilterOn=True

Comment mettre jour un formulaire?


Auteurs : Team Access ,
- 159 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

_Objets graphiques et calculs mthode .Repaint _Donnes mthode .Refresh Cette mthode ne mettra pas jour les enregistrements du formulaire. _Rexcution de la requte methode .Requery Cette methode mettra jour l'affichage des enregistrements du formulaire, elle est donc plus lourde que la mthode prcdente.

- 160 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Prsentation Comment enlever le slecteur d'enregistrements ?


Auteurs : Team Access , Dans les proprits du formulaire, mettre "non" la proprit "Afficher slecteur".

Comment enlever les boutons de dplacement ?


Auteurs : Team Access , Dans les proprits du formulaire, mettre "non" la proprit "Boutons de dplacement". lien : Comment enlever les boutons de navigation d'un formulaire en VBA

Masquer des champs en mode Feuille de donnes (DataSheet) ?


Auteurs : Team Access , Dans ce mode, il n'est pas possible d'utiliser la proprit visible. Il faut donc masquer la colonne en mettant sa largeur 0.

Comment rendre des colonnes d'un formulaire invisibles ?


Auteurs : Drosera , Pour masquer une colonne dans un formulaire en mode feuille de donnes, il faut utiliser la proprit ColumnHidden du contrle. Cela marche aussi pour les tables et requtes en passant par la collection Properties. lien : Comment masquer/rendre invisible toutes les zones de texte vides ?

Comment avoir plusieurs couleurs de contrles ou fonds dans un formulaire en mode continu ?
Auteurs : Team Access , Une fois le formulaire ouvert, allez dans Format / Mise en forme conditionnelle.

- 161 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Remarque : cette fonction n'existe pas dans les versions antrieures MS Access 2000.

Comment afficher dans un formulaire une image se trouvant dans un dossier ?


Auteurs : Team Access ,
Me.Image1.Picture = "c:\temp\dessin.jpg"

Comment crer des fentres de formulaire aux formes personnalises ?


Auteurs : Arkham46 , Cela est possible, mais c'est assez complexe. Il faut faire appel une API.

Comment afficher un texte d'info bulle sur plusieurs lignes ?


Auteurs : ARO , Dans la proprit du contrle il faut appuyer sur Ctrl + Entrer l'endroit o vous voulez retourner la ligne. lien : Comment avoir un TextBox (zone de texte) multiligne ?

Comment mettre un plein cran une fentre de formulaire ?


Auteurs : Team Access ,
DoCmd.Maximize

lien :

Comment faire pour rduire un formulaire ? (effet du bouton tiret en haut droite des fentres Windows)

Comment avoir des formulaires de tailles diffrentes ?


Auteurs : Drosera , Lorsque vous avez un formulaire ouvert en pleine cran et que vous voulez en ouvrir un autre de taille infrieure, cela modifie la taille du premier formulaire.

- 162 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Il est possible de donner des tailles diffrentes aux formulaires, ceci en jouant sur la proprit fentre indpendante du formulaire.

Comment remettre la barre tout en haut de mon form, l o il y a la croix ?


Auteurs : Drosera , Changez la proprit Style bordure du formulaire, elle ne doit pas tre rgle sur Aucun, sinon elle n'apparat pas.

Comment donner automatiquement la mme prsentation mes formulaires ?


Auteurs : Demco , Formatez un formulaire comme bon vous semble : police de caractre, couleur de fond, etc. En mode cration faites : Format / Format automatique Puis Personnaliser et cochez Crer un nouveau format automatique bas sur le formulaire "MonFormulaire" Puis dans les autres formulaires, faites format / format automatique et appliquez le format cre prcdemment.

Comment ajouter un menu dans un formulaire ?


Auteurs : Tofalu , Pour crer un menu dans un formulaire comme sous VB6, il faut recourir diverses fonctions de l'API Windows. Vous pouvez consulter ce tutoriel pour plus de dtails : Ajouter un menu dans un formulaire

Comment faire disparatre les boutons des fentres (minimiser/maximiser/fermer) ?


Auteurs : Tofalu , Cafeine , Ouvrez les proprits de votre fentre (formulaire ou tat). Allez dans l'onglet Format, puis mettez Bote contrle Non. Autre solution par le code en utilisant les API :
Option Explicit Private Declare Function SetWindowLongA Lib "user32" _ (ByVal hWnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLongA Lib "user32" _ (ByVal hWnd As Long, ByVal nIndex As Long) As Long Const WS_MINIMIZEBOX = &H20000 Const WS_MAXIMIZEBOX = &H10000 Const GWL_STYLE = (-16) Function RetireRestoreMaximize(ByVal hWndx As Long) ' hWndx est le handle de la fentre modifier ... Dim L As Long L = GetWindowLongA(hWndx, GWL_STYLE) L = L And Not (WS_MINIMIZEBOX)

- 163 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

L = L And Not (WS_MAXIMIZEBOX) L = SetWindowLongA(hWndx, GWL_STYLE, L) End Function

Comment donner de la couleur mes boutons ?


Auteurs : Demco , Vous devez utiliser une image en guise de bouton, car l'objet bouton de base avec Access ne permet pas de telles fantaisies. prenez un objet "image" dfinissez l'apparence en relief sur l'vnement "click" passez l'apparence en "3D enfonc" [MonImage.SpecialEffect = 2] (ou mme changer d'image) excutez le code rtablissez l'apparence en "relief" [MonImage.SpecialEffect = 1]

Comment mettre une icne dans la barre de titre d'un formulaire ?


Auteurs : Arkham46 , La rponse se trouve ici.

Ouvrir un tat ou un formulaire en mode invisible


Auteurs : Team Access , Utiliser l'argument acHidden de la mthode OpenForm ou OpenReport. Exemple pour un formulaire :
DoCmd.OpenForm "MonForm",,,,,acHidden

Comment mettre en surbrillance toute la ligne active d'un formulaire ?


Auteurs : Maxence HUBICHE , Cette solution qui est plus du bricolage, mais qui fonctionne bien, va vous permettre de mettre en surbrillance toute une ligne, et une ligne seulement : Celle qui est active. Attention ! Cette technique implique que vous soyez seul travailler sur ta table ! Voici comment procder : Vous avez besoin d'une table ayant 2 champs (tblBackGrounds) : Active (oui/non) => PK Couleur(Objet OLE) => vous y mettrez, suivant la valeur de Active, un tout petit carr de couleur. Une image bitmap toute petite. Dans la table que vous affichez actuellement, il vous faut aussi ajouter un champ Active (Oui/Non). Vous devez modifier la source de votre sous-formulaire :

- 164 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Select Tatabl.*, tblBackGrounds.Couleur From Tatabl Inner Join tblBackGrounds On TaTabl.Active=tblBackGrounds.Active;

Vous devez modifier votre sous-formulaire : Ajoutez-y le champ Couleur qui vient d'apparatre dans la liste des champs. Etendez le sur la largeur de la section dtail. Mettez le en arrire-plan (format/Arrire-plan). Modifiez sa proprit "mode d'affichage" de dcoupage chelle. Vous devez mettre un peu de code : Dans l'vnement "Sur Activation", crivez simplement :
CurrentDb.Execute "UPDATE TaTabl Set Active=False" CurrentDb.Execute "UPDATE TaTabl Set Active=True Where [TonIdentifiant]=" & Nz(Me.TonIdentifiant, 0)

lien :

Mise en surbrillance d'un enregistrement dans un formulaire

Peut-on afficher sous forme de mot de passe (******) les caractres saisis dans une InputBox ?
Auteurs : Team Access , Non. Il faut contourner le problme en crant un formulaire personnalis et en dfinissant le masque de saisie de la TextBox Mot de passe. lien : Comment masquer ce qui est tap dans une zone de texte (pour un mot de passe) ?

Changer la couleur de fond d'un bouton de commande.


Auteurs : =JBO= , Il est possible d'utiliser le contrle ActiveX CommandButton qui fait partie de la "bibliothque" [Microsoft Forms x.y] (alias MSForms) livre avec Microsoft Office, donc disponible sur les postes dots de Word/Excel/PowerPoint/Access. (note: ici x.y dpend de la version d'Office installe sur le PC). Marche suivre : La fentre du formulaire doit tre en mode cration. Dans le menu [Insertion] cliquer sur [Contrle ActiveX...]. Une bote de dialogue permet de rechercher dans une liste le contrle [Microsoft Forms x.y CommandButton]. Slectionner la ligne et cliquer sur [OK]. Le contrle apparat sur le formulaire. Comme c'est un contrle ActiveX, son utilisation demande plus d'efforts et ne se programme qu'avec VBA. Les proprits ne sont pas prsentes l'identique d'un contrle natif d'Access et ne disposent pas d'assistant. Les proprits [Caption], [BackColor] et [ForeColor] sont visibles dans l'onglet [Autres] de la fentre des proprits. La proprit [Font] n'est accessible que par programmation VBA (cf. l'explorateur d'objets pour inspecter sa structure touche F2). Astuce : utilisez la fentre d'excution (Ctrl + G) pour paramtrer "directement" ces proprits qui sont alors correctement enregistres. Par exemple, pour mettre le texte du bouton en italique, utilisez les proprits de son objet Font en saisissant dans la fentre excution :

Forms![NomDuForm]![NomDeBoutonActivX]..Font.Italic=True - 165 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Puis appuyez sur entre. L'vnement [_Click] se programme directement dans l'environnement de dveloppement. En effet, la fentre de proprits ne permet pas de voir les vnements "internes" d'un contrle ActiveX. Dans le module du formulaire, il suffit donc d'crire ceci pour excuter du code sur clic du bouton :

Private Sub NomDuBoutonActivX_Click() MsgBox "Vous avez cliqu." End Sub

Comment mettre du gras dans un MsgBox


Auteurs : Frank , Vous devez dans un premier temps crire une nouvelle fonction d'affichage de boite de message (MessageBox) :

Function FormattedMsgBox( _ Prompt As String, _ Optional Buttons As VbMsgBoxStyle = vbOKOnly, _ Optional Title As String = vbNullString, _ Optional HelpFile As Variant, _ Optional Context As Variant) _ As VbMsgBoxResult If IsMissing(HelpFile) Or IsMissing(Context) Then FormattedMsgBox = Eval("MsgBox(""" & Prompt & _ """, " & Buttons & ", """ & Title & """)") Else FormattedMsgBox = Eval("MsgBox(""" & Prompt & _ """, " & Buttons & ", """ & Title & """, """ & _ HelpFile & """, " & Context & ")") End If End Function

Ensuite il ne vous reste qu' appeler cette fonction depuis votre code :

FormattedMsgBox "Wrong button!@This button doesn't work.@Try Another.", _ vbOKOnly + vbExclamation, "My Application"

lien :

Source de cette solution

Importer les barres d'outils ou de menus personnalises


Auteurs : =JBO= , Procdure valable pour une version franaise d'Access 2000 : 1 2 3 4 5 Ouvrir le fichier MDB dans lequel on souhaite importer les barres personnalises. Dans le menu [Fichier], excuter la commande [Donnes externes|Importer...]. Une bote de dialogue [Importer] s'affiche pour slectionner le fichier MDB dans lequel se trouvent les barres d'outils rcuprer. Slectionner ce fichier et cliquer sur le bouton [Importer]. Une nouvelle bote de dialogue [Importer des objets] s'affiche. Cliquer sur le bouton [Options >>] pour faire apparatre les contrles permettant de grer plus finement l'Import. Dans le cadre [Importer] cocher la case "Menus et barres d'outils".

- 166 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cliquer sur le bouton [OK].

Remarque: pour rcuprer les paramtres d'import/export de donnes, a se passe aussi dans les Options.

Comment dployer en vba les sous feuilles de donnes d'un formulaire en mode feuille de donnes ?
Auteurs : =JBO= , Vous avez cr un formulaire contenant dans sa zone "Dtails" un sous-formulaire li. Ces deux formulaires sont utiliss en affichage feuille de donnes, ce qui fait qu'Access les affiche sous forme d'une arborescence : on voit les lignes du formulaire principal et on peut cliquer sur la petite croix pour faire apparatre les sous-enregistrements du sous formulaire lis cette ligne. Ce que vous souhaitez faire : "dplier" chaque ligne au lancement du formulaire pour viter que l'utilisateur n'ait le faire la main en cliquant sur chaque petite croix... Voici une solution :

Private Sub Form_Load() Me.SubdatasheetExpanded = True End Sub

Ce code fonctionne avec une arborescence plusieurs niveau (plusieurs formulaires imbriqus). Lien rciproque : Q/R d'Etienne sur la possibilit d'afficher plusieurs sous en continu.

Comment modifier l'apparence des boutons de commande ? (Faire passer de Windows 98 au style Windows XP Access 2003)
Auteurs : petitmic , Allez dans Outils > Options, onglet Formulaires/Etats, cochez Utiliser les contrles Windows thmes sur les formulaires Cette Fonction n'est applicable que sous Access 2003

Comment crer un effet de relief lorsque la souris survole un contrle ?


Auteurs : BrunoM45 , Faw , Il y a deux vnements dans lesquels nous devons placer du code. Tout d'abord, occupons nous de la souris qui survole le contrle.

Private Sub tiquette_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.tiquette.SpecialEffect = 0 End Sub

O tiquette est le nom d'un contrle de type tiquette.


- 167 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Maintenant, il faut qu'une fois fini de survoler le contrle, celui-ci rcupre son apparence normale. En fait il faut que vous placiez le code suivant sur l'vnement MouseMove() du contenant du contrle tiquette. Dans cet exemple, le contrle se trouve dans la zone Dtail du formulaire, nous avons donc :

Private Sub Dtail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.tiquette.SpecialEffect = 0 End Sub

Comment faire pour que mes chiffres soient prcds d'un 0 ? (01, 02, ...)
Auteurs : Tofalu , Pour cela il faut modifier la proprit format de la zone de texte du formulaire qui affiche ces chiffres, en lui appliquant un format 00

Comment rendre un formulaire transparent ?


Auteurs : Arkham46 , Vous pouvez utiliser cette mthode. Jouez sur le paramtre lAlpha pour augmenter ou diminuer la transparence.

Private Const WS_EX_LAYERED = &H80000 Private Const LWA_ALPHA = &H2 Private Const GWL_EXSTYLE = &HFFEC Private Declare Function SetWindowLong Lib "USER32" Alias "SetWindowLongA" _ (ByVal hWnd As Long, _ ByVal lngWinIdx As Long, _ ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "USER32" Alias "GetWindowLongA" _ (ByVal hWnd As Long, _ ByVal lngWinIdx As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "USER32" _ (ByVal hWnd As Long, _ ByVal crKey As Integer, _ ByVal bAlpha As Integer, _ ByVal dwFlags As Long) As Long Private Sub Form_Load() Dim lAlpha As Long lAlpha = 255 * (20 / 100) SetWindowLong Me.hWnd, GWL_EXSTYLE, GetWindowLong(Me.hWnd, GWL_EXSTYLE) Or WS_EX_LAYERED SetLayeredWindowAttributes Me.hWnd, 0, lAlpha, LWA_ALPHA End Sub

Pour que cela fonctionne, le formulaire doit tre indpendant.

Comment changer de page dans un onglet en VBA ?


Auteurs : Faw , Une des mthodes consiste affecter le numro de la page (cette numrotation commence 0) la valeur du contrle onglet.

- 168 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exemple :

Private Sub Bascule4_Click() Me.CtlTab0.Value = Index de page End Sub

Autre possibilit : utiliser la mthode SetFocus de la page :

Me.NomContrleOnglet.Pages("NomDeLaPage").SetFocus

- 169 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Formulaires > Trucs et Astuces Comment afficher une table ou une requte dans un contrle Sous Formulaire sans crer de nouveau formulaire ?
Auteurs : Maxence HUBICHE , Une astuce pour crer un sous formulaire de faon classique : mettez votre formulaire en mode cration affichez votre fentre de Base de donnes ct de votre formulaire affichez la liste des requtes faites un cliquer glisser de l'icne de votre requte dans votre formulaire. => cette mthode cre un nouveau formulaire qui s'insre dans le contrle Sous Formulaire... => Voici comment faire pour ne pas crer de nouveau formulaire : Dans votre formulaire principal, crez un contrle Sous Formulaire/Sous-Etat (sans assistant si possible). Dans les proprits de cet objet, allez dans l'onglet Donnes Dans la proprit Objet Source, choisissez votre requte ou votre table.

Comment ne pas enregistrer les donnes des contrles d'un formulaire avant validation par l'utilisateur
Auteurs : Etienne Bar , Il faut mettre ce code dans l'vnement Avant MAJ du formulaire ou du contrle concern :
If MsgBox("Valider la mise a jour ?? ", vbOKCancel) = vbCancel Then MsgBox "L\'opration de mise a jour a t annule", vbInformation Cancel = true ' annule l'opration Exit Sub And If

Exit Sub permet de sortir de la procdure en cours cad celle de la mise a jour.

J'ai le bouton1 qui avec l'vnement On_Move fait apparatre le bouton2, et quand je repasse sur le bouton1 le bouton2 doit disparatre et ainsi de suite...
Auteurs : Maxence HUBICHE ,
Option Compare Database Option Explicit Private AModifier As Boolean

Private Sub Commande0_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If AModifier Then AModifier = False Commande1.Visible = Not Commande1.Visible Else 'rien faire End If End Sub Private Sub Dtail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) AModifier = True End Sub

- 170 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

AModifier est une variable qui va servir de tampon. En effet, la procdure MoseMove se produit tant que la souris se dplace sur le contrle ou l'lment concern. Donc, il faut russir viter que la procdure se reproduise tant que ta souris n'est pas sortie du bouton. Donc : - Il faut que, lors de la premire excution, on lui signale qu'il ne faut pas qu'elle se reproduise. La procdure commence donc par tester s'il faut modifier ou non
If AModifier Then

Si c'est le cas, alors, il y a modification de la variable tampon, signalant ainsi qu'il ne faut plus modifier
AModifier = False

Puis on inverse la visibilit en cours du bouton


Commande1.Visible = Not Commande1.Visible

Par contre, s'il ne faut pas modifier, aucune action n'est entreprise
Else 'rien faire End If

J'ai pos le bouton sur la section dtail. Ds que la souris va sortir du bouton, elle va donc passer sur le dtail. C'est ici qu'il va falloir jouer sur la valeur de la variable tampon afin de la remettre vrai pour que, ds que la souris retournera sur le bouton, on puisse considrer qu'il faut modifier la visibilit du bouton. D'o le code moseMove sur la section dtail :
Private Sub Dtail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) AModifier = True End Sub

Comme la variable AModifier est disponible pour 2 procdures distinctes, il faut que sa porte soit sur le module. Il s'agit de la dclarer en tte de module.
Private AModifier As Boolean

Centrer un formulaire
Auteurs : Morsi , Aprs avoir obtenu la position d'un formulaire, on va le centrer maintenant pour rendre "joli" et des fois trs utiles. Reprenons ds le dbut, on va crer un type POSITION pour la position de notre formulaire et ajouter quelques API Windows qui s'avrent utiles pour dterminer les proprits de l'cran et dplacer le formulaire. Dans la section des dclarations d'un nouveau module juste aprs Option Explicit, ajouter ce bout de code:
Private Type Position Left As Long Top As Long Right As Long Bottom As Long End Type ' --Pour obtenir les coordonnes de la fentre parent Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long ' --Pour obtenir les coordonnes de notre formulaire Public Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, _ - 171 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lpRect As Position) As Long ' --Pour obtenir les coordonnes de l'cran Public Declare Function GetDesktopWindow Lib "user32" () As Long ' --Pour positionner et dimensionner la fentre Public Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, _ ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal bRepaint As Long) As Long

Pour positionner au centre notre formulaire, on fait appel une procdure Positionner() dont on passe le formulaire centrer. Dans notre exemple, c'est un bouton qui centre le formulaire et donc on fait appel la fonction avec Me.
Private Sub Centrer_Click() Call Positionner(Me) End Sub

Revenons au module prcdent et ajoutons ce code comment


Public Sub Positionner(frm As Form) Dim FParent As Position '--Fentre Parent Dim Fenetre As Position Dim Largeur As Integer Dim Hauteur As Integer Dim LParent As Integer ' --Largeur Fentre Parent Dim HParent As Integer ' --Hauteur Fentre Parent Dim PParent As Long ' --Posion parent On Error GoTo Erreur ' --Trouver les coordonnes de mon formulaire centrer. PParent = GetParent(frm.hwnd) ' --Obtenir les coordonnes de mon formulaire et celles de son parent. Call GetWindowRect(frm.hwnd, Fenetre) ' --Si le parent est la fentre Access, pas de soustracion If PParent <> Application.hWndAccessApp Then Call GetWindowRect(PParent, FParent) Else ' -- les coordonnes du Desktop Call GetWindowRect(GetDesktopWindow(), FParent) End If ' --Calcul de la largeur et de la hauteur du parent With FParent LParent = .Right - .Left HParent = .Bottom - .Top End With ' --Calcul de la largeur et de la hauteur de mon formulaire With Fenetre Largeur = .Right - .Left Hauteur = .Bottom - .Top .Left = (LParent - Largeur) \ 2 .Top = (HParent - Hauteur) \ 2 End With ' --Centrer mon formulaire Call MoveWindow(frm.hwnd, Fenetre.Left, Fenetre.Top, Largeur, Hauteur, bRepaint:=True) Exit Sub Erreur: MsgBox "Erreur: " & Err.Number & vbCrLf & Err.Description End Sub

Comment savoir si un contrle existe dans un formulaire ?


Auteurs : Bidou ,
Function ExistControl(ByVal frm As Form, ByVal ctlName As String) As Boolean 'frm contient le nom du formulaire, ctlName contient le nom du formulaire On Error Resume Next - 172 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If IsError(frm.Controls(ctlName).Tag) Then Err.Clear Exit Function Else ExistControl = True End If End Function

Comment faire dfiler un texte dans un formulaire


Auteurs : Maxence HUBICHE , Dans votre formulaire vous mettez une tiquette (lblInfos) contenant le texte voulu. Mettre la proprit minuterie de l'onglet vnements 500 (ms). En regardant bien les proprits des vnements du Formulaire, vous trouverez la proprits SurMinuterie. Dedans, vous choisissez [Procdure vnementielle], vous cliquez sur les 3... droite et vous tombez dans la procdure :
Private sub Form_Timer() lblInfos.Caption = Mid(lblInfos.Caption, 2) & Left(lblInfos.Caption, 1) End Sub

Empcher la navigation entre formulaire via barre des tches


Auteurs : Cafeine , Menu Outils / options Onglet affichage : dcocher Fentres dans la barre des tches.

Comment faire passer un formulaire ouvert en mode acDialog en arrire plan ?


Auteurs : Maxence HUBICHE , Lorsque l'on ouvre un tat depuis un formulaire ouvert en mode acDialog, l'tat apparat derrire le formulaire, ce qui se rvle tre un problme. On ne peut demander explicitement au formulaire d'aller en arrire plan, il faut donc jouer sur sa proprit visible : Nous mettons la proprit visible false l'ouverture de l'tat, puis true lors de sa fermeture. De cette manire, la fermeture de l'tat, le formulaire rapparat l'identique.

Crer dynamiquement un formulaire


Auteurs : Morsi , Pourquoi a-t-on besoin de crer dynamiquement un formulaire quand l'assistant d'Access le fait parfaitement et rapidement ? Si on veut par exemple afficher une table en mode continu et que le nombre de colonnes de la table varie par exemple ou quand on ne veut afficher que quelques colonnes d'une table !! notre mthode sera appliqu comme filtre alors. Soit sql la chane sql contenant les colonnes d'une table afficher:
sql ="SELECT T.CHAMP1, T.CHAMP2, T.CHAMP5 FROM T"

Cette fonction permet de crer un formulaire dynamique et de le mettre en page, d'ajouter aussi des vnements, ... il est conseill d'utiliser un formulaire existant au lieu de crer un nouveau formulaire parce que Access aura du mal dans

- 173 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

le cas de la cration d'un nouveau formulaire voir ce formulaire rcemment cr. Dans cet exemple nous utilisons un formulaire existant soit "F_AFFICHAGE" que nous modifions notre guise.
Public Function create_form(sql As String) As Boolean Dim frm As Form Dim rst As Recordset dim ctl as control dim i, j as integer ' --Ouvrir le formulaire en mode modification et cach DoCmd.OpenForm "F_AFFICHAGE", acDesign , , , , acHidden ' --suppression de tous les contrles avant de les crer de nouveau For Each ctl In Forms!F_AFFICHAGE.Controls DeleteControl "F_AFFICHAGE", ctl.Name Next ctl ' --Source de donnes de mon formulaire Forms![F_AFFICHAGE].RecordSource = sql Set rst = Currentdb.OpenRecordset(sql) ' --nous ne pensons pas que vous aurez plus de 100 contrles Dim controle(1 To 100) As Control ' --Cration des contrles If rst.RecordCount <> 0 Then i = 1 j = 1000 While i < rst.Fields.Count ' -- Crer le contrle i Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox) ' --lui affecter un nom controle(i).Name = "TXT_" & rst.Fields(i).Name ' --le positionner sur le formulaire controle(i).Left = 100 + j ' --Dfinir sa largeur controle(i).Width = 1150 ' --Dfinir sa couleur de fond controle(i).BackColor = "14742270" ' --Dfinir son effet visuel controle(i).SpecialEffect = 0 controle(i).BackStyle = 0 controle(i).BorderStyle = 1 ' --source de donnes de ce contrle controle(i).ControlSource = rst.Fields(i).Name i = i + 1 j = j + 1150 Wend End If ' --Cration des enttes j = 1000 i = 1 While i < rst.Fields.Count Set controle(i) = CreateControl("F_AFFICHAGE", acTextBox, acHeader) controle(i).Name = "HD_" & rst.Fields(i).Name controle(i).Left = 100 + j controle(i).Width = 1150 controle(i).Height = 700 controle(i).BackColor = "10081789" controle(i).SpecialEffect = 0 controle(i).BorderStyle = 1 controle(i).TextAlign = 2 controle(i).FontWeight = 700 controle(i).ControlSource = "=\'" & rst.Fields(i).Name & "\'" i = i + 1 j = j + 1150 Wend rst.close set rst = Nothing ' --Sauvegarder le formulaire DoCmd.Save acForm, "F_AFFICHAGE"

- 174 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Vous pouvez enrichir cet exemple en vous rendant sur l'aide d'Access pour d'autres proprits telles que SpecialEffect ou BorderStyle mais aussi ajouter un vnement tel qu'un double clic en cherchant OnDblClick ou OnClick ... Voila vous n'avez maintenant qu'a changer la requte sql et votre formulaire est prt en quelques secondes.

Insrer une ligne blanche (enregistrement vide) dans un SF affich en mode Feuille de donnes
Auteurs : gripoil , Tout le pas pas qui suit concerne la source du SF. :arrow Crer un champ Ordre (type numrique) qui servira de tri. Il n'est pas obligatoire qu'il soit physiquement prsent dans le formulaire. _ Code sur Doubleclic (le double clic concerne le slecteur du SF qui doit donc tre affich) :
Private Sub Form_DblClick(Cancel As Integer) ' Cre un enregistrement et insre un compteur dans le champ Ordre. Dim Compteur As Integer Application.Echo False Compteur = Me![Ordre] DoCmd.GoToRecord , , acNewRec Me![Ordre].Value = Compteur + 1 Me.Requery Numerotation_Click Application.Echo True End Sub

et Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Private Sub Numerotation_Click() ' Renumrote les enregistrements. Dim rcs As DAO.Recordset Dim i As Integer Set rcs = Me.RecordsetClone i = 1 rcs.MoveFirst While Not rcs.EOF rcs.Edit rcs!Ordre = i rcs.Update rcs.MoveNext i = i + 2 Wend rcs.Close Set rcs = Nothing Me.Requery

- 175 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

_ Pour finir, sur le formulaire principal, vnement sur Activation :


Private Sub Form_Current() Me.NomDuSousFormulaire.Form.OrderBy = " Ordre" Me.NomDuSousFormulaire.Form.OrderByOn = True End Sub

Ce qui active le tri sur le champ Ordre.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Passer en mode Edit dans un champ dont le format est diffrent du masque de saisie
Auteurs : sellig , La touche clavier F2 permet de passer en mode Edit dans un champ. vous pouvez l'utiliser en entrant dans votre champ l'instruction.
SendKeys "{F2}"

Nouvel enregistrement ou enregistrement modifi ?


Auteurs : Etienne Bar , Il faut que le test porte sur un contrle dpendant que l'utilisateur doit obligatoirement remplir. Le formulaire concern doit bien sr tre un formulaire li.
If IsNull(Me.MonControleObligatoire.oldvalue) Then ' on est en ajout Else ' on est en modif End If

Positionner le curseur gauche du champ ou slectionner le contenu du champ


Auteurs : Maxence HUBICHE , Positionner le curseur gauche :
Private sub MonTXT_Click() MonTXT.Selstart=0 End sub

Slectionner le contenu :
Private sub MonTXT_Click() MonTXT.SelStart=0 MonTXT.SelLength=Len(MonTXT)

- 176 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End sub

Position d'un formulaire


Auteurs : Morsi , Une position est dfini par 4 coordonnes, droite, gauche, bas et haut. Nous allons donc crer un type POSITION pour nos 4 coordonnes.Dans la section dclarations copier et coller ce code:
Private Type rect Left As Long Top As Long Right As Long Bottom As Long End Type

Pour dterminer la position de notre formulaire actif, nous ferons appel une API GetWindowRect. Toujours dans la section dclaration ajouter ce code:
Private Declare Function GetWindowRect Lib "User32" _ (ByVal hwnd As Long, lpRect As RECT) As Long

Dans un formulaire, ajouter un bouton dont le code de l'venement sur clic est le suivant:
Private Sub Position_Click() Dim Position As rect Call GetWindowRect(Me.hwnd, Position) With Position MsgBox "Position de mon formulaire" & vbCrLf & "Gauche:" & .Left & vbCrLf _ & "Droite:" & .Right & vbCrLf & "Infrieur:" & .Bottom & vbCrLf & "Suprieur:" & .Top End With End Sub

La position du formulaire est donne en pixel. Certainement vous vous dites ce que vous pourriez faire avec les positions du formulaire ? justement c'est trs utile si vous voulez "figer" un formulaire ou changer l'emplacement sur l'cran bien sr d'un formulaire, il suffit pour a d'utiliser la fonction MoveSize de DoCmd et dont la traduction est DplacerDimensionner. Un exemple d'utilisation de cette mthode:
DoCmd.MoveSize 2440, 2400, , 4000

Attention, cette proprit prend les coordonnes en twips qui correspond 1/20 de points. Pour plus d'informations et d'exemples sur tout ces fonctions rendez vous sur l'aide d'Access.

Comment vrifier la sortie d'une input box que le type de donne rentre est bien du numrique ?
Auteurs : Cafeine , Voici une fonction qui vous permet de saisir une valeur numrique :
Function InputBoxNumeric(ByVal PromptZ As String, _ ByVal TitleZ As String, ByVal DefaultZ As String) As Double 'PromptZ : texte dans la Input Box 'TitleZ : titre donner l'InputBox 'DefaultZ : Valeur par dfaut

- 177 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim rep As String Start01: rep = InputBox(PromptZ, TitleZ, DefaultZ) If Len(rep) > 0 Then If IsNumeric(rep) Then InputBoxNumeric = CDbl(rep) Exit Function Else MsgBox "une valeur numrique est attendue, merci de refaire la saisie" GoTo Start01 End If Else MsgBox "une valeur numrique est attendue, merci de refaire la saisie" GoTo Star1 End If End Function

Comment masquer un sous formulaire vide ?


Auteurs : Drosera ,
Me.MonSousFormulaire.Visible = (Me.MonSousFormulaire.Form.RecordsetClone.RecordCount > 0)

Comment empcher l'utilisateur de cliquer l'extrieur du formulaire (comme pour une MsgBox)
Auteurs : Tofalu , Il faut dfinir la proprit Affichage modale du formulaire Oui. L'utilisateur ne pourra ainsi accder un autre formulaire tant qu'il n'aura pas ferm celui-ci.

Comment enlever les boutons de navigation d'un formulaire en VBA


Auteurs : Tofalu ,
Me.navigationbuttons = False

lien : Comment enlever les boutons de dplacement ?

Comment utiliser la saisie semi-automatique dans les contrles de mes formulaires ?


Auteurs : Tofalu , Il n'est pas possible de le faire directement. Cependant, voici comment obtenir un rsultat similaire : [*]Premire solution : Tu remplaces les zones de textes par des zones de listes modifiables qui elles adoptent ce comportement par dfaut.

- 178 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

[*]Deuxime solution : Par DAO, tu ouvres un recordset sur ta table, tu slectionne le premier enregistrement et tu le mets dans la zone de texte si c'est le seul. Sinon, tu laisses l'utilisateur continuer taper.

Dans un formulaire en mode continu, comment rendre invisible un bouton pour certaines lignes ?
Auteurs : Maxence HUBICHE , Le truc, c'est de faire : 1/ une table avec 2 champs. ID Boolean BTN OLEObject Dans ID, tu auras Vrai sur la premire ligne et Faux sur la 2 Dans BTN, en face de VRAI tu mets l'image d'un bouton, en face de FAUX un carr color, de la mme couleur que le fond de ton formulaire. 2/ une requte qui fasse le test et renvoie une colonne contenant VRAI si le test est vrifi, FAUX sinon 3/ une requte qui lie cette colonne calcule, boolenne, avec le champ ID de la table. 4/ se servir de la 2 requte comme de la source du sous formulaire Et voil ! Aprs, en jouant sur l'ensemble des vnement Sur souris enfonce Sur Souris relche Sur Clic on peut tester si le champ ID est VRAI=> on fait l'action Si on fait l'action : sur souris enfonce, on affiche une image de bouton enfonc sur souris relche, on remet l'image standard du bouton sur clic, on dclenche l'action.

Comment "zoomer" sur le contenu d'un contrle de type texte


Auteurs : Maxence HUBICHE , Programmez les deux vnements Sur Entre et Sur Sortie. Sur entre, le format de police change en plus gros. Sur sortie, le format de police change en plus petit. Exemple ici pour une zone de texte se nommant "Texte1" :
Private Sub Texte1_Enter() Texte1.FontSize = 18 End Sub Private Sub Texte1_Exit(Cancel As Integer) Texte1.FontSize = 8 End Sub

- 179 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

A noter que depuis Access 2000 il est possible d'utiliser la mise en forme conditionnelle et plus particulirement ici, une condition de type Champ Actif (cf. lien ci-dessous).

lien :

La mise en forme conditionnelle sous Access 2000/XP/2003

Le temps d'ouverture de mes formulaires onglets est trop important !


Auteurs : Gal Donat , En rgle gnrale il est toujours intressant de disperser le rappatriement des donnes. Quand on un formulaire onglet, il vaut mieux rafraichir les donnes sur chaque onglet plutot qu'un gros chargement au dbut pour chaque.

Transmettre le nom du formulaire appelant l'ouverture d'un formulaire.


Auteurs : Team Access , Ouvrir un formulaire grce la ligne de code :
DoCmd.OpenForm nomformulaire, , , , , , Me.Name

Dans le formulaire que vous venez d'ouvrir, vous pouvez alors suivant le formulaire appelant (dont le nom est contenu dans OpenArgs) excuter un code diffrent :
Select Case OpenArgs Case "frmX" 'ici ce que vous voulez : MsgBbox "frmX=" & openArgs Case "frmY" : 'ici ce que vous voulez : MsgBox "frmY=" & openArgs End Select

Complment au tutoriel de recherche multicritre de cafeine : Enregistrer dans une requte le rsultat de la recherche multicritres
Auteurs : FRED.G , Vous pouvez vous servir du rsultat renvoy par votre procdure de recherche multicritre pour crer ou modifier une requtre enregistre dans votre base de donne. La premire tape consiste rcuprer l'instruction SQL dfinie par la procdure Sub RefreshQuery(). Vous avez plusieurs possibilits pour cela. La premire qui vient l'esprit est de rendre la variable String SQL disponible aux autres procdures du module du formulaire de recherche. Au lieu de faire :
Private Sub RefreshQuery() Dim SQL As String

- 180 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim SQLWhere As String ... End Sub

Faire :
Dim SQL As String Private Sub RefreshQuery() Dim SQLWhere As String ... End Sub

Une autre solution pour viter d'tendre la porte de la variable SQL est de rcuprer directement l'instruction SQL dans la proprit RowSource de la la liste mise jour par RefreshQuery(). Dans ce cas inutile de modifier le code du tutoriel. La seconde tape consiste utiliser du code DAO pour crer ou mettre jour la requte grce l'objet DAO.Querydef. Exemple pour deux boutons de commande placer dans le formulaire de recherche :
Private Sub btnCrerRequte_Click() '**************************** 'Faculatif si la variable SQL mise jour dans Sub RefreshQuery est de niveau module : 'Dim SQL As String 'SQL = Me!lstResults.RowSource '**************************** Dim NomQDF as String 'Faites ici tous vos tests pour vous assurer d'un nom valide pour la requte crer : NomQDF = InputBox("Entrer un nom pour la recherche en cours:") if NomQDF ="" then msgbox "Vous n'avez pas indiqu de nom valide pour la requte." exit sub end if 'Cration de la requte CurrentDb.CreateQueryDef NomQDF, SQL End Sub Private Sub btnModifierRequte_Click() '**************************** 'Faculatif si la variable SQL mise jour dans Sub RefreshQuery est de niveau module : 'Dim SQL As String 'SQL = Me!lstResults.RowSource '**************************** 'Modification de la requte CurrentDb.QueryDefs("NomRequte").SQL = SQL End Sub

- 181 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Les codes sont donns titre d'exemple sans gestion des erreurs.

Comment crer dynamiquement des contrles de type rectangle sur le formulaire en cours ?
Auteurs : bigquick , Demco , Ceci ne peut se faire sur un sous formulaire ouvert, il faut donc passer par ces tapes : Etapes refermer le sous formulaire l'ouvrir en mode cration le modifier le fermer le rouvrir en mode normal Ce qui donne le code suivant :

Dim rct As Rectangle Me.ssForm.SourceObject = "" 'on ferme le sous-formulaire DoCmd.OpenForm "Formulaire", acDesign, , , , acHidden 'on le rouvre en mode cration et cach Set rct = CreateControl("Formulaire", acRectangle, , "", "", 200, 200, 3000, 9400) 'on trace le triangle rct.BackColor = vbBlack DoCmd.Close acForm, "Formulaire" 'on ferme le formulaire Me.ssForm.SourceObject = "Formulaire" 'on rouvre le sous-formulaire dans le formulaire principal Set rct = Nothing 'on libre la mmoire

O "ssForm" est le nom du contrle de sous formulaire du formulaire principal et "Formulaire" le nom du sous formulaire dans lequel nous crons le rectangle. lien : Est-il possible de crer dynamiquement des contrles ?

Comment faire repartir un gif qui a cess de s'animer ?


Auteurs : shwin , Parfois lorsque l'on cache un formulaire, lorsque celui-ci rapparat les gifs le composants restent inanims. La solution est de redfinir la proprit filename du gif pour le faire repartir :

gif.filename = gif.filename

Comment ne pas ouvrir un formulaire si celui est vide ?


Auteurs : Faw , Trini , Imaginons que nous appelions un formulaire sur click d'un bouton d'un autre formulaire. Le formulaire appel est bas sur une requte ou une table. Voici le code mettre sur le bouton qui demande l'ouverture du formulaire (vous pouvez le mettre sur autre chose qu'un bouton bien videmment) :

Private Sub btnOuvrir_Click()

- 182 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On Error GoTo Err_btnOuvrir_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "NomFormulaire" 'On ne veut que certains enregistrements dans le formulaire ouvrir 'On ne veut donc que les enregistrements dont le champ ID est gal ' la valeur du contrle MonControleFiltre du formulaire stLinkCriteria = "[ID]=" & Me![MonControleFiltre] 'On ouvre le formulaire en passant le filtre en paramtre DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_btnOuvrir_Click: Exit Sub Err_btnOuvrir_Click: If Err = 2501 Then Resume Exit_btnOuvrir_Click MsgBox Err.Description Resume Exit_btnOuvrir_Click End Sub

Ensuite voici le code mettre dans le formulaire que l'on veut ouvrir :

Private Sub Form_Open(Cancel As Integer) If Me.RecordsetClone.RecordCount = 0 Then MsgBox "Le formulaire ne s'ouvre pas car il est vide.", vbInformation Cancel = True 'Annule l'ouverture End If End Sub

Le code que nous mettons sur l'vnement click du formulaire appelant a pour seul but d'intercepter un erreur gnre par le code de fermeture du formulaire.

Paramtre non reconnu pour un graphique bas sur une requte paramtre
Auteurs : Arkham46 , Quand vous tentez d'associer une requte contenant un paramtre un graphique, vous obtenez l'erreur : "Le moteur de base de donnes Microsoft ne reconnat pas '[Forms]![NomDuFormulaire]![NomDuChamp]' en tant que nom de champ ou expression correcte"... Pour y remdier, il faut dfinir le paramtre dans la requte : - en mode modification de la requte, dans le menu : Requte --> Paramtres : Mettre le nom complet du paramtre :[Forms]![NomDuFormulaire]![NomDuChamp] et son type de donne - ce qui donne en SQL (pour un entier par exemple) :

PARAMETERS [Forms]![NomDuFormulaire]![NomDuChamp] Short;

lien :

Comment dfinir un type pour les paramtres d'une requte ?

- 183 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Types des champs

Commment compter le nombre d'enregistrement d'un sous formulaire ?


Auteurs : Cafeine , Ce code vous permet de rcuprer le nombre d'enregistrement d'un sous formulaire :
Forms("Mon Form Principal").Controls("Mon Sous-formulaire").Form.RecordsetClone.RecordCount

Comment savoir si les contrles ont t remplis dans un Formulaire ?


Auteurs : Philippe JOCHMANS , Ce code vous permet de savoir si toutes les combobox ont t renseignes, et cela vous place dans le premier combobox non renseign :
Sub TestCtrl() Dim Ctrl As control For Each Ctrl In Me.Controls If TypeOf Ctrl Is ComboBox Then If Ctrl.Value = "" Or IsNull(Ctrl.Value) Then MsgBox "Toutes les listes doivent avoir une information", vbOKOnly + vbExclamation, "Slection" Ctrl.SetFocus Exit Sub End If End If Next Ctrl End Sub

Pour les texbox, il vous faut changer la ligne :


If TypeOf Ctrl Is ComboBox Then

par
If TypeOf Ctrl Is TextBox Then

- 184 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Etats Comment exporter un tat en format Word ?


Auteurs : Team Access ,
DoCmd.OutputTo acOutputReport, "Etat Utilisateur", acFormatRTF, "c:\mes documents\tmp.doc", True

Comment annuler l'ouverture d'un tat ?


Auteurs : Team Access , Lorsque un tat ne contient pas de donnes, son vnement Sur Aucune Donnes (NoData) est lev. Pour annuler l'ouverture de l'tat, il suffit de fixer le paramtre Cancel de la procdure Report_NoData True. Exemple :
Private Sub Report_NoData(Cancel As Integer) MsgBox "Impossible d'ouvrir l'tat : aucune donnes afficher",VbCritical Cancel = True End Sub

Comment exporter un tat en gardant la mise en page ?


Auteurs : Team Access , Solution 1 : il faut acqurir le logiciel Adobe Acrobat Writer, il suffit alors d'imprimer sur PDF writer. Solution 2 : L'utilitaire Snapshot Viewer exporte votre tat sur un fichier d'extension SNP. Ce fichier peut alors tre envoy comme attachement un email. Tout ce dont le rceptionnaire a besoin, pour lire cet attachement, c'est l'utilitaire prcit, sans qu'il n'ait possder Access. Snapshot est tlchargeable sur le site de microsoft. Tlcharger SnapShot pour Access 97/2000/2002 : http://www.microsoft.com/downloads/details.aspx? familyid=b73df33f-6d74-423d-8274-8b7e6313edfb&displaylang=fr

Dans un tat, comment dans le bas de page afficher la somme d'un champ du dtail ?
Auteurs : Drosera , Pour obtenir une somme en bas de page, il suffit de crer un contrle invisible dans la section dtail qui contiendra la somme, puis y faire rfrence dans une zone de texte du pied de page.

Comment faire du formatage conditionnel dans un tat ?


Auteurs : Team Access , Il faut utiliser l'vnement Format de la zone concerne
Private Sub ZoneDetail_Format (Cancel As Integer, FormatCount As Integer) If Me![ nomControle] < "0" Then Me![SourcEcr].ForeColor = 16777215 Else Me ![SourcEcr].ForeColor = 0 - 185 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If End Sub

Comment afficher un tat en plein cran et avec un zoom personnalis ?


Auteurs : Team Access ,
DoCmd.OpenReport "Etat Utilisateur", AcView.acViewPreview DoCmd.RunCommand acCmdZoom150 DoCmd.Maximize

Simuler le choix ajuster dans l'affichage d'un tat.


Auteurs : Drosera , Cela permet d'atteindre la dernire page.
Dim rpt As Report DoCmd.OpenReport "NomEtat", acViewPreview Set rpt = Reports("NomEtat") rpt.ZoomControl = 0 SendKeys "{end}" '<== option pour atteindre la dernire page Set rpt = Nothing

Comment insrer un n de ligne dans un tat ?


Auteurs : Papy Turbo , Procdure suivre : - insrer un contrle TextBox Dans l'onglet Donnes de la bote de proprits, - proprit Source contrle, mettre la valeur "=1"

- 186 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

- dans la proprit Cumul : "Par groupe"

Il y a une erreur lorsque je lance mon Etat : "Alias de sortie 'Expr1' dupliqu"
Auteurs : Drosera , Cela veut dire que votre requte source essaie de renvoyer un jeu d'enregistrements avec deux colonnes ayant le mme nom, et ce n'est pas possible.

Problme d'affichage des chiffres dans les tats. Les chiffres ne sont pas visible l'ouverture, ou l'impression.
Auteurs : Maxence HUBICHE , Ceci concerne Access 2000. Il s'agit d'un aspect connu et recenc par Microsoft. Une cl du registre (1025) a pour valeur 'On'. La solution consiste la mettre Off dans l'diteur de registre (Dmarrer/Excuter, taper regedit, puis Cliquer OK) Voici son emplacement : HKEY_CURRENT_USERS\Software\Microsoft\Office\9.0\Common\LanguageResources\1025. Pour toute information supplmentaire ce sujet, il est possible de se rfrer la KB de microsoft cette adresse : http://www.microsoft.com/intlkb/france/articles/F19/5/16.asp

Compter le nombre d'enregistrements dans chaque groupe d'un tat


Auteurs : yoyo.zibou , _ Ouvrez l'tat en mode Cration. _ Ajoutez une zone de texte calcule dans la section Dtail. _ Pour afficher la feuille des proprits, assurez-vous que la zone de texte est slectionne, puis cliquez sur Proprits dans la barre d'outils. _ Dfinissez les proprits suivantes : Proprit Paramtrage Nom (Name) CpteEnregistrement SourceContrle (ControlSource) =1 Cumul (RunningSum) Par groupe Visible Non _ Ajoutez une zone de texte calcule au pied de groupe. _ Pour afficher la feuille des proprits, assurez-vous que la zone de texte est slectionne, puis cliquez sur Proprits dans la barre d'outils. _ Dfinissez la proprit

- 187 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

SourceContrle ( ControlSource) sur le nom du contrle dans la section Dtail qui cumule les enregistrements. Par exemple, =[Compteur].

Comment masquer (ou rduire / ajuster la hauteur d') une section en fonction des donnes ?
Auteurs : Lucifer , Il suffit de jouer sur les proprits autorductible du contrle et de la section. Ceci est valable galement pour les enttes et pieds de section.

Dans un tat Access, on trouve une boite de dialogue "Trier / Regrouper", cette fonction est-elle programmable ?
Auteurs : mouuaahh , Drosera , L'quivalent de la boite de dialogue Trier/Regrouper doit se trouver dans la mthode CreateGroupLevel de l'objet Application, mais celle-ci n'est disponible que pour un tat en mode cration. Elle est notamment utile pour crer un assistant de cration d'tat. CreateGroupLevel doit tre utilis en mode cration, mais si le niveau de regroupement est dj cr, on peut alors utiliser la proprit GroupLevel de l'tat. Cette proprit est utilisable dans tous les modes et s'accompagne d'autres proprits utiles comme SortOrder, GroupOn, GroupInterval, KeepTogether et ControlSource. Sur l'vnement Open de l'tat, vous pouvez changer ses proprits selon vos besoins. Exemple :

Me.GroupLevel(2).ControlSource = "LeChampATrier" Me.GroupLevel(2).SortOrder = False

Comment empcher la perte des marges d'un tat ?


Auteurs : loufab , En effet, il arrive frquemment, lorsque l'on cre des tats, d'tre oblig de modifier la mise en page (marges ou orientation) pour des questions de place ou de positionnement (impression d'tiquettes par exemple)... Et, un beau jour, Access dcide de remettre les paramtres par dfaut. Un moyen d'viter ce problme (depuis Access 2000): Allez dans le menu Outils/Options Dans l'onglet Gnral, dcochez la case Suivi informations correction automatique.

Comment imprimer un tat situ sur une base distante ?


Auteurs : Cafeine , En utilisant l'automation Access. les arguments de la fonctions sont :
- 188 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

. chemin de la base distante . nom de l'tat . page de dpart . page de fin

Function PrintRemoteReport(ByVal strMDB As String, _ ByVal strReport As String, _ Optional ByVal iStart As Integer = 1, _ Optional ByVal iEnd As Integer = 9999) As Boolean Dim objAccess As Access.Application Dim lngRet As Long ' gestion d'erreurs On Error GoTo PrintRemoteReport_Err If Len(Dir(strMDB)) > 0 Then ' creation de l'objet Access Set objAccess = New Access.Application With objAccess 'ouverture de la base .OpenCurrentDatabase strMDB 'les commandes sont les memes que pour la base en cours ' hormis le "objAccess." ' ouverture de l'tat .DoCmd.OpenReport strReport, acViewNormal ' impression des pages .DoCmd.PrintOut acPages, iStart, iEnd, acHigh ' fermeture de l'tat sans sauvegarde .DoCmd.Close acReport, strReport, acSaveNo End With End If PrintRemoteReport_Exit: ' libration des objets On Error Resume Next objAccess.Quit Set objAccess = Nothing Exit Function PrintRemoteReport_Err: PrintRemoteReport = False Select Case Err.Number Case 7866: 'mdb ouverte en mode exclusif MsgBox "La base demande " & vbCrLf & strMDB & _ vbCrLf & " est actuellement ouverte en mode exclusif. " & vbCrLf _ & vbCrLf & "Merci de la rouvrir en accs partag.", _ vbExclamation + vbOKOnly, "Impossible d'ouvrir la base" Case 2103: 'l'tat n'existe pas MsgBox "L'tat '" & strReport & _ "' n'existe pas dans la base " _ & vbCrLf & strMDB, _ vbExclamation + vbOKOnly, "Etat non trouv" Case 7952: 'l"utilisateur a ferm le fichier mdb PrintRemoteReport = True Case Else: MsgBox "Error#: " & Err.Number & vbCrLf & Err.Description, _ vbCritical + vbOKOnly, "Runtime error" End Select Resume PrintRemoteReport_Exit End Function

Exemples d'utilisation :
- 189 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

PrintRemoteReport "d:\temp\db.mdb", "MonEtat", 1, 10

Comment choisir le mode d'affichage de mon tat lorsque je l'appelle depuis un formulaire ?
Auteurs : Papy Turbo ,
DocmdOpenReport, ReportName, acViewPreview DoCmd.RunCommand acCmdPreviewOnePage

Le code ci-dessus affichera les tats en mode paysage ( l'italienne). Si vous voulez les afficher sur 2 pages les tats en mode portrait ( la franaise) remplacez la seconde ligne par :

DoCmd.RunCommand acCmdPreviewTwoPages

toi d'explorer les autres options de RunCommand acCmdPreview afin de dcouvrir d'autres possibilits qu'offre Access.

Comment ne pas perdre la mise en page d'un tat ?


Auteurs : =JBO= , Il faut dfinir une mise en page spcifique pour un tat via le menu [Fichier | Mise en page...] sans oublier, bien sr, d'enregistrer l'tat aprs la mise en page. Ainsi cette mise en page sera conserve et applique, quel que soit le poste utilisateur. Il xiste un dfaut majeur d'Access 2000 qui perd les informations de mise en page. Pour y remdier il faut: >> mettre jour Access/Office avec le package SR-1a (et au passage installer le SP3). http://office.microsoft.com/fr-fr/of...226001036.aspx >> dfaut, dans la bote de dialogue des Options (obtenues via [Outils[Options...]), slectionner l'onglet [Gnral] et dsactiver les commandes de la section [Correction automatique de nom..]. http://support.microsoft.com/default...b;en-us;240826 >> des utilisateurs indiquent que les infos de mise en page sont perdues si une imprimante spcifique est dsigne et qu'elle n'est pas rfrence sur le poste client. Donc prfrer l'imprimante par dfaut.

Comment crer un graphique paramtrable depuis un formulaire vers un tat ?


Auteurs : Cafeine , Il suffit depuis votre formulaire d'attribuer le SQL une requte et d'attribuer cette requte comme source de donnes l'tat ainsi ne reste plus qu' changer le SQL la vole et l'tat s'en trouvera automatiquement modifi. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

- 190 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

CurrentDb.QueryDefs("MaRequeteGraph").SQL = strSQL

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

Comment afficher un tat en plein cran avec un zoom ajust ?


Auteurs : OtObOx , FreeAccess , Ces codes permettent d'ouvrir un tat avec le zoom ajust la taille de l'cran au lieu du zoom 100% par dfaut. Code OtObOx : Code sur le principe de la Source de Tofalu ( avec CAPSLOCK)) dans un module, mettre le code de Tofalu:
Public Declare Sub keybd Lib "user32" Alias "keybd_event" _ (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _ ByVal dwExtraInfo As Long)

Simuler l'appui de n'importe quelle touche du clavier (Exemple

Public Sub appui_touche(T as long) 'appuie sur la touche keybd T, 0, 0, 0 'relache la touche keybd T, 0, 2, 0 End Sub

Ensuite dans le module de l'Etat mettre sur l'vnement "sur ouverture" :


Private Sub Report_Open(Cancel As Integer) 'Agrandi la fenetre au maximum DoCmd.Maximize 'Ajuste l'affichage de la page la taille de l'cran appui_touche (90) End Sub

Code de FreeAccess : partir d'un formulaire, mettre le code suivant sur l'vnement "sur click" d'un bouton" :
Private Sub Commande0_Click() 'Ouvrir Etat en mode Ajust DoCmd.OpenReport "E_ESSAI", acViewPreview DoCmd.Maximize DoCmd.RunCommand acCmdFitToWindow End Sub

l'tat doit tre "actif" AVANT que les commandes Maximize et acCmdFitToWindow ne soient excutes.

lien : Simuler l'appui de n'importe quelle touche du clavier (Exemple avec CAPSLOCK) par Christophe WARIN lien : Comment afficher un tat en plein cran et avec un zoom personnalis ?

- 191 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Etats > Impressions Comment imprimer un tat avec une couleur diffrente pour les lignes paires/impaires ?
Auteurs : Papy Turbo , - voir Comment insrer un n de ligne dans un tat (voir lien en bas) pour ajouter un contrle [NoLigne], - vous pouvez le masquer si vous ne l'utilisez pas (onglet Format, Visible = Non), - dans l'vnement Sur impression de la section Dtail (=Section(0)), copier :
Private Sub Dtail_Print(Cancel As Integer, PrintCount As Integer) 'utiliser Dtail_Print, PAS Dtail_Format qui est appel PLUSIEURS fois If ([NoLigne] Mod 2) = 0 Then Section(0).BackColor = vbWhite Else Section(0).BackColor = 13434879 'jaune ple : joli et discret End If End Sub

Bien entendu, vous pouvez remplacer le "Mod 2" par "Mod 3" pour changer de couleur 1 ligne sur 3 seulement? Pour trouver d'autres couleurs, voir Comment dterminer un code couleur quelconque dans Access (lien ci-dessous). lien : Comment insrer un n de ligne dans un tat ? lien : Comment dterminer un code couleur quelconque dans Access ?

Comment imprimer, visualiser, modifier un tat ralis sous Access depuis VB ?


Auteurs : khany , Ce code permet d'utiliser les tats existants sous Access. Cochez les rfrences Access dans le projet Visual Basic et copiez le code appropri. Ouverture de la base de donnes Access :
Dim MaDbMat As String Dim MesEtats As Access.Application MaDbMat = CurrentProject.Path & "\MaBase.mdb" Set MesEtats = New Access.Application MesEtats.OpenCurrentDatabase MaDbMat, False

Pour imprimer un tat sans le visualiser :


MesEtats.DoCmd.OpenReport "NomdeMonEtat", acViewNormal

Pour prvisualiser un tat en mode plein cran :


MesEtats.Visible = True MesEtats.DoCmd.OpenReport "NomdeMonEtat", acViewPreview MesEtats.DoCmd.Maximize

Pour le mode Design en plein cran :


- 192 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MesEtats.Visible = True Mesetats.DoCmd.OpenReport "NomdeMonEtat", acViewDesign MesEtats.DoCmd.Maximize

lien : FAQ VB

Access 2000 n'imprime pas les chiffres sur Windows 2000 ?


Auteurs : Team Access , Solution : http://support.microsoft.com/default.aspx?scid=kb;fr;469516

Imprimer un tat sur une imprimante prcise, non celle par dfaut
Auteurs : tee_grandbois , Allez en mode cration de votre tat et faites Fichier/Mise en Page puis dans l'onglet Page cliquer sur Utiliser une imprimante spcifique et cliquez sur le bouton Imprimantes pour pouvoir la choisir et puis OK aprs votre choix.

Comment imprimer un tat en plusieurs exemplaires ?


Auteurs : tee_grandbois , Dans un module, crire la fonction suivante :
Public sub fgImprimeCopiesEtat(stEtat As String, itCopies As Integer) ' stEtat : nom de l'tat ' itCopies : nombre de copies DoCmd.OpenReport stEtat, acViewPreview DoCmd.PrintOut acPages, , , , itCopies DoCmd.Close acReport, stEtat End sub

Utilisation : Sur un bouton imprimer d'un formulaire :


fgImprimeCopiesEtat("MonEtat",3)

- 193 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ceci imprime trois exemplaires du mme tat.

Comment faire pour qu'un nom de groupe dans un tat s'crive aussi sur la/les page(s) suivante(s) ?
Auteurs : FRED.G , Il faut utiliser la proprit Rpter section de l'en-tte de groupe concern.

Comment empcher l'impression d'une page blanche numrote avant que mon travail ne sorte ?
Auteurs : argyronet , Sur une Jet d'encre, il faut prvoir une marge de bas d'au moins 1.5 cm sans quoi une page blanche survient. Vous ne rencontrerez pas ce problme avec une laser. Donc vous de rduire les contrles de votre tat de manire ce qu'il n'y ait plus qu'une page et d'accorder vos marges en consquence. Si vous voulez connatre la tolrance maxi de vos marges allez dans Word, prenez un document vierge, mettez toutes les marges zro et validez. L, Word va vous proposer de corriger, prenez ces valeurs sur un bout de papier et tu les appliques ton tat. Il est aussi envisageable que vous ayez un saut de page invisible ou une proprit de section qui possde un saut de page. lien : Comment viter les pages blanche lorsque j'imprime un tat ?

Comment imprimer un nombre voulu d'enregistrements dans un Etat ?


Auteurs : loufab , 1) crer un compteur dans la section dtail Contrle texte Nom : compteur Source contrle : =1 Cumul : en continue 2) crer un regroupement sur l'enregistrement Menu Affichage/Trier regrouper insrer le champ clef unique Entte de groupe : non Pied de groupe : oui 3) dans le pied de groupe rduit au maximum de sa hauteur, insrer un saut de page. Cliquer sur la zone pied de groupe et dans la proprit Au formatage ouvrir une Procdure tapez-y le code suivant :

Private Sub PiedGroupe0_Format(Cancel As Integer, FormatCount As Integer) If Me.Compteur Mod 2 = 0 Then Me.PrintSection = True Else Me.PrintSection = False End If - 194 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

Chaque fois que le compteur aura un valeur paire (donc multiple de 2) le reste sera 0 et on imprime la section donc le saut de page.

Comment crer/consulter un tat sans avoir d'imprimante ?


Auteurs : smicky77 , 1 2 3 4 5 6 Allez dans paramtres / imprimantes ajoutez une nouvelle imprimante prenez n'importe laquelle donnez le port LPT1 dclarez par dfaut ou pas ne testez pas de page d'impression

Vous devez maintenant pouvoir travailler les tats sans aucun problme.

Comment viter les pages blanche lorsque j'imprime un tat ?


Auteurs : armagued , Ce phnomne s'observe lorsque la dimension de l'tat ne correspond pas celle du papier. vrifier : taille et orientation du papier taille des marges

Comment imprimer un tat page par page ?


Auteurs : Maxence HUBICHE , Ceci par exemple peut servir lorsque vous imprimez un document en pdf, cel dcoupe votre document page par page.

Dim i As Long DoCmd.OpenReport "Commandes", acViewPreview For i = 1 To Reports("Commandes").Pages DoCmd.PrintOut acPages, i, i Next

Comment viter qu'access n'imprime l'entte de groupe en bas de page


Auteurs : Papy Turbo , En utilisant la bote de dialogue du menu Affichage --> Trier et regrouper, dans les proprits de cet entte de groupe, mettre la proprit Section inscable = Avec premier dtail

- 195 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Etats > Trucs et Astuces Comment Imprimer quatre tats en choisissant l'imprimante une fois
Auteurs : Team Access , Mettre les 4 tats en tant que sous-etat d'un tat vierge, indpendant.

Comment multiplier un enregistrement par un nombre donn?


Auteurs : Cafeine , Vous voulez par exemple imprimer x fois un enregistrement (pour une tiquette ou autre). Crez une table (tblCount) avec un seul champ ID (numrique) et remplissez 1, 2, 3, ..... Nombre Maxi Si votre requte est du genre :
Select CLIENTS.NOM From CLIENTS Where CLIENTS.NOM="TOTO";

Cette requte ne donne qu'un seul rsultat. Il faut alors la modifier pour utiliser la cardinalit :
Select CLIENTS.NOM From CLIENTS, TBLCOUNT Where CLIENTS.NOM="TOTO" And TblCount.Id <= 5;

et j'en ai alors 5 identiques.

Optimiser la vitesse d'affichage d'un tat


Auteurs : Maxence HUBICHE , Si vous voulez favoriser le rendement, crez une requte. Par exemple : qryxTonEtat. Faites un tat reposant sur cette requte. Ensuite, en code, vous n'avez plus qu' modifier le SQL de la requte. Ainsi, cel vitera de crer des requetes la vole. Vous aurez un tat facilement modifiable puisqu'il aura une source. Vous pourrez profiter pleinement de la technologie Rushmoore de recherche sur les index, ce qui n'est pas le cas pour le SQL dans le VBA. Et donc, les performances seront meilleures.
Dim qdf as QueryDef set qdf=currentdb.querydefs("qryxTonEtat") qdf.SQL= "LeSQLquetuveux"

Comment insrer des lignes verticales ou crer un cadre pour l'ensemble de la page de mon tat (sans dpendre de taille de la section dtail) ?
Auteurs : jacma ,
Private Sub Report_Page()

- 196 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Dessiner un bord de page autour de l'tat. Me.Line (0, 0)-(Me.ScaleWidth - 50, Me.ScaleHeight - 50), , B End Sub

lien :

Complment

Dans mon tat, Report_Activate ne se dclenche pas, donc aucune donne de s'affiche
Auteurs : Team Access , La proprit Fen indpendante doit tre Vrai, passez l Faux. Ceci doit rsoudre le problme.

Comment choisir l'imprimante avec laquelle on va imprimer ?


Auteurs : tee_grandbois , Il faut passer par une API qui liste les imprimantes existantes, vous les collez dans une table temporaire et vous affichez tout cela dans un formulaire. L'utilisateur choisit l'imprimante et vous n'avez plus qu' imprimer sur la ou les imprimantes slectionnes. Structure de la table des imprimantes tbPrtList no_Prt, Entier tx_PrtNom, Texte 255 tx_PrtPort, Texte 255 tx_PrtDriver, Texte 255 st_Selection, Boolen

SECTION MODULES DE FONCTIONNEMENT Fonction permettant de charger les imprimantes dans la table
Option Compare Database Option Explicit Function fChargementImprimantes() ' Fonction permettant de remplir une fois la table des imprimantes ' A lancer si nouvelle imprimante cre ou nouveau driver install ' Cocher la case st_selection pour slectionner les imprimantes Dim i As Integer Dim itNbPrt As Integer Dim rs As Recordset Static atagDevices() As aht_tagDeviceRec On Error GoTo GestErr Set rs = CurrentDb().OpenRecordset("tbPrtList", dbOpenDynaset) ' Suppression des enregistrements de la table DoCmd.RunSQL "DELETE * FROM tbPrtList" ' Dtermine le nombre d'imprimantes en cours sur le poste itNbPrt = ahtGetPrinterList(atagDevices()) ' Ajoute les imprimantes dans la table pour les impressions For i = 1 To itNbPrt rs.AddNew

- 197 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

rs![No_Prt].Value = i rs![tx_Prtnom].Value = atagDevices(i).drDeviceName rs![tx_Prtport].Value = atagDevices(i).drPort rs![tx_prtdriver].Value = atagDevices(i).drDriverName rs.Update Next i FinLoad: ' Fermeture des objets rs.Close Set rs = Nothing Exit Function ' Gestion des erreurs GestErr: MsgBox "Erreur dans fChargementImprimantes : " & Error & " (" & Err & ")" Resume FinLoad End Function

Fonction permettant d'imprimer l'tat


Function fMultiImpression(stNomFichier As String) ' Impression d'tats sur une ou plusieurs imprimantes ' Pr-requis : L'tat doit tre en imprimante par dfaut ' Paramtre : nom de l'tat On Error GoTo GestErr If stNomFichier = "" Then Exit Function Dim Dim Dim Dim Dim rs As Recordset dr As aht_tagDeviceRec stDvDefault As String stDrDefault As String stPrDefault As String

' Unit de l'imprimante par dfaut ' Driver de l'imprimante par dfaut ' Port de l'imprimante par dfaut

'Stockage des paramtres de l'imprimante par dfaut actuel If ahtGetDefaultPrinter(dr) Then stDvDefault = dr.drDeviceName stDrDefault = dr.drDriverName stPrDefault = dr.drPort End If Set rs = CurrentDb().OpenRecordset("SELECT * FROM tbPrtList WHERE st_selection = true") If Not rs.EOF And Not rs.BOF Then While Not rs.EOF ' Chargement des paramtres de l'imprimante slectionne dr.drDeviceName = rs.Fields("[tx_PrtNom]") dr.drDriverName = rs.Fields("[tx_PrtDriver]") dr.drPort = rs.Fields("[tx_PrtPort]") ' L'imprimante devient imprimante par dfaut ahtSetDefaultPrinter dr ' Impression DoCmd.OpenReport stNomFichier, , acViewNormal ' Fermeture fichier DoCmd.Close acReport, stNomFichier rs.MoveNext

- 198 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Wend End If RestoreDftPrt: ' fermeture des objets rs.Close Set rs = Nothing ' Restauration de l'imprimante par dfaut dr.drDeviceName = stDvDefault dr.drDriverName = stDrDefault dr.drPort = stPrDefault ahtSetDefaultPrinter dr Exit Function ' Gestion des erreurs GestErr: MsgBox "Erreur dans fMultiImpression : " & Error & " (" & Err & ")" Resume RestoreDftPrt End Function

SECTION API :
Const MAX_SIZE = 255 Const MAX_SECTION = 2048 Declare Function aht_apiGetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileInt" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal intDefault As Integer, _ ByVal strFilename As String) As Integer Declare Function aht_apiGetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal strDefault As String, _ ByVal strReturned As String, ByVal lngSize As Long, ByVal strFilename As String) As Long Declare Function aht_apiGetProfileString Lib "kernel32" Alias "GetProfileStringA" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal strDefault As String, _ ByVal strReturned As String, ByVal lngSize As Long) As Long Declare Function aht_apiGetProfileInt Lib "kernel32" Alias "GetProfileInt" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal intDefault As Integer) As Integer Declare Function aht_apiGetProfileSection Lib "kernel32" Alias "GetProfileSectionA" _ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long Declare Function aht_apiGetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" _ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, _ ByVal lpFileName As String) As Long Declare Function aht_apiWritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal strValue As String, _ ByVal strFilename As String) As Integer Declare Function aht_apiWriteProfileString Lib "kernel32" Alias "WriteProfileStringA" _ (ByVal strAppName As String, ByVal strKeyName As String, ByVal strValue As String) As Integer

Type aht_tagDeviceRec drDeviceName As String drDriverName As String drPort As String End Type Type aht_tagDEVMODE dmDeviceName(1 To 32) As Byte dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer

- 199 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName(1 To 32) As Byte dmLogPixels As Integer dmBitsPerPixel As Long dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long dmICMMethod As Long dmICMIntent As Long dmMediaType As Long dmDitherType As Long dmICCManufacturer As Long dmICCModel As Long dmDriverExtraBytes(1 To 1024) As Byte End Type Type aht_tagDEVMODEStr DMStr As String * 1024 End Type Type aht_tagDEVNAMES dnDriverOffset As Integer dnDeviceOffset As Integer dnOutputOffset As Integer dnDefault As Integer End Type Type aht_tagDEVNAMEStr DNStr As String * 4 End Type Type aht_tagMIP xLeftMargin As Long yTopMargin As Long xRightMargin As Long yBotMargin As Long fDataOnly As Long xFormSize As Long yFormSize As Long fDefaultSize As Long cxColumns As Long xFormSpacing As Long yFormSpacing As Long radItemOrder As Long fFastPrinting As Long fDataSheet As Long End Type Type aht_tagMIPSTR MIPStr As String * 28 End Type

- 200 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Function ahtFillPrinterList(ctl As Control, varID As Variant, varRow As Variant, varCol As Variant, varCode As Variant) Static atagDevices() As aht_tagDeviceRec Static intCount As Integer Dim varRetval As Variant Select Case varCode Case acLBInitialize intCount = ahtGetPrinterList(atagDevices()) varRetval = True Case acLBOpen varRetval = Timer Case acLBGetRowCount varRetval = intCount Case acLBGetColumnCount varRetval = 1 Case acLBGetValue varRetval = atagDevices(varRow + 1).drDeviceName & " sur " & _ atagDevices(varRow + 1).drPort Case acLBEnd Erase atagDevices End Select ahtFillPrinterList = varRetval End Function Function ahtGetPrinterList(atagDevices() As aht_tagDeviceRec) As Integer Dim astrPrinters() As String Dim intCount As Integer Dim varPrinters As Variant varPrinters = ahtGetProfileSection("DEVICES") If Len(varPrinters & "") = 0 Then ahtGetPrinterList = 0 Else intCount = GetDevices(varPrinters, atagDevices()) End If ahtGetPrinterList = intCount End Function Private Function GetDevices(ByVal strPrinters As String, atagDevices() As aht_tagDeviceRec) As Integer Dim intI As Integer Dim strBuffer As String Dim intCount As Integer For intI = 1 To Len(strPrinters) If Mid$(strPrinters, intI, 1) = Chr$(0) Then intCount = intCount + 1 End If Next intI ReDim atagDevices(1 To intCount) For intI = 1 To intCount strBuffer = ahtGetToken(strPrinters, Chr$(0), intI) atagDevices(intI).drDeviceName = ahtGetToken(strBuffer, "=", 1) strBuffer = ahtGetToken(strBuffer, "=", 2) atagDevices(intI).drDriverName = ahtGetToken(strBuffer, ",", 1) atagDevices(intI).drPort = ahtGetToken(strBuffer, ",", 2)

- 201 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Next intI GetDevices = intCount End Function

Function ahtGetDefaultPrinter(dr As aht_tagDeviceRec) As Boolean Dim strBuffer As String strBuffer = ahtGetINIString("Windows", "Device") If Len(strBuffer) > 0 Then With dr .drDeviceName = ahtGetToken(strBuffer, ",", 1) .drDriverName = ahtGetToken(strBuffer, ",", 2) .drPort = ahtGetToken(strBuffer, ",", 3) End With ahtGetDefaultPrinter = True Else ahtGetDefaultPrinter = False End If End Function Function ahtSetDefaultPrinter(dr As aht_tagDeviceRec) As Boolean Dim strBuffer As String strBuffer = dr.drDeviceName & "," strBuffer = strBuffer & dr.drDriverName & "," strBuffer = strBuffer & dr.drPort ahtSetDefaultPrinter = (aht_apiWriteProfileString("Windows", _ "Device", strBuffer) <> 0) End Function Function ahtGetToken(ByVal strValue As String, ByVal strDelimiter As String, ByVal intPiece As Integer) As Variant Dim intPos As Integer Dim intLastPos As Integer Dim intNewPos As Integer On Error GoTo ahtGetTokenExit strDelimiter = Left(strDelimiter, 1) If (InStr(strValue, strDelimiter) = 0) Or (intPiece <= 0) Then ahtGetToken = strValue Else intPos = 0 intLastPos = 0 Do While intPiece > 0 intLastPos = intPos intNewPos = InStr(intPos + 1, strValue, strDelimiter) If intNewPos > 0 Then intPos = intNewPos intPiece = intPiece - 1 Else intPos = Len(strValue) + 1 Exit Do End If Loop If intPiece > 1 Then ahtGetToken = Null Else ahtGetToken = Mid$(strValue, intLastPos + 1, intPos - intLastPos - 1) End If End If

- 202 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ahtGetTokenExit: Exit Function ahtGetTokenErr: MsgBox "Error in ahtGetToken: " & Error & " (" & Err & ")" Resume ahtGetTokenExit End Function Function ahtGetPrivateIniString(ByVal strGroup As String, ByVal strItem As String, ByVal strFile As String) As Variant

Dim intChars As Integer Dim strBuffer As String strBuffer = String(MAX_SIZE, 0) intChars = aht_apiGetPrivateProfileString(strGroup, strItem, "", strBuffer, MAX_SIZE, strFile) ahtGetPrivateIniString = Left(strBuffer, intChars) End Function Function ahtGetPrivateProfileSection(ByVal strGroup As String, ByVal strFile As String) As Variant Dim strBuffer As String Dim intCount As Integer strBuffer = Space(MAX_SECTION) intCount = aht_apiGetPrivateProfileSection(strGroup, strBuffer, MAX_SECTION, strFile) ahtGetPrivateProfileSection = Left(strBuffer, intCount) End Function Function ahtGetProfileSection(ByVal strGroup As String) As Variant Dim strBuffer As String Dim intCount As Integer strBuffer = Space(MAX_SECTION) intCount = aht_apiGetProfileSection(strGroup, strBuffer, MAX_SECTION) ahtGetProfileSection = Left(strBuffer, intCount) End Function Function ahtGetINIString(ByVal strGroup As String, ByVal strItem As String) As Variant Dim intChars As Integer Dim strBuffer As String strBuffer = String(MAX_SIZE, 0) intChars = aht_apiGetProfileString(strGroup, strItem, "", strBuffer, MAX_SIZE) ahtGetINIString = Left(strBuffer, intChars) End Function Function ahtGetPrivateINIInt(ByVal strGroup As String, ByVal strItem As String, ByVal strFile As String) As Variant ahtGetPrivateINIInt = aht_apiGetPrivateProfileInt(strGroup, strItem, -1, strFile) End Function Function ahtGetINIInt(ByVal strGroup As String, ByVal strItem As String) As Variant ahtGetINIInt = aht_apiGetProfileInt(strGroup, strItem, -1)

- 203 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Comment visualiser mon etat en mode paysage ?


Auteurs : shwin , Il faut utiliser le code suivant qui en fait reproduit par le code les manipulation que l'utilisateur doit effectuer afin d'obtenir l'effet escompt.
SendKeys SendKeys SendKeys SendKeys SendKeys SendKeys "{f10}" "{f}" "{p}" "{right}" "%{y}" "{enter}"

Comment dessiner dans un tat (lignes ou autres) ?


Auteurs : Maxence HUBICHE ,
Private Sub Report_Page() Me.Line (Me.ScaleWidth / 2, 0)-(Me.ScaleWidth / 2, Me.ScaleHeight), 255 End Sub

Aller plus loin : Voici un truc inutile : Crez un nouvel tat, en mode cration, sans aucune source. Allez dans le module de l'tat, et copiez-y le code suivant :
Option Compare Database Private Enum XY x y End Enum Private Dim Dim Dim Sub Report_Page() x1 As Long, x2 As Long y1 As Long, y2 As Long n As Long

For n = 1 To 255 x1 = Banzai(x) x2 = Banzai(x) y1 = Banzai(y) y2 = Banzai(y) c = DefCouleur Me.Line (x1, y1)-(x2, y2), c Next End Sub Function Banzai(xyType As Long) As Long Dim MAX As Long Dim n As Long Select Case xyType Case x MAX = Me.ScaleWidth Case y MAX = Me.ScaleHeight

- 204 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Select Banzai = CLng(Rnd() * MAX) End Function Function DefCouleur() As Long DefCouleur = CLng(Rnd() * 2 ^ 24) End Function

Ouvrez l'tat. Vous savez maintenant gribouiller un tat.

Comment masquer l'en-tte d'un tat sur la premire page de l'tat ?


Auteurs : Maxence HUBICHE ,
Private Sub ZoneEnttePage_Format(Cancel As Integer, FormatCount As Integer) If Me.Page = 1 Then Me.ZoneEnttePage.Visible = False Else Me.ZoneEnttePage.Visible = True End If End Sub

Comment ouvrir une liste d'tat la suite ?


Auteurs : Cafeine , On fait une boucle sur le container "Reports" et on teste la longueur du nom de l'tat ouvert courant, ce qui fait que si on ferme l'tat, cela provoque une erreur que nous allons rcuprer pour dclencher l'ouverture de l'tat suivant.
Sub ViewAllReports() Dim iInt As Integer On Error GoTo VARerrHandler For iInt = 0 To CurrentDb.Containers("Reports").Documents.Count - 1 DoCmd.OpenReport CurrentDb.Containers("Reports").Documents(iInt).Name, acViewPreview Do While Len(Reports(0).Name) > 0 DoEvents Loop NextReport: Next iInt MsgBox "Vous avez visualis les " & iInt & " tats de la base", vbInformation + vbOKOnly Exit Sub

VARerrHandler: Select Case Err.Number Case 2457 Err.Clear Resume NextReport Case Else MsgBox Err.Number & vbCrLf & Err.Description Err.Clear

- 205 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Select End Sub

Comment dans un Etat en mode multi colonnes avoir un titre sur toute la largeur de la page ?
Auteurs : Philippe JOCHMANS , Vous ne pouvez mettre dans un tat en mode multi colonnes un titre qui fait tout la largeur de la page. Pour remdier cela, il faut crire le titre sur l'tat. Pour cela on utilisera l'vnement Page de l'tat,et on utilise l'instruction Print.
Private Sub Report_Page() Me.Print "Je suis super www.developpez.com le forum d'entraide des dveloppeurs francophones" End Sub

lien :

Apprendre Ecrire et Dessiner dans les tats Access

- 206 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Fichiers et rpertoires Comment utiliser fileSystemObject ?


Auteurs : nightfall , Ajoutez la librairie Microsoft Scripting Runtime. Le fichier correspondant se nomme scrrun.dll lien : FAQ VB

Comment lire un fichier XML ?


Auteurs : nightfall , Lou Pitchoun , La lecture d'un fichier XML se fait l'aide d'un parseur. Dans les rfrences du projet, ajoutez Microsoft XML. Voici un exemple qui affiche dans la fentre de dbogage la liste des balises contenues dans un document xml.
Private Sub BrowseChildNodes(root_node As IXMLDOMNode) Dim i As Long For i = 0 To root_node.childNodes.length - 1 If root_node.childNodes.Item(i).nodeType <> 3 Then Debug.Print root_node.childNodes.Item(i).baseName BrowseChildNodes root_node.childNodes(i) Next End Sub Private Sub BrowseXMLDocument(ByVal filename As String) Dim xmlDoc As DOMDocument, root As IXMLDOMElement Set xmlDoc = New DOMDocument xmlDoc.async = False xmlDoc.Load filename Set root = xmlDoc.documentElement If Not root Is Nothing Then Debug.Print root.baseName BrowseChildNodes root End If End Sub

Appelez simplement la procdure BrowseXMLDocument en passant en paramtre le chemin du fichier. Cette procdure ouvre le fichier puis appelle la procdure BrowseChildNodes qui parcoure l'ensemble des balises de faon rcursive. -----------------------------------------------------------------------------------------------Pour modifier une valeur :
root_node.childNodes.Item(i).Text = "Lou Pitchoun"

Pour sauvegarder :
xmlDoc.Save "Chemin + nom fichier"

- 207 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ce code donne le nom de la balise :


Debug.Print root_node.childNodes.Item(i).baseName

lien : FAQ VB lien : lien : Repousser les limites d'Access - rcuprer un fil RSS Visual Basic 6.0 et le format XML

Comment grer mes fichiers avec Access (objets OLE) ?


Auteurs : Maxence HUBICHE , On a souvent parl des images en disant qu'il valait mieux viter de les stocker dans la base de donnes. Ceci est valide pour tous les objets OLE. Un OS (Systme d'Exploitation) est prvu pour grer les fichiers. Les stocker l'extrieur de la base de donnes pour ne stocker dans la base que le chemin d'accs donnera souvent de bien meilleurs rsultats. Exemple d'utilisation du chemin stock grce une API :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _ ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

puis dans le code on l'appelle ainsi :


ShellExecute Me.hWnd, vbNullString, CheminduFichier, "", vbNullString, 1

lien : lien :

Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? Que faire quand l'API ShellExecute ne fonctionne pas ?

Comment travailler sur un fichier texte (cration, lecture, criture ...)


Auteurs : Maxence HUBICHE , Lire un fichier :

Function LireFichier(ByVal sPath As String) As String() Dim fso As FileSystemObject Dim fFile As File Dim ts As TextStream Dim result As String Set fso = CreateObject("Scripting.FileSystemObject") Set fFile = fso.GetFile(sPath) Set ts = fFile.OpenAsTextStream(ForReading) result = ts.ReadAll LireFichier = Split(result, vbCrLf) ts.Close Set ts = Nothing Set fFile = Nothing Set fso = Nothing End Function

- 208 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Crer un fichier :

Function CreerFichier(ByVal sPath As String) Dim fso As FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile sPath Set fso = Nothing End Function

Ajouter une ligne :

Function AjoutLigneDansFichier(ByVal sPath As String, ByVal sTexte As String) Dim fso As FileSystemObject Dim fFile As File Dim ts As TextStream Set fso = CreateObject("Scripting.FileSystemObject") Set fFile = fso.GetFile(sPath) Set ts = fFile.OpenAsTextStream(ForAppending) ts.WriteLine sTexte ts.Close Set ts = Nothing Set fFile = Nothing Set fso = Nothing End Function

lien : Comment crer et crire dans un fichier texte ?

Comment avec l'API GetOpenFileNameA ouvrir plusieurs fichiers la fois ?


Auteurs : shwin , Il suffit de mettre l'attribut flags la valeur suivante :

openfile.flags = &H200 'Multiselect

Ensuite, la variable fichier est un string qui va contenir les noms.

C:\autoexec.bat nouveau.txt

A vous de travailler cette chane pour obtenir le rsultat souhait. lien : lien : Rtablir les liaisons des tables lies aprs dplacement d'une base fractionne Afficher la bote de dialogue ouvrir afin de rcuprer le nom et le chemin du fichier slectionn

Comment compter les occurences d'une chane dans un fichier ?


Auteurs : Cafeine , C'est faisable grce aux RegExp, pensez ajouter la rfrence Microsoft Regular Expressions 5.5 :

- 209 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Function CountMatches(ByVal strFic As String, ByVal strSearch As String) As Long Dim Dim Dim Dim Dim reg As VBScript_RegExp_55.RegExp Matches As VBScript_RegExp_55.MatchCollection Fic As Integer strBuff As String * 20000 strBorder As String

' instanciation Set reg = New VBScript_RegExp_55.RegExp reg.Global = True reg.IgnoreCase = True reg.Multiline = True reg.Pattern = "(" & strSearch & ")" ' gestion fichier Reset Fic = FreeFile Open strFic For Binary Access Read As #Fic Do While Not EOF(Fic) strBorder = Right(strBuff, Len(strSearch) - 1) Get #Fic, , strBuff strBorder = strBorder & strBuff Set Matches = reg.Execute(strBorder) CountMatches = CountMatches + Matches.Count Loop Close #Fic ' libration Set reg = Nothing Set Matches = Nothing End Function

Exemple :

?countmatches("c:\temp\long.txt"," ") 7500

lien :

Les Expressions Rationnelles et Access par la pratique

Comment obtenir le chemin relatif d'un fichier


Auteurs : Cafeine , Tofalu , Pour obtenir le chemin relatif d'un fichier par rapport un rpertoire, vous pouvez utiliser la fonction suivante :

Function GetRelativePath(ByVal strPath As String, Optional ByVal strPathCurrent As String) Dim Dim Dim Dim tmpCurr() As String tmpP() As String i As Integer iIndex As Integer

' par dfaut on considre que c'est relatif par rapport au chemin courant de la base

- 210 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If strPathCurrent = "" Then strPathCurrent = CurrentProject.Path If Right(strPathCurrent, 1) = "\" Then strPathCurrent = Left(strPathCurrent, Len(strPathCurrent) - 1) If Left(strPath, 1) = Left(strPathCurrent, 1) Then ' on recherche la partie commune aux deux chemins

tmpP = VBA.Split(strPath, "\") tmpCurr = VBA.Split(strPathCurrent, "\") For iIndex = 0 To IIf(UBound(tmpP) > UBound(tmpCurr), UBound(tmpCurr), UBound(tmpP)) If tmpP(iIndex) <> tmpCurr(iIndex) Then Exit For Else i = iIndex End If Next iIndex If i = UBound(tmpCurr) Then ' c'est un sous rpertoire

For iIndex = i + 1 To UBound(tmpP) GetRelativePath = GetRelativePath & tmpP(iIndex) & "\" Next iIndex GetRelativePath = Left(GetRelativePath, Len(GetRelativePath) - 1) Else ' il faut remonter de UBound(tmpCurr) - i

For iIndex = 1 To UBound(tmpCurr) - i GetRelativePath = GetRelativePath & "..\" Next iIndex For iIndex = i + 1 To UBound(tmpP) GetRelativePath = GetRelativePath & tmpP(iIndex) & "\" Next iIndex GetRelativePath = Left(GetRelativePath, Len(GetRelativePath) - 1) End If Else ' deux lecteurs diffrents

GetRelativePath = strPath End If End Function

Le premier paramtre correspond au chemin du fichier ou du dossier, le second correspond au chemin courant. Exemple :

?getrelativepath("c:\toto\tata\test.xls","c:\tintin") ..\toto\tata\test.xls ?getrelativepath("c:\toto\tata\test.xls","c:\toto\tata") \test.xls

Comment tester l'existence d'un fichier ?


Auteurs : vodiem , Cette fonction permet de tester l'existence d'un fichier, elle renvoie True si le fichier existe :
Function existeFileFSO(ByVal fichier As String) As Boolean - 211 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Set fs = CreateObject("Scripting.FileSystemObject") existeFileFSO = fs.FileExists(fichier) Set fs = Nothing End Function

Autre mthode en passant par les APIs :


Declare Function SearchPath Lib "kernel32" Alias "SearchPathA" (ByVal lpPath As String, ByVal lpFileName As String, ByVal lpExtension As String, ByVal nBufferLength As Long, ByVal lpBuffer As String, ByVal lpFilePart As String) As Long Function existeFileSearchPath(ByVal chemin, fichier As String) As Boolean 'Requires Windows Vista, Windows XP, or Windows 2000 Professional. Dim ResultFileName As String Dim pFilePart As Long existeFileSearchPath = SearchPath(chemin, fichier, vbNullString, 1, ResultFileName, pFilePart) > 0 End Function

lien :

http://warin.developpez.com/access/fichiers/

- 212 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Fichiers et rpertoires > Cration/Suppression/Modifications Comment copier un fichier d'un rpertoire un autre ?
Auteurs : Frank ,
'Dclarer deux variables string pour les emplacements Dim sEmplacementInitial As String, sEmplacementFinal As String sEmplacementInitial="c:\MonrepertoireIni\Monfichier.xls" sEmplacementFinal="D:\Monrepertoirefin\Monfichier.xls" 'Copie du fichier FileCopy sEmplacementInitial,sEmplacementFinal

Comment copier un rpertoire ?


Auteurs : nightfall , Ce source copie le contenu du rpertoire c:\sources dans le rpertoire c:\oldsources. Passer la valeur True en troisime paramtre de CopyFolder indique que les fichiers existants devront tre crass.
Dim fso As FileSystemObject Set fso = New FileSystemObject fso.CopyFolder "c:\sources", "c:\oldsources", True Set fso = Nothing

lien : FAQ VB

Comment crer un rpertoire avec Access ?


Auteurs : Frank , Intressez-vous la fonction MkDir().

Comment crer et crire dans un fichier texte ?


Auteurs : Team Access , Pour transfrer le contenu d'une table ou d'une requte, utiliser la mthode Docmd.TransferText Sinon pour crire directement du texte :
open "Nom_Fichier" for Output as #1 Print #1, "Place ta donne insrer ici" Close #1

lien : Comment travailler sur un fichier texte (cration, lecture, criture ...) lien : Manipuler les fichiers textes

Comment envoyer un fichier la corbeille ?


Auteurs : nightfall , En utilisant les API Windows. Copiez ce code source dans un module standard :

- 213 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Type SHFILEOPSTRUCT hwnd As Long wFunc As Long pFrom As String pTo As String fFlags As Long fAnyOperationsAborted As Long hNameMappings As Long lpszProgressTitle As String End Type Private Const FO_DELETE As Long = &H3 Private Const FOF_ALLOWUNDO As Long = &H40 Private Declare Function SHFileOperation Lib "Shell32.dll" Alias "SHFileOperationA" _ (lpFileOp As SHFILEOPSTRUCT) As Long Public Function DansCorbeille(fichier As String, handle As Long) As Boolean Dim DelFileOp As SHFILEOPSTRUCT Dim Result As Long With DelFileOp .hwnd = handle .wFunc = FO_DELETE .pFrom = fichier & vbNullChar & vbNullChar .fFlags = FOF_ALLOWUNDO End With Result = SHFileOperation(DelFileOp) DansCorbeille = (Result = 0) And (DelFileOp.fAnyOperationsAborted = 0) End Function

La fonction DansCorbeille renvoie True si l'envoi du fichier dans la corbeille a t effectu. Ses paramtres sont le chemin complet du fichier et le handle de la fentre utilis pour afficher les ventuelles botes de dialogue d'avertissement ou de demande de confirmation. Ce deuxime paramtre peut tre une valeur nulle. Voici un exemple d'utilisation de cette fonction :
If DansCorbeille("C:\lettre.doc", Me.hwnd) Then MsgBox "Le fichier a t dplac dans la corbeille" Else MsgBox "Le fichier n'a pas pu tre dplac dans la corbeille" End If

lien : FAQ VB lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? lien : Que faire quand l'API ShellExecute ne fonctionne pas ?

Importation de fichier texte dans une table, comment prciser le sparateur dans la commande TransferText ?
Auteurs : DMboup , Il faut vous crer un format d'importation. Complment de DMboup :

- 214 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour crer le format d'importation, il faut lancer l'assistant d'importation travers le menu Fichier = > Donnes Externes = > Importer. Aprs avoir choisi le fichier texte importer, la fentre d'importation de fichier texte s'affiche o on trouve un bouton Avanc. Ce bouton permet d'accder une autre fentre qui permet de spcifier les paramtres d'importation notamment le dlimiteur. Ensuite Un bouton Enregistrer sous permet de sauvegarder le modle ainsi cre.

Le modle est enregistr dans une table systme MSysIMEXSpecs de manire permanente dans la base pour pouvoir tre utilis dans la commande DoCmd.transfertText.

- 215 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DoCmd.TransferText acImportDelim, "NomModel", "TableDestination", "FichierSource"

Comment lire / crire dans un fichier .ini ?


Auteurs : nightfall , Les fichiers .ini sont des fichiers texte utiliss pour enregistrer les options d'un programme. Ils sont composs de sections, qui contiennent des cls auxquelles on peut donner une valeur. Par exemple :
[Affichage] State=Maximized Left=50 Top=80 [Sauvegarde] Confirm=True Auto=False

Pour pouvoir respectivement lire et crire dans un fichier .ini, voici les dcarations que vous devez ajouter dans votre module :
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 Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, _ ByVal lpFileName As String) As Long

Voici ci-dessous la fonction qui crira une valeur pour la cl et dans la section indique. Notez que vous n'avez pas besoin de crer le fichier s'il n'existe pas, car la fonction WritePrivateProfileString le fait pour vous.
Private Function EcritDansFichierIni(Section As String, Cle As String, _ Valeur As String, Fichier As String) As Long EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier) End Function

Et voyons maintenant la fonction qui nous retournera la valeur d'une cl dans une section donne. ValeurParDefaut contient la valeur qui devra nous tre retourne si le fichier n'existe pas, ou si aucune valeur n'a t spcifie pour la cl demande :
Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String, _ Optional ValeurParDefaut As String = "") As String Dim strReturn As String strReturn = String(255, 0) GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)

- 216 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Le code ncessaire pour crire la section [Affichage] du fichier donn en exemple sera :
EcritDansFichierIni "Affichage", "State", "Maximized", "c:\config.ini" EcritDansFichierIni "Affichage", "Left", "50", "c:\config.ini" EcritDansFichierIni "Affichage", "Top", "80", "c:\config.ini"

Et nous pourrons lire la valeur donne la clef "Left" avec :


LeftParam = LitDansFichierIni("Affichage", "Left", "c:\config.ini", 100)

lien : FAQ VB

Comment renommer un fichier ou un rpertoire ?


Auteurs : nightfall ,
'Renomme "c:\temp\Erreurs.tmp" en "c:\temp\Erreurs.bak" Name "c:\temp\Erreurs.tmp" As "c:\temp\Erreurs.bak" 'Renomme le rpertoire "c:\temp" en "c:\var" Name "c:\temp" As "c:\var"

lien : FAQ VB

Comment dtruire un fichier ?


Auteurs : nightfall ,
Kill "c:\Erreurs.tmp"

Le fichier doit exister sinon une erreur d'excution a lieu. lien : FAQ VB

Comment supprimer un rpertoire ?


Auteurs : nightfall , Avec RmDir, mais vous ne pouvez l'utiliser que pour supprimer des rpertoires vides.
RmDir "c:\temp"

Pour supprimer un rpertoire qui contient fichiers ou rpertoires, utilisez le FileSystemObject, qui est disponible seulement si vous avez inclus la librairie Microsoft Scripting Runtime dans les rfrences de votre projet.
Dim fso as FileSystemObject Set fso = New FileSystemObject fso.DeleteFolder "c:\temp", True

La valeur True passe au deuxime paramtre permet de supprimer le rpertoire dans le cas o il aurait l'attribut lecture seule. Ce paramtre est optionnel, et a la valeur False par dfaut. lien : FAQ VB
- 217 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien : Utiliser fileSystemObject

Comment compresser et dcompresser des fichiers ?


Auteurs : elifqaoui , nightfall , VB n'inclut pas de composant permettant de compresser des fichiers. Il est possible de s'en sortir en excutant, via la fonction Shell, un programme de type pkzip. Mais une solution plus pratique est d'utiliser une librairie ou un activex. Ici nous utiliserons la zlib, qui a l'avantage d'tre gratuite, open source et de crer des zips standards. Le code crire en VB pour la manipuler tant assez consquent, nous allons aussi importer les classes VB d'Andrew McMillan disponibles dans les fichiers zipclass.zip et ZipExtractionClass.zip (la zlib est aussi dans ces zips). Aprs avoir tlcharg ces 2 fichiers, importez les classes dans votre projet et copiez le fichier zlib.dll dans le rpertoire de votre projet ou dans le rpertoire systme. Voici comment crer un fichier zip :
Dim z As ZipClass Set z = New ZipClass z.AddFile "c:\test.doc" z.AddFile "c:\test.jpg" z.WriteZip "c:\test.zip", True Set z = Nothing

Et comment faire une extraction :


Dim zip As ZipExtractionClass Set zip = New ZipExtractionClass If zip.OpenZip("C:\Test\Test.zip") Then If zip.Extract("C:Test\Extract", True, True) Then MsgBox "Extraction termine.", vbInformation End If zip.CloseZip End If Set zip = Nothing

lien : FAQ VB lien : Zipper des fichiers en excutant la fonction shell

- 218 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Fichiers et rpertoires > Recherches et Localisation Afficher la bote de dialogue ouvrir afin de rcuprer le nom et le chemin du fichier slectionn
Auteurs : shwin , Cette fonction propose plusieurs arguments utiles pour personnaliser votre bote de dialogue, ils sont expliqus dans le code. Code placer dans un module :
'Dclaration de l'API Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String) Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _ "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long 'Structure du fichier Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type 'Constantes Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const Private Const

OFN_READONLY = &H1 OFN_OVERWRITEPROMPT = &H2 OFN_HIDEREADONLY = &H4 OFN_NOCHANGEDIR = &H8 OFN_SHOWHELP = &H10 OFN_ENABLEHOOK = &H20 OFN_ENABLETEMPLATE = &H40 OFN_ENABLETEMPLATEHANDLE = &H80 OFN_NOVALIDATE = &H100 OFN_ALLOWMULTISELECT = &H200 OFN_EXTENSIONDIFFERENT = &H400 OFN_PATHMUSTEXIST = &H800 OFN_FILEMUSTEXIST = &H1000 OFN_CREATEPROMPT = &H2000 OFN_SHAREAWARE = &H4000 OFN_NOREADONLYRETURN = &H8000 OFN_NOTESTFILECREATE = &H10000

Private Const OFN_SHAREFALLTHROUGH = 2 Private Const OFN_SHARENOWARN = 1 Private Const OFN_SHAREWARN = 0

Public Function OuvrirUnFichier(Handle As Long, _ Titre As String, _ TypeRetour As Byte, _ Optional TitreFiltre As String, _ - 219 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Optional TypeFichier As String, _ Optional RepParDefaut As String) As String 'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _ 'la bote de dialogue de slection d'un fichier. 'Explication des paramtres 'Handle = le handle de la fentre (Me.Hwnd) 'Titre = Titre de la bote de dialogue 'TypeRetour (Dfinit la valeur, de type String, renvoye par la fonction) '1 = Chemin complet + Nom du fichier '2 = Nom fichier seulement 'TitreFiltre = Titre du filtre 'Exemple: Fichier Access 'N'utilisez pas cet argument si vous ne voulez spcifier aucun filtre 'TypeFichier = Extention du fichier (Sans le .) 'Exemple: MDB 'N'utilisez pas cet argument si vous ne voulez spcifier aucun filtre 'RepParDefaut = Rpertoire d'ouverture par defaut 'Exemple: C:\windows\system32 'Si vous laiss l'argument vide, par defaut il se place dans le rpertoire de votre application Dim StructFile As OPENFILENAME Dim sFiltre As String 'Construction du filtre en fonction des arguments spcifis If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0) End If sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)

'Configuration de la bote de dialogue With StructFile .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure .hwndOwner = Handle 'Identification du handle de la fentre .lpstrFilter = sFiltre 'Application du filtre .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254 .nMaxFile = 254 'Taille maximale du fichier .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254 .nMaxFileTitle = 254 'Taille maximale du nom du fichier .lpstrTitle = Titre 'Titre de la bote de dialogue .flags = OFN_HIDEREADONLY 'Option de la boite de dialogue If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then RepParDefaut = CurrentDb.Name PathStripPath (RepParDefaut) .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, InStr(1, RepParDefaut, vbNullChar) - 1))) Else: .lpstrInitialDir = RepParDefaut End If End With If (GetOpenFileName(StructFile)) Then 'Si un fichier est slectionn Select Case TypeRetour Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar)-1)) Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar)-1)) End Select End If End Function

Exemple pour appeler la fonction depuis le code d'un formulaire :

- 220 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MsgBox OuvrirUnFichier(Me.Hwnd, "Parcourir", 1, "Fichier Word", "doc")

lien : Afficher la bote de dialogue Enregistrer sous afin de rcuprer le nom et le chemin du fichier slectionn lien : Utilise le contrle Common Dialog pour rcuprer le chemin d'un fichier lien : Comment avec l'API GetOpenFileNameA ouvrir plusieurs fichiers la fois ?

Afficher la bote de dialogue Enregistrer sous afin de rcuprer le nom et le chemin du fichier slectionn
Auteurs : shwin , Note : Les arguments de cette fonction sont expliqus dans le code. Code placer dans un module :
'Dclaration de l API Private Declare Function GetSaveFileName Lib "comdlg32.dll" _ Alias "GetSaveFileNameA" (pOpenfilename As OPENFILENAME) _ As Long 'Structure du fichier Private Type OPENFILENAME lStructSize As Long hWndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type

Function EnregistrerUnFichier(Handle As Long, Titre As String, _ NomFichier As String, Chemin As String) As String 'EnregistrerUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _ la bote de dialogue d'enregistrement d'un fichier. 'Explication des paramtres 'Handle = le handle de la fentre (Me.Hwnd) 'Titre = Titre de la bote de dialogue 'NomFichier = Nom par dfaut du fichier enregistrer 'Chemin = Chemin par dfaut du fichier enregistrer Dim structSave As OPENFILENAME With structSave .lStructSize = Len(structSave) .hWndOwner = Handle .nMaxFile = 255 .lpstrFile = NomFichier & String$(255 - Len(NomFichier), 0) .lpstrInitialDir = Chemin .lpstrFilter = "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0) 'Dfinition du filtre (aucun)

- 221 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

.Flags = &H4 End With

'Option de la boite de dialogue

If (GetSaveFileName(structSave)) Then EnregistrerUnFichier = Mid$(structSave.lpstrFile, 1, InStr(1, structSave.lpstrFile, vbNullChar) - 1) End If End Function

Exemple pour appeler la fonction depuis le code d'un formulaire :


MsgBox EnregistrerUnFichier(Me.hwnd, "Enrgistrer sous", "Test.doc", "C:\")

lien : Afficher la bote de dialogue ouvrir afin de rcuprer le nom et le chemin du fichier slectionn lien : Utilise le contrle Common Dialog pour rcuprer le chemin d'un fichier

Comment rcuprer le rpertoire d'un fichier partir de son chemin complet ?


Auteurs : Team Access , Cette fonction reoit le chemin complet d'un fichier en paramtre et renvoie le chemin du rpertoire :
Public Function ExtractFolder(ByVal sFullPath As String) As String If Right(sFullPath, 1) = "\" Then ExtractFolder = sFullPath Else ExtractFolder = Left(sFullPath, InStrRev(sFullPath, "\")) End If End Function

lien : FAQ VB

Comment obtenir le contenu d'un rpertoire ?


Auteurs : nightfall ,
Dim rep As String 'obtient le premier fichier ou rpertoire qui est dans "c:\" rep = Dir("c:\*.*", vbDirectory) 'boucle tant que le rpertoire n'a pas t entirement parcouru Do While (rep <> "") 'teste si c'est un fichier ou un rpertoire If (GetAttr("c:\" & rep) And vbDirectory) = vbDirectory Then MsgBox "Rpertoire " & rep Else MsgBox "Fichier " & rep End If 'passe l'lment suivant rep = Dir

- 222 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Loop

lien : FAQ VB

Plusieurs faons de parcourir mon disque dur et de rcuprer le chemin du fichier slectionn
Auteurs : Team Access , En utilisant : Utilise le contrle Common Dialog pour rcuprer le chemin d'un fichier l'objet FileDialog Il n'est support qu' partir d'Access 2002, nous privilgierons donc d'autres solutions. des API : Afficher la bote de dialogue ouvrir afin de rcuprer le nom et le chemin du fichier slectionn la bote de dialogue Enregistrer sous afin de rcuprer le nom et le chemin du fichier slectionn Afficher

Comment chercher dans un disque rigide un fichier dont le nom est donn ? Comment obtenir son rpertoire ?
Auteurs : ZEUSGR , Ce sujet est abord dans la rubrique code source (cf. liens ci-dessous). lien : Recherche de fichiers en spcifiant certaines extensions seulement. lien : Recherche rcursive d'un fichier lien : Rechercher la premire occurence d'un fichier dans une arborescence

Utilise le contrle Common Dialog pour rcuprer le chemin d'un fichier


Auteurs : olivier] , Ouvrir un module (page de code) : - menu Tools (Outils) - item References (Rfrences) - Cochez la rfrence Microfoft Common Dialog Control Dans la barre d'outils, click sur le dernier bouton More controls / Autres Contrles. Dans la liste qui s'ouvre choisissez le control Microsoft Common Dialog Control et placez le sur le formulaire. Nous le nommons Dlg. Placez le code suivant dans un module (action click du bouton Btn_Chercher) :
Private Sub Btn_Chercher_Click() With dlg .DialogTitle = "selectionner un fichier" 'titre de la boite .FileName="*.txt" 'on recherche un fichier d'extension txt .initDir="c:\" 'repertoire par defaut .CancelError = false 'pour ne pas partir en erreur si on click sur annuler .ShowOpen End With 'txtPath est la zone de texte recevant le chemin du fichier txtPath = dlg.FileName End Sub

- 223 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

NB : Il se peut que vous n'ayez pas la licence ncessaire l'utilisation de ce contrle. Dans ce cas, essayez les autres mthodes proposes dans la FAQ. lien : Afficher la bote de dialogue ouvrir afin de rcuprer le nom et le chemin du fichier slectionn lien : Afficher la bote de dialogue Enregistrer sous afin de rcuprer le nom et le chemin du fichier slectionn

Comment obtenir les chemins complets des rpertoires spciaux ?


Auteurs : nightfall , Pour rcuprer les chemins complets des rpertoires du Bureau, de Mes Documents, ou du menu Dmarrer, vous pouvez utiliser la fonction SHGetSpecialFolderPath de l'Api Windows :
Private Declare Function SHGetSpecialFolderPath Lib "shell32.dll" Alias "SHGetSpecialFolderPathA" _ (ByVal hwndOwner As Long, ByVal lpszPath As String, _ ByVal nFolder As Long, ByVal fCreate As Long) As Long

Description des paramtres : hwndOwner : handle de la fentre utiliser si une bote de dialogue doit tre affiche lpszPath : chane de caractres recevant le chemin complet du rpertoire demand nFolder : nombre indiquant le rpertoire demand fCreate : si la valeur passe ce paramtre n'est pas nulle, le rpertoire est cr, s'il n'existe pas dj Sous Windows NT 4.0 et Windows 95, cette fonction n'est disponible que si Internet Explorer 4.0 ou suprieur est install. Voyons comment l'utiliser :
Public Function GetSpecialFolderPath(dossier As Long, hwnd As Long) Dim buffer As String buffer = Space(256) SHGetSpecialFolderPath hwnd, buffer, dossier, 0 GetSpecialFolderPath = Left(buffer, InStr(buffer, Chr(0)) - 1) End Function

Pour tester cette fonction, placez par exemple ces 3 lignes dans une procdure du module d'une form :
MsgBox GetSpecialFolderPath(0, Me.hwnd) MsgBox GetSpecialFolderPath(5, Me.hwnd) MsgBox GetSpecialFolderPath(11, Me.hwnd) 'rpertoire du Bureau 'rpertoire Mes Documents 'rpertoire du menu Dmarrer

Les rfractaires aux Api Windows prfreront utiliser le Windows Script Host Object Model en ajoutant wshom.ocx aux rfrences du projet. Les chemins complets des rpertoires spciaux sont dans la collection SpecialFolders de l'objet WshShell.
Dim Wsh As WshShell Set Wsh = New WshShell MsgBox Wsh.SpecialFolders.Item("Desktop") MsgBox Wsh.SpecialFolders.Item("MyDocuments") MsgBox Wsh.SpecialFolders.Item("StartMenu") Set WshShell = nothing 'rpertoire du Bureau 'rpertoire Mes Documents 'rpertoire du menu Dmarrer

- 224 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

Avec les anciennes versions de Wshom.ocx, la classe WshShell s'appelle IWshShell_Class. lien : FAQ VB lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? lien : Que faire quand l'API ShellExecute ne fonctionne pas ?

Comment connatre le chemin vers les rpertoires spciaux ?


Auteurs : Team Access , La rfrence "Windows Script Host Object Model" (wshom.ocx) propose un objet permettant d'accder aux rpertoires spciaux d'un ordinateur.

WshShell.SpecialFolders(repertoire)

O repertoire, est une chaine de caractres dfinissant quel rpertoire atteindre. Liste des types de rpertoires : AllUsersDesktop : D:\Documents and Settings\All Users\Bureau AllUsersStartMenu : D:\Documents and Settings\All Users\Menu Dmarrer AllUsersPrograms : D:\Documents and Settings\All Users\Menu Dmarrer\Programmes AllUsersStartup : D:\Documents and Settings\All Users\Menu Dmarrer\Programmes\Dmarrage Desktop : D:\Documents and Settings\Christophe\Bureau AppData : D:\Documents and Settings\Christophe\Application Data PrintHood : D:\Documents and Settings\Christophe\Voisinage d'impression Templates : D:\Documents and Settings\Christophe\Modles Fonts : D:\WINDOWS\Fonts NetHood : D:\Documents and Settings\Christophe\Voisinage rseau StartMenu : D:\Documents and Settings\Christophe\Menu Dmarrer SendTo : D:\Documents and Settings\Christophe\SendTo Recent : D:\Documents and Settings\Christophe\Recent Startup : D:\Documents and Settings\Christophe\Menu Dmarrer\Programmes\Dmarrage Favorites : D:\Documents and Settings\Christophe\Favoris MyDocuments : E:\ Programs : D:\Documents and Settings\Christophe\Menu Dmarrer\Programmes

Exemple :

Dim oWsh As New WshShell MsgBox oWsh.SpecialFolders("Desktop")

lien : Comment crer un raccourci ? lien : Comment dclarer une rfrence dans MS-Access ?

Comment rcuprer les chemins complets des rpertoires Windows, System, et Windows\Temp
Auteurs : nightfall , Voici deux solutions possibles. Tout d'abord, les fonctions de l'API Windows :
- 225 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" _ (ByVal lpBuffer As String, ByVal nSize As Long) As Long Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

Ces 3 fonctions de l'API Win32 renvoient respectivement les chemins complets des rpertoires Windows, System, et Windows\Temp. Elles s'utilisent toutes les 3 de la mme manire :
Function GetWindowsDir() As String Dim buffer As String * 256 Dim Length As Long Length = GetWindowsDirectory(buffer, Len(buffer)) GetWindowsDir = Left(buffer, Length) End Function Function GetSystemDir() As String Dim buffer As String * 256 Dim Length As Long Length = GetSystemDirectory(buffer, Len(buffer)) GetSystemDir = Left(buffer, Length) End Function Function GetTempDir() As String Dim buffer As String * 256 Dim Length As Long Length = GetTempPath(Len(buffer), buffer) GetTempDir = Left(buffer, Length) End Function

Une autre manire de procder est de faire appel au FileSystemObject :


Dim fso As FileSystemObject Set fso = New FileSystemObject MsgBox fso.GetSpecialFolder(0) MsgBox fso.GetSpecialFolder(1) MsgBox fso.GetSpecialFolder(2) Set fso = Nothing End Sub 'rpertoire windows 'rpertoire system 'rpertoire temp

lien : FAQ VB

Comment rcuprer le rpertoire courant (o se trouve la base de donnes) ?


Auteurs : Tofalu ,
MsgBox ParentDir(Application.CurrentDB.Name)

- 226 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

En fait, Application.CurrentDB.Name fournit le chemin complet avec le nom de la base. La fonction ParentDir() sert en fait soustraire le nom de la base du chemin d'accs. Autre possibilit :

CurrentProject.Path

lien : Comment isoler le rpertoire dans lequel se trouve un fichier lorsqu'on a son chemin complet ?

Comment ouvrir une fentre de slection de rpertoire ?


Auteurs : nightfall , Arkham46 , Pour cela vous devez ajouter ces dclarations au dbut de votre module :
Private Const BIF_RETURNONLYFSDIRS = 1 Private Const BIF_DONTGOBELOWDOMAIN = 2 Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _ ByVal lpBuffer As String) As Long Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _ ByVal lpString2 As String) As Long Private Type BrowseInfo hWndOwner As Long pIDLRoot As Long pszDisplayName As Long lpszTitle As Long ulFlags As Long lpfnCallback As Long lParam As Long iImage As Long End Type

La fonction suivante ouvre la fentre de slection de rpertoire standard de Windows et renvoie le chemin du rpertoire slectionn. Les paramtres attendus sont le titre afficher et l'identifiant de la fentre parente.
Public Function SelectFolder(Titre As String, Handle As Long) As String Dim Dim Dim Dim lpIDList As Long strBuffer As String strTitre As String tBrowseInfo As BrowseInfo

strTitre = Titre With tBrowseInfo .hWndOwner = Handle .lpszTitle = lstrcat(strTitre, "") .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN End With lpIDList = SHBrowseForFolder(tBrowseInfo) If (lpIDList) Then strBuffer = String(260, vbNullChar) SHGetPathFromIDList lpIDList, strBuffer SelectFolder = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1) End If End Function

- 227 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cette ligne fait appel la fonction crite ci-dessus pour ouvrir la fentre de slection de rpertoire et afficher le rpertoire slectionn :
MsgBox SelectFolder("Slectionnez un rpertoire :", Me.hWnd)

Il est posssible d'ajouter dans la bote de dialogue un bouton permettant la cration d'un nouveau dossier. il faut ajouter cette constante :

Private Const BIF_NEWDIALOGSTYLE As Long = &H40

Ensuite remplacer la ligne correspondante par ce code :

.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + BIF_NEWDIALOGSTYLE

lien : FAQ VB

Comment isoler le rpertoire dans lequel se trouve un fichier lorsqu'on a son chemin complet ?
Auteurs : Frank , On envoie en entre de cette fonction le nom complet d'un fichier et la fonction renvoie le rpertoire dans lequel se trouve le fichier.
Function ParentDir(ByVal str As String) As String Dim i as Integer ' repre le dernier "\" If Right(str, 1) = "\" Then str = Left(str, Len(str) - 1) ' maintenant regarde le prcdent For i = Len(str) To 1 Step -1 If Mid(str, i, 1) = "\" Then Debug.Print "Fichier " & Right(str, Len(str) - i) str = Left(str, i) GoTo fin01 End If Next i fin01: Debug.Print "Rpertoire " & str ParentDir = str End Function

Solution possible depuis MS-Access 2000 :


Function Path(ByVal sFullPath As String) As String If Right(sFullPath,1)="\" then Path=sFullPath Else Path=Left(sFullPath, InStrRev(sFullPath,"\")) End If End Function

- 228 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Fichiers et rpertoires > Informations Comment connatre les dates de cration, de dernire modification et de dernier accs un fichier
Auteurs : nightfall , En passant soit par les API, soit par le FileSystemObject. En natif, VB ne donne accs qu' la date de dernire modification, via la fonction FileDateTime(). Si vous choisissez de passer par les API, voici les dclarations ncessaires :
Private Const MAX_PATH = 260 Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Const INVALID_HANDLE_VALUE = -1 Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, _ lpFindFileData As WIN32_FIND_DATA) As Long Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long Private Declare Function FileTimeToSystemTime Lib "kernel32" _ (lpFileTime As FILETIME, _ lpSystemTime As SYSTEMTIME) As Long Private Declare Function FileTimeToLocalFileTime Lib "kernel32" _ (lpFileTime As FILETIME, _ lpLocalFileTime As FILETIME) As Long

Les dates d'un fichier sont rcupres par la fonction FindFirstFile qui attend en paramtres le nom du fichier et une structure WIN32_FIND_DATA qui reoit les informations obtenues. Les dates de cration, de dernire modification et de dernier accs sont stockes respectivement dans les champs ftCreationTime, ftLastWriteTime et ftLastAccessTime, tous de type FILETIME. Pour avoir des dates sous une forme exploitable, quelques conversions sont ncessaires. Notre fonction FileTimeToDate() convertit une date de type FILETIME en type Date.
Private Function FileTimeToDate(ft As FILETIME) As Date Dim datelocale As FILETIME, datesys As SYSTEMTIME If FileTimeToLocalFileTime(ft, datelocale) = 0 Then Exit Function If FileTimeToSystemTime(datelocale, datesys) = 0 Then Exit Function FileTimeToDate = CDate(datesys.wDay & " " & datesys.wMonth & " " & datesys.wYear & " " & _ datesys.wHour & ":" & datesys.wMinute & ":" & datesys.wSecond) End Function

- 229 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

La partie principale du code est assez simple :


Dim findData As WIN32_FIND_DATA, hFind As Long hFind = FindFirstFile("c:\autoexec.bat", findData) If hFind = INVALID_HANDLE_VALUE Then Exit Sub FindClose hFind MsgBox "Cre le : " & FileTimeToDate(findData.ftCreationTime) MsgBox "Modifi le : " & FileTimeToDate(findData.ftLastWriteTime) MsgBox "Accd le : " & FileTimeToDate(findData.ftLastAccessTime)

Pour terminer, voici la version avec le FileSystemObject :


Dim fso As FileSystemObject, f As File Set fso = New FileSystemObject On Error GoTo fin Set f = fso.GetFile("c:\autoexec.bat") MsgBox "Cre le : " & f.DateCreated MsgBox "Modifi le : " & f.DateLastModified MsgBox "Accd le : " & f.DateLastAccessed Set f = Nothing fin: Set fso = Nothing

lien : FAQ VB

Comment savoir si un fichier donn se trouve bien dans un rpertoire ?


Auteurs : Ludolitaliano , On peut utiliser la fonction Dir() :
Dim NomFichier as string NomFichier=Dir("C:\NomDuRepertoire\*.txt")

Ici, NomFichier reoit "UnFichier.txt" le premier fichier texte d'extension txt du rpertoire. Vous pouvez rappeler la ligne qui suit pour avoir le nom du fichier suivant :
NomFichier=Dir("C:\NomDuRepertoire\*.txt")

Lorsqu'il n'y aura plus de fichier d'extension txt, la variable NomFichier sera nulle.

Comment savoir si un fichier existe ?


Auteurs : nightfall ,
If Dir("c:\temp\Erreurs.tmp", vbHidden) <> "" Then 'le fichier existe (vbHidden permet de le retrouver mme s'il est cach)

- 230 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If

lien : FAQ VB

Comment connatre la taille d'un dossier ou rpertoire ?


Auteurs : FRED.G , Il suffit de rfrencer la librairie Micosoft Scripting Runtime afin de pouvoir utiliser l'objet FileSystemObject. Ensuite, on peut utiliser un code comme celui-ci :
Dim fso as new scripting.filesystemobject Dim fld as scripting.folder Set fld = fso.getfolder("c:\Chemin\EtNomDu\Dossier") Msgbox fld.Size Set fld = nothing Set fso = nothing

Comment rcuprer la taille d'un fichier ?


Auteurs : abelman ,
Debug.Print FileLen("nomdufichier") 'Affiche en octets la taille du fichier

lien : FAQ VB

Comment obtenir la taille d'un rpertoire ?


Auteurs : Team Access , Voici une mthode simple utilisant le FileSystemObject. Placez ce code dans un module :
Public Enum UniteMemoire octets = 1 kiloOctets = 2 megaOctets = 3 End Enum Public Function TailleRepertoire(f As Folder, Optional unite As UniteMemoire = 1) As Long Dim s As Long s = f.Size Select Case unite Case 2: TailleRepertoire = Int(s / 1024) Case 3: TailleRepertoire = Int(s / 1048576) Case Else: TailleRepertoire = s End Select End Function

Un exemple d'utilisation :
Private Sub Test()

- 231 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim fs As FileSystemObject, f As Folder, strTaille As String Set fs = New FileSystemObject Set f = fs.GetFolder("c:\windows") strTaille = Format(TailleRepertoire(f), "##,##0 octets") & vbCrLf & _ Format(TailleRepertoire(f, kiloOctets), "##,##0 Ko") & vbCrLf & _ Format(TailleRepertoire(f, megaOctets), "##,##0 Mo") MsgBox strTaille End Sub

lien : FAQ VB

Comment rcuprer les proprits d'un PDF


Auteurs : Cafeine , Pour obtenir les proprits d'un PDF (nom, titre, etc.), il faut lire le fichier en mode binary. L'utilisation des RegExp permettra d'accder aux informations recherches. C'est ce que fait la fonction suivante :

Function GetPDFTitle(ByVal strFic As String, strObj As String) As String Dim Dim Dim Dim fic As Integer strExp As String strBuff As String * 1024 i As Integer

Dim reg As VBScript_RegExp_55.RegExp Dim Match As VBScript_RegExp_55.Match Dim Matches As VBScript_RegExp_55.MatchCollection Set reg = New VBScript_RegExp_55.RegExp reg.Global = True reg.MultiLine = False reg.IgnoreCase = True reg.Pattern = "/" & strObj & "\((.*)\)" Reset fic = FreeFile Open strFic For Binary Access Read As #fic Do While Not EOF(fic) Get #fic, , strBuff strExp = strExp & strBuff If reg.Test(strExp) = True Then Set Matches = reg.Execute(strExp) For Each Match In Matches GetPDFTitle = Match.SubMatches(0) Next Match Exit Function Else strExp = right(strExp, 1024) End If Loop Reset Set Match = Nothing Set Matches = Nothing

- 232 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Set reg = Nothing End Function

Exemple d'utilisation :

getpdftitle( "d:\temp\20060331164202.pdf", "Title")

Il est possible de remplacer title par un des champs suivants : CreationDate ModDate Title Creator Author

lien : lien :

Tutoriel : Le PDF gratuit pour Access Les expressions rationnelles / rgulires dans Access par la pratique

Comment savoir si un fichier est ouvert ?


Auteurs : Cafeine , Au moyen d'une fonction qui tente d'ouvrir un fichier en criture, en cas d'erreur retourne, cela indique que le fichier est dj ouvert, dans le cas contraire, on considre qu'il est ferm.

Function IsFileOpen(ByVal strFic As String) As Boolean Dim fic As Integer On Error Resume Next fic = FreeFile() Open strFic For Input Access Read Lock Read Write As fic If Err.Number = 0 Then IsFileOpen = False Close fic Else IsFileOpen = True End If End Function

Comment compter les fichiers dans un rpertoire ?


Auteurs : random , Ci-joint vous trouverez une Fonction ajouter dans un nouveau module qui vous permettra de compter le nombre de fichiers d'une ou plusieurs extensions voulues dans rpertoire donn :
Function nbfich(chemin As String, ParamArray termin() As Variant) As Long Dim fichier As String Dim extension As Variant Dim compteur As Long For Each extension In termin fichier = dir(chemin & "\*." & extension) Do Until fichier = "" - 233 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

compteur = compteur + 1 fichier = dir Loop Next extension nbfich = compteur End Function

Voici comment appeler cette Fonction :


nbfich("c:\mesimages","gif","bmp","pcx")

Vous pouvez mettre une ou plusieurs extensions spares par des virgules.

- 234 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > Systme Comment jecter le lecteur de cd-rom ?


Auteurs : nightfall ,
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _ (ByVal lpstrCommand As String, ByVal lpstrReturnString As Any, _ ByVal wReturnLength As Integer, ByVal hCallback As Integer) As Long Public Sub Ejecte() mciSendString "Set CDAudio Door Open Wait", 0&, 0, 0 End Sub

lien : FAQ VB

Comment savoir si un CD se trouve dans l'un des lecteurs du systme ?


Auteurs : nightfall , grafikm_fr , Voici une fonction qui vous renvoie le premier lecteur qui contient un CD, ou une chane vide s'il n'y en a aucun. Vous devez ajouter le FileSystemObject dans les rfrences du projet.
Public Function LecteurAvecCD() As String Dim fso As FileSystemObject, lecteur As Drive Dim strPath As String, strLecteurCD As String Set fso = New FileSystemObject For Each lecteur In fso.Drives If lecteur.DriveType = 4 Then On Error GoTo suite strPath = Dir(lecteur.path) strLecteurCD = lecteur.path Exit For End If suite: Next Set fso = Nothing LecteurAvecCD = strLecteurCD End Function

lien : FAQ VB

Comment dterminer le type d'un lecteur ?


Auteurs : grafikm_fr , nightfall , Le FileSystemObject vous permet de le faire facilement :
Public Function TypeLecteur(ByVal drvpath) As String Dim fs As FileSystemObject, d As drive, t As String Set fs = New FileSystemObject

- 235 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On Error GoTo fail Set d = fs.GetDrive(drvpath) Select Case Case 0: Case 1: Case 2: Case 3: Case 4: Case 5: End Select fin: TypeLecteur = t Exit Function fail: t = "Introuvable" Resume fin End Function d.DriveType t = "Inconnu" t = "Amovible" t = "Fixe" t = "Rseau" t = "CD-ROM" t = "Disque RAM"

Cette fonction attend en argument la lettre d'un lecteur et renvoie son type en toutes lettres. Par exemple :
MsgBox TypeLecteur("c")

lien : FAQ VB

Comment dtecter les lecteurs prsent sur l'ordinateur ?


Auteurs : Lucifer , Voici le code :
Dim fso As FileSystemObject [Lucifer] Dim d As Drive Set fso = New FileSystemObject For Each d In fso.Drives MsgBox d.DriveLetter Next d Set fso = Nothing

Comment obtenir la quantit de mmoire du systme ?


Auteurs : grafikm_fr , nightfall , Pour obtenir tous les paramtres relatifs la mmoire, placez ce code dans un module standard :
Public Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type

- 236 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Public Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Voici comment utiliser la fonction GlobalMemoryStatus :


Dim MS As MEMORYSTATUS Dim chaine As String MS.dwLength = Len(MS) GlobalMemoryStatus MS chaine = "Pourcentage RAM utilis: " & Format$(MS.dwMemoryLoad, "###,###,###,###") & " %" & vbCrLf 'on divise toutes les valeurs par 1024 pour les convertir en Kilots-octets chaine = chaine & "Taille de la mmoire physique totale: " & _ Format$(MS.dwTotalPhys / 1024, "###,###,###,###") & " Ko" & vbCrLf chaine = chaine & "Mmoire physique disponible: " & _ Format$(MS.dwAvailPhys / 1024, "###,###,###,###") & " Ko" & vbCrLf chaine = chaine & "Mmoire virtuelle totale: " & _ Format$(MS.dwTotalVirtual / 1024, "###,###,###,###") & " Ko" & vbCrLf chaine = chaine & "Mmoire virtuelle disponible: " & _ Format$(MS.dwAvailVirtual / 1024, "###,###,###,###") & " Ko" & vbCrLf

lien : FAQ VB

Comment obtenir le nom de la machine ?


Auteurs : Tofalu , abelman , Premire solution en utilisant les variables d'environnement :

MsgBox Environ("COMPUTERNAME")

Autre solution : Copiez cette dclaration au dbut d'un module standard :


Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long

Copiez ensuite cette fonction dans votre module :


Private Function NomOrdinateur() As String Dim sComputerName As String Dim iSize As Long 'Un premier appel pour avoir le nombre de caractres ncssaire pour sComputerName GetComputerName sComputerName, iSize 'On met sComputerName la bonne taille sComputerName = Space(iSize) 'Appel final GetComputerName sComputerName, iSize NomOrdinateur = sComputerName 'PS : On aurait aussi pu dclarer sComputerName avec une taille assez grande : ' (dim sComputerName as string*32). ' Un seul appel de GetComputerName aurait alors suffit

- 237 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

lien : FAQ VB

Comment obtenir les noms de toutes les machines sur un domaine Windows ?
Auteurs : grafikm_fr , Une mthode consiste passer par les appels internes de NetBIOS. La fonction NetServerEnum() n'tant disponible que sur Windows NT ou suprieur, ce code ne fonctionne pas sur Windows 9x. Copiez le code suivant dans un module :
'Dfinition des constantes Private Const MAX_PREFERRED_LENGTH As Long = -1 Private Const NERR_SUCCESS As Long = 0& Private Const ERROR_MORE_DATA As Long = 234& Private Const SV_TYPE_ALL As Long = &HFFFFFFFF Private Const SV_PLATFORM_ID_OS2 As Long = 400 Private Const SV_PLATFORM_ID_NT As Long = 500 'Masque pour obtenir la version OS Majeure partir de la variable version globale Private Const MAJOR_VERSION_MASK As Long = &HF Private Type SERVER_INFO_100 sv100_platform_id As Long sv100_name As Long End Type Private Declare Function NetServerEnum Lib "netapi32" _ (ByVal servername As Long, ByVal level As Long, buf As Any, _ ByVal prefmaxlen As Long, entriesread As Long, totalentries As Long, _ ByVal servertype As Long, ByVal domain As Long, resume_handle As Long) As Long Private Declare Function NetApiBufferFree Lib "netapi32" (ByVal Buffer As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (pTo As Any, uFrom As Any, ByVal lSize As Long) Private Declare Function lstrlenW Lib "kernel32" _ (ByVal lpString As Long) As Long Public Function GetServers(sDomain As String) As String 'liste de tous les serveurs dans un domaine Dim Dim Dim Dim Dim Dim Dim Dim Dim bufptr dwEntriesread dwTotalentries dwResumehandle se100 success nStructSize cnt resultat As As As As As As As As As Long Long Long Long SERVER_INFO_100 Long Long Long String

nStructSize = LenB(se100) 'la liste des noms est obtenue avec la fonction NetServerEnum success = NetServerEnum(0&, 100, bufptr, MAX_PREFERRED_LENGTH, dwEntriesread, _ dwTotalentries, SV_TYPE_ALL, 0&, dwResumehandle) If success = NERR_SUCCESS And _ success <> ERROR_MORE_DATA Then 'si tout se passe bien

- 238 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

For cnt = 0 To CopyMemory 'on scanne resultat = Next End If

dwEntriesread - 1 se100, ByVal bufptr + (nStructSize * cnt), nStructSize le buffer en memoire et pour chaque entre, conversion en String resultat & GetPointerToByteStringW(se100.sv100_name) & "|"

'nettoyage du buffer que le systme a reserv pour la liste des noms Call NetApiBufferFree(bufptr) 'on retourne le string contenants les noms separs par des "|" GetServers = resultat End Function Public Function GetPointerToByteStringW(ByVal dwData As Long) As String 'fonction auxilliaire qui reoit un pointeur vers une chane dans un buffer interne 'Windows et la convertit en String exploitable en VB Dim tmp() As Byte Dim tmplen As Long If dwData <> 0 Then tmplen = lstrlenW(dwData) * 2 If tmplen <> 0 Then ReDim tmp(0 To (tmplen - 1)) As Byte CopyMemory tmp(0), ByVal dwData, tmplen GetPointerToByteStringW = tmp End If End If End Function

Ensuite, la fonction GetServers est utilise de la manire suivante :


Dim maliste as String maliste=GetServers(vbNullString)

Cette fonction nous retourne la liste des noms des machines, spars par le caractre "|". Il est ensuite recommand d'appeler la fonction Split() pour copier les noms dans un tableau. lien : FAQ VB

Comment obtenir l'adresse MAC de la carte rseau ?


Auteurs : Team Access , Une adresse MAC est un identifiant stock dans une interface rseau. Copiez le code ci-dessous dans un module standard. La fonction GetMACAddress() vous renvoie l'adresse MAC.
Private Private Private Private Private Const Const Const Const Const NCBASTAT As Long = &H33 NCBNAMSZ As Long = 16 HEAP_ZERO_MEMORY As Long = &H8 HEAP_GENERATE_EXCEPTIONS As Long = &H4 NCBRESET As Long = &H32

Private Type NET_CONTROL_BLOCK 'definition du type net control Block ncb_command As Byte ncb_retcode As Byte - 239 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ncb_lsn ncb_num ncb_buffer ncb_length ncb_callname ncb_name ncb_rto ncb_sto ncb_post ncb_lana_num ncb_cmd_cplt ncb_reserve(9) ncb_event End Type

As As As As As As As As As As As As As

Byte Byte Long Integer String * NCBNAMSZ String * NCBNAMSZ Byte Byte Long Byte Byte Byte Long

Private Type ADAPTER_STATUS 'definition du type pour definir le statut de l'adaptateur rseau adapter_address(5) As Byte rev_major As Byte reserved0 As Byte adapter_type As Byte rev_minor As Byte duration As Integer frmr_recv As Integer frmr_xmit As Integer iframe_recv_err As Integer xmit_aborts As Integer xmit_success As Long recv_success As Long iframe_xmit_err As Integer recv_buff_unavail As Integer t1_timeouts As Integer ti_timeouts As Integer Reserved1 As Long free_ncbs As Integer max_cfg_ncbs As Integer max_ncbs As Integer xmit_buf_unavail As Integer max_dgram_size As Integer pending_sess As Integer max_cfg_sess As Integer max_sess As Integer max_sess_pkt_size As Integer name_count As Integer End Type Private Type NAME_BUFFER name As String * NCBNAMSZ name_num As Integer name_flags As Integer End Type Private Type ASTAT adapt As ADAPTER_STATUS NameBuff(30) As NAME_BUFFER End Type Private Declare Function Netbios Lib "netapi32" (pncb As NET_CONTROL_BLOCK) As Byte Private Declare Sub CopyMemory Lib "kernel32" _ Alias "RtlMoveMemory" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long) Private Declare Function GetProcessHeap Lib "kernel32" () As Long Private Declare Function HeapAlloc Lib "kernel32" _ (ByVal hHeap As Long, ByVal dwFlags As Long, ByVal dwBytes As Long) As Long Private Declare Function HeapFree Lib "kernel32" _

- 240 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

(ByVal hHeap As Long, ByVal dwFlags As Long, lpMem As Any) As Long Public Function GetMACAddress() As String Dim Dim Dim Dim tmp As pASTAT NCB As AST As String As Long NET_CONTROL_BLOCK ASTAT

NCB.ncb_command = NCBRESET Call Netbios(NCB) NCB.ncb_callname = "* NCB.ncb_command = NCBASTAT "

NCB.ncb_lana_num = 0 NCB.ncb_length = Len(AST) 'allocation de la memoire dans le tas du processus pASTAT = HeapAlloc(GetProcessHeap(), HEAP_GENERATE_EXCEPTIONS Or _ HEAP_ZERO_MEMORY, NCB.ncb_length) If pASTAT = 0 Then Debug.Print "pas assez de mmoire!" 'bon, y a peu de chance que ca arrive :o) Exit Function End If NCB.ncb_buffer = pASTAT 'appel de la fonction netbios qui va nous donner les stats de la carte '(dont l'adresse MAC) Call Netbios(NCB) CopyMemory AST, NCB.ncb_buffer, Len(AST) tmp = Right$("00" & Hex(AST.adapt.adapter_address(0)), Right$("00" & Hex(AST.adapt.adapter_address(1)), Right$("00" & Hex(AST.adapt.adapter_address(2)), Right$("00" & Hex(AST.adapt.adapter_address(3)), Right$("00" & Hex(AST.adapt.adapter_address(4)), Right$("00" & Hex(AST.adapt.adapter_address(5)), 'dsallocation de la mmoire... HeapFree GetProcessHeap(), 0, pASTAT GetMACAddress = tmp End Function 2) 2) 2) 2) 2) 2) & & & & & " " " " " " " " " " & & & & & _ _ _ _ _

lien : lien : lien :

Comment Rcuprer l'adresse MAC d'un PC distant http://access.developpez.com/sources/?page=reseau#mac1 http://access.developpez.com/sources/?page=reseau#mac2

Comment ouvrir la fentre de connexion ou dconnexion un lecteur rseau ?


Auteurs : grafikm_fr , nightfall , Placez ces dclarations dans un module standard :
Public Declare Function WNetConnectionDialog Lib "mpr.dll" (ByVal ByVal Public Declare Function WNetDisconnectDialog Lib "mpr.dll" (ByVal ByVal Public Const RESOURCETYPE_DISK = &H1, RESOURCETYPE_PRINT = &H2 hwnd As Long, _ dwType As Long) As Long hwnd As Long, _ dwType As Long) As Long

Ensuite, utilisez l'appel adquat dans chacune des situations :


- 241 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim x As Long 'Connecter un lecteur rseau x = WNetConnectionDialog(Me.hwnd, RESOURCETYPE_DISK) 'Dconnecter un lecteur rseau x = WNetDisconnectDialog(Me.hwnd, RESOURCETYPE_DISK) 'Connecter une imprimante x = WNetConnectionDialog(Me.hwnd, RESOURCETYPE_PRINT) 'Dconnecter une imprimante x = WNetDisconnectDialog(Me.hwnd, RESOURCETYPE_PRINT)

lien : FAQ VB

Comment obtenir la liste des ports srie, parallle, rseau ouverts ?


Auteurs : HPJ , grafikm_fr , Copiez ce code dans un module :
Private Declare Function EnumPorts Lib "winspool.drv" Alias "EnumPortsA" _ (ByVal pName As String, ByVal nLevel As Long, _ lpbPorts As Any, ByVal cbBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long Private Declare Function lstrlenA Lib "kernel32" (lpString As Any) As Long Private Declare Function lstrcpyA Lib "kernel32" (lpString1 As Any, lpString2 As Any) As Long Private Const SIZEOFPORT_INFO_2 = 20 Private Type PORT_INFO_2 pPortName As Long pMonitorName As Long pDescription As Long fPortType As Long Reserved As Long End Type Private Enum PortTypes PORT_TYPE_WRITE = &H1 PORT_TYPE_READ = &H2 PORT_TYPE_REDIRECTED = &H4 PORT_TYPE_NET_ATTACHED = &H8 End Enum Private Function GetStrFromPtrA(lpszA As Long) As String GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0) Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA) End Function Public Function GetPorts() As String Dim pcbNeeded As Long, pcReturned As Long, Boucle As Integer Dim PortI2() As PORT_INFO_2 Dim StrPortType As String, ret As String EnumPorts vbNullString, 2, 0, 0, pcbNeeded, pcReturned If pcbNeeded Then ReDim PortI2((pcbNeeded / SIZEOFPORT_INFO_2)) If EnumPorts(vbNullString, 2, PortI2(0), pcbNeeded, pcbNeeded, pcReturned) Then For Boucle = 0 To (pcReturned - 1) With PortI2(Boucle) StrPortType = ""

- 242 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If (.fPortType And PORT_TYPE_WRITE) Then StrPortType = "write " If (.fPortType And PORT_TYPE_READ) Then StrPortType = StrPortType & "read " If (.fPortType And PORT_TYPE_REDIRECTED) Then StrPortType = StrPortType & "redirected " If (.fPortType And PORT_TYPE_NET_ATTACHED) Then StrPortType = StrPortType & "network" ret = ret & GetStrFromPtrA(.pPortName) & " (" & StrPortType & ")" & "|" End With Next End If End If If Len(ret) > 0 Then ret = Left(ret, Len(ret) - 1) GetPorts = ret End Function

La fonction GetPorts renvoie la liste des ports ouverts, separs par le caractre "|". Il est ensuite recommand d'appeler la fonction Split() afin de copier les lments dans un tableau. lien : FAQ VB

Comment changer la rsolution de l'cran ?


Auteurs : nightfall , Copiez ce code source dans un module. Vous pourrez alors changer la rsolution par un simple appel la procdure ResolutionEcran(). Pour passer par exemple une rsolution de 800 x 600 :
ResolutionEcran 800, 600 Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" _ (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" _ (lpDevMode As Any, ByVal dwflags As Long) As Long Private Private Private Private Const Const Const Const CCHDEVICENAME = 32 CCHFORMNAME = 32 DM_WIDTH = &H80000 DM_HEIGHT = &H100000

Private Type DEVMODE dmDeviceName As String * CCHDEVICENAME dmSpecVersion As Integer dmDriverVersion As Integer dmSize As Integer dmDriverExtra As Integer dmFields As Long dmOrientation As Integer dmPaperSize As Integer dmPaperLength As Integer dmPaperWidth As Integer dmScale As Integer dmCopies As Integer dmDefaultSource As Integer dmPrintQuality As Integer dmColor As Integer dmDuplex As Integer dmYResolution As Integer dmTTOption As Integer dmCollate As Integer dmFormName As String * CCHFORMNAME dmUnusedPadding As Integer - 243 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dmBitsPerPel As Integer dmPelsWidth As Long dmPelsHeight As Long dmDisplayFlags As Long dmDisplayFrequency As Long End Type Public Sub ResolutionEcran(sgWidth As Long, sgHeight As Long) Dim blTMP As Boolean, lgTMP As Long, dmEcran As DEVMODE, res As Long lgTMP = 0 Do blTMP = EnumDisplaySettings(0, lgTMP, dmEcran) lgTMP = lgTMP + 1 Loop While blTMP <> 0 dmEcran.dmFields = DM_WIDTH Or DM_HEIGHT dmEcran.dmPelsWidth = sgWidth dmEcran.dmPelsHeight = sgHeight lgTMP = ChangeDisplaySettings(dmEcran, 0) End Sub

lien : FAQ VB lien : Comment connatre la rsolution de l'cran ?

Comment dtecter le changement de la rsolution de l'cran ?


Auteurs : nightfall , Sous Windows, toutes les fentres des applications reoivent le message WM_DISPLAYCHANGE quand la rsolution a chang. Le principe consiste donc intercepter ce message grce au sousclassement. Copiez ce code source dans le module de la form.
Private Sub Form_Load() 'Remplace la procdure de fentre par dfaut par notre propre procdure oldWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc) End Sub Private Sub Form_Unload(Cancel As Integer) 'Remet la procdure de fentre par dfaut SetWindowLong hwnd, GWL_WNDPROC, oldWndProc End Sub

Et celui-ci dans un module standard.

Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _ (ByVal hwnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Const GWL_WNDPROC = (-4) Public oldWndProc As Long Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _ (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _ ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long - 244 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Const WM_DISPLAYCHANGE = &H7E Public Function WindowProc(ByVal hwnd As Long, ByVal msg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long If msg = WM_DISPLAYCHANGE Then 'la rsolution a chang End If 'Appelle la procdure de fentre par dfaut pour que Windows puisse traiter l'vnement WindowProc = CallWindowProc(oldWndProc, hwnd, msg, wParam, lParam) End Function

Attention, la procdure Form_Unload doit obligatoirement tre excute. Si vous dboguez et cliquez sur Stop, l'diteur VB plantera. Si vous fermez votre programme avec l'instruction End, la procdure Form_Unload ne sera pas excute et votre programme plantera. lien : FAQ VB

Comment rcuprer les paramtres rgionaux, comme le sparateur dcimal ou celui des
Auteurs : nightfall , Les paramtres rgionaux s'obtiennent grce la fonction GetLocaleInfo() de l'API Windows. Les paramtres de cette fonction sont : locale : identifiant reprsentant le type d'information locale demand (systme ou utilisateur) LCType : valeur indiquant quel paramtre doit tre retrouv. Ce doit tre une des constantes LCTYPE lpLCData : buffer recevant la valeur du paramtre demand cchData : longueur du buffer Voici les dclarations des deux fonctions dont vous aurez besoin, ainsi que quelques-unes des constantes LCTYPE disponibles :
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal locale As Long, _ ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long Private Private Private Private Private Private Const Const Const Const Const Const LOCALE_IDATE = &H21 'format de date courte : 0 = M-J-A, 1 = J-M-A, 2 = A-M-J LOCALE_ILDATE = &H22 'format de date longue LOCALE_SCOUNTRY = &H6 'pays en toutes lettres LOCALE_SNATIVELANGNAME = &H4 'langue, en toutes lettres LOCALE_STHOUSAND = &HF 'sparateur des milliers LOCALE_SDECIMAL = &HE 'sparateur dcimal

La fonction ci-dessous renvoie la valeur du paramtre rgional dont la constante LCTYPE est passe en paramtre :
Private Function ParametreRegional(parametre As Long) As String Dim Dim Dim Dim lngResultat As Long buffer As String pos As Integer locale As Long

'rcupre l'identifiant de l'information locale de type utilisateur locale = GetUserDefaultLCID()

- 245 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'renvoie le nombre de caractres ncessaire pour recevoir la valeur du paramtre demand lngResultat = GetLocaleInfo(locale, parametre, buffer, 0) buffer = String(lngResultat, 0) GetLocaleInfo locale, parametre, buffer, lngResultat pos = InStr(buffer, Chr(0)) If pos > 0 Then ParametreRegional = Left(buffer, pos - 1) End Function

lien : FAQ VB

Comment faire une pause pendant un temps dfini ?


Auteurs : nightfall , Placez cette ligne dans la partie Dclarations d'un module :
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Vous pourrez ainsi faire une pause de 2 secondes avec l'appel suivant :
Sleep 2000

lien : FAQ VB

Comment connatre la version de Windows sur laquelle mon application est excute ?
Auteurs : nightfall , Morgan BILLY , La fonction VersionWindows() de ce code source retourne la version de Windows et place dans le paramtre sp le service pack qui serait ventuellement install.
Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer Private Const VER_PLATFORM_WIN32_WINDOWS = 1 Private Const VER_PLATFORM_WIN32_NT = 2 Private Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Public Function VersionWindows(ByRef sp As String) As String Dim os As OSVERSIONINFO os.dwOSVersionInfoSize = Len(os) GetVersionExA os sp = "" With os Select Case .dwPlatformId Case VER_PLATFORM_WIN32_WINDOWS Select Case .dwMinorVersion Case 0 VersionWindows = "95"

- 246 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Case 10 VersionWindows = "98" Case 90 VersionWindows = "Me" End Select Case VER_PLATFORM_WIN32_NT Select Case .dwMajorVersion Case 3 VersionWindows = "NT 3.51" Case 4 VersionWindows = "NT 4.0" Case 5 If .dwMinorVersion = 0 Then VersionWindows = "2000" Else VersionWindows = "XP" End If Case 6 VersionWindows = "VISTA" End Select End Select If InStr(.szCSDVersion, Chr(0)) > 0 Then sp = Left(.szCSDVersion, InStr(.szCSDVersion, Chr(0)) - 1) End If End With End Function

lien : FAQ VB

Comment rcuprer des variables d'environnement dans Access


Auteurs : Tofalu , Utiliser la fonction
Environ$(Expression)

O expression est le nom de la variable d'environement. Exemple :


Msgbox Environ$("PATH")

Comment rcuprer le chemin UNICODE d'un lecteur ?


Auteurs : Gal Donat ,
Private Const RESOURCETYPE_ANY = &H0 Private Const RESOURCE_CONNECTED = &H1 Private Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As Long lpRemoteName As Long lpComment As Long lpProvider As Long End Type

- 247 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, _ ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, _ lpBuffer As Any, lpBufferSize As Long) As Long Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As Long Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long Function LetterToUNC(DriveLetter As String) As String Dim hEnum As Long Dim NetInfo(1023) As NETRESOURCE Dim entries As Long Dim nStatus As Long Dim LocalName As String Dim UNCName As String Dim i As Long Dim r As Long ' Begin the enumeration nStatus = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0&, ByVal 0&, hEnum) LetterToUNC = DriveLetter 'Check for success from open enum If ((nStatus = 0) And (hEnum <> 0)) Then ' Set number of entries entries = 1024 ' Enumerate the resource nStatus = WNetEnumResource(hEnum, entries, NetInfo(0), CLng(Len(NetInfo(0))) * 1024) ' Check for success If nStatus = 0 Then For i = 0 To entries - 1 ' Get the local name LocalName = "" If NetInfo(i).lpLocalName <> 0 Then LocalName = Space(lstrlen(NetInfo(i).lpLocalName) + 1) r = lstrcpy(LocalName, NetInfo(i).lpLocalName) End If ' Strip null character from end If Len(LocalName) <> 0 Then LocalName = Left(LocalName, (Len(LocalName) - 1)) End If If UCase$(LocalName) = UCase$(DriveLetter) Then ' Get the remote name UNCName = "" If NetInfo(i).lpRemoteName <> 0 Then UNCName = Space(lstrlen(NetInfo(i).lpRemoteName) + 1) r = lstrcpy(UNCName, NetInfo(i).lpRemoteName) End If ' Strip null character from end If Len(UNCName) <> 0 Then UNCName = Left(UNCName, (Len(UNCName) - 1)) End If ' Return the UNC path to drive 'added the [] to seperate on printout only LetterToUNC = UNCName ' Exit the loop Exit For End If

- 248 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Next i End If End If ' End enumeration nStatus = WNetCloseEnum(hEnum) End Function

Appelez la fonction directement comme ceci :


LetterToUNC("E:")

et elle renvoie : \\hp-ux004\oracle

Comment faire un "ping" depuis Access


Auteurs : Gal Donat , Il faut utiliser la fonction Ping(HostName As String) du code suivant :
Const SOCKET_ERROR = 0 Private Type WSAdata wVersion As Integer wHighVersion As Integer szDescription(0 To 255) As Byte szSystemStatus(0 To 128) As Byte iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As Long End Type Private Type Hostent h_name As Long h_aliases As Long h_addrtype As Integer h_length As Integer h_addr_list As Long End Type Private Type IP_OPTION_INFORMATION TTL As Byte Tos As Byte Flags As Byte OptionsSize As Long OptionsData As String * 128 End Type Private Type IP_ECHO_REPLY Address(0 To 3) As Byte Status As Long RoundTripTime As Long DataSize As Integer Reserved As Integer data As Long Options As IP_OPTION_INFORMATION End Type Private Declare Function GetHostByName Lib "wsock32.dll" Alias "gethostbyname" (ByVal HostName As String) As Long Private Declare Function WSAStartup Lib "wsock32.dll" (ByVal wVersionRequired&, lpWSAdata As WSAdata) As Long Private Declare Function WSACleanup Lib "wsock32.dll" () As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)

- 249 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Declare Function IcmpCreateFile Lib "icmp.dll" () As Long Private Declare Function IcmpCloseHandle Lib "icmp.dll" (ByVal HANDLE As Long) As Boolean Private Declare Function IcmpSendEcho Lib "ICMP" (ByVal IcmpHandle As Long, ByVal DestAddress As Long, _ ByVal RequestData As String, _ ByVal RequestSize As Integer, RequestOptns As IP_OPTION_INFORMATION, ReplyBuffer As IP_ECHO_REPLY, _ ByVal ReplySize As Long, ByVal TimeOut As Long) As Boolean Private Function Ping(HostName As String) As Integer Dim hFile As Long, lpWSAdata As WSAdata Dim hHostent As Hostent, AddrList As Long Dim Address As Long, rIP As String Dim OptInfo As IP_OPTION_INFORMATION Dim EchoReply As IP_ECHO_REPLY Call WSAStartup(&H101, lpWSAdata) If GetHostByName(HostName + String(64 - Len(HostName), 0)) <> SOCKET_ERROR Then CopyMemory hHostent.h_name, ByVal GetHostByName(HostName + String(64 - Len(HostName), 0)), Len(hHostent) CopyMemory AddrList, ByVal hHostent.h_addr_list, 4 CopyMemory Address, ByVal AddrList, 4 End If hFile = IcmpCreateFile() If hFile = 0 Then MsgBox "Unable to Create File Handle" Exit Function End If OptInfo.TTL = 255 If IcmpSendEcho(hFile, Address, String(32, "A"), 32, OptInfo, EchoReply, Len(EchoReply) + 8, 2000) Then rIP = CStr(EchoReply.Address(0)) + "." + CStr(EchoReply.Address(1)) + "." + CStr(EchoReply.Address(2)) + "." + _ CStr(EchoReply.Address(3)) Else Ping = -1 End If If EchoReply.Status = 0 Then Ping = EchoReply.RoundTripTime End If Call IcmpCloseHandle(hFile) Call WSACleanup End Function

Cette fonction renvoie -1 en timeout, sinon elle renvoie le temps en millisecondes pour tablir le ping.

Comment ouvrir la fentre de connexion ou dconnexion un lecteur rseau ?


Auteurs : grafikm_fr , nightfall , Placez ces dclarations dans un module standard :
Public Declare Function WNetConnectionDialog Lib "mpr.dll" (ByVal ByVal Public Declare Function WNetDisconnectDialog Lib "mpr.dll" (ByVal ByVal Public Const RESOURCETYPE_DISK = &H1, RESOURCETYPE_PRINT = &H2 hwnd As Long, _ dwType As Long) As Long hwnd As Long, _ dwType As Long) As Long

Ensuite, utilisez l'appel adquat dans chacune des situations :


Dim x As Long 'Connecter un lecteur rseau x = WNetConnectionDialog(Me.hwnd, RESOURCETYPE_DISK) - 250 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Dconnecter un lecteur rseau x = WNetDisconnectDialog(Me.hwnd, RESOURCETYPE_DISK) 'Connecter une imprimante x = WNetConnectionDialog(Me.hwnd, RESOURCETYPE_PRINT) 'Dconnecter une imprimante x = WNetDisconnectDialog(Me.hwnd, RESOURCETYPE_PRINT)

lien : Connecter et dconnecter un lecteur rseau

Comment obtenir la liste des ports srie, parallle, rseau ouverts ?


Auteurs : HPJ , grafikm_fr , Copiez ce code dans un module :
Private Declare Function EnumPorts Lib "winspool.drv" Alias "EnumPortsA" _ (ByVal pName As String, ByVal nLevel As Long, _ lpbPorts As Any, ByVal cbBuf As Long, _ pcbNeeded As Long, pcReturned As Long) As Long Private Declare Function lstrlenA Lib "kernel32" (lpString As Any) As Long Private Declare Function lstrcpyA Lib "kernel32" (lpString1 As Any, lpString2 As Any) As Long Private Const SIZEOFPORT_INFO_2 = 20 Private Type PORT_INFO_2 pPortName As Long pMonitorName As Long pDescription As Long fPortType As Long Reserved As Long End Type Private Enum PortTypes PORT_TYPE_WRITE = &H1 PORT_TYPE_READ = &H2 PORT_TYPE_REDIRECTED = &H4 PORT_TYPE_NET_ATTACHED = &H8 End Enum Private Function GetStrFromPtrA(lpszA As Long) As String GetStrFromPtrA = String$(lstrlenA(ByVal lpszA), 0) Call lstrcpyA(ByVal GetStrFromPtrA, ByVal lpszA) End Function Public Function GetPorts() As String Dim pcbNeeded As Long, pcReturned As Long, Boucle As Integer Dim PortI2() As PORT_INFO_2 Dim StrPortType As String, ret As String EnumPorts vbNullString, 2, 0, 0, pcbNeeded, pcReturned If pcbNeeded Then ReDim PortI2((pcbNeeded / SIZEOFPORT_INFO_2)) If EnumPorts(vbNullString, 2, PortI2(0), pcbNeeded, pcbNeeded, pcReturned) Then For Boucle = 0 To (pcReturned - 1) With PortI2(Boucle) StrPortType = "" If (.fPortType And PORT_TYPE_WRITE) Then StrPortType = "write " If (.fPortType And PORT_TYPE_READ) Then StrPortType = StrPortType & "read " If (.fPortType And PORT_TYPE_REDIRECTED) Then StrPortType = StrPortType & "redirected "

- 251 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If (.fPortType And PORT_TYPE_NET_ATTACHED) Then StrPortType = StrPortType & "network" ret = ret & GetStrFromPtrA(.pPortName) & " (" & StrPortType & ")" & "|" End With Next End If End If If Len(ret) > 0 Then ret = Left(ret, Len(ret) - 1) GetPorts = ret End Function

La fonction GetPorts renvoie la liste des ports ouverts, separs par le caractre "|". Il est ensuite recommand d'appeler la fonction Split() afin de copier les lments dans un tableau. lien : FAQ VB

Comment connatre la rsolution de l'cran ?


Auteurs : fdraven , Mettez ce code dans un module :

'***************** Code Start ********************** ' Private Declare Function apiGetSys Lib "user32" _ Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const SM_CXSCREEN = 0 SM_CYSCREEN = 1 SM_CXVSCROLL = 2 SM_CYHSCROLL = 3 SM_CYCAPTION = 4 SM_CXBORDER = 5 SM_CYBORDER = 6 SM_CXDLGFRAME = 7 SM_CYDLGFRAME = 8 SM_CYVTHUMB = 9 SM_CXHTHUMB = 10 SM_CXICON = 11 SM_CYICON = 12 SM_CXCURSOR = 13 SM_CYCURSOR = 14 SM_CYMENU = 15 SM_CXFULLSCREEN = 16 SM_CYFULLSCREEN = 17 SM_CYKANJIWINDOW = 18 SM_MOUSEPRESENT = 19 SM_CYVSCROLL = 20 SM_CXHSCROLL = 21 SM_DEBUG = 22 SM_SWAPBUTTON = 23 SM_RESERVED1 = 24 SM_RESERVED2 = 25 SM_RESERVED3 = 26 SM_RESERVED4 = 27 SM_CXMIN = 28 SM_CYMIN = 29 SM_CXSIZE = 30 SM_CYSIZE = 31 SM_CXFRAME = 32 SM_CYFRAME = 33

- 252 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Private Private Private Private Private Private Private Private Private Private

Const Const Const Const Const Const Const Const Const Const Const

SM_CXMINTRACK = 34 SM_CYMINTRACK = 35 SM_CXDOUBLECLK = 36 SM_CYDOUBLECLK = 37 SM_CXICONSPACING = 38 SM_CYICONSPACING = 39 SM_MENUDROPALIGNMENT = 40 SM_PENWINDOWS = 41 SM_DBCSENABLED = 42 SM_CMOUSEBUTTONS = 43 SM_CMETRICS = 44

Function Resol(strWhat As String) As String Dim strRet As String Select Case LCase(strWhat) Case "resolution": strRet = apiGetSys(SM_CXSCREEN) & "x" _ & apiGetSys(SM_CYSCREEN) Case "windowsize": strRet = apiGetSys(SM_CXFULLSCREEN) & "x" _ & apiGetSys(SM_CYFULLSCREEN) End Select Resol = strRet End Function

Voici un exemple de code qui vous affichera la rsolution de l'cran :

Dim test As String test = "resolution" MsgBox "Rsolution de l'cran : " & Resol(test)

lien :

Comment changer la rsolution de l'cran ?

Comment communiquer avec le port COM depuis Access ?


Auteurs : hhkiki , Le plus simple: il faut utiliser MSCOMM32.OCX Mais lorsque l'on installe MSComm et que l'on veut l'utiliser dans un formulaire, la rponse est simple "vous ne possdez pas la licence", car l'ocx est fournit avec visual basic pro. Deuxime tape: Dans le formulaire ouvert en mode cration, il faut insrer le ControlActiveX: Microsoft communications control, V6.0. Troisime tape: Le paramtrage du port ce fait dans la boite des proprits du control MSComm : -numro de port, vitesse, parit, nombre de bits,... et ceci en fonction du matriel branch sur le port. Pour les autres paramtres: RThreshold, SThreshold, RTSEnable, DTREnable et InputLen, Microsoft Quatrime tape: Voici un exemple de code qui exploite le port COM visitez le site de

Private Sub Form_Load() MSComm1.PortOpen = True End Sub

'ouverture du port

- 253 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False 'fermeture du port End Sub Private Sub MSComm1_OnComm() Dim InBuff As String Dim Lg As String Select Case MSComm1.CommEvent ' Erreurs Case comEventBreak ' Un vnement d'arrt a t reu. Case comEventCDTO ' Expiration du dlai CD (RLSD). Case comEventCTSTO ' Expiration du dlai CTS. Case comEventDSRTO ' Expiration du dlai DSR. Case comEventFrame ' Erreur de trame. Case comEventOverrun ' Perte de donnes. Case comEventRxOver ' Dpassement de capacit du tampon de rception. Case comEventRxParity ' Erreur de parit. Case comEventTxFull ' Tampon de transmission satur. Case comEventDCB ' Erreur inattendue lors de la rcupration de DCB] ' vnements Case comEvCD ' Modification dans la ligne CD. Case comEvCTS ' Modification dans la ligne CTS. Case comEvDSR ' Modification dans la ligne DSR. Case comEvRing ' Modification dans l'indicateur d'appel. Case comEvReceive ' Rception d'un nombre RThreshold de caractres. InBuff = MSComm1.Input 'lecture du tampon de stockage [b]Lg = Right(InBuff, 13) 'mon code pour enlever les caracteres Lg = Left(Lg, 10) ASCII envoy au ddut et la fin de Me!Texte1 = Lg l'mission[/b] Case comEvSend ' Un nombre Sthreshold de caractres se trouve dans le tampon de transmission. Case comEvEOF ' Un caractre indiquant la fin du fichier (EOF) a t trouv dans le flux d'entre End Select End Sub

si aprs cela la communication n'est pas tablie, pausez-vous la question: est-ce que mon cble convient ? Utilisez HyperTerminal de Windows pour faire des essais de lecture direct.

lien : lien : lien :

Le Microsoft Comm Control 6.0 Piloter une sortie srie RS232 Comment Use MSCOMM32.OCX

Comment formater une disquette depuis Access ?


Auteurs : loufab , Pour arriver vos fins intressez-vous la fonction SHFormatDrive(). Vous trouverez l'aide de cette fonction en anglais dans le lien ci-dessous.

lien :

MSDN SHFormatDrive Function

Obtenir la relation entre le nombre de pixels affichs l'cran et une mesure physique.
Auteurs : Tofalu , La fonction GetDeviceCaps de l'API Windows permet de connatre le nombre de pixels par pouces en rsolution horizontale et verticale. En haut de module dclarer les fonctions suivantes :
- 254 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Public Public Public Public

Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long Const LOGPIXELSX=88 Const LOGPIXELSY=90

Puis dans votre code, utiliser ainsi :

'Rcupre le nombre de pixel par pouce NbPointParPouceX = GetDeviceCaps(GetDC(0), 88) NbPointParPouceY = GetDeviceCaps(GetDC(0), 90)

Le rsultat est donc donn en pixels par pouce. Sachant qu'un pouce=1440 Twips (unit de mesure par dfaut en vba), il suffit alors de diviser le rsultat par 1440.

Comment agir sur la calculette Windows ?


Auteurs : Arkham46 , Voici un exemple de module dont les fonctions permettent respectivement de tester si la calculatrice est ouverte et de la fermer.
Private Declare Function FindWindowEx Lib "user32" Alias _ "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _ ByVal lpsz1 As String, ByVal lpsz2 As String) As Long Private Declare Function SendMessage Lib "user32" Alias _ "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Any) As Long Private Const WM_CLOSE = &H10 Public Function IsCalcOpen() As Boolean IsCalcOpen = (FindWindowEx(0&, 0&, "SciCalc", vbNullString) <> 0) End Function Public Sub CloseCalc() Dim lHwnd As Long lHwnd = FindWindowEx(0&, 0&, "SciCalc", vbNullString) If lHwnd <> 0 Then SendMessage lHwnd, WM_CLOSE, 0, 0& End Sub

Comment verrouiller la station de travail ?


Auteurs : Tofalu , Il faut utiliser l'API Windows et plus particulirement la fonction LockStation Dans un module :

Private Declare Function LockWorkStation Lib "user32.dll" () As Long Public Sub Verrouiller() LockWorkStation End Sub

- 255 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Il suffit alors d'appeler la mthode Verrouiller l o vous en avez besoin.

Comment arrter ou bien redmarrer le systme ?


Auteurs : Tofalu , Pour cela, il faut utiliser l'API ExitWindowsEx. Dans un module placer les dclarations suivantes :

Public Public Public Public Public

Const EWX_LOGOFF = 0 Const EWX_SHUTDOWN = 1 Const EWX_REBOOT = 2 Const EWX_FORCE = 4 Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long)

La constante LOGOFF ferme la session, SHUTDOWN arrte la machine, REBOOT redmarre. La constante FORCE peut tre utiliser en addition d'une des 3 autres afin de forcer l'arrt des applications sans demande de confirmation de sortie. Exemple pour arrter l'ordinateur :

ExitWindowsEx(EWX_SHUTDOWN, 0)

La mme chose en forant l'arrt des applications :

ExitWindowsEx(EWX_SHUTDOWN OR EWX_FORCE, 0)

Comment connaitre le rpertoire d'installation ACCESS ?


Auteurs : kloun , Ce code permet de renvoyer le rpertoire d'installation d'Access :
SysCmd(acSysCmdAccessDir)

- 256 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA

- 257 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Le langage Comment choisir entre un module standard et un module de classe ?
Auteurs : nightfall , Un module standard contient un ensemble de fonctions et de procdures, plus toutes les dclarations qui leur sont ncessaires. Parmi ces dclarations, fonctions, et procdures, certaines peuvent tre de porte prive, c'est--dire que l'on ne peut pas y accder partir d'un autre module. Sera donc de porte prive tout ce qui n'est utilis que dans le module standard lui-mme. Un module de classe vous permettra de crer une classe. Une classe dcrit un objet particulier : quelles sont ses caractristiques (appeles proprits) et ce qu'il peut faire (quelles sont ses mthodes). Par exemple, chaque form de votre projet correspond une classe. Ses proprits sont Caption, BorderStyle, etc... et ses mthodes Show, Hide, etc... Dans une classe, une mthode s'crit sous la forme d'une fonction de porte publique. Voyons comment s'crit une proprit, par exemple la proprit Marque de la classe Voiture :
'Variable prive reprsentant la marque, on ne peut pas y accder depuis l'extrieur Private m_Marque As String 'Property Get est la fonction appele lorsque l'on veut obtenir la valeur de la proprit Property Get Marque() As String Marque = m_Marque End Property 'Property Let est la procdure appele lorsque l'on veut modifier la valeur de la proprit. 'Si elle n'existe pas, la proprit sera en lecture seule. 'Elle doit avoir un argument qui a le type de la proprit, 'soit le mme que celui de la valeur renvoye par Property Get. Property Let Marque(value As String) m_Marque = value End Property

Et pour finir, un exemple d'utilisation de la classe Voiture :


Dim UneVoiture As Voiture Set UneVoiture = New Voiture UneVoiture.Marque = "Renault" MsgBox UneVoiture.Marque Set UneVoiture = Nothing

lien :

FAQ VB

Qu'est-ce que ByVal et ByRef ?


Auteurs : Team Access , Les arguments d'une fonction ou d'une procdure peuvent tre passs de deux faons diffrentes : par valeur ou par rfrence. Si un argument est prcd de Byval, il est pass par valeur, et s'il est prcd de ByRef, ou de ni l'un ni l'autre, il est pass par rfrence. Passage par valeur (ByVal) Consiste passer la valeur de l'argument la procdure, et non son adresse. La procdure utilise alors une copie de la variable. La valeur de la variable ne peut pas tre modifie par la procdure. Passage par rfrence (ByRef) Ici c'est l'adresse de la variable qui est passe la procdure. La variable peut donc tre modifie par la procdure.

- 258 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub Echange(ByVal a As Integer, ByVal b As Integer) Dim temp As Integer temp = a a = b b = temp End Sub Private Sub Echange2(a As Integer, b As Integer) Dim temp As Integer temp = a a = b b = temp End Sub Private Sub Test() x = 5 y = 3 Echange x, y MsgBox x & " " & y Echange2 x, y MsgBox x & " " & y End Sub

'affiche "5 3", les valeurs n'ont pas t modifies par la procdure

'affiche "3 5", parce que les valeurs ont t modifies

lien : FAQ VB

Comment faire une procdure ou une fonction qui a un ou plusieurs paramtres optionnels ?
Auteurs : nightfall , Un paramtre est optionnel s'il est prcd du mot cl Optional. Les paramtres placs aprs doivent tre galement optionnels. Vous pouvez galement spcifier une valeur par dfaut :
Private Sub Affiche(Optional x As Long=10) End Sub

Pour les paramtres de type Variant et sans valeur par dfaut, vous avez le moyen de savoir si une valeur a t spcifie lors de l'appel en utilisant IsMissing :
Private Sub Affiche(Optional x As Variant) If IsMissing(x) Then 'pas de valeur spcifie Else 'une valeur a t spcifie pour x End If End Sub

lien : FAQ VB

Comment passer un tableau en paramtres ?


Auteurs : nightfall , L'exemple suivant affiche les lments d'un tableau :
- 259 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub AfficheElements(t() As Long) Dim i As Long For i = LBound(t) To UBound(t) MsgBox t(i) Next End Sub Private Sub Form_Load() Dim t(1 To 3) As Long t(1) = 1 t(2) = 4 t(3) = 5 AfficheElements t() End Sub

lien : FAQ VB

Comment tester si un tableau dynamique est vide ?


Auteurs : nightfall , La fonction UBound() renvoie l'indice maximum autoris pour un tableau donn. Si le tableau est vide, elle cre une erreur. La fonction suivante utilise ce principe. Elle renvoie vrai si le tableau pass en paramtre contient au moins un lment.
Public Function ContientElements(ByVal tableau As Variant) As Boolean Dim indice As Long On Error goto vide indice = UBound(tableau) ContientElements = True Exit Function vide: End Function

lien : FAQ VB

Comment faire une fonction qui renvoie un rsultat ?


Auteurs : nightfall , La fonction suivante renvoie un boolen : Vrai si le nombre reu en paramtre est pair, et faux sinon.
Private Function EstPaire(x As Long) As Boolean EstPaire = (x Mod 2 = 0)

- 260 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

lien : FAQ VB

Comment faire une fonction qui renvoie un tableau ?


Auteurs : Jean-Marc Rabilloud , Dans l'exemple ci-dessous, la fonction RGBparTableau() renvoie les composantes rouge, verte, bleue du code couleur pass en paramtre. Les composantes sont renvoyes sous la forme d'un tableau.
Public Function RGBparTableau(ByVal couleur As Long) As Long() Dim MonTab(0 To 2) As Long MonTab(2) = Int(couleur / 65536) MonTab(1) = Int((couleur - (65536 * MonTab(2))) / 256) MonTab(0) = couleur - ((MonTab(2) * 65536) + (MonTab(1) * 256)) RGBparTableau = MonTab End Function Private Sub Command1_Click() Dim TabCouleur() As Long, couleur As Long couleur = 9550940 TabCouleur() = RGBparTableau(couleur) MsgBox "Le code " & couleur & " correspond en RGB " & _ TabCouleur(0) & " " & TabCouleur(1) & " " & TabCouleur(2) End Sub

lien : FAQ VB

Comment faire une fonction qui renvoie une variable de type utilisateur ?
Auteurs : Jean-Marc Rabilloud , nightfall , Une fonction peut renvoyer une variable de type utilisateur comme n'importe quel autre type simple. Cependant vous ne pouvez pas dclarer dans un module de classe, y compris dans le module d'une form, une fonction de porte publique renvoyant un type utilisateur. Dans un module standard, si vous dclarez un type utilisateur et une fonction de porte publique qui renvoie ce type, le type doit tre aussi dclar avec une porte publique. Dans l'exemple ci-dessous, la fonction RGBparType() renvoie les composantes rouge, verte, bleue du code couleur pass en paramtre. Les composantes sont les champs du type CompCouleur.
Private Type CompCouleur Red As Long Green As Long Blue As Long End Type Private Function RGBparType(ByVal Couleur As Long) As CompCouleur RGBparType.Blue = Int(Couleur / 65536) RGBparType.Green = Int((Couleur - (65536 * RGBparType.Blue)) / 256) RGBparType.Red = Couleur - ((RGBparType.Blue * 65536) + (RGBparType.Green * 256)) End Function Private Sub Command1_Click()

- 261 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim TypColor As CompCouleur TypColor = RGBparType(9550940) lblred.Caption = "Red = " & TypColor.Red lblgreen.Caption = "Green = " & TypColor.Green lblblue.Caption = "Blue = " & TypColor.Blue End Sub

lien : FAQ VB

Comment obtenir la constante Pi ?


Auteurs : grafikm_fr , Contrairement d'autres langages, la constante Pi n'existe pas en VB. La meilleure faon de l'obtenir rapidement est d'utiliser le code suivant :
Dim Pi as Double Pi=4*Atn(1)

lien : FAQ VB

Comment lire ou modifier une proprit d'un objet par son nom ?
Auteurs : nightfall , Avec la fonction CallByName.
Private Sub Form_Load() 'Ici CallByName renvoie la valeur de la proprit Caption de la form Msgbox CallByName(Me, "Caption", VbGet) 'modifie la proprit Caption de la form CallByName Me, "Caption", VbLet, "Test de callbyname" End Sub

lien : FAQ VB

Comment excuter une mthode en passant son nom en argument ?


Auteurs : nightfall , Avec la fonction CallByName.
Private Sub Form_Load() 'Dplace la form la position 5000,150 CallByName Me, "Move", VbMethod, "5000,150" End Sub

- 262 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

FRED.G : Attention, l'exemple utilise la mthode Move qui n'est valable qu' partir d'Access 2002. lien : FAQ VB

Comment utiliser les expressions rgulires ?


Auteurs : nightfall , La librairie Microsoft VBScript Regular Expressions permet d'utiliser des expressions rgulires dans Visual Basic. Il faut l'ajouter dans les rfrences du projet. Le principe consiste crer un objet RegExp, le paramtrer en modifiant ses proprits, puis lancer la recherche en appelant la mthode Execute(). Vous devez passer en paramtre la chane de caractres dans laquelle vous souhaitez faire une recherche. La mthode Execute vous renvoie les occurrences dans une collection. Si vous avez donn la valeur True la proprit Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la premire. Voici comment vrifier la validit d'une adresse email. Ce code a t crit avec la version 5.5 de la librairie.
Public Function EmailValide(ByVal email As String) As Boolean Dim regEx As RegExp, occurrences As MatchCollection Set regEx = New RegExp regEx.Pattern = "^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$" regEx.IgnoreCase = True 'Ne pas distinguer les minuscules des majuscules regEx.Global = False 'Renvoyer seulement la premire occurrence Set occurrences = regEx.Execute(email) EmailValide = (occurrences.Count = 1) End Function

Vous pouvez galement jeter un oeil la premire partie du tutoriel de Louis-Guillaume MORAND. lien : FAQ VB

Comment dclencher un vnement par le code ?


Auteurs : FRED.G , Il est impossible de dclencher des vnements par le code (sauf les vnements dfinis par l'utilisateur). Cependant il est possible d'excuter les procdures vnementielles correspondantes en les appelant comme n'importe quelle mthode de formulaire. Remarque : les procdures doivent tre dclares en Public Sub. lien : Comment excuter une procdure (sub) d'un autre formulaire ?

Quel est la diffrence entre "." et "!" ?


Auteurs : Lucifer , L'oprateur ! indique que l'lment qui suit est dfini par l'utilisateur (un lment d'une collection). Par exemple, vous pouvez utiliser l'oprateur ! pour faire rfrence un formulaire ouvert, un tat ouvert, ou un contrle figurant sur un formulaire ou sur un tat.

- 263 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

L'oprateur . (point) indique gnralement que l'lment qui suit est dfini par MS-Access. Par exemple, vous pouvez utiliser l'oprateur . (point) pour faire rfrence une proprit d'un formulaire, d'un tat, ou d'un contrle.

Comment fermer ma base Access par le code ?


Auteurs : FRED.G , Deux solutions s'ouvrent vous : --> fermer la base en laissant Access ouvert :
Application.CloseCurrentDatabase

--> fermer la base et Access


Application.Quit

Suivre un lien hypertext par le code


Auteurs : FRED.G , Utiliser la mthode FollowHyperlink de l'objet Application :
Application.FollowHyperlink "http:www.developpez.net/forums/viewtopic.php?t=228003"

ou Excuter la mthode Follow de l'objet Hyperlink (bibliothque Access)

Comment modifier le titre de l'application ?


Auteurs : Drosera , 1re solution : Menu Outils/Dmarrage rubrique titre de l'application. 2nde possibilit en VBA, regarder la proprit AppTitle : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
'Pour une premire utilisation, cette proprit n'est pas dfinie et son utilisation 'provoque l'erreur rattrapable n3270 : "Proprit non trouve" 'Il convient alors de crer la proprit dans le code de gestion d'erreur Public Sub DefinirTitreApplication() On Error GoTo err_gestion Dim prp As DAO.Property Dim str As String str = "nouveau titre" CurrentDb.Properties("AppTitle") = str RefreshTitleBar sortie: - 264 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exit Sub err_gestion: If Err.Number = 3270 Then Set prp = CurrentDb.CreateProperty("AppTitle", dbText, str) CurrentDb.Properties.Append prp Resume End If End Sub

lien : lien : lien :

Comment ajouter/modifier une proprit sur une base de donnes ? Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment donner une certaine valeur une variable (ou un champ) si elle est vide ?
Auteurs : Lucifer , Il faut utiliser la fonction Nz(). Par exemple si vous voulez afficher le contenu d'une variable, ou bien "Vide" si sa valeur est nulle il suffit de faire :
Nz(LaVariable, "vide")

Cela peut galement servir dans une requte pour donner une valeur un champ s'il est nul.

Comment utiliser les numrations. Comment crer une liste de constantes (ex : une liste de couleurs)
Auteurs : Tofalu , Un ensemble de constantes lies par leur sens peut tre dfinit par une numration l'aide du mot cl Enum. La dclaration de l'numration est placer dans le haut du module (partie dclaration) Chaque ligne de l'numration est dclare ainsi : <Nom de la valeur> = <Valeur : Type entier>
Private Enum Couleurs Bleu=1 Vert=3 Jaune=5 End Enum

Ainsi, si on dclare une variable de type Couleurs, on aura par exemple :


Dim MaCouleur as Couleurs MaCouleur=Couleurs.Vert Msgbox MaCouleur

Ceci affichera 3.

If MaVar = NULL ne marche pas ?


Auteurs : Demco , Il faut utiliser la fonction IsNull().
- 265 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Intressez-vous aussi la fonction Nz().

Comment crer des variables utilisables partout dans l'application ?


Auteurs : Demco , Utilisez des variables globales, crez un module et insrez :
Public MaVar As String

La Variable MaVar sera utilisable depuis n'importe quel formulaire. Cependant attention l'utilisation des variables globales, ce peut-tre un ennemi si elles sont mal utilises. Attention ne pas donner des variables locales le mme nom que les variables globales. Attention, ceci peut tre particulirement dangereux lors d'un travail en quipe, si certains ignorent la prsence de variables globales. Pour utiliser cette valeur dans une requte il suffit de crer une fonction qui en renvoie la valeur. Dans le mme module crivez :
Public Function ValeurVar() As String ValeurVar = MaVar End Function

Ce qui donnera :
Select * FROM MaTable WHERE ID = ValeurVal() ;

A quoi correspond le Me. que je vois devant le nom de certains objets dans des lignes de code ?
Auteurs : Demco , Le Me dsigne en fait l'instance du formulaire sur lequel on se trouve. Ainsi la ligne suivante fait rfrence une zone de texte se trouvant dans le formulaire actuel :

Me.txtNom = "Dupond"

Comment instancier un nouvel objet ?


Auteurs : Tofalu , Deux syntaxes sont possibles :

Dim obj as new clToto obj.mamethode

Ou

- 266 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim obj as clToto Set obj= New clToto obj.mamethode

Pourtant, il existe une diffrence fondamentale entre les deux syntaxes. En Visual Basic, ds qu'une mthode est appele, une vrification interne est ralise. Celle-ci consiste vrifier que l'objet n'est pas vide avant l'appel. Le mot cl SET permet d'outrepasser cette vrification et de dire explicitement au systme que l'objet a t instanci. Ainsi, on gagne de nombreuses oprations qui auraient des tre effectues chaque fois que l'objet aurait t rfrenc. La syntaxe 2 consomme donc une ligne de code de plus mais est beaucoup plus performante.

Comment tester si deux variables reprsentent le mme objet ?


Auteurs : Tofalu , Pour tester si deux variables correspondent au mme objet, il faut utiliser l'oprateur IS :

Dim a As Object Dim b As Object Set a = CurrentDb Set b = a If b Is a Then MsgBox "Le mme objet" Else MsgBox "Objet diffrent" End If Set b = CurrentProject If b Is a Then MsgBox "Le mme objet" Else MsgBox "Objet diffrent" End If

Ceci affiche respectivement : 1 2 Le mme objet Objet diffrent

- 267 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Manipulation des donnes Importer/exporter


Auteurs : Team Access , Utiliser les mthodes Transfer de l'objet DoCmd.
DoCmd.TransferText ' import/export/attache vers du texte DoCmd.TransferSpreadSheet 'import/export/attache vers une feuille de calcul DoCmd.TransferDatabase 'import/export/attache vers une autre base de donnes.

Comment extraire une partie d'une chane de caractres ?


Auteurs : Demco , Premier type d'extraction : Vous avez un identifiant (par exemple) compos de x lettres, d'un "-" puis de y chiffres. Exemple : DRFS-135412 On veut incrmenter la partie numrique de l'identifiant l'identifiant. On utilisera donc la fonction InStr() pour rcuprer la position du caractre recherch (ici le tiret "-"). Puis, grce aux fonctions mid() et right() nous pourrons isoler la partie numrique afin de l'incrmenter. Voir aussi la fonction left() dans le mme registre. Autre type d'extraction : A partir d'Access 2000, la fonction Split tranformera une chane de caractres en un tableau. Par exemple, voici comment effacer le dernier caractre d'une chane de caractre :
Left(Tachaine,Len(Tachaine)-1)

lien : lien : lien : lien :

Comment travailler sur une partie d'une chane de caractres ? Sparer des lments d'un champ dans des champs distincts (exemple : adresse) ? Tutoriel sur les chanes de caractres Tutoriel sur la classe String

Comment travailler sur une partie d'une chane de caractres ?


Auteurs : Demco , Il existe diffrentes fonctions permettant de slectionner une partie d'une chane de caractres comme les trois premires lettres ou bien les cinq dernires lettres : len() Pour connatre la longueur d'une chane. right() Pour lire les x dernires lettres de la chane. left() Pour lire les x dernires lettres de la chane.

lien : lien : lien :

Comment extraire une partie d'une chane de caractres ? Sparer des lments d'un champ dans des champs distincts (exemple : adresse) ? Tutoriel sur les chanes de caractres

- 268 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Tutoriel sur la classe String

Comment extraire un lment d'une chane dlimite qui est une position donne ?
Auteurs : Jean-Marc Rabilloud , On utilise la fonction ci-dessous qui attend en paramtres la chane, la position de l'lment extraire et le dlimiteur. Cette fonction renvoie une chane vide lorsqu'elle ne peut pas procder l'extraction. Dans le cas d'une extraction partielle, cette fonction est beaucoup plus rapide qu'un Split.
Function ExtraitElement(ChaineRecherche As String, Position As Long, Delim As String) As String 'Renvoie une chaine vide si l'extraction n'est pas possible On Error GoTo Err_Function Dim compteur As Long, LastPos As Long, CurPos As Long If InStr(ChaineRecherche, Delim) = 0 Or Len(ChaineRecherche) = 0 Then Exit Function LastPos = 1 Do CurPos = InStr(LastPos, ChaineRecherche, Delim) If CurPos = 0 Then If compteur = Position - 1 Then ExtraitElement = Mid(ChaineRecherche, LastPos) Exit Do Else compteur = compteur + 1 If compteur = Position Then ExtraitElement = Mid(ChaineRecherche, LastPos, CurPos - LastPos) Exit Do End If End If LastPos = CurPos + 1 Loop While CurPos > 0 Exit Function Err_Function: MsgBox "Error " & Err.Number & ": " & Err.Description Resume Next End Function

lien : FAQ VB

Convertir en majuscule la premire lettre de chaque mot d'une phrase


Auteurs : Team Access , La fonction VBA StrConv permet de convertir des chaines de caractres.

StrConv(String,Conversion)

Le premier paramtre correspond la chaine de caractres convertir, le deuxime est le masque de conversion. Utilisez la constante VbLowerCase pour convertir en minuscules, VbUpperCase pour convertir en majuscules, VbProperCase pour convertir en noms propres : la premire lettre de chaque mot est alors en majuscule, le reste en minuscules.

MsgBox StrConv("Ceci est un essai", vbProperCase)

- 269 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Affiche : Ceci Est Un Essai

Replace n'existe pas sous Access 97, comment faire ?


Auteurs : shwin ,
Public Function ReplaceT(ByVal ByVal ByVal Optional ByVal Optional ByVal Optional ByVal As String Dim Dim Dim Dim P L f r As As As As Long Long Long Long ' ' ' ' Expression As String, _ Find As String, _ Replace As String, _ Start As Long = 1, _ Count As Long = -1, _ Compare As Integer = vbTextCompare) _

position longueur longueur longueur

1er caractre tester de expression de la chane remplacer chane de remplacement

' argument "Start" : limination du dbut de chane Let L = Len(Expression) If Start > L Then ' parceque "Right$" n'accepte pas 1 taille ngative Let Expression = vbNullString ElseIf Start > 1 Then ' troncature d'"Expression" Let Expression = Right$(Expression, L - Start + 1) End If ReplaceT = Expression ' valeur retour par dfaut

' argument "Find" : si chane vide, on retourne "Expression". If Find = vbNullString Then Exit Function Let f = Len(Find) Let r = Len(Replace) ' Taille de la chane de remplacement Let P = 1 ' on commence la premire position If Count <> 0 Then Do ' La taille d'"Expression" peut varier lors de chaque ' remplacement (si "Find" et "Replace" sont de longueurs ' diffrentes), c'est pourquoi l'instruction suivante ' est situe DANS la boucle. Let L = Len(Expression) ' position de la sous-chane remplacer... Let P = InStr(P, Expression, Find, Compare) ' ... si elle y figure bien If P > 0 Then Let Expression = Left$(Expression, P - 1) + _ Replace + _ Right$(Expression, (L - P - f + 1)) ' dcalage 1er caractre comparer (position trouve ' + taille de la chane de remplacement) Let P = P + r ' Un remplacement de moins effectuer (si "Count">0) ' on continue indfiniment si "Count" < 0 Let Count = Count - 1 End If ' Si le compteur atteint zro (cas o on voulait un nombre ' dfini de substitutions), o s'il n'y a plus de ' remplacements possibles, on sort. Loop Until (P <= 0) Or (Count = 0) End If ReplaceT = Expression ' retour..

- 270 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

lien : Arrondir un nombre sous Access 97 lien : Tutoriel Classe String par cafeine

Sparer des lments d'un champ dans des champs distincts (exemple : adresse) ?
Auteurs : Lucifer , Exemple de contenu d'un champ : '12 Rue MOZART 33000 BORDEAUX' Nous voulons sparer cette chane en trois partie : 1 2 3 l'adresse le Code Postal la ville

Ceci ne peut se faire automatiquement. Il faut rflchir l'algorithme de dcomposition. Ici, nous remarquons que les deux derniers lments sont le CP et la ville. Ainsi, nous en dduisons qu'en partant de la fin de la chane, le premier caractre numrique de la chane sera le dernier chiffre du code postal. Nous pouvons donc isoler la ville, il ne reste que deux lments dcomposer. Pour cela, nous savons qu'un CP ne possde que cinq caractres, il est donc ais de l'isoler. Fonctions ncessaires au travail d'une chane de caractres : mid(), right() et left().

lien : lien : lien : lien : lien :

Comment extraire une partie d'une chane de caractres ? Comment travailler sur une partie d'une chane de caractres ? Tutoriel sur les chanes de caractres Tutoriel sur la classe String Extraire et mettre en forme le nom de rue d'une adresse afin de faciliter la recherche.

Comment arrondir un chiffre aprs la virgule ?


Auteurs : Maxence HUBICHE , Access 2000+ : round(nombre,nombre de dcimale) Avant 2000 :
Function Arrondi(ByVal Nbre As Double, ByVal Expo As Long) As Double If Expo < 0 Then Arrondi = Arrondi(Nbre * 10 ^ Expo, Abs(Expo)) Arrondi = CLng(Nbre * 10 ^ Expo) / 10 ^ Expo End Function

- 271 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

O Nbre est le nombre virgule, et Expo le nombre voulu de chiffre aprs la virgule.

Comment empcher l'affichage de toute les dcimales d'un nombre ?


Auteurs : Maxence HUBICHE , Vous pouvez utiliser :
Clng(Nb*10^n)/10^n

O n est le nombre de dcimales voulues, et Nb le nombre. Vous obtiendrez le mme rsultat en utilisant :
Round(Nb,n)

Comment simuler une tabulation (passer au contrle suivant) ?


Auteurs : Bidou , FRED.G ,
SendKeys "{TAB}"

Attention : l'instruction SendKeys est utiliser avec parcimonie. Pour la fialbilit de votre code, prfrez toujours des solutions plus directes : lorsque c'est possible, agissez directement sur les objets avec du code VBA plutt que par l'intermdiaire d'une simulation clavier. Par exemple, pour dplacer le focus vers un contrle de formulaire, choisissez plutt les mthodes MonContrle.SetFocus ou Docmd.GotoControl si celles-ci peuvent suffir vos besoins.

Comment faire pour trier les enregistrements d'une table alatoirement ?


Auteurs : FRED.G , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Une solution est de crer un champ de type Long (entier Long) qui reoive des nombres alatoires. Il suffit alors de trier la table sur ce champ. Vous pouvez dfinir la proprit Valeur par dfaut du champ dans la table. Utilsez la fonction GenUniqueID() comme valeur de cette proprit. Pour (re)dfinir les valeurs du champ, on peut utiliser la fonction Rnd() dans une boucle sur le recordset de la table. Exemple en DAO :
Dim rs as Dao.Recordset Randomize Set rs = CurrentDb.OpenRecordset("MATABLE", DbOpenTable) With rs While Not .Eof .Edit !MonChampAlat = Clng(Int((2147483647 + 2147483648 + 1) * Rnd -2147483648)) .Update .Movenext Wend .Close

- 272 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End With

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Arrondir un nombre sous Access 97


Auteurs : extros , La fonction Round n'existe pas sous Access 97 de base. Voici une fonction d'arrondi (spcialement utile pour la comptabilit) : En gros certaine fonction arrondissent 0,4450 a 0,44 au lieu de 0,45 comme c'est ncessaire parfois en comptabilit. Avec celle-ci, il est mme possible de choisir le chiffre qui induit un arrondi suprieur.
Function RoundCost(ByVal Nbr As Double, _ Optional ByVal Expo As Long = 2, Optional ByVal NextNumSup = 5) As Double 'Expo is the number of desired decimals 'NextNumSup is the min number after the Expo decimal which result in a Roundsup for Nbr 'Exemple : Roundcost(0.44X) = 0.45 if X >= NextNumSUp (5 by default) 'Correct bug for RoundSup(0.445) = 0.44 If Expo < 0 Then RoundCost = RoundCost(Nbr * 10 ^ Expo, Abs(Expo)) RoundCost = CLng(Nbr * 10 ^ Expo + (0.01 * (10 - NextNumSup))) / 10 ^ Expo End Function

lien : Replace n'existe pas sous Access 97, comment faire ?

Utiliser copier/coller en VBA


Auteurs : Tofalu , Voici les deux commandes :
DoCmd.RunCommand DoCmd.RunCommand acCmdCopy ' copier acCmdPaste ' coller

Pour copier le texte d'une zone de texte, il faut dans un premier temps le slectionner, voici comment faire :
Me.Texte1.SetFocus Me.Texte1.SelStart = 0 Me.Texte1.SelLength = Len(Texte1.Text) 'le texte est slectionn, il nous reste qu' le copier. DoCmd.RunCommand acCmdCopy

Comment mettre du texte en majuscule / minuscule ?


Auteurs : FRED.G , Il existe plusieurs solutions qui affectent soit le format d'affichage des donnes, soit les donnes elles-mmes. Formatage de l'affichage seulement : Il suffit d'utiliser la proprit Format d'un champ de table ou requte ou d'un contrle de formulaire ou d'tat.
- 273 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Valeur de la proprit pour une seule lettre, en majuscule : Valeur de la proprit pour une seule lettre, en minuscule : Conversion des donnes : Fonction Ucase$() -> Renvoie une valeur de type String contenant la chane indique, convertie en majuscules. (cf. Aide Access) Exemple :

Dim MaVariable As String MaVariable = Ucase$("develoPPEZ123")

MaVariable reoit "DEVELOPPEZ123" Mise en minuscule -> Lcase$() Fonction Strconv() Renvoie une valeur de type Variant (String)

Dim MaVariable As String MaVariable = Strconv("develoPPEZ123", vbUpperCase)

MaVariable reoit "DEVELOPPEZ123" Mise en minuscule -> vbLowerCase au lieu de vbUpperCase Fonction Format(). Le deuxime argument prend une chane identique la proprit Format. Cependant le rsultat renvoy sera une relle conversion :

Dim MaVariable As String MaVariable = Format("BONJOUR", "<")

La variable "MaVariable" reoit le texte "bonjour" On peut galement utiliser la proprit Masque de saisie (Inputmask) d'un champ de table ou d'un contrle de formulaire. Valeur de la proprit pour une seule lettre, en majuscule : >C Valeur de la proprit pour une seule lettre, en minuscule : <C Exemple : Pour avoir deux lettres en majuscules suivies de trois lettres en minuscules on aura : >CC<CCC Cependant grer la casse au moment de la saisie l'aide cette proprit n'est pas la solution la plus souple car il faut connatre l'avance le nombre maximum de caractre pouvant tre saisis. Pour la saisie via un formulaire, prfrer plutt une conversion au moment de l'vnement Sur touche Active :

Private Sub Moncontrle_KeyPress(KeyAscii As Integer) KeyAscii = Asc(UCase$(Chr(KeyAscii))) End Sub

Comment grer la mise en forme les donnes d'un champ ou d'un contrle ?
Auteurs : FRED.G , Dans Access, les moyens "classiques" de mise en forme des donnes d'un champ ou d'un contrles sont les suivants : Proprit Format : elle permet de contrler la faon dont les donnes sont affiches, en y ajoutant des espaces ou n'importe quel caractre littral o vous voulez. Le formatage effectu ne concerne que l'affichage et n'affecte pas les donnes enregistres. La proprit format est prioritaire sur la mise en forme dtermine par un masque de saisie.

- 274 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Proprit Masque de saisie (InputMask) : le masque de saisie sert faciliter / imposer la saisie des donnes sous une forme bien prcise. Il est possible par exemple d'obliger l'utilisateur saisir telle ou telle combinaisons de chiffres et de lettres. Ou encore de prvoir l'insertion automatique d'espaces et autres caractres littraux des endroits de votre choix. Vous pouvez choisir d'enregistrer ces caractres littraux avec les donns saisies elles-mmes. Contrairement la proprit format, le reste de la mise en forme impose par le masque est quant lui ncessairement et dfinitivement rpercut puisqu'il agit directement sur la saisie.

Ces deux proprits permettent aussi d'agir sur la casse (majuscule/minuscule). Consulter l'aide Access (F1) pour connatre les syntaxes et paramtres accepts par les proprits Format, Masque de saisie et voir de nombreux exemples.

Diffrence entre le format d'affichage des donnes et les donnes relles enregistres
Auteurs : FRED.G , Dans Access, les donnes peuvent tre affiches dans des champs de tables ou de requtes, dans des contrles d'tats ou de formulaires. Mais il faut faire la distinction entre le format d'affichage des donnes et les donnes telles qu'elles sont enregistres dans les tables (pour les champs) ou la proprit ControlSource (pour les contrles). Ainsi vous pouvez utiliser la proprit Format d'un champ ou d'un contrle pour mettre en forme les donnes telles qu'elles apparaissent l'utilisateur, mais sans affecter la version originale des donnes. Le format est juste une mise forme applique lors de l'affichage. Par exemple, dans un champ stockant des tailles en cm, vous saisissez la valeur 183. Dfinissez la proprit Format du champ comme ceci : 0\m00 Le champ affichera : 1m83 Mais la valeur qui est enregistre dans la table sera bien 183.

Comment convertir un nombre dcimal en binaire ?


Auteurs : fdraven ,
Public Function DecimalToBinaire(DecVal As Double) As String 'Variable temporaire qui sert lors du traitement du nombre convertir Dim NbTmp As Double 'Variable/Indice de boucle Dim IndiceP as Integer NbTmp = DecVal For IndiceP = 1 To Int(Log(DecVal) / Log(2)) + 1 DecimalToBinaire = CDbl(NbTmp Mod 2) & DecimalToBinaire NbTmp = CDbl(Int(NbTmp / 2)) Next IndiceP End Function

Il vous suffit ensuite de l'appeler ainsi pour convertir par exemple 1324 en binaire :

- 275 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DecimalToBinaire(1324)

Obtenir la partie dcimale d'un nombre


Auteurs : Tofalu , Int retourne la partie entire. La partie dcimale est gale au nombre moins sa partie entire, on a donc facilement :

Dim N As Double N = 2.322001 MsgBox N - Int(N)

Ceci dit, pour que cela fonctionne aussi avec N ngatif, il faut utiliser la fonction Fix la place de Int. En effet, Int(-2.9) retourne 3 alors que Fix(-2.9) retourne 2. Aide Access : Diffrence entre les fonctions Int et Fix : si number est ngatif, Int renvoie le premier entier ngatif infrieur ou gal number, alors que Fix renvoie le premier entier ngatif suprieur ou gal number. Par exemple, Int convertit -8,4 en -9 et Fix convertit -8,4 en -8. Ce qui donne donc :

Dim N As Double N = -2.9 MsgBox Abs(N - Fix(N))

Abs permet de retourner un rsultat toujours positif.

Utilisations des fonctions Mathmatiques d'Excel dans Access


Auteurs : FRED.G , LeLaid , La librairie "Microsoft Excel x.x Object Library" permet d'utiliser toutes les fonctions disponibles sous Excel de la manire suivante :

WorksheetFunction.Nom de la fontion

Par exemple :

WorksheetFunction.NormSInv(0.5)

Attention cependant l'apparente simplicit de ce code. L'objet WorksheetFunction est fournit par l'application Excel. Vous faites donc de l'automation, ce qui signifie qu'une instance Excel est lance chaque excution de votre code.

- 276 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

L'ouverture et la fermeture de cette instance est gre automatiquement. Cependant du code automation sera toujours plus beaucoup plus lent qu'une fonction personnalise excute directement par Access.

Comment modifier un trs grand nombre de donnes avec DAO ?


Auteurs : =JBO= , Lorsque vous tentez de modifier un trs grand nombre d'enregistrements avec DAO, l'erreur 3052 (maxlocksperfile insuffisant) est leve. La solution consiste dsactiver le verrouillage par enregsitrement et utiliser ainsi le verrouillage par page. En franais, dans les options d'Access 2000 (et suivants ?), Onglet [Avanc] dcocher la case [Ouvrir avec enregistrements verrouills]. Puis relancer Access (dans le but de recharger Jet). Le verrouillage par enregistrement est arriv avec Jet 4.0 / Access 2000. Si le moteur Jet applique un verrouillage au niveau enregistrement et si les enregistrements sont de petites tailles alors tu peux "conomiser" des verrous en appliquant un verrouillage par page. Le verrouillage au niveau de la page peut amliorer la situation la condition qu'une page contienne plusieurs enregistrements. Supposons que la taille d'un enregistrement soit de 500 octets, pour une taille de page de 4Ko: il y a 8 enregistrements/ page. Le verrouillage par page posera 8 fois moins de verrous qu'un verrouillage par enregistrement. Attention : l'accs concurrent aux donnes peut s'en trouver fortement dgrad (applications multi-utilisateurs) Mais le problme du nombre limit de verrous existe toujours, sur les trs grandes sources de donnes. Quelques explications : Ce problme semble bien tre une limitation "by design" du moteur de bases de donnes Jet 4.0. Effectivement, le paramtre MaxLocksPerFile permet de repousser la limite du nombre de verrous, mais pas l'infini. Alors comment faire pour grer une telle situation ? Lorsque le maximum de verrous est atteint, il faut "librer" le recordset (et donc les verrous) et puis ensuite reprendre le traitement l o on l'avait "suspendu". Il n'y a pas de contournement. Apparemment, Jet 4.0 met en oeuvre une telle dmarche incrmentale dans le cadre de "grosse" requte UPDATE (transactionne seulement ?). Dans cette configuration, le paramtre MaxLocksPerFile est utilis par Jet pour dcider quel moment entriner les modifications dj faites, librer les verrous et puis reprendre le traitement, sans jamais dpasser cette limite. En revanche, dans le cas d'une programmation directe des Recordsets via VBA/DAO, le programmeur doit mettre en oeuvre cette dmarche dans son code.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment connatre le nombre d'enregistrements qui seront modifis par une requte Action ?
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library La proprit RecordsAffected de l'objet QueryDef retroune le nombre d'enregistrements affects par l'ordre SQL aprs excution.
- 277 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Parfois, vous auriez besoin de cette information avant modification. Du genre : "Etes-vous sr de vouloir supprimer 10 enregistrements ?" Pour cela vous pouvez utiliser une transaction. L'ordre SQL sera lanc dans la transaction, et il sera alors possible d'annuler l'opration (Rollback) si l'utilisateur ne souhaite pas continuer.

Const REQUETE As String = "raaa" Dim q As DAO.QueryDef Dim n As Long DBEngine.BeginTrans Set q = CurrentDb.QueryDefs(REQUETE) q.Execute If MsgBox("Vous allez insrer " & q.RecordsAffected & _ " nouveaux enregistrements." & vbCrLf & _ "Etes vous sr de vouloir continuer ?", vbYesNo + vbQuestion, "Insertion") = vbYes Then DBEngine.CommitTrans Else DBEngine.Rollback End If

La mthode CommitTrans valide les modifications apportes.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment synchroniser la barre de progression avec le parcours d'un recordset ?


Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library La proprit PercentPosition du recordset DAO retourne la position de l'enregistrement courant en pourcentage. Ainsi, le squelette du code permettant une telle synchronisation ressemblera :
Dim oRst As DAO.Recordset 'Ici ouverture du Recordset ' ' ' '''''''''''''''''''''''''' SysCmd acSysCmdInitMeter, "Traitement", 100 'Dfinit la valeur maximale de la jauge. While Not oRst.EOF SysCmd acSysCmdUpdateMeter, Int(oRst.PercentPosition) 'Dfinit la valeur actuelle de la jauge. 'Ici traitement sur l'enregistrement ' ' ' oRst.MoveNext Wend SysCmd acSysCmdRemoveMeter 'Supprime la jauge d'avancement

lien :

Dfinition et manipulation de donnes avec DAO par Tofalu

- 278 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment dclarer une rfrence dans MS-Access ?

Comment Arrondir un nombre sa valeur suprieure ou infrieure


Auteurs : Tofalu , Contrairement la fonction Round qui arrondi un nombre sa valeur la plus proche en fonction des dcimales choisies, cette fonction propose la fonction myRound qui arrondi un nombre sa valeur suprieure et infrieur en fonction des dcimales choisies.
Enum myRoundEnum myRoundup = -1 myRoundDown = 1 End Enum Public Function myRound(vValeur As Variant, Optional byNbDec As Byte, Optional eSens As myRoundEnum = myRoundup) As Variant myRound = eSens * Int(eSens * vValeur * 10 ^ byNbDec) / 10 ^ byNbDec End Function

L'appel de cette Fonction :


Sub test() MsgBox myRound(4.333, 1, myRoundup) MsgBox myRound(4.333, 1, myRoundDown) End Sub

Comment faire un remplacement en chaine ?


Auteurs : Cafeine , Une fonction qui peut tre utile pour viter d'imbriquer trop de remplacements.
Function ReplaceArray(ByVal strExp As String, _ ByVal strToFind As Variant, _ ByVal strToReplace As Variant) As String Dim i As Long If IsArray(strToFind) And IsArray(strToReplace) Then If UBound(strToFind) = UBound(strToReplace) Then For i = 0 To UBound(strToFind) strExp = Replace(strExp, strToFind(i), strToReplace(i)) Next i ReplaceArray = strExp Else ReplaceArray = vbNullString End If Else ReplaceArray = Replace(strExp, strToFind, strToReplace) End If End Function

qui permet de faire :

- 279 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

replaceArray(Champ, Array("-","/"), Array("",""))

Comment Copier/Coller les donnes d'un enregistrement dans un Formulaire ?


Auteurs : damkre , Si vous dsirez reprendre toutes les donnes d'un enregistrement dans ce formulaire, et ce afin d'viter de recopier toutes les donnes, voici comment faire : 1 Ouvrez en mode cration le formulaire dans lequel vous aurez besoin de copier et coller des donnes. 2 Crez deux boutons. Appelez ( par exemple ) le premier Copier et le second Coller . 3 Associez pour le bouton Copier la procdure sur clic suivante :
Private Sub Copier_Click() On Error GoTo GestionErreur DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdCopy GestionErreur: Select Case Err.Number Case 2046 MsgBox "Action impossible pour le moment", vbExclamation + vbOKOnly, "Copier" End Select End Sub

En clair, cela signifie qu'en cliquant sur le bouton "Copier", Access va slectionner l'enregistrement en cours ( celui qui est affich ), pour le copier. Le module de gestion des erreurs prvoit le cas o vous n'auriez pas encore de donnes dans l'enregistrement en cours. Attention : Access reprendra toutes les donnes de l'enregistrement ! 4) Associez pour le bouton Coller la procdure sur clic suivante :
Private Sub Coller_Click() DoCmd.RunCommand acCmdSelectRecord DoCmd.RunCommand acCmdPaste End Sub

Lorsque vous cliquerez sur le bouton "Coller", Access collera les donnes de l'enregistrement que vous aurez copier. Attention ! Il remplacera les donnes de l'enregistrement dans lequel vous tes. Vous pouvez aussi coller les donnes dans un nouvel enregistrement !

Comment raliser un copier vers le presse papier et coller depuis un contrle ?


Auteurs : ClaudeLELOUP , Vous trouverez ci-joint deux fonctions, une vous permettant de raliser le copier vers le presse-papier de windows et l'autre pour raliser le coller. Le principe des fonctions sont de copier l'ensemble des donnes contenues dans un zone de texte ou liste modifiable et de coller l'ensemble dans les mmes contrles. Sur l'vnemment double-clic appeler l'une ou l'autre fonction.
Public Function CopierPressePapier() On Error GoTo Erreur 'Pour copier, il faut dans un premier temps slectionner le contenu actuel

- 280 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Screen.ActiveForm.Refresh 'Pour s'assurer que le contenu actuel correspond ce qui est affich Screen.ActiveForm.ActiveControl.SetFocus Screen.ActiveForm.ActiveControl.SelStart = 0 Screen.ActiveForm.ActiveControl.SelLength = Len(Screen.ActiveForm.ActiveControl.Text) 'NB : ActiveControl.Text pour capter ce qui est affich l'cran 'Copier dans le presse-papier DoCmd.RunCommand acCmdCopy Exit Function Erreur: Select Case err.Number Case 2465 'le champ copier est vide MsgBox "Un champ vide ne peut tre copi" Case Else MsgBox err.Number & " " & err.Description End Select End Function Public Function CollerPressePapier() On Error GoTo Erreur 'Pour coller, il faut dans un premier temps slectionner le contenu actuel Screen.ActiveForm.ActiveControl.SetFocus Screen.ActiveForm.ActiveControl.SelStart = 0 Screen.ActiveForm.ActiveControl.SelLength = Len(Screen.ActiveForm.ActiveControl.Text) 'NB : ActiveControl.Text pour capter ce qui est affich l'cran 'le texte est slectionn, il ne nous reste qu' le remplacer. DoCmd.RunCommand acCmdPaste Exit Function Erreur: MsgBox err.Number & " " & err.Description End Function

lien :

Copier le contenu d'un contrle vers le presse papier Windows

- 281 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Manipulation des donnes > Dates et Heures Pourquoi utiliser le type date ?
Auteurs : Team Access , La rponse expditive serait : Parce qu'il est fait pour cela et donc il est le mieux adapt ! En fait, il y a souvent confusion entre les donnes rellement stockes dans la base et le format d'affichage. Pour simplifier, sachez que l'on stocke les donnes horaires (dates, heures, dures) dans des champs de type Date/Heure, mais que l'on affiche des chaines de caractres (String). Dans une application, quelques fois vous afficherez mardi 26 aot 2003 et d'autres fois 26/08/03... Tous les formattages sont possibles. Mais du moment que l'on dinstingue correctement les notions de stockage et d'affichage, l'utilisation de plusieurs formats d'affichage n'empche pas de stocker l'information suivant un seul et mme principe : celui du type Date/Heure. Utiliser un champ de type Date/Heure plutt qu'un ou plusieurs champ texte ou numrique pour stocker vos donnes horaires rend votre systme de donnes plus cohrent, plus performant et plus souple maintenir. En effet, les donnes de type Date tant en interne des valeurs numriques de type Rel double mais le type Date tant lui-mme reconnu par Visual Basic, vous disposez de nombreuses fonctions permettant d'automatiser et raliser vos traitements prcis des donnes horaires (formattage, extraction d'une partie de la date, addition/soustraction de dures...). Une date est en fait une valeur dcimale en nombre de jours depuis le samedi 30 dcembre 1899 00:00. Pour le vrifier, excutez le code suivant : Remarque : les dures constituent un cas un peu spcifique et peuvent ne pas tre stockes dans un champ Date.

Comment afficher des dures suprieures 24 heures ?


Auteurs : Team Access , Par dfaut MS-Access formate les champs date/heure comme des dates et non comme des dures. Lorsque les valeurs sont suprieures 24 heures on est oblig de passer par des fonctions, car contrairement Excel, ce format n'existe pas dans MS-Access. Quand on utilise un champ de type date format pour afficher les heures, en fait MS-Access ne donne pas le nombre d'heures au total mais il extrait de la date l'heure qui lui correspond.
MsgBox Format(Now,"hh:nn:ss") ' affiche l'heure courante dans une bote de dialogue

Voici 2 fonctions qui renvoient une chane de caractres, elles ne doivent donc tre utilises que pour l'affichage. Celle-ci renvoie la dure sous la forme Jour J Heure:minutes:secondes
Function JourHeure(dtm As Date) As String JourHeure = "" If CDbl(dtm) > 1 Then ' On calcule le nombre de jours JourHeure = CInt(dtm - 0.5) & " J " End If ' On ajoute les heures, minutes et secondes JourHeure = JourHeure & Format(dtm,"hh:nn:ss")

- 282 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Tandis que celle-la renvoie la dure sous la forme Heure:minutes:secondes


Function HeureSup24(dtm As Date) As String 'calcule le nombre d'heures HeureSup24 = DateDiff("h", 0, dtm) 'on ajoute les minutes et les secondes HeureSup24 = HeureSup24 & Format(dtm, ":nn:ss") End Function

Comment stocker et grer les informations relatives aux Dures ? MS-Access gre les donnes des champs Date/Heure comme des dates et non comme des dures. Il n'existe pas comme dans Excel, de type ou de format pour les dures. Faut-il utiliser le type Date ou bien faut-il prfrer un type Entier numrique pour stocker des dures ? Pour savoir comment dterminer notre choix, dtaillons nos besoins. Une dure peut tre exprime en une ou plusieurs units dont les plus utilises sont : Centime Seconde Minute Heure Jour Semaine Mois Anne

NOTE : une dure en mois ou en anne est subjective, tout dpend de la convention prise. Par exemple en comptabilit on dfinit : 1 Mois = 30 jours, une anne = 360 jours. Donc dire que deux dates sont spares d'un mois tout juste n'est pas vraiment exact. De nombreuses combinaisons sont possibles pour reprsenter prcisment une dure. Lorsqu'une dure est reprsente travers plusieurs units, la plus grande unit peut ne pas avoir de limite dans sa valeur. Mais ce n'est pas le cas des units infrieures qui, passe une certaine valeur, incrmentent l'unit immdiatement suprieure et reviennent zro. Ces rappels lmentaires sont ncessaires pour bien comprendre comment utiliser le type Date/Heure afin de stocker des dures. En effet, les formats de champs Date/Heure qu'autorise Access ne vous laisserons combiner que trois units au maximum: Heure, Minute et Seconde. En outre, chaque unit possde une limite de valeur qu'elle ne peut dpasser ; comme nous le savons tous : 23 pour les heures, 59 pour les minutes et les secondes. Ce sont les deux limites qu'impose Access pour le formatage des heures. Et ces limites sont bien comprhensibles puisque les formats sont prvus pour tre appliqus des heures et non des dures. En conclusion, le type Date/Heure est pratique et "transparent" tant que vous ne devez pas sortir de ces limites. Dans le cas contraire, l'utilisation de ce type revient coder la dure sur un nombre dcimal. La partie entire reprsentera le nombre de jours compltement couls depuis une date rfrence fixe arbitrairement au 30/12/1899. La partie dcimale reprsentera, le cas chant, la fraction coule du dernier jour s'il n'est pas compltement coul.

- 283 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour grer des dures aux des formats "sans limites", il est souvent plus pratique de recourir un champ de type entier numrique. Ce champ correspondra tout simplement l'unit la plus petite ncessaire vos formats d'affichage. Gnralement, le type Long est trs suffisant. Ceci dit, que vous ayez choisi de stocker vos donnes sous un type numrique entier ou sous le type Date/Heure, ds lors que les formats d'heure autoriss par Access pour les champs de type Date/Heure ne vous conviennent pas, vous serez obligs de dvelopper vos propres fonctions pour afficher vos dures dans la/les unit(s) voulues. Voici donc quelques exemples de telles fonctions. Attention : ces fonctions renvoient une chane de caractres, elles ne doivent donc tre utilises que pour l'affichage. Stockage des dures dans un champ de type Date/Heure. Renvoyer la dure sous la forme Jour J Heure:minutes:secondes Ici, l'unit des jours n'a pas de limite de valeur et les jours sont compts partir du 30/12/1899. (cf. lien en bas)

Function JourHeure(dtm As Date) As String JourHeure = "" If CDbl(dtm) > 1 Then ' On calcule le nombre de jours JourHeure = CInt(dtm - 0.5) & " J " End If ' On ajoute les heures, minutes et secondes JourHeure = JourHeure & Format(dtm,"hh:nn:ss") End Function

Renvoyer la dure sous la forme Heure:minutes:secondes Ici, l'unit des heures n'a pas de limite de valeur et les heures sont compts partir du 30/12/1899. (cf. lien en bas)

Function HeureSup24(dtm As Date) As String 'calcule le nombre d'heures HeureSup24 = DateDiff("h", 0, dtm) 'on ajoute les minutes et les secondes HeureSup24 = HeureSup24 & Format(dtm, ":nn:ss") End Function

A vous ensuite d'adapter ces fonctions vos besoins exacts. lien : Comment fonctionne le type Date/Heure ?

Comment obtenir, pour une date donne, la date du dernier jour du mois ?
Auteurs : Maxence HUBICHE ,
'Cette fonction vous renvoie la date du dernier jour du mois :</paragraph> Function LastDayOfMonth(ByVal LaDate As Date) As Date LastDayOfMonth = CDate(DateSerial(Year(LaDate), Month(LaDate) + 1, 0)) End Function

Pour obtenir des information plus prcises comme par exemple le nom ou le numro du dernier jour, vous pouvez vous contenter d'utiliser cette partie de code :
DateSerial(Year(LaDate), Month(LaDate) + 1, 0)

- 284 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

comme argument Date d'une fonction Day() ou DatePart()... Par exemple, ceci vous donnera uniquement le numro du jour :
Dim derJour As Integer LaDate = Date derJour = Day(DateSerial(Year(LaDate), Month(LaDate) + 1, 0)) MsgBox derJour

lien : Comment rcuprer les informations d'une date (quantime, trimestre ...) ?

Quel format de dates utiliser pour les requtes, les calculs VBA, les contrles de formulaires ?
Auteurs : Papy Turbo , Requte SQL: - Access et le moteur Jet utilisent toujours la notation US (format "mm/dd/yyyy") en interne, pour les calculs et oprations. - Access traduit ces dates au format indiqu dans le panneau de contrle Windows, uniquement dans l'interface QBE (Query By Exemple = cration de requtes, dans le mode Cration). Pour illustrer cela, pendant la cration d'une requte, - saisir "=#09/11/2004#" comme Critre, sous n'importe quel champ date d'une requte en mode cration, - passer en mode SQL : le texte contient "= #11/09/2004#", mode US, pour excution de la requte par le moteur Jet. Calculs VBA : n'utiliser que le format US, le seul que les fonctions de date peuvent interprter. Contrles de Formulaires : comme l'interface QBE pour les requtes, Access affiche par dfaut les dates au format dfini dans le panneau de contrle de Windows. Pour nous, format franais "dd/mm/yyyy". La proprit Format du contrle n'a aucune influence sur la valeur qui sera stocke dans les tables (voir ci-dessous : c'est un nombre Double qui est stock). Donc, vous pouvez mettre n'importe quel format dans un contrle, y compris le format japonais ("yyyy/mm/dd", trs utilis pour les tris alphabtiques). Dernire rgle : lors d'une saisie dans l'interface QBE, directement dans un champ de table, de requte ou dans un contrle : - il y a systmatiquement interprtation/inversion des jours/mois, comme ci-dessus, si les 2 chiffres sont <= 12. - si l'un des deux est > 12, c'est obligatoirement un jour. a ne peut pas tre un n de mois.

Comment calculer la diffrence entre 2 dates ?


Auteurs : Team Access , Pour calculer la diffrence entre deux dates, il faut utiliser la fonction DateDiff.

DateDiff(interval, date1, date2)

O interval est une chaine de caractres correspondant l'intervalle prendre en compte. y Anne m Mois d Jour h Heure n Minute

- 285 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

s Seconde q Trimestre w Semaine

DateDiff("s", #1/1/1990#, #1/1/1992#)

Comment calculer l'ge d'une personne ?


Auteurs : Cafeine , Tofalu , Premire possibilit :
Function CalculAge(ByVal Dat1 As Date, ByVal Dat2 As Date) As Integer If Month(Dat2) > Month(Dat1) Then CalculAge = DateDiff("yyyy", Dat1, Dat2) ElseIf Month(Dat2) = Month(Dat1) Then If Day(Dat2) >= Day(Dat1) Then CalculAge = DateDiff("yyyy", Dat1, Dat2) Else CalculAge = DateDiff("yyyy", Dat1, Dat2) - 1 End If Else CalculAge = DateDiff("yyyy", Dat1, Dat2) - 1 End If End Function

Seconde possibilit :

Function CalculAge2(dateNaissance As Date, Optional dateReference As Date) If dateReference = 0 Then dateReference = Date CalculAge2 = Year(dateReference) - Year(dateNaissance) + _ (Format(dateNaissance, "mmdd") > Format(dateReference, "mmdd")) End Function

Le paramtre dateReference est optionnel. Ainsi, s'il n'est pas prcis, ce sera la date du systme qui sera utilis. Exemples : Age aujourd'hui

MsgBox CalculAge2(#06/22/1983#)

Age le 15 novembre 2005

MsgBox CalculAge2(#06/22/1983#,#11/15/2005#)

Comment ajouter des jours, des mois ou des annes une date ?
Auteurs : Demco , Ajouter des jours, des mois ou des annes une Date : Voici le code VBA pour : Ajouter 3 mois la date.

- 286 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DateAdd("m", 3, #05/20/2003#)

Ajouter 3 jours :
DateAdd("d", 3, #05/20/2003#)

Ajouter 3 annes :
DateAdd("yyyy", 3, #05/20/2003#)

ATTENTION : La date doit tre au format : mm/jj/aaaa

Le format de la date ne correspond pas ce que je demande


Auteurs : Team Access , Il faut aller dans les paramtres rgionaux de Windows et changer le format sa guise.

Problme de format de date. Le jour et le mois sont parfois inverss.


Auteurs : Demco , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library A savoir : Access ne stocke en dur qu'un nombre entier long (le nombre de jours couls depuis le 30 dcembre 1899). La date que vous voyez apparatre dans votre table est une valeur numrique, formate avec les spcifications que vous avez donnes dans la dfinition de votre champ. La conversion implicite que fait Access sur les dates est source d'erreurs. Le plus simple reste d'insrer dans le champ table une valeur numrique de type double :
Dim madate As Date, monRs As DAO.Recordset madate = Date DoCmd.RunSQL "Insert into table1 (ladate) values(" & CDbl(madate) & ")"

ou
Dim madate As Date, monRs As DAO.Recordset madate = Date Set monRs = Application.CurrentDb.OpenRecordset("select * from table1") monRs.AddNew monRs.Fields("ladate").Value = CDbl(madate) monRs.Update

lien : lien : lien :

Pourquoi utiliser le type date ? Quel format de dates utiliser pour les requtes, les calculs VBA, les contrles de formulaires ? Dfinition et manipulation de donnes avec DAO par Tofalu

- 287 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment dclarer une rfrence dans MS-Access ?

Comment transformer une valeur numrique en format 'heures : minutes : secondes' ?


Auteurs : grafikm_fr , Vous avez un champ ou simplement une valeur contenant un nombre de secondes, et vous souhaitez changer son format. Exemple pour 32295 secondes : Solution 1 : Il faut diviser 32295 par 3600 et garder la partie entire : 8. Nous avons le nombre d'heure. Ensuite il faut calculer le reste de : 32295 - 3600*8 = 3495 Il reste donc 3495 secondes. Pour avoir les minutes, c'est comme pour les heures, sauf que l'on divise par 60: 3495/60 => 58 Puis : 3495 - 58*60 => 15 Donc le rsultat est 8:58:15 Solution 2 : TimeSerial(0,0,32295) -> 08:58:15 ATTENTION ! Le nombre de secondes doit tre infrieur 32768.

Comment rcuprer les informations d'une date (quantime, trimestre ...) ?


Auteurs : Maxence HUBICHE , Il faut utiliser DatePart() :
PartDate("T",[LeChampDate])

Le premier argument donne l'intervalle voulu. En voici la liste : Francais Anglais Signification aaaa yyyy Anne a y Jour de l'anne m m Mois j d Jour h h Heure n n Minute s s Seconde t q Trimestre e w Semaine ee ww Numro de la semaine Aprs pour avoir ceux qui manquent, quelques calculs simples permettent d'y arriver... Par exemple, pour avoir le semestre, il faut les 2 premiers trimestres. Donc il faut faire :

- 288 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Semestre = (PartDate("T",[LeChampDate])+1)\2

Extraire la date ou l'heure avec Int(), partir d'un champ ou d'une variable date.
Auteurs : Papy Turbo , En dehors des fonctions Year(), Month(), Day(), Hour(), Minute(), Second() qui renvoient une partie de la date ou de l'heure, le moyen le plus simple est de considrer que les dates sont enregistres dans la base sous la forme d'un nombre rel double (8 octets). Dans l'aide Access, voir le type de donnes Date. La partie entire donne la date, la partie dcimale donne l'heure. Appuyez sur [Alt+F11] -> environnement VBA, puis [Ctrl-G] pour utiliser la fentre Excution (F1), et testez les commandes suivantes :
? now 07/04/2004 12:04:38 'Date seule, SANS les heures, minutes et secondes. ? int(Now) 07/04/2004 'juste pour rire, la mme avec les fonctions de date !!! ? DateSerial(Year(Now), Month(Now), Day(Now)) 07/04/2004 'Heures, minutes et secondes seules, SANS la date. Affichage dcimal. ? now - int(now) 0,50459490740468 'Idem, en renvoyant une date, pour l'affichage ? cdate(now - int(now)) 12:05:57 ? format(now - int(now), "hh:mm:ss" 12:06:08

Il faut un cDate() ou un Format() pour afficher l'heure correctement parce que l'opration de soustraction renvoie un nombre rel double. La soustraction "perd" la notion de date/heure. Dans une procdure, vous pouvez dclarer une variable Date. Vous n'aurez pas besoin de convertir avec cDate(). Si DateHeure est une variable, un paramtre ou la valeur d'un contrle de type Date :
Dim HeureSeule As Date [...] HeureSeule = DateHeure - int(DateHeure)

- 289 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Noter que, dans une table ou un calcul, il n'y a aucune diffrence entre 0,50459490740468 et 12:05:57. C'est juste une question d'affichage (F1 sur la fonction Format(), le type de donnes Date, la fonction cDate()).

Calcul de dures par soustraction.


Auteurs : Papy Turbo , La diffrence entre 2 dates indique le nombre de jours. La partie dcimale indique une fraction de jour (Ex. 12 heures = 0,5 jour). Ces nombres peuvent tre utiliss dans tout calcul, sans utiliser aucune fonction, mme dans une requte SQL. Pour les calculs sur des heures, multiplier ce nombre par 24. De mme pour les minutes ou les secondes : multipliez par 24*60, ou par 24*60*60. Exemple 1 : Temps pass sur une activit ou un projet. Si vous avez travaill sur une activit quelconque, depuis la date/heure Debut jusqu' la Date/heure Fin. Utiliser la fentre Excution (F1) pour tester :
Debut = #4/26/2004 22:07:32# Fin = #4/27/2004 02:38:41# Duree = (Fin - Debut)*24 ? Duree 4,51916666678153

soit un peu plus de 4 heures et demi. Le rsultat est un Numrique Double, et non plus une date. Pour effectuer le mme calcul avec DateDiff(), vous devrez extraire d'abord la diffrence en jours, puis en heures, puis en minutes? puis les ajouter les unes aux autres ! Si vous avez enregistr DebutTempsPasse et FinTempsPasse de chaque activit dans une table des Temps Passs, vous pouvez, dans une requte, calculer directement un total des heures par projet. Par exemple, utiliser cette requte dans un tat pour afficher un rsum des heures par projet :
Select TP.CLEPROJET, Sum([FIN_TEMPS_PASSE]-[DEBUT_TEMPS_PASSE])*24 As HeuresTotales From TEMPSPASSE TP Group By TP.CLEPROJET;

De mme, vous pouvez ajouter directement des jours, entiers ou partiels, une date. Utiliser la fentre Excution (F1) :
? now, now + 120 27/04/2004 12:14:04

25/08/2004 12:14:04

120 jours au-del du 27 avril, nous serons le 25 aot.


? now, now + (75/24) 27/04/2004 12:19:35

30/04/2004 15:19:35

75 heures au-del du 27 avril midi, nous serons le 30 avril, 15 heures.

- 290 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Exemple 2 : Pour chronomtrer l'excution de 2 procdures, et dterminer la plus efficace. Nous pouvons galement stocker le rsultat dans une variable de type Date, afin de bnficier immdiatement du format d'affichage Date/Heure.
Public Function CompareProcedures() As String Dim Debut As Date, Fin As Date Dim Duree1 As Date, Duree2 As Date Dim Pointeur As Long 'Commencez avec 1000 et augmentez ce chiffre, ' jusqu' ce que les rsultats soient significatifs. Const NBITERATIONS = 1000000 'Tester la 1re procdure Debut = Now For Pointeur = 1 To NBITERATIONS Procedure1 Next Fin = Now Duree1 = Fin - Debut 'Tester la seconde procdure Debut = Now For Pointeur = 1 To NBITERATIONS Procedure2 Next Fin = Now Duree2 = Fin - Debut 'Renvoyer les rsultats : CompareProcedures = "Chaque procdure a t excute " & NBITERATIONS & " fois, en " _ & vbCrLf & "1re : " & Duree1 _ & vbCrLf & "2me : " & Duree2 Beep MsgBox CompareProcedures End Function

L'affichage de Duree1 et Duree2, variables de type Date, sera directement exprim en hh:min:sec. Exemple, dans la fentre Excution (F1) :
? CompareProcedures Chaque procdure a t excute 1000000 fois, en 1re : 00:00:42 2me : 00:00:29

La seconde procdure est plus efficace que la 1re. On a souvent des surprises ! :D

Je veux afficher la date d'aujourd'hui sans l'heure.


Auteurs : Demco , Vous ne devez pas utiliser la fonction Now(), essayez plutt de rcuprer la date du jour avec la fonction Date().

Comment fonctionne le type Date/Heure ?


Auteurs : Maxence HUBICHE , Ce type est en fait un numrique dans Access. Une date de rfrence a t choisie de faon arbitraire : le 1/1/1900.

- 291 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

un nombre correspondant lui a t associ : 2 (l'anne 1900 n'tant pas bissextile, un dcalage d'une journe a t pris en considration pour ce dpart) donc, nous avons : 1/1/1900 = 2 Chaque jour vaut 1. Ainsi, on peut crer la suite : 1 = 31/12/1900 2 = 01/01/1900 3 = 02/01/1900 4 = 03/01/1900 5 = 04/01/1900 6 = 05/01/1900 7 = 06/01/1900 ... Cela est trs apprciable, car ainsi, la diffrence entre 2 dates donne le nombre de jours les sparant, et pour savoir quel jour on sera dans 3 jours, il suffit d'ajouter 3 la date en cours. Maintenant, le type s'intitule Date/Heure. il doit donc aussi grer les heures. Puisqu'un jour vaut 1, et qu'il y a 24 heures dans une journe, une heure vaut 1/24 on a donc : 1h = 1/24 1mn = (1/24)/60 1s = ((1/24)/60)/60 Petite rflexion : quand sommes-nous avec ce numrique ci : 3,75 ? Rponse : le 2 janvier 1900 18h00 A propos des fonctions De nombreuses fonctions sont utilises pour la gestion des donnes de type Date/heure. Les plus importantes (les noms et usage US sont souligns) : DATE()/date Cette fonction renvoie la date systme TEMPS()/time Cette fonction renvoie l'heure systme MAINTENANT()/now Cette fonction renvoie la date ET l'heure systme AJDATE(intervalle;Nbre;Date)/DateAdd Cette fonction permet d'ajouter un Nbre d'intervalles une Date DIFFDATE(intervalle;Date1;Date2)/DateDiff Cette fonction renvoie le nombre d'intervalles entre 2 dates PARTDATE(intervalle;Date)/DatePart Cette fonction renvoie l'intervalle correspondant la date Que signifie intervalle Il s'agit d'une chane de caractres, qui caractrise une dure de temps, et qui peut prendre l'une des valeur suivante: Pour la notion d'anne : "aaaa" / "yyyy" la notion de mois : "m" / "m" la notion de jour : "j" / "d" la notion d'heure : 'h" / "h" la notion de minute : "n" / "n" la notion de seconde : "s" / "s" la notion de trimestre : "t" / "q" la notion de semaine : "ee" / "ww" la notion de jour de la semaine : "e" / "w" la notion de jour de l'anne : "a" / "y" FORMAT(Date;Format)/Format
- 292 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cette fonction renvoie le un texte correspondant la date mise en forme. SRIEDATE(Anne;Mois;Jour)/DateSerial Cette fonction revoie une date reconstruite partir des lments passs dans les arguments. SrieTemps(Heure;Minute;Seconde)/TimeSerial Cette fonction revoie une heure reconstruite partir des lments passs dans les arguments. lien : Comment afficher des dures suprieures 24 heures ?

Comment obtenir un mois en toutes lettres partir d'une Date ?


Auteurs : Gal Donat ,
Public Sub test() Dim LaDate As Date LaDate = Now() MsgBox Format(LaDate, "mmm") '-> renvoie le nom abrg du mois actuel. Pour le nom complet utilisez "mmmm" End Sub

Comment changer le jour, mois, anne d'une date ?


Auteurs : Maxence HUBICHE , "MonNombre" contient le nouveau jour :
Madate = DateSerial(Year([ChampDate],Month([ChampDate], MonNombre)

Comment connatre le jour de la semaine partir d'une date ?


Auteurs : Maxence HUBICHE , La fonction WeekDay() permet cel. A savoir : 1 correspond au dimanche et 7 au samedi.

Comment savoir si un jour est ouvr ?


Auteurs : MC2 , La fonction appeler est EstFerie(). Celle-ci en appelle une autre fLundiPaques() qui renvoie la date du lundi de Pques.
Function EstFerie(ByVal QuelleDate As Date) As Boolean Dim anneeDate As Integer Dim joursFeries(1 To 11) As Date Dim I As Integer anneeDate = Year(QuelleDate) joursFeries(1) joursFeries(2) joursFeries(3) joursFeries(4) joursFeries(5) joursFeries(6) = = = = = = DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, 1, 1) 5, 1) 5, 8) 7, 14) 8, 15) 11, 1)

- 293 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

joursFeries(7) = DateSerial(anneeDate, 11, 11) joursFeries(8) = DateSerial(anneeDate, 12, 25) joursFeries(9) = fLundiPaques(anneeDate) joursFeries(10) = joursFeries(9) + 38 ' Ascension = lundi de Paques + 38 joursFeries(11) = joursFeries(9) + 49 ' Lundi Pentecte = lundi de Paques + 49 For I = 1 To 11 If QuelleDate = joursFeries(I) Then EstFerie = True Exit For End If Next End Function Private Function fLundiPaques(ByVal Iyear As Integer) As Date 'Adapt de +ieurs scripts... Dim L(6) As Long, Lj As Long, Lm As Long L(1) L(4) L(5) L(6) = = = = Iyear Mod 19: L(2) = Iyear Mod 4: L(3) = Iyear Mod 7 (19 * L(1) + 24) Mod 30 ((2 * L(2)) + (4 * L(3)) + (6 * L(4)) + 5) Mod 7 22 + L(4) + L(5) Then L(6) - 31 4 L(6) 3

If L(6) > 31 Lj = Lm = Else Lj = Lm = End If

' Lundi de Pques = Paques + 1 jour fLundiPaques = DateAdd("d", 1, (Lj & "/" & Lm & "/" & Iyear)) End Function

Attention : Cet article prend en compte le lundi de Pentecte qui n'est ce jour plus fri.

Comment convertir une chane de caractres en date ?


Auteurs : Team Access , Pour convertir une expression en date, vous pouvez utiliser la fonction CDate(expression). Si l'expression convertir n'est pas une date correcte d'aprs le format indiqu dans les paramtres rgionaux de Windows, CDate essaie d'utiliser un autre format. Si la fonction ne russit pas faire la conversion, elle gnre une erreur de type "Type Mismatch". Dans l'exemple ci-dessous, une date est demande l'utilisateur. Sa rponse est alors convertie en date.
Dim Rep As String, DateDeNaissance As Date Do Rep = InputBox("Quelle est votre date de naissance ?") Loop While (Not IsDate(Rep))

- 294 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DateDeNaissance = CDate(Rep)

lien : FAQ VB

Comment dterminer la date du premier jour d'une semaine ?


Auteurs : HPJ , Voici une petite fonction :
Public Function PremierJourSemaine(ByVal numSemaine As Byte, ByVal annee As Integer) As Date Dim d As Date Dim numS As Integer ' premier jour de l'anne d = DateSerial(annee, 1, 1) ' numro de la semaine du 1er janvier numS = DatePart("ww", d, vbMonday, vbFirstFourDays) ' si le 1er janvier fait partie de la dernire semaine de l'anne prcdente ' alors passe la semaine suivante (la premire de la nouvelle anne) If numS <> 1 Then d = DateAdd("d", 7, d) ' calcule le premier jour de la premire semaine de l'anne d = DateAdd("d", 1 - Weekday(d, vbMonday), d) ' ajoute (numSemaine-1) semaines PremierJourSemaine = DateAdd("ww", numSemaine - 1, d) End Function

Utilisation :
Msgbox PremierJourSemaine(26, 2005)

Comment obtenir la date tout en lettres.


Auteurs : Drosera ,
'*********************************************************************************************************** ' Transforme une date en toutes lettres ' l'argument boo est utilis pour mettre une majuscule en dbut de chane '*********************************************************************************************************** Function DateEnLettre(dtm As Date, Optional boo As Boolean = False) As String Dim strJour As String Dim strMois As String Dim strAnne As String If Format(dtm, "dd") = 1 Then If boo Then strJour = "Premier" Else strJour = "premier" End If Else strJour = NbVersTexte(Format(dtm, "dd"), boo) End If strMois = CStr(Format(dtm, "mmmm")) strAnne = NbVersTexte(Format(dtm, "yyyy")) - 295 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DateEnLettre = strJour & " " & strMois & " " & strAnne End Function '*********************************************************************************************************** ' Transforme un nombre en lettres '*********************************************************************************************************** Public Function NbVersTexte(ValNum As Double, Optional boo As Boolean = False) As String Static Static Static Static Dim Dim Dim Dim Dim Dim Dim Unites() As String Dixaines() As String LesDixaines() As String Milliers() As String

i As Integer nPosition As Integer ValNb As Integer LesZeros As Integer strResultat As String strTemp As String tmpBuff As String

Unites = Split("zro;un;deux;trois;quatre;cinq;six;sept;huit;neuf", ";") Dixaines = Split("dix;onze;douze;treize;quatorze;quinze;seize;dix-sept;dix-huit;dix-neuf", ";") LesDixaines = Split(";dix;vingt;trente;quarante;cinquante;soixante;soixante-dix;quatrevingt;quatre-vingt-dix", ";") Milliers = Split(";mille;million;milliard", ";") On Error GoTo NbVersTexteError strTemp = CStr(Int(ValNum)) 'pluriel des millions If Len(strTemp) > 6 Then tmpBuff = left(strTemp, Len(strTemp) - 6) tmpBuff = right(tmpBuff, 3) If Val(tmpBuff) > 1 Then Milliers(2) = Milliers(2) & "s" End If End If 'pluriel des milliards If Len(strTemp) > 9 Then tmpBuff = left(strTemp, Len(strTemp) - 9) tmpBuff = right(tmpBuff, 3) If Val(tmpBuff) > 1 Then Milliers(3) = Milliers(3) & "s" End If End If 'laboration de la chane If ValNum = 0 Or ValNum = 1 Then strResultat = Unites(ValNum) End If For i = Len(strTemp) To 1 Step -1 ValNb = Val(Mid$(strTemp, i, 1)) nPosition = (Len(strTemp) - i) + 1 Select Case (nPosition Mod 3) Case 1 LesZeros = False If i = 1 Then If ValNb > 1 Or (ValNb = 1 And nPosition > 4) Then tmpBuff = Unites(ValNb) & " " Else tmpBuff = "" End If ElseIf Mid$(strTemp, i - 1, 1) = "1" Then tmpBuff = Dixaines(ValNb) & " " i = i - 1 ElseIf Mid$(strTemp, i - 1, 1) = "9" Then tmpBuff = LesDixaines(8) & " " & Dixaines(ValNb) & " "

- 296 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

i = i - 1 ElseIf Mid$(strTemp, i - 1, 1) = "7" Then If ValNb = 1 Then tmpBuff = LesDixaines(6) & " et " & Dixaines(ValNb) & " " Else tmpBuff = LesDixaines(6) & " " & Dixaines(ValNb) & " " End If i = i - 1 ElseIf ValNb > 0 Then tmpBuff = Unites(ValNb) & " " Else LesZeros = True If i > 1 Then If Mid$(strTemp, i - 1, 1) <> "0" Then LesZeros = False End If End If If i > 2 Then If Mid$(strTemp, i - 2, 1) <> "0" Then LesZeros = False End If End If tmpBuff = "" End If If LesZeros = False And nPosition > 1 Then tmpBuff = tmpBuff & Milliers(nPosition / 3) & " " End If strResultat = tmpBuff & strResultat Case 2 If ValNb > 0 Then If strResultat = "un " And ValNb <> 8 Then strResultat = LesDixaines(ValNb) & " et " & strResultat Else strResultat = LesDixaines(ValNb) & " " & strResultat End If End If Case 0 If ValNb > 0 Then If ValNb > 1 Then strResultat = Unites(ValNb) & " cent " & strResultat Else strResultat = "cent " & strResultat End If End If End Select Next i strResultat = RTrim(strResultat) 'pluriel des centaines If Len(strTemp) > 2 And right(strTemp, 2) = "00" Then tmpBuff = Mid(strTemp, Len(strTemp) - 2, 1) If Val(tmpBuff) > 1 Then strResultat = strResultat & "s" End If End If 'masjuscule optionnelle If Len(strResultat) > 0 Then If boo Then strResultat = UCase$(left$(strResultat, 1)) & Mid$(strResultat, 2) End If End If EndNbVersTexte: NbVersTexte = strResultat Exit Function NbVersTexteError: strResultat = "Erreur de conversion !" Resume EndNbVersTexte

- 297 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Comment additionner deux champs aux valeurs de type ..h..mn ?


Auteurs : Zorro , Text1, Text2 et Text3 contiennent les deux valeurs ajouter. zdtResult est la zone de texte affichant le rsultat :
h = Val(Mid(Text1, 1, 2)) + Val(Mid(Text2, 1, 2)) + Val(Mid(Text3, 1, 2)) m = Val(Mid(Text1, 5, 3)) + Val(Mid(Text2, 5, 3)) + Val(Mid(Text3, 5, 3)) If m > 60 Then Hplus = Fix(m / 60) m = m Mod 60 End If h = h + Hplus zdtResult.Value = Str(h) & " h " & Str(m) & " min"

Comment transformer les heures en centimes


Auteurs : Maxence HUBICHE , la question : Comment faire pour passer de 02:15:47 135,78' la rponse en franais :

MsgBox Heure([ChampDate])*60+Minute([ChampDate]) & "," & Format(Seconde([ChampDate])/60*100;"00")

la rponse en anglais :

MsgBox Hour([ChampDate]) * 60 + Minute([ChampDate]) & "," & Format(Second([ChampDate]) / 60 * 100, "00")

lien :

Solution trouve ici

Comment convertir Date Julienne vers Date normale ?


Auteurs : random , Voici un code permettant de convertir une date de type Julienne (ex. 107142) vers une date 2007/05/22.
Function cjulian(julian As Long) As Date cjulian = DateSerial(1900 + CInt(Left(julian, 3)), 1, CInt(Right(julian, 3))) End Function

Appel de la fonction :
Dim MaDate As Date MaDate = Format(cjulian(107142), "yyyy/mm/dd")

- 298 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Manipulation des donnes > Trucs et Astuces Convertir une date au format UNIX en format franais
Auteurs : Team Access , Les dates UNIX sont exprimes en secondes coules depuis le 01/01/1970. Il est donc possible de convertir une telle date en utilisant la fonction DateAdd.

Function convertDateUnix(lngDate As Long) convertDateUnix = DateAdd("s", lngDate, #1/1/1970#) End Function

Crer un password ou un code (chiffre+lettre) en VBA


Auteurs : Demco , Pour le nombre alatoire :
Int(Rnd * 1000)

En ce qui concerne les lettres, on peut crer une table(T_Lettre) contenant toutes les lettres et avec identifiant 1, 2, 3 ... MPD de la table : T_Lettre(NumLettre, Lettre) Ensuite :
mdp = DLookup("Lettre", "T_Lettres", "NumLettre = " & Int(Rnd * 26 + 1))

Donc la variable mdp contient une lettre alatoire. Vous pouvez le faire le nombre de fois souhait. Pour avoir une procdure qui choisit aussi bien des lettres que des chiffres, on peut ajouter les 10 chiffres dans la table (on a donc 36 enregistrements dans la table) Ensuite :
Dim i As Integer 'Mot de passe de 10 caractres For i = 0 To 9 mdp = DLookup("caractere", "password", "id = " & Int(Rnd * 36 + 1)) provi = provi & mdp Next i pass = provi

Calculer le rsultat d'un tarif la seconde partir d'un tarif et d'une heure.
Auteurs : ARO , Dans cet exemple, il s'agit d'un tarif la seconde :
Public Sub multi_heure() Dim heure As Date Dim prix As Integer Dim resultat As Single heure = "05:30:00" prix = 3 'tu extrait le nb d'heure

- 299 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'pour les heures resultat = Hour(heure) * prix resultat = resultat + Minute(heure) / 60 * prix End Sub

Calculer le nombre de jours ouvrables entre 2 dates


Auteurs : MC2 , Il faut mettre bAvecJFerie False pour ne pas tenir compte des jours feris, rien sinon.
Function Work_Days(BegDate As Variant, EndDate As Variant, _ Optional bAvecJFerie As Boolean = True) As Variant Dim dt As Date On Error GoTo Work_Days_Error If IsNull(BegDate) Or IsNull(EndDate) Then Err.Raise vbObjectError + 1 If Not IsDate(BegDate) Or Not IsDate(EndDate) Then Err.Raise vbObjectError + 2 If BegDate > EndDate Then Err.Raise vbObjectError + 3 dt = BegDate Work_Days = 0 While dt <= EndDate If DatePart("w", dt, vbMonday) < 6 And IIf(bAvecJFerie, Not EstFerie(dt), True) Then Work_Days = Work_Days + 1 End If dt = DateAdd("d", 1, dt) Wend Exit Function Work_Days_Error: Select Case Err.Number Case vbObjectError + Case vbObjectError + Case vbObjectError + Work_Days = "La date de fin Case Else: Work_Days End Select End Function

1: Work_Days = "Les 2 dates sont obligatoires." 2: Work_Days = "Format de date incorrect." 3: doit tre postrieure la date de dbut." = Err.Description

Function EstFerie(ByVal QuelleDate As Date) As Boolean Dim anneeDate As Integer Dim joursFeries(1 To 11) As Date Dim i As Integer anneeDate = Year(QuelleDate) joursFeries(1) joursFeries(2) joursFeries(3) joursFeries(4) joursFeries(5) joursFeries(6) joursFeries(7) joursFeries(8) = = = = = = = = DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, DateSerial(anneeDate, 1, 1) 5, 1) 5, 8) 7, 14) 8, 15) 11, 1) 11, 11) 12, 25)

joursFeries(9) = fLundiPaques(anneeDate) joursFeries(10) = joursFeries(9) + 38 ' Ascension = lundi de Paques + 38 joursFeries(11) = joursFeries(9) + 49 ' Lundi Pentecte = lundi de Paques + 49 For i = 1 To 11 If QuelleDate = joursFeries(i) Then EstFerie = True Exit For

- 300 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If Next End Function Private Function fLundiPaques(ByVal Iyear As Integer) As Date 'Adapt de +ieurs scripts... Dim L(6) As Long, Lj As Long, Lm As Long L(1) L(4) L(5) L(6) = = = = Iyear Mod 19: L(2) = Iyear Mod 4: L(3) = Iyear Mod 7 (19 * L(1) + 24) Mod 30 ((2 * L(2)) + (4 * L(3)) + (6 * L(4)) + 5) Mod 7 22 + L(4) + L(5) Then L(6) - 31 4 L(6) 3

If L(6) > 31 Lj = Lm = Else Lj = Lm = End If

' Lundi de Pques = Paques + 1 jour fLundiPaques = DateAdd("d", 1, (Lj & "/" & Lm & "/" & Iyear)) End Function

Comment connatre le sparateur dcimal ?


Auteurs : Cafeine ,
Function GiveSep() As String GiveSep = Mid(3 / 2, 2, 1) End Function

Transformer des centimes en minutes, secondes et centimes


Auteurs : FRED.G , En vba :
Format(Int(Resultat \ 6000), "00") & ":" & Format(Int((Resultat Mod 6000) \ 100), "00") & ":" & Format(Int((Resultat Mod 6000) Mod 100), "00")

En Access :
Format(Ent(Resultat \ 6000); "00") & ":" & Format(Ent((Resultat Mod 6000) \ 100); "00") & ":" & Format(Ent((Resultat Mod 6000) Mod 100); "00")

Comment effectuer un calcul statistique partir des valeurs contenues dans un tableau ?
Auteurs : ThierryAIM ,
Voici par exemple une fonction pour calculer un cart type sur les valeurs contenues dans un tableau :

Public Function EcartTypeP(tbl As Variant) As Double - 301 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim Var1, Var2 For i = 1 To UBound(tbl) Var1 = Var1 + (tbl(i) * tbl(i)) ' somme des carrs Var2 = Var2 + tbl(i) 'somme des valeurs Next EcartTypeP = Sqr(((UBound(tbl) * Var1) - (Var2 * Var2)) / (UBound(tbl) * UBound(tbl))) End Function

Voici le code mettre afin de tester cette fonction. Nous remplissons tout d'abord un tableau pour ensuite en calculer l'cart type dont le rsultat s'affichera dans la fentre d'excution.

Private Sub Bouton1_Click() Dim table(10) 'remplir le tableau For i = 1 To 10 table(i) = i Next 'dans un module faites ctrl+g pour afficher la fentre d'excution Debug.Print EcartTypeP(table) End Sub

Comment optimiser l'ajout sur une grande table dans un recordset DAO
Auteurs : Tofalu , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Si vous voulez insrer des donnes dans une table de 100000 lignes, vous utilisez surement ceci :

Set oRst=CurrentDb.OpenRecordset("MaTable") oRst.AddNew

Or, plus le jeu d'enregistrements d'un recordset est gros, plus celui-ci mettra de temps se charger. L'ide est de restreindre le jeu de donnes du recordset en crant une requte :

SELECT * FROM MATABLE WHERE 1=0

Bien entendu, cette requte ne retourne rien. Un recordset sur celle ci sera donc trs lger.

Set oRst=CurrentDb.OpenRecordset("MaRequete") oRst.AddNew

Les enregistrements sont envoys dans la table MaTable et le contenu de celle-ci n'a pas t charg. L'ajout est optimal.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment faire un Update d'enregistrements non directement modifiables ?


Auteurs : philou22 ,
- 302 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cas rencontr sur des tables attaches ODBC, o on ne peut pas modifier directement le contenu de certains champs car ces champs sont des SortItems ou bien des SearchItems (Bases Image sur HP3000). Il faut alors Deleter l'enregistrement puis le Rcrire avec la nouvelle valeur du champ en question. La procdure ci dessous traite n'importe quelle table DAO o on peut deleter / Add, avec 4 paramtres : - Nom de la table - condition donnant la porte des modifications - nom du champ dont le contenu est modifier - nouvelle valeur du champ

Sub dt_update(table As String, filtre As String, champ As String, valeur As Variant) ' ' table : Table lu, delete et modifie ' filtre : condition permettant de slectionner les enr modifier ' attention : si critre String : cod_art='toto' ' champ : nom du champ dont la valeur doit tre modifie ' valeur : Nouvelle valeur du champ prcit ' ' on ouvre 2 fois la table : ' une fois au travers d'une requete qui filtre les enregistrements traiter pour mmo / delete ' une fois en direct pour l'criture Dim Dim Dim Dim instsql As String i As Byte db As DATABASE dt As Recordset, dt2 As Recordset

instsql = "select * from " & table & " where " & filtre & ";" Set db = DBEngine.Workspaces(0).Databases(0) ' slection pour copie et delete Set dt = db.OpenRecordset(instsql, DB_OPEN_DYNASET) ' pour crire Set dt2 = db.OpenRecordset(table, DB_OPEN_DYNASET) dt.MoveFirst Do Until dt.EOF ' mmo dt2.AddNew For i = 0 To dt.Fields.Count - 1 dt2(i) = dt(i) Next i ' modif champ dt2(champ) = valeur ' delete ancien dt.Delete dt2.Update dt.MoveNext Loop End Sub

C'est bien utile car utilisable sur n'importe quelle table sans avoir rcrire une procdure pour chaqu'une d'elle.

Comment enlever le trait de sparation entre la zone entte de formulaire et la zone dtail de ce meme formulaire ?
Auteurs : Team Access , Dans les proprits du formulaire il faut mettre

- 303 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Diviseur d'enregistrement sur NON

- 304 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Astuces de programmation Comment faire deux timers diffrents sur un mme formulaire ?
Auteurs : stephane eyskens , Vous pouvez tout regrouper dans votre premier timer. Rien ne vous empche de contrler le temps qui passe et selon l'intervalle que vous veux, excuter telle ou telle action dans votre timer. En admettant que vous ayez un interval dfini 1000 pour votre timer. Il vous suffit de dclarer une variable publique dans votre module. Si vous avez une action excuter toutes les secondes, mettez simplement votre action sans contrle et si vous avez une action excuter toutes les 2 sec, faites un test comme ceci: :
Public Sec as Integer ' dclaration de ta variable dans le module de classe

Dans la procdure d'vnement on Timer:


'le code de ton action qui doit s'excuter toutes les secondes 'incrmentation de la variable Sec = Sec+1 'ici le code de l'actoin qui doit s'excuter toutes les 2 sec if((Sec mod 2)=0) then 'ici l'action effectuer toutes les 2 sec end if

Comment personnaliser les messages d'erreur ?


Auteurs : Team Access , En VBA, dans la gestion des erreurs il faut mettre :

Select Case err.number Case x 'x est le numro de l'erreur que vous voulez intercepter MsgBox "LeMessage" .... Case Else MsgBox err.number & " " & err.description 'pour les cas que vous n'aurez pas mentionns. End Select

Vous mettez autant de "case" ( la place des ...) qu'il y a d'erreurs que vous voulez grer. Comment rcuprer le numro de l'erreur ? Il est inscrit sur le message d'erreur lorsqu'il apparat. lien : Comment personnaliser le message d'erreur d'Access lors de doublons

Eviter le lancement de deux instances d'une base


Auteurs : Morsi , Cette mthode permet d'viter le lancement de la mme base plusieurs fois en locale. Pour lancer le test vous pouvez soit crer une macro autoexec, soit crer un formulaire de dmarrage soit <F_Dmarrage> et qui vrifie si la base est dj ouverte :
' -- Evenement sur ouverture du formulaire Private Sub Form_Open(Cancel As Integer) If TestDDELink(Application.CurrentDb.Name) Then

- 305 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MsgBox "Cette base est dja ouverte sur votre poste", VbInformation DoCmd.Quit End If End Sub Function TestDDELink(ByVal strNomApplication As String) As Integer Dim varCanalDDE As Long On Error Resume Next Application.SetOption "Ignore DDE Requests", True ' -- Ouvrir un canal entre instance de la base varCanalDDE = DDEInitiate("MSAccess", strNomApplication) ' -- Si la base n'est pas ouverte, pas de canal de communication entre deux instances If Err Then TestDDELink = 0 Else TestDDELink = 1 DDETerminate varCanalDDE DDETerminateAll End If Application.SetOption ("Ignore DDE Requests"), False End Function

Comment excuter du code automation plus rapidement ?


Auteurs : Papy Turbo , Excuter une routine VBA, instruction par instruction, sur un objet Automation (Excel ou autre) est extrmement lent : le temps de passer la commande d'Access Excel s'ajoute chaque ligne de code. Dans le cas de Word, Excel et autres, qui incorporent le langage VBA, l'astuce consiste : 1- passer toutes les valeurs en un bloc (voir les diverses FAQs et articles existants : il y a plein de mthodes), donc une seule instruction, 2- recopier les instructions VBA dans une macro Word ou Excel ou... 3- lancer, par automation une seule instruction : excution de la macro. Cela complique un poil la gestion d'erreur, mais c'est videmment beaucoup plus efficace, puisque c'est ensuite Excel (ou Word), tout seul, qui va excuter la procdure...

Excution d'une commande contenue dans une variable


Auteurs : stephane eyskens ,
Dim mycmd as String mycmd = "DoCmd.OpenForm (\'table1\')" Eval (mycmd)

Excuter une fonction la fermeture d'Access


Auteurs : Etienne Bar , Le seul moyen d'y arriver est d'ouvrir l'ouverture un formulaire invisible et de coder votre action de sortie sur l'vnement de fermeture de ce formulaire.

- 306 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Lorsque vous allez fermer Access, ce formulaire va se fermer et l'action de fermeture va s'excuter. Bien sur, il ne faut pas que ce formulaire puisse tre ferm par une action utilisateur c'est pour a qu'il est prfrable qu'il ne soit pas visible.

Excuter une procdure en appuyant sur les touches F1, F2, etc.
Auteurs : FRED.G , Remarque pralable: La proprit KeyPreview (AperuTouches) du formulaire doit tre sur Oui.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF1 MsgBox "Vous avez appuy sur Case vbKeyF2 MsgBox "Vous avez appuy sur Case vbKeyF3 MsgBox "Vous avez appuy sur Case Else Exit Sub End Select 'Ensuite on annule l'effet normal KeyCode = 0 End Sub

F1" F2" F3"

de la touche

lien :

Quelles sont les correspondances en VBA des touches ?

Puis-je mettre plusieurs lignes de codes sur une seule ?


Auteurs : Maxence HUBICHE , oui Il suffit de sparer chaque instruction par le symbole :
A=B : C=D

Nous avons ici deux lignes de code en une.

Utilisation du if ... or ... or. Revenir la ligne dans la condition pour rendre plus lisible.
Auteurs : Team Access , Il suffit de mettre un soulign en fin de ligne. Ne pas oublier de mettre un espace avant le soulign :
If X=3 _ Or X=8 Then ...

- 307 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If

Sortir d'une boucle sur pression d'une touche dtermine du clavier


Auteurs : Maxence HUBICHE , Vous mettez, dans votre module (formulaire) une variable de porte module, par exemple :
Dim mpbTouche As Boolean

Dans votre code, vous crez une procdure sur l'vnement KeyDown qui contiendra la ligne :
mpbTouche=(KeyCode=xxxx)

O xxxx correspond au code de la touche que vous souhaitez intercepter (vous peux le tester avec un MsgBox pour le connaitre : MsgBox KeyCode). Et dans votre boucle vous testez mpbTouche
Do ... ... Loop until mpbTouche mpbTouche=False

Comment excuter un code la premire excution d'un programme ?


Auteurs : Jean-Marc Rabilloud , Il y a plusieurs mthodes pour faire cela. Habituellement on utilise un emplacement particulier du registre situ sous cette cl : HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key Cette partie du registre est directement manipulable avec les quatre fonctions suivantes : SaveSetting appname, section, key, value : permet de crer ou de modifier une cl du registre. GetSetting(appname, section, key [, default]) ou GetAllSettings((appname, section) : permet de rcuprer une ou des cls DeleteSetting appname, section, key : supprime une cl.

Bien sr, ces fonctions ne permettent pas une gestion complte du registre mais elles vous permettent de stocker quelques valeurs trs simplement. C'est ce que nous allons faire avec le code suivant.
Private Sub Form_Load() 'vrifie l'existence de la cl If Len(GetSetting("MonAppli", "Demar", "DejaEx")) = 0 Then 'si elle n'existe pas cration de celle-ci SaveSetting "MonAppli", "Demar", "DejaEx", "Vrai" 'Le code plac ici ne s'excutera qu'une fois MsgBox "Je n'apparatrais plus", vbInformation + vbOKOnly End If

- 308 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

lien : FAQ VB

Comment obtenir le temps d'excution d'une partie de mon code ?


Auteurs : nightfall , Ajoutez cette dclaration au dbut de votre module :
Private Declare Function GetTickCount Lib "kernel32" () As Long

GetTickCount renvoie le nombre de millisecondes qui s'est coul depuis le dmarrage du systme. Appelez-la au dbut de votre code, puis la fin, et la diffrence entre les deux rsultats vous donnera le nombre de millisecondes qui s'est coul entre les deux appels.
Dim Debut As Long, Fin As Long Debut = GetTickCount() 'ici le code chronomtrer Fin = GetTickCount() MsgBox "Temps mis en millisecondes : " & Fin - Debut

si vous voulez un retour au format HH:MM:SS:


MsgBox "Temps Total d'excution en HH:MM:SS -> " & TimeSerial(0, 0, (((Fin - Debut) / 1000)))

lien : FAQ VB lien : Comment mesurer le temps d'excution d'un morceau de code ?

Quitter Access avec docmd.quit ou Application.quit ?


Auteurs : Tofalu , Il vaut mieux utiliser la mthode Application.quit donc l'excution est plus propre. La methode docmd.quit tant rserve une compatibilit avec la version Access 95. L'aide a crit : La mthode Quit de l'objet DoCmd a t ajoute pour des raisons de compatibilit ascendante afin de pouvoir excuter l'action Quitter dans du code Visual Basic dans Microsoft Access 95. Il vaut mieux que vous utilisiez plutt la mthode Quit existante de l'objet Application.

Comment commenter/d commenter plusieurs lignes d'un coup ?


Auteurs : Demco , Il existe des boutons pour cela qui ne sont pas directement accessibles. Voici comment les faire apparatre : allez dans un module (feuille de code) sur la barre de menu faites : bouton droit / personnaliser... catgorie Edition
- 309 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dans la colonne de droite trouvez Commenter bloc cliquez sur cette ligne, et faites glisser jusqu' la barre d'Access (o on trouve le bouton excuter etc). ritrez l'opration pour Ne pas commenter bloc

Il ne vous reste alors qu' slectionner les lignes de code, appuyer sur le bouton Commenter bloc et le tour est jou !

Comment forcer Access attendre la fin d'un traitement avant de continuer ?


Auteurs : Maxence HUBICHE , DoEvents sert rendre la main temporairement au systme qui, ainsi, peut excuter des instructions de sa pile. DoEvents sert en fait au 'multitache' de Windows. Sinon, l'excution du code VBA a tendance monopoliser la machine. Pour essayer, crez deux zones de texte (txt1 et txt2) puis un bouton (btn1) Placez ce code sur l'vnement Click du bouton :
txt1 = "premire zone remplie" DoEvents 'cette boucle sert crer une attente entre les deux affectations For i = 1 To 10000000 Next txt2 = "seconde zone remplie"

Essayez ce code, puis enlevez la ligne DoEvents et essayez de nouveau. Sans DoEvents, les deux zones de texte affichent leur nouveau texte en mme temps. lien : Comment lancer un programme et attendre la fin de son excution avant de continuer ?

Comment accder la base de registre ?


Auteurs : pokemoon94 ,
Dim Ma_Clef As String 'Chemin de ma clef dans le registre Dim WshShell As Object Ma_Clef = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" Set WshShell = CreateObject("WScript.Shell") MsgBox WshShell.RegRead(Ma_Clef) Set WshShell = Nothing

On peut aussi utiliser les mthode RegWrite ou RegDelete.

Modifier Option Gnral d'Access par le code


Auteurs : Keops93 ,
'Code Valide pour Office XP !!! vrifier pour les autres 'Modifie les options gnrales d'ACCESS SetOption "Confirm Action Queries", False SetOption "Confirm Document Deletions", False SetOption "Confirm Record Changes", False 'Requetes Actions 'Suppression d'enregistrement 'Modification d'enregistrement

- 310 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

SetOption "ShowWindowsInTaskbar", False

'Fenetres dans la barre des taches

Comment en VBA rcuprer dans une variable le chemin d'une BDD si on connait uniquement son DSN ?
Auteurs : Lucifer ,
Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyA" _ (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, ByVal lpData As String, lpcbData As Long) As Long Public Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Public Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, ByVal lpData As String, lpcbData As Long) As Long Public Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, lpData As Long, lpcbData As Long) As Long Public Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _ lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long

'Constante RegQueryValueEx.. Public Const REG_SZ As Long = 1 Public Const REG_DWORD As Long = 4 Public Public Public Public Public Public Public Public Public Public Public Public Public Public Public Const Const Const Const Const Const Const Const Const Const Const Const Const Const Const HKEY_CLASSES_ROOT = &H80000000 HKEY_CURRENT_USER = &H80000001 HKEY_LOCAL_MACHINE = &H80000002 HKEY_USERS = &H80000003 ERROR_NONE = 0 ERROR_BADDB = 1 ERROR_BADKEY = 2 ERROR_CANTOPEN = 3 ERROR_CANTREAD = 4 ERROR_CANTWRITE = 5 ERROR_OUTOFMEMORY = 6 ERROR_ARENA_TRASHED = 7 ERROR_ACCESS_DENIED = 8 ERROR_INVALID_PARAMETERS = 87 ERROR_NO_MORE_ITEMS = 259

Public Const KEY_QUERY_VALUE = &H1 Public Const KEY_SET_VALUE = &H2 Public Const KEY_ALL_ACCESS = &H3F Public Const REG_OPTION_NON_VOLATILE = 0 Public Function ValeurRegistre(pRoot As Variant, pChemin As String, pcle As String) As String On Error GoTo Err_ValeurRegistre Dim RegCle As Long Dim RegValeurS As String Dim regvaleurL As Long Dim nSize As Long Dim pType As Long Dim lrc As Long

- 311 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

RegOpenKeyEx pRoot, pChemin, RegCle ' Determine la taille et le type des donnes lire RegQueryValueExNULL RegCle, pcle, 0, pType, 0&, nSize Select Case pType Case REG_SZ RegValeurS = String(nSize, 0) lrc = RegQueryValueExString(RegCle, pcle, 0, pType, RegValeurS, nSize) If lrc = ERROR_NONE Then ValeurRegistre = Left$(RegValeurS, nSize) Else Err.Raise 99999, , "Erreur provoque" End If Case REG_DWORD lrc = RegQueryValueExLong(RegCle, pcle, 0, pType, regvaleurL, nSize) If lrc = ERROR_NONE Then ValeurRegistre = CStr(regvaleurL) Else Err.Raise 99999, , "Erreur provoque" End If End Select RegCloseKey RegCle

Err_ValeurRegistre: Select Case Err.Number Case 0, 20 Case Else ValeurRegistre = "" End Select Exit Function End Function

Voici comment utiliser cette fonction dans le cas d'un DSN systeme:
ValeurRegistre(HKEY_LOCAL_MACHINE, "software\ODBC\ODBC.INI\TonDSN", "DBQ")

Existe-t-il des outils permettant de faciliter le dveloppement et l'entretien de bases de donnes Access ?
Auteurs : Maxence HUBICHE , Premier outil : MZTools Site web o trouver cet outil. Il vous fera une recherche, un remplacement dans tout votre code de votre application si vous voulez, mais il n'ira pas jusqu' chercher dans les contrles, les requtes,... Il permet galement l'insertion d'entte de procdure ou de module, la gestion d'erreur ... Second outil : V-Tools Site web o trouver cet outil.

- 312 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Il opre une recherche complte sur les proprits, le code, les formulaires... bref trs utile galement.

Comment compacter la base de donnes en cours ?


Auteurs : Maxence HUBICHE , Pour MS Access 2000 et plus. Vous trouverez ci-dessous une librairie qui vous permettra de compacter la base en cours.

lien :

TSI SOON (Shut One, Open New) database add-in

Lorsque dans le code une boucle un peu trop longue s'excute (par ex. > 20 sec) la fentre access "ne rpond plus"... jusqu' ce que le code soit termin
Auteurs : Maxence HUBICHE , L'utilisateur n'a alors aucune connassance de la progression du code, et pire, il croit ( tort) que l'application a plant ! Solutions : 1/ Utiliser le DoEvents pour que le processeur ne soit pas accapar par la boucle. Exemple :

While i>0 i=i+1 DoEvents Wend

2/ Il existe des commandes diverses pour forcer la mise jour de l'affichage (repeint par exemple, ou refresh... ) 3/ Si malgr tout, cela n'est pas suffisant, il reste la vrai prog ! A savoir faire une DLL qui utilise un thread (ou des threads) bien elle ... Mais l, bon courage !

Comment retrouver le rang d'un objet au sein de la collection laquelle il appartient ?


Auteurs : Tofalu ,
Private Function GetIndiceInColl(oObject As Object, oColl As Collection) As Integer Dim I As Integer I = 1 'parcourt de la collection While I <= oColl.Count And getIndice = 0 If oColl(I) Is oObject Then GetIndiceInColl = I I = I + 1 'on incrmente le nombre d'objets Wend End Function

Sub Dim Dim 'on

test() C As New Collection O1 As New Classe1, O2 As New Classe1, O3 As New Classe1 ajoute des objets une collection

- 313 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

C.Add O1 C.Add O2 C.Add O3 'On veut afficher le rang de l'objet <b>02</b> dans la collection <b>C</b>. MsgBox GetIndiceInColl(O2, C) End Sub

Comment mesurer le temps d'excution d'un morceau de code ?


Auteurs : vmolines , Crer un module de classe clsMarqueur en collant :

Option Compare Database Option Explicit Private Declare Function GetTickCount Lib "kernel32" () As Long Private Nom As String Private Debut As Long Private Fin As Long Private Sub Class_Initialize() Debut = GetTickCount End Sub Public Property Get lDebut() As Long Let lDebut = Debut End Property Public Property Get lFin() As Long Let lFin = Fin End Property Public Sub SetFin() Fin = GetTickCount End Sub Public Function Duree() As Long Duree = Fin - Debut End Function Public Sub lNom(ByVal pNom As String) Nom = pNom End Sub Public Function getNom() As String getNom = Nom End Function

Crer un module de classe clsMarqueurs en collant :

Option Compare Database Option Explicit Dim Marqueurs As New Collection Private Sub Class_Initialize() Set Marqueurs = New Collection End Sub

- 314 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Public Sub ajouterMarqueur(ByVal pNomMarqueur As String) Marqueurs.Add New clsMarqueur, pNomMarqueur Marqueurs(pNomMarqueur).lNom (pNomMarqueur) End Sub Public Sub terminerMarqueur(ByVal pNomMarqueur As String) Marqueurs.Item(pNomMarqueur).SetFin End Sub Public Function dureeMarqueur(ByVal pNomMarqueur As String) As String dureeMarqueur = Marqueurs.Item(pNomMarqueur).sDuree End Function Private Sub Class_Terminate() Set Marqueurs = Nothing End Sub Public Sub rapportDebug() Dim mqr As clsMarqueur For Each mqr In Marqueurs Debug.Print mqr.getNom & " : " & mqr.Duree & "ms" Next End Sub

Il s'agit de deux classe destines enregistrer des temps d'excution utiliser comme suit :

dim analyse as new clsMarqueurs analyse.ajouterMarqueur("mon traitement1") ... 'Code du traitement 1 analyse.terminerMarqueur("mon traitement1") analyse.ajouterMarqueur("mon traitement2") ... 'Code du traitement 2 analyse.terminerMarqueur("mon traitement2") analyse.rapportDebug

Vous pouvez imbriquer les marqueurs si besoin. Le rapport debug affiche le nom de chaque marqueur avec le temps d'excution entre le dbut et la fin. lien : Comment obtenir le temps d'excution d'une partie de mon code ?

La mthode Find d'ADO ne s'applique qu' une seule colonne, existe-t-il une alternative permettant d'utiliser plusieurs colonnes ?
Auteurs : Tofalu , Le lien propos ci-dessous vous donnera diffrentes alternatives possibles afin d'arriver vos fins.

lien :

Problme avec la mthode ADO Find

Comment compacter une base de donnes avec ADO ?


Auteurs : Tofalu , Bien qu'ADO ne fournisse pas de mthode agissant sur la structure du fichier mdb, il est possible d'utiliser JRO (Jet Rplication Object)
- 315 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour cela ajouter une rfrence Microsoft JRO vote projet et utiliser la syntaxe suivante :

Dim jro As jro.JetEngine Set jro = New jro.JetEngine jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d: \MaBase.mdb;Jet OLEDB:Database Password=test", _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d: \MaBaseCompactee.mdb;Jet OLEDB:Engine Type=4;Jet OLEDB:Database Password=test"

Excuter un code si une variable optionnelle est passe en paramtre d'une fonction
Auteurs : Cafeine , Dans la dclaration de votre fonction dclarez l'argument facultatif de cette faon :

...Optional ByVal strArg1 as String="<empty>"...

Puis dans votre fonction regardez la valeur de strArg1 :

Dim flagNonRenseign As Boolean flagNonRenseign = False If strArg1 = "<empty>" Then flagNonRenseign = True strArg1 = "" End If

Comment attribuer une icne l'application par VBA


Auteurs : LedZeppII , Il faut utiliser la proprit AppIcon

Public Sub SetDBprop(propName As String, propType As DAO.DataTypeEnum, propVal As Variant) Dim db As DAO.Database, p As DAO.Property Set db = CurrentDb Set p = Nothing On Error Resume Next Set p = db.Properties(propName) On Error GoTo 0 If p Is Nothing And Not IsNull(propVal) Then Set p = db.CreateProperty(propName, propType, propVal) db.Properties.Append p End If If Not (p Is Nothing) Then If IsNull(propVal) Then db.Properties.Delete propName Else p = propVal End If End If db.Close

- 316 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End SubA+

Pour attribuer l'icne :

Dim strIcon As String strIcon = currentproject.Path & "\NomFichier.ico" SetDBprop "AppIcon", dbText, strIcon Application.RefreshTitleBar

Pour supprimer licne :

SetDBprop "AppIcon", dbText, Null Application.RefreshTitleBar

Ce code peut tre mis soit dans l'vnement Sur Chargement du Formulaire d'ouvertre ou bien dans la macro Autoexec.

lien :

http://access.developpez.com/sources/index.php?page=acc#Optiondemarrage2

Comment rcuprer la date et l'heure de la dernire modification d'un Etat ou d'un Formulaire ?
Auteurs : Sierra.77 , Morgan BILLY , Voici une solution simple pour rcuprer la date et l'heure de la dernire modification d'un Etat ou d'un Formulaire. Pour un Etat :
CurrentProject.AllReports("Mon Etat").DateModified

Pour un Formulaire :
CurrentProject.AllForms("Mon Formulaire").DateModified

Pour tous les Etats du projet en cours :


Dim acobjLoop As AccessObject For Each acobjLoop In CurrentProject.AllReports With acobjLoop Debug.Print .Name & " - Created " & .DateCreated & " - Modified " & .DateModified End With Next acobjLoop

Pour tous les Formulaires du projet en cours :


Dim acobjLoop As AccessObject For Each acobjLoop In CurrentProject.AllForms With acobjLoop Debug.Print .Name & " - Created " & .DateCreated & " - Modified " & .DateModified End With Next acobjLoop

Pour afficher cette information dans une zone de texte il faut inscrire la proprit "Source contrle" la ligne suivante :
- 317 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour un Etat :

=CurrentProject.AllReports(Report.Name).DateModified

Pour un Formulaire :

=CurrentProject.AllReports(Forms.Name).DateModified

Autre mthode:
Sub DonneesEtat() Dim MyDb As DAO.Database Dim MyDocument As DAO.Document Set MyDb = CurrentDb() With MyDb For Each MyDocument In .Containers("Reports").Documents Debug.Print "Nom: " & MyDocument.name & " Date de modification: " & MyDocument.LastUpdated Next End With End Sub

lien :

Comment rcuprer la date et l'heure de la dernire modification d'un Etat et d'un Formulaire

Comment rcuprer la date et l'heure de la dernire modification d'un Etat et d'un Formulaire
Auteurs : Lou Pitchoun , Morgan BILLY , Sachant qu'il y a encore des utilisateurs d'Access 97, voici une solution : Tout d'abord, crer une requte base sur la table MSysObjects (table systme (cache) d'Access qui recense tous les objets de la base de donnes). Cette requte sera appele : DateModifEtat
SELECT MSysObjects.Type, MSysObjects.Name, MSysObjects.DateUpdate FROM MSysObjects WHERE (((MSysObjects.Type)=-32764));

Les Etats sont "reconnus" par le numro de type -32764. Les Formulaires sont "reconnus" par le numro de type -32768. Il suffit ensuite de parcourir cette requte pour rcuprer la date de modification :
Sub DateModifEtat() Dim oRstDateUpdateReport As DAO.Recordset Set oRstDateUpdateReport = Application.CurrentDb.OpenRecordset("DateModifEtat") oRstDateUpdateReport.MoveFirst While Not oRstDateUpdateReport.EOF Debug.Print "Nom tat : " & oRstDateUpdateReport![Name] & " - Date de modification : " & oRstDateUpdateReport![DateUpdate] oRstDateUpdateReport.MoveNext

- 318 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Wend End Sub

Autre mthode :
Sub DonneesEtat() Dim MyDb As DAO.Database Dim MyDocument As DAO.Document Set MyDb = CurrentDb() With MyDb For Each MyDocument In .Containers("Reports").Documents Debug.Print "Nom: " & MyDocument.name & " Date de modification: " & MyDocument.LastUpdated Next End With End Sub

Ces deux mthodes fonctionnent avec toutes les versions D'access lien : lien : Comment rcuprer la date et l'heure de la dernire modification d'un Etat ou d'un Formulaire ? Comment rcuprer tous les noms des formulaire en VBA

Comment formater les dates (en version US) pour les inclures dans une requte
Auteurs : mout1234 , Voici un code permettant de convertir une date Franaise vers une date US en la formatant pour l'insrer dans un chane SQL :
Function ap_SQLArgDate(ByVal vDate As Date) As String On Error Resume Next If Not IsNull(vDate) Then ap_SQLArgDate = "#" & Format$(vDate, "mm/dd/yyyy") & "#" End If End Function

Comment lister les applications installes en VBA ?


Auteurs : Cafeine , Ce code permet de lister dans un fichier les applications installes. Il cre un fichier texte dans c:\temp\ appel SoftwareList.txt
Sub ListSoft() strComputer = "." Set objWMIService = GetObject("winmgmts:" & _ "{impersonationLevel=impersonate}!\\" & _ strComputer & _ "\root\cimv2") Set colSoftware = objWMIService.ExecQuery _ ("SELECT * FROM Win32_Product")

- 319 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If colSoftware.Count > 0 Then Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.CreateTextFile( _ "c:\temp\SoftwareList.txt", True) For Each objSoftware In colSoftware objTextFile.WriteLine objSoftware.Caption & vbTab & _ objSoftware.Version Next objTextFile.Close Else WScript.Echo "Cannot retrieve software from this computer." End If End Sub

Comment suivre un lien Mailto par le code ?


Auteurs : SpyesX , Utiliser la mthode FollowHyperlink de l'objet Application :
Application.FollowHyperlink "mailto:mailto:access@redaction-developpez.com"

lien :

Suivre un lien hypertext par le code

Comment avoir la couleur inverse exacte ?


Auteurs : Cafeine , Lors d'un changement dynamique de la couleur de fond d'un contrle, il peut s'avrer utile pour une meilleure lisibilit de modifier la police de caratre, pour cela utiliser la fonction suivante qui vous permet d'avoir en retour la couleur inverse de celle passe en paramtre
Option Explicit Type Col_Sep red As Integer green As Integer blue As Integer End Type Function GetInverseColor(ByVal vbCol As Long) As Long Dim colDecompose As Col_Sep colDecompose = SepareColor(vbCol) GetInverseColor = RGB(255 - colDecompose.red, 255 - colDecompose.green, 255 - colDecompose.blue) End Function

Function SepareColor(ByVal ColRGB As Long) As Col_Sep With SepareColor .red = Int(ColRGB And &HFF) .green = Int((ColRGB And &H100FF00) / &H100)

- 320 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

.blue = Int((ColRGB And &HFF0000) / &H10000) End With End Function

Comment faire disparatre le bouton minimise par VBA ?


Auteurs : Arkham46 , En fonction du mode d'affichage (maximiser ou non) ce code masque ou dsactive les boutons. Crer un nouveau module et coller le code ci-dessous
Option Compare Database Option Explicit Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Const GWL_STYLE = (-16) Private Const WS_MAXIMIZEBOX = &H10000 Private Const WS_MINIMIZEBOX = &H20000 Private Const WS_SYSMENU = &H80000 Public Function BarButton(pFrm As Access.Form, pMinButton As Boolean, pMaxButton As Boolean, pAllButtons As Boolean) Dim wStyle As Long wStyle = GetWindowLong(pFrm.hwnd, GWL_STYLE) wStyle = wStyle Or WS_SYSMENU Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX If pAllButtons Then wStyle = wStyle Or WS_SYSMENU Else wStyle = wStyle Xor WS_SYSMENU End If If pMaxButton Then wStyle = wStyle Or WS_MAXIMIZEBOX Else wStyle = wStyle Xor WS_MAXIMIZEBOX End If If pMinButton Then wStyle = wStyle Or WS_MINIMIZEBOX Else wStyle = wStyle Xor WS_MINIMIZEBOX End If Call SetWindowLong(pFrm.hwnd, GWL_STYLE, wStyle) End Function

Appel de la fonction :
Private Sub Form_Load() Call BarButton(Me, False,true,True) End Sub

Comment faire une sauvegarde de la base Access en cours ?


Auteurs : LedZeppII , Ceci est un exemple VBScript qui fonctionne sous VBA :

- 321 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim fso As Object, strDest As String strDest = CurrentProject.Path & "\" & _ Left(CurrentProject.Name, Len(CurrentProject.Name) - 4) & _ ".bak." & Right(CurrentProject.Name, 3) Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFile CurrentProject.FullName, strDest Set fso = Nothing

Comment avoir un bouton avec des couleurs et un curseur diffrent ?


Auteurs : Philippe JOCHMANS , Ce code permet : 1 - D'avoir un bouton avec des couleurs 2 - De mettre une image sur ce bouton et du texte 3 - D'avoir un curseur diffrent quand la souris survole ce bouton Il faut utiliser le bouton de commande MS Forms 2.0 CommandButton. Pour mettre ce contrle sur un formulaire, quand vous tes en mode cration, slectionnez dans la liste des contrle Active X : Microsoft Forms 2.0 CommandButton. Ce contrle est normalement install en standard. 1 - Couleur : Ce bouton possde une proprit Backcolor. Cepdendant lorsque vous tes dans l'diteur VBA, celle-ci ne s'affiche pas dans la liste, il faut entirement la saisir.
Me.cmdFermer.BackColor = RGB(200, 200, 255)

Vous pouvez galement utiliser les constantes VB (vbWhite, ...). Ce code est mettre sur l'ouverture du formulaire. 2 - Image + Texte Ce bouton vous permet galement d'avoir une image et du texte (contrairement au bouton Access qui ne permet qu'un des deux la fois). Pour cela il faut que votre bouton ait une hauteur (proprit hauteur ou height) assez grande pour tout voir. Voici un exemple de code :
With Me.CommandButton0 .Picture = LoadPicture(Application.CurrentProject.Path & "\Data\turup.gif") .Caption = "Le Texte" End With

Si vous ne voyez pas le texte agrandissez votre bouton en hauteur. Ce bouton a une proprit qui est PicturePosition, celle-ci se trouve dans l'onglet "Toutes" de la fentre des proprits (en bas), cela vous permet de positionner votre image par rapport au texte. Ce code est mettre sur l'ouverture du formulaire. 3 - Le curseur Dans Windows vous avez un curseur qui s'appelle Harrow.cur, celui-ci reprsente une main. Je le copie toujours dans un rpertoire (Data) situ dans le mme rpertoire que la base. Ce qui me permet d'utiliser le code suivant
With Me.CommandButton0 .MousePointer = 99 .MouseIcon = LoadPicture(Application.CurrentProject.Path & "\Data\Harrow.cur") End With

Ainsi quand la souris survole le bouton une main apparait, ce code est mettre sur l'ouverture du formulaire.
- 322 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Voil, je pense que ces petites astuces (pour ceux qui ne connaissent pas), donneront un peu plus de cachet vos applis. Remarque : A partir de la version d'Access 2003, vous avez la possibilit d'avoir des boutons la forme Windows XP. Par contre ce bouton restera malheureusement avec des angles vifs et non arrondis. Beaucoup utilisent un label pour simuler un bouton de couleur, l'inconvnient c'est que l'on ne peux faire de focus dessus, et qu'il faut jouer sur l'apparence lors des clics pour pouvoir avoir l'aspect d'un bouton.

- 323 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Astuces de programmation > Conseils d'optimisation du code A quoi sert "Option Explicit" ?
Auteurs : nightfall , La dclaration de "Option Explicit" au dbut d'un module indique Visual Basic que toutes les variables utilises l'intrieur de ce module devront tre pralablement dclares. Ainsi si vous vous trompez sur le nom d'une variable vous aurez une erreur la compilation. tre prvenu d'une erreur pendant la phase de compilation est un gros avantage : elle vous vite d'avoir la retrouver par dbuggage aprs avoir constat un dysfonctionnement pendant l'excution. De plus, dclarer vos variables vous permet de spcifier leur type, ce qui est prfrable du point de vue des performances du programme. Pour qu'"Option Explicit" soit ajout automatiquement la cration d'un module, activez l'option "Dclaration des variables obligatoire" dans les options du projet (onglet "Editeur"). lien : FAQ VB

Comparaison entre les fonctions de domaine (DLookup, DMax, DCount ...) et les RecordSets. Performances ?
Auteurs : Maxence HUBICHE , Les fonctions de regroupement de domaine sont moins performantes que l'utilisation du RecordSet.
DMAX("MonChamp","MaTable")

serait donc moins performant qu'un


Set rst=Currentdb.OpenRecordset("SELECT MAX(MonChamp) From Matable",DbOpenSnapShot)

- 324 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > API utiles Dterminer mon adresse IP


Auteurs : Morsi , Dans un module et juste aprs Option Explicit, coller la dclaration de ces variables :
Const MAX_IP = 5 ' --crer un buffer ... je pense pas que vous en ayez plus de 5 Type IPINFO dwAddr As Long ' -- adresse IP dwIndex As Long dwMask As Long dwBCastAddr As Long dwReasmSize As Long unused1 As Integer unused2 As Integer End Type Type MIB_IPADDRTABLE dEntrys As Long mIPInfo(MAX_IP) As IPINFO End Type Type IP_Array mBuffer As MIB_IPADDRTABLE BufferLen As Long End Type Public Declare Sub CopyMemory Lib "kernel32" Alias _ "RtlMoveMemory" (destination As Any, Source As Any, ByVal Length As Long) Public Declare Function GetIpAddrTable Lib "IPHlpApi" _ (pIPAdrTable As Byte, pdwSize As Long, ByVal Sort As Long) As Long ' --convertion d'un Long vers un string Public Function ConvertAddressToString(longAddr As Long) As String Dim myByte(3) As Byte Dim Cnt As Long CopyMemory myByte(0), longAddr, 4 For Cnt = 0 To 3 ConvertAddressToString = ConvertAddressToString + CStr(myByte(Cnt)) + "." Next Cnt ConvertAddressToString = Left$(ConvertAddressToString, Len(ConvertAddressToString) - 1) End Function

Maintenant, sur l'vnement click du bouton IP:


' --Dterminer l'adresse IP Public Function Get_IP_Click() As String Dim Ret As Long, Tel As Long Dim bBytes() As Byte Dim TempList() As String Dim TempIP As String Dim Tempi As Long Dim Listing As MIB_IPADDRTABLE Dim L3 As String On Error GoTo END1 GetIpAddrTable ByVal 0&, Ret, True If Ret <= 0 Then Exit Function ReDim bBytes(0 To Ret - 1) As Byte ReDim TempList(0 To Ret - 1) As String GetIpAddrTable bBytes(0), Ret, False CopyMemory Listing.dEntrys, bBytes(0), 4 For Tel = 0 To Listing.dEntrys - 1 CopyMemory Listing.mIPInfo(Tel), bBytes(4 + (Tel * Len(Listing.mIPInfo(0)))), Len(Listing.mIPInfo(Tel)) TempList(Tel) = ConvertAddressToString(Listing.mIPInfo(Tel).dwAddr) Next Tel

- 325 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

TempIP = TempList(0) For Tempi = 0 To Listing.dEntrys - 1 L3 = Left(TempList(Tempi), 3) If L3 <> "169" And L3 <> "127" And L3 <> "192" Then TempIP = TempList(Tempi) End If Next Tempi GetWanIP = TempIP 'Return The TempIP Exit Function END1: GetWanIP = "" End Function

Dterminer la taille de la RAM


Auteurs : Morsi , Ajouter ce code juste aprs Option Explicit dans un nouveau module:
Private Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)

Faites appel maintenant memoireinfo() pour avoir les informations sur la RAM
Sub memoireinfo() Dim MemStat As MEMORYSTATUS GlobalMemoryStatus MemStat MsgBox "Vous avez " & (MemStat.dwTotalPhys / 1024) / 1024 & " Mo de RAM" MsgBox "Vous avez " & (MemStat.dwAvailPhys / 1024) / 1024 & " Mo de RAM disponible" End Sub

Le nom de ma machine et de la session


Auteurs : Morsi , Des fois, nous aurons besoin des noms de machines pour les fichiers log par exemple ou pour tracer un traitement. Coller ce code aprs Option Explicit.
Private Const MAX_COMPUTERNAME_LENGTH As Long = 31 Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _ (ByVal lpBuffer As String, nSize As Long) As Long Private Declare Function GetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long '--Dterminer le nom de la machine Private Function recherche_name() As String Dim dwLen As Long Dim strString As String Dim strUserName As String

- 326 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dwLen = MAX_COMPUTERNAME_LENGTH + 1 strString = String(dwLen, "X") strUserName = String(100, Chr$(0)) GetComputerName strString, dwLen GetUserName strUserName, 100 strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1) txt_ip.Value = strUserName strString = Left(strString, dwLen) recherche_name = strString End Function

Une autre mthode propos par Thierry AIM


Dim strComputerName As String Dim strUserName As String strComputerName = Environ("COMPUTERNAME") strUserName = Environ("USERNAME")

Dterminer la famille de mon processeur


Auteurs : Morsi , Ajouter ce code aprs Option Explicit :
Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO) Private Type SYSTEM_INFO dwOemID As Long dwPageSize As Long lpMinimumApplicationAddress As Long lpMaximumApplicationAddress As Long dwActiveProcessorMask As Long dwNumberOrfProcessors As Long dwProcessorType As Long dwAllocationGranularity As Long dwReserved As Long End Type

Ensuite faites appel getsysinfo()


Private Sub getsysinfo() Dim SInfo As SYSTEM_INFO GetSystemInfo SInfo MsgBox "Processeur de type " & str$(SInfo.dwProcessorType) End Sub

Comment ouvrir une DB par OpenCurrentDatabase sans activer l'Autoexec


Auteurs : mout1234 , Pour faire cela il faut simuler la touche Shift l'aide de l'API keybd_event. Pensez mettre la rfrence => Microsoft DAO 3.x Object Lirary Code mettre dans un nouveau module:
Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Sub OpenDB()

- 327 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim db As Database Dim appAccess As Access.Application Const csts = "D:\Mes documents\BaseTests.mdb"

keybd_event vbKeyShift, 0, 0, 0 'Enfonce la touche SHift Set appAccess = New Access.Application appAccess.Visible = True appAccess.OpenCurrentDatabase csts appAccess.DoCmd.OpenForm "MonForm" keybd_event vbKeyShift, 0, 2, 0 'libre la touche SHift End Sub

Comment Rcuprer l'adresse MAC d'un PC distant


Auteurs : Cafeine , Voici un module pour rcuprer une addresse MAC distante :
Option Explicit ' Dclarations pour GetRemoteMACAddress Private Declare Function inet_addr Lib "WSOCK32.DLL" _ (ByVal s As String) As Long Private Declare Function SendARP Lib "iphlpapi.dll" _ (ByVal DestIP As Long, _ ByVal SrcIP As Long, _ pMacAddr As Long, _ PhyAddrLen As Long) As Long Private Declare Sub CopyMemory Lib "KERNEL32" _ Alias "RtlMoveMemory" _ (dst As Any, _ src As Any, _ ByVal bcount As Long) ' Dclarations pour LetterToUNC Private Const RESOURCETYPE_ANY = &H0 Private Const RESOURCE_CONNECTED = &H1 Private Type NETRESOURCE dwScope As Long dwType As Long dwDisplayType As Long dwUsage As Long lpLocalName As Long lpRemoteName As Long lpComment As Long lpProvider As Long End Type Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias _ "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long Private Declare Function WNetEnumResource Lib "mpr.dll" Alias _ "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, _ lpBuffer As Any, lpBufferSize As Long) As Long Private Declare Function WNetCloseEnum Lib "mpr.dll" ( _ ByVal hEnum As Long) As Long Private Declare Function lstrlen Lib "KERNEL32" Alias "lstrlenA" (ByVal lpString As Any) As Long Private Declare Function lstrcpy Lib "KERNEL32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long ' Dclarations pour LetterToUNC

_ _

_ _

- 328 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Private Private Private Private Private Private

Const Const Const Const Const Const Const

WS_VERSION_REQD = &H101 WS_VERSION_MAJOR = WS_VERSION_REQD \ &H100 And &HFF& WS_VERSION_MINOR = WS_VERSION_REQD And &HFF& MIN_SOCKETS_REQD = 1 SOCKET_ERROR = -1 WSADescription_Len = 256 WSASYS_Status_Len = 128

Private Type HOSTENT hName As Long hAliases As Long hAddrType As Integer hLength As Integer hAddrList As Long End Type Private Type WSADATA wversion As Integer wHighVersion As Integer szDescription(0 To WSADescription_Len) As Byte szSystemStatus(0 To WSASYS_Status_Len) As Byte iMaxSockets As Integer iMaxUdpDg As Integer lpszVendorInfo As Long End Type Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long Private Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal _ wVersionRequired As Integer, lpWSAData As WSADATA) As Long Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long Private Declare Function gethostname Lib "WSOCK32.DLL" (ByVal hostname$, _ ByVal HostLen As Long) As Long Private Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal _ hostname$) As Long Private Declare Sub RtlMoveMemory Lib "KERNEL32" (hpvDest As Any, ByVal _ hpvSource&, ByVal cbCopy&) '-----------------------------------------------------------------------------'-----------------------------------------------------------------------------Public Function GetRemoteMACAddress(ByVal pIPDistante As String) As String Dim lAddr As Long Dim lMacAddr As Long Dim lMacAddrByte() As Byte Dim lPhyAddrLen As Long Dim lCpt As Integer ' Transforme l'adresse IP texte en adresse IP numrique lAddr = inet_addr(pIPDistante) If lAddr <> -1 Then ' Taille d'une adresse MAC = 6 lPhyAddrLen = 6 ' Recherche l'adresse MAC distante If SendARP(lAddr, 0&, lMacAddr, lPhyAddrLen) = 0 Then If (lMacAddr <> 0) And (lPhyAddrLen <> 0) Then ' Tableau de byte qui contiendra l'adresse MAC ReDim lMacAddrByte(0 To lPhyAddrLen - 1) ' Copy l'adresse MAC dans le tableau (lMacAddr est une adresse mmoire) CopyMemory lMacAddrByte(0), lMacAddr, ByVal lPhyAddrLen ' Converti l'adresse MAC en texte GetRemoteMACAddress = "" For lCpt = LBound(lMacAddrByte) To UBound(lMacAddrByte) GetRemoteMACAddress = GetRemoteMACAddress & Right("00" & Hex(lMacAddrByte(lCpt)), 2) & IIf(lCpt = UBound(lMacAddrByte), "", "-") Next End If End If End If

- 329 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function '-----------------------------------------------------------------------------'-----------------------------------------------------------------------------'-----------------------------------------------------------------------------'-----------------------------------------------------------------------------' Source KB Microsoft : http://support.microsoft.com/kb/192689/fr Public Function LetterToUNC(DriveLetter As String) As String Dim hEnum As Long Dim NetInfo(1023) As NETRESOURCE Dim entries As Long Dim nStatus As Long Dim LocalName As String Dim UNCName As String Dim i As Long Dim r As Long ' Begin the enumeration nStatus = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, _ 0&, ByVal 0&, hEnum) LetterToUNC = "Drive Letter Not Found" 'Check for success from open enum If ((nStatus = 0) And (hEnum <> 0)) Then ' Set number of entries entries = 1024 ' Enumerate the resource nStatus = WNetEnumResource(hEnum, entries, NetInfo(0), _ CLng(Len(NetInfo(0))) * 1024) ' Check for success If nStatus = 0 Then For i = 0 To entries - 1 ' Get the local name LocalName = "" If NetInfo(i).lpLocalName <> 0 Then LocalName = Space(lstrlen(NetInfo(i).lpLocalName) + 1) r = lstrcpy(LocalName, NetInfo(i).lpLocalName) End If ' Strip null character from end If Len(LocalName) <> 0 Then LocalName = Left(LocalName, (Len(LocalName) - 1)) End If If UCase$(LocalName) = UCase$(DriveLetter) Then ' Get the remote name UNCName = "" If NetInfo(i).lpRemoteName <> 0 Then UNCName = Space(lstrlen(NetInfo(i).lpRemoteName) _ + 1) r = lstrcpy(UNCName, NetInfo(i).lpRemoteName) End If ' Strip null character from end If Len(UNCName) <> 0 Then UNCName = Left(UNCName, (Len(UNCName) _ - 1)) End If ' Return the UNC path to drive LetterToUNC = UNCName ' Exit the loop Exit For End If

- 330 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Next i End If End If ' End enumeration nStatus = WNetCloseEnum(hEnum) End Function '-----------------------------------------------------------------------------'-----------------------------------------------------------------------------'-----------------------------------------------------------------------------'-----------------------------------------------------------------------------' Source KB Microsoft : http://support.microsoft.com/kb/160215/fr Private Function hibyte(ByVal wParam As Integer) hibyte = wParam \ &H100 And &HFF& End Function Private Function lobyte(ByVal wParam As Integer) lobyte = wParam And &HFF& End Function Private Sub SocketsInitialize() Dim WSAD As WSADATA Dim iReturn As Integer Dim sLowByte As String, sHighByte As String, sMsg As String iReturn = WSAStartup(WS_VERSION_REQD, WSAD) If iReturn <> 0 Then MsgBox "Winsock.dll is not responding." End End If If lobyte(WSAD.wversion) < WS_VERSION_MAJOR Or (lobyte(WSAD.wversion) = _ WS_VERSION_MAJOR And hibyte(WSAD.wversion) < WS_VERSION_MINOR) Then sHighByte = Trim$(Str$(hibyte(WSAD.wversion))) sLowByte = Trim$(Str$(lobyte(WSAD.wversion))) sMsg = "Windows Sockets version " & sLowByte & "." & sHighByte sMsg = sMsg & " is not supported by winsock.dll " MsgBox sMsg End End If 'iMaxSockets is not used in winsock 2. So the following check is only 'necessary for winsock 1. If winsock 2 is requested, 'the following check can be skipped. If WSAD.iMaxSockets < MIN_SOCKETS_REQD Then sMsg = "This application requires a minimum of " sMsg = sMsg & Trim$(Str$(MIN_SOCKETS_REQD)) & " supported sockets." MsgBox sMsg End End If End Sub Private Sub SocketsCleanup() Dim lReturn As Long lReturn = WSACleanup() If lReturn <> 0 Then MsgBox "Socket error " & Trim$(Str$(lReturn)) & " occurred in Cleanup " End End If End Sub Public Function GetIpFromHost(ByVal pHostName As String) As Variant Dim hostname As String * 256 Dim hostent_addr As Long Dim host As HOSTENT Dim hostip_addr As Long Dim temp_ip_address() As Byte Dim i As Integer Dim ip_address As String Dim lCpt As Integer

- 331 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim lResult() As String On Error GoTo Gestion_Erreurs SocketsInitialize ' Retire le double \ If Left(pHostName, 2) = "\\" Then pHostName = Right(pHostName, Len(pHostName) - 2) End If ' Retire un ventuel chemin If InStr(pHostName, "\") > 0 Then pHostName = Left(pHostName, InStr(pHostName, "\") - 1) End If hostname = Trim$(pHostName & vbNullChar) hostent_addr = gethostbyname(hostname) If hostent_addr = 0 Then MsgBox "Winsock.dll is not responding." Exit Function End If RtlMoveMemory host, hostent_addr, LenB(host) RtlMoveMemory hostip_addr, host.hAddrList, 4 'get all of the IP address if machine is multi-homed lCpt = 0 Do ReDim temp_ip_address(1 To host.hLength) RtlMoveMemory temp_ip_address(1), hostip_addr, host.hLength For i = 1 To host.hLength ip_address = ip_address & temp_ip_address(i) & "." Next ip_address = Mid$(ip_address, 1, Len(ip_address) - 1) ReDim lResult(lCpt) lResult(lCpt) = ip_address lCpt = lCpt + 1 ip_address = "" host.hAddrList = host.hAddrList + LenB(host.hAddrList) RtlMoveMemory hostip_addr, host.hAddrList, 4 Loop While (hostip_addr <> 0) Gestion_Erreurs: SocketsCleanup GetIpFromHost = lResult End Function '-----------------------------------------------------------------------------'------------------------------------------------------------------------------

Il y a trois fonctions : - LetterToUNC qui transforme une lettre de disque en nom rseau - GetIpFromHost qui recherche les adresses IP d'un serveur - GetRemoteMACAddress qui recherche l'addresse MAC partir d'une IP Y a juste rechercher la lettre du disque sur lequel est la base distante pour remplacer le "Q:" que j'ai mis en dur dans le code. lien : lien : lien : Comment obtenir l'adresse MAC de la carte rseau ? http://access.developpez.com/sources/?page=reseau#mac1 http://access.developpez.com/sources/?page=reseau#mac2

Coment rcuprer le rsultat de la calculatrice de Windows


Auteurs : Cafeine , comment rcuprer le rsultat de la calculatrice de windows et plus gnralement comment retrouver une fentre Windows par son nom ou sa classe.
- 332 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Code mettre dans un module :


Option Explicit Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetWindow Lib "user32" _ (ByVal hWnd As Long, _ ByVal wCmd As Long) As Long Private Declare Function GetWindowText Lib "user32" _ Alias "GetWindowTextA" _ (ByVal hWnd As Long, _ ByVal lpString As String, _ ByVal cch As Long) As Long Private Declare Function GetClassName Lib "user32" _ Alias "GetClassNameA" _ (ByVal hWnd As Long, _ ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Private Private Private Private Private Private Const Const Const Const Const Const GW_HWNDFIRST = 0 GW_HWNDLAST = 1 GW_HWNDNEXT = 2 GW_HWNDPREV = 3 GW_OWNER = 4 GW_CHILD = 5

Public Function GetWdwLike(ByVal hWndStart As Long, _ WindowText As String, _ Classname As String) As Long Dim Dim Dim Dim hWnd As Long sWindowText As String sClassname As String r As Long

'niveau de rcursion Static level As Integer

' initialisation du handle de dpart et du niveau de rcursion If level = 0 Then If hWndStart = 0 Then hWndStart = GetDesktopWindow() End If ' itration du niveau rcursif level = level + 1 ' on trouve le premier window hWnd = GetWindow(hWndStart, GW_CHILD) Do Until hWnd = 0 'recherche rcursive Call GetWdwLike(hWnd, WindowText, Classname) ' on obtient la classe et le text du window sWindowText = Space$(255) r = GetWindowText(hWnd, sWindowText, 255) sWindowText = Left(sWindowText, r) sClassname = Space$(255) r = GetClassName(hWnd, sClassname, 255) sClassname = Left(sClassname, r)

- 333 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

' on vrifie que c'est conforme la recherche If (sWindowText Like WindowText) And _ (sClassname Like Classname) Then GetWdwLike = hWnd End If 'window suivant hWnd = GetWindow(hWnd, GW_HWNDNEXT) Loop 'Reduce the recursion counter level = level - 1 End Function

Public Function GetCalcResult() As Double Dim CalchWnd As Long, ReshWnd As Long Dim sTxt As String, r As String On Error Resume Next CalchWnd = GetWdwLike(0, "*", "SciCalc") ReshWnd = GetWdwLike(CalchWnd, "*.*", "Static") sTxt = Space$(255) r = GetWindowText(ReshWnd, sTxt, 255) GetCalcResult = CDbl(Left(sTxt, r)) End Function

Comment enlever les accents d'une chane


Auteurs : Cafeine , Voici une solution en utilisant les API. Coller ce code dans un nouveau module :
Private Declare Function FoldString Lib "kernel32.dll" Alias _ "FoldStringA" (ByVal dwMapFlags As Long, ByVal lpSrcStr As Long, _ ByVal cchSrc As Long, ByVal lpDestStr As Long, ByVal cchdest As Long) As Long Function OteAccents(ByVal str As String) As String Dim i As Integer OteAccents = Space(Len(str)) For i = 0 To (Len(str) - 1) * 2 Step 2 FoldString &H40, StrPtr(str) + i, 1, StrPtr(OteAccents) + i, 1 Next i End Function

lien :

Comment ignorer les accents dans une requte SQL ?

Comment rduire la fentre d'une application par Access ?


Auteurs : LedZeppII ,

- 334 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour rduire une fentre d'une application autre qu' Access il faut passer par des API ces dclarations sont mettre au dbut du module :
' Dclarations Const WM_SYSCOMMAND As Long = &H112 Const SC_MINIMIZE As Long = &HF020& Const SC_MAXIMIZE As Long = &HF030& Const SC_RESTORE As Long = &HF120& Private Declare Function PostMessage Lib "User32.dll" Alias "PostMessageA" ( _ ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function FindWindow1 Lib "User32.dll" Alias "FindWindowA" ( _ ByVal lpClassName As Long, ByVal lpWindowName As String) As Long

Il faut utiliser la fonction suivante pour fermer la fentre, celle-ci fonctionne avec le titre de la fentre rduire :
Function AppMinimize(AppTitle As String) As Boolean Dim hwnd As Long hwnd = FindWindow1(0, AppTitle & vbNullChar) If hwnd <> 0 Then PostMessage hwnd, WM_SYSCOMMAND, SC_MINIMIZE, 0 AppMinimize = True Else AppMinimize = False ' Fentre pas trouve End If End Function

Pour comprendre le fonctionnement vous pouvez faire un essai avec le Bloc-notes, ouvrez Bloc-notes, la fentre s'appelle : "Sans titre - Bloc-Notes". mettez ce code sur un vnement de votre choix :
Sub quicktest() Dim AppTitle As String, tmr As Long AppTitle = "Sans titre - Bloc-Notes" AppActivate AppTitle tmr = Timer While ((Timer - tmr) < 2) Wend AppMinimize AppTitle End Sub

Ouvrez votre Application Access en pleine fentre et la fentre Bloc-notes en niveau infrieur, sur appel du code ci-dessus la fentre Bloc-notes se rduira aprs timer coul.

Comment rcuprer le code RGB des couleurs systmes


Auteurs : Arkham46 , Pour ce faire il faut utiliser l'API OleTranslateColor
Private Declare Function OleTranslateColor Lib "olepro32.dll" _

- 335 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

(ByVal OLE_COLOR As Long, ByVal hPalette As Long, pccolorref As Long) As Long '--------------------------------------------------------------------------------------' Rcupre la couleur systme si ncessaire '--------------------------------------------------------------------------------------' pColor : Numro de la couleur ' Les couleurs dfinies par dfaut dans Access sont souvent des couleurs systmes ' Par exemple la couleur le fond d'un formulaire par dfaut est -2147483633 ' il faut retrouver la couleur dfinie dans le systme pour cette valeur ' Renvoie la couleur dans un Long '--------------------------------------------------------------------------------------Private Function GetColor(pColor As Long) As Long If pColor < 0 Then Call OleTranslateColor(pColor, 0, pColor) End If GetColor = pColor End Function '--------------------------------------------------------------------------------------' Conversion code couleur Long vers RGB '--------------------------------------------------------------------------------------' pLong : Numro de la couleur ' pRed : Composante Rouge ' pGreen : Composante Verte ' pBlue : Composante Bleue '--------------------------------------------------------------------------------------Public Function LongToRGB(ByVal pLong As Long, pRed As Long, pGreen As Long, pBlue As Long) As Boolean ' On rcupre la couleur systme si ncessaire pLong = GetColor(pLong) On Error GoTo Gestion_Erreurs: pBlue = Int(pLong / 65536) pGreen = Int((pLong - (65536 * pBlue)) / 256) pRed = pLong - ((pBlue * 65536) + (pGreen * 256)) Gestion_Erreurs: If Err.Number = 0 Then LongToRGB = True ' Renvoie Vrai si pas d'erreur End Function

Comment tester si la touche Shift est actionne l'ouverture de la base ?


Auteurs : LedZeppII , Pour savoir si la touche shift est active au dmarrage. Mettre dans la section Dclarations d'un module de code :
' Vrifier l'Etat d'une touche Const VK_LSHIFT As Long = &HA0 Const VK_RSHIFT As Long = &HA1 Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Integer) As Byte Public Function IsShiftKeyDown() As Boolean IsShiftKeyDown = False If (GetKeyState(VK_LSHIFT) And &H80) = &H80 Then IsShiftKeyDown = True If (GetKeyState(VK_RSHIFT) And &H80) = &H80 Then IsShiftKeyDown = True End Function

A mettre dans un module de code


Public Function Init() If IsShiftKeyDown Then If InputBox("Mot de Passe ") = "123" Then ' Le mot de passe est valide ...

- 336 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If End If End Function

Ensuite il faut crer une Macro qui sera nomme Autoexec


Action : ExcuterCode Nom fonction : Init()

Comment rduire la fentre de l'application Access ?


Auteurs : Mahefasoa , Pour rduire la fentre active dans Access, il suffit d'utiliser la mthode Minimize, mais pour rduire la fentre de l'application Microsoft Access, l'un des moyens possibles est l'appel des APIs. Voici le code placer dans un module global:
'Dans la section dclaration Public Const SW_MINIMIZE = 6 Public Type POINTAPI x As Long y As Long End Type Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type WINDOWPLACEMENT Length As Long flags As Long showCmd As Long ptMinPosition As POINTAPI ptMaxPosition As POINTAPI rcNormalPosition As RECT End Type Public Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long Dim Rectan As RECT 'La procdure Sub Reduire() 'Rduire la fentre active dans la fentre d'Access DoCmd.Minimize 'Rduire la fentre d'Access Dim WinEst As WINDOWPLACEMENT Dim Punto As POINTAPI Dim rtn As Long Punto.x = 100 Punto.y = 100 'initialize the structure WinEst.Length = Len(WinEst) WinEst.showCmd = SW_MINIMIZE WinEst.ptMinPosition = Punto WinEst.ptMaxPosition = Punto WinEst.rcNormalPosition = Rectan 'La rduction effective se fait ici rtn = SetWindowPlacement(Application.hWndAccessApp, WinEst) End Sub

- 337 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

L'appel de la procdure se fait par un Call Reduire l'vnement sur clic d'un bouton.

- 338 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interface et graphisme Comment cacher une barre d'outils ?
Auteurs : Bidou ,
DoCmd.ShowToolbar "NomBarreOutil", acToolbarNo

Comment enlever toutes les barres de menu ?


Auteurs : Gal Donat ,
Dim i As Integer For i = 1 To Application.CommandBars.Count DoCmd.ShowToolbar Application.CommandBars.item(i).name, acToolbarNo Next

Et pour les ractiver :


Dim i As Integer For i = 1 To Application.CommandBars.Count DoCmd.ShowToolbar Application.CommandBars.item(i).name, acToolbarWhereApprop Next

Comment faire apparatre ou disparatre la barre des menus par le code ?


Auteurs : ZEUSGR , Pour la faire disparatre :
DoCmd.ShowToolbar "barre menu", acToolbarNo

Pour la faire apparatre :


DoCmd.ShowToolbar "barre menu", acToolbarYes

Faire un clic droit sur la barre de menu puis slectionnez Personnaliser et dans l'onglet Barre d'outils regardez l'orthographe de la barre de menu.

Comment cacher les barres system et d'outils de mon application ?


Auteurs : Demco , Allez dans : Menu outil/dmarrage

- 339 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dcochez les cases suivant les menus que vous voulez voir disparatre.

Comment insrer un saut de ligne dans une bote de dialogue ?


Auteurs : Bidou ,
MsgBox "ligne1" & vbCrLf & "ligne2"

Comment crer un formulaire automatique li une table ?


Auteurs : Cafeine ,
Function CreateInstantForm(ByVal Tbl As String) DoCmd.SelectObject acTable, Tbl, True DoCmd.RunCommand acCmdNewObjectAutoForm End Function

Comment dsactiver le rafrachissement de l'cran (figer l'cran) ?


Auteurs : Drosera , FRED.G ,
Application.Echo False

Attention ractiver le rafrachissement grce :


Application.Echo True

Il faudra galement prvoir une gestion des erreurs pour viter une sortie non dsire de la procdure. lien : Comment forcer le rafrachissement de l'cran ?

Comment connatre la rsolution de l'cran ?


Auteurs : Demco , Voici ci-dessous des liens intressants sur le sujet.

lien : lien :

http://www.mvps.org/accessfr/general/gen0002.htm http://www.mvps.org/accessfr/apis/api0029.htm

Comment dterminer un code couleur quelconque dans Access ?


Auteurs : Papy Turbo , Rappel : 1 1- les constantes des couleurs Windows vous permettent de rcuprer les couleurs choisies par chaque utilisateur, dans le panneau de contrle de Windows. Si vous les utilisez, vos utilisateurs pourront recolorer eux mme votre application (petit dtail trs apprci :) ). Aide Access, chapitre Constantes Couleurs systme. Ou bien, tapez " vbButtonFace " dans un module, appuyez sur F1.

- 340 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

2 3 4 5

2- les constantes vbWhite, vbBlack? sont disponibles pour les 16 couleurs de base : Aide Access, chapitre Constantes de couleurs. Ou bien, tapez " vbWhite " dans un module, appuyez sur F1. 3- la fonction (obsolte) QbColor() renvoie un des 16 codes couleurs ci-dessus, partir d'un chiffre. 4- la fonction RGB() renvoie n'importe quelle couleur, partir des 3 valeurs Red, Green, Blue. 5- pour choisir n'importe quelle couleur et coller son code dans votre module VBA : crez un nouveau formulaire (vous ne le garderez pas, sauf pour des manips comme celle-ci), slectionnez une section quelconque, ouvrez ses Proprits, dans l'onglet Format, cliquez dans Couleur fond, cliquez sur le bouton "..." pour ouvrir la bote de dialogue des couleurs, choisissez votre couleur, ventuellement en cliquant sur Dfinir les couleurs personnalises..., cliquez sur OK, appuyez sur Entre pour visualiser votre couleur dans le fond de la section choisie.

Le code de la couleur est affich dans la proprit Couleur fond. Vous pouvez le copier/coller dans votre code, crer une (srie de) constante(s)... Exemple :
Public Const vbJaunePale = 13434879

Mes textes d'info-bulle qui ne s'affichent pas ?


Auteurs : Lucifer , Il suffit de supprimer les labels et de les recrer.

Afficher l'heure dynamique dans un formulaire


Auteurs : Tofalu , Il faut utiliser l'vnement Timer du formulaire. Dans un premier temps, allez dans les proprits du formulaire, onglet vnement et rglez l'Intervalle minuterie, par exemple 1000 pour une seconde ou 60000 pour une minute, etc. Puis insrez ce code dans le formulaire :
Private Sub Form_Timer() Me.Texte1 = Now End Sub

Comment redimmensionner la fentre active (par ex le formulaire en cours) en vba ?


Auteurs : Team Access , Il suffit d'utiliser la mthode MoveSize de l'objet Docmd.

- 341 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Consutez l'aide access pour le dtail des arguments.

Comment retrouver les composantes rouge, verte, bleue d'un code couleur de type Long ?
Auteurs : Jean-Marc Rabilloud , Rappelons que le code d'une couleur se calcule par les composantes RGB l'aide de la formule : Red + Green * 256 + Blue * 256 * 256. Il nous suffit donc d'crire la fonction inverse.
Public Sub ComposantesRGB(ByVal Couleur As Long, Red As Long, Green As Long, Blue As Long) Blue = Int(Couleur / 65536) Green = Int((Couleur - (65536 * Blue)) / 256) Red = Couleur - ((Blue * 65536) + (Green * 256)) End Sub Private Sub Command1_Click() Dim Rouge As Long, Vert As Long, Bleu As Long ComposantesRGB 9550940, Rouge, Vert, Bleu LblRed.Caption = "Red = " & Rouge LblGreen.Caption = "Green = " & Vert LblBlue.Caption = "Blue = " & Bleu End Sub

lien : FAQ VB

Comment retrouver la couleur d'un pixel l'cran ?


Auteurs : grafikm_fr , nightfall , Si vous cherchez simplement connatre la couleur d'un point dans un PictureBox, utilisez sa mthode Point(). Sinon, voici une mthode pour rcuprer la couleur de n'importe quel pixel l'cran. Placez ce code dans un module standard :
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long Public Type Couleur red As Integer green As Integer blue As Integer End Type Public Function CouleurPixel (ByVal x As Long, ByVal y As Long) As Couleur Dim pixel As Couleur, RGBPx As Long RGBPx = GetPixel(GetDC(0&), x, y) pixel.red = &HFF& And RGBPx pixel.green = (&HFF00& And RGBPx) \ 256 pixel.blue = (&HFF0000 And RGBPx) \ 65536 CouleurPixel = pixel

- 342 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

La fonction CouleurPixel renvoie la couleur du pixel, dont les coordonnes lui ont t passes en paramtres, dans une structure Couleur. Si vous voulez connatre la position du pointeur de souris, ajoutez ces dclarations dans le module standard :
Public Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As Long Public Type PointAPI X As Long Y As Long End Type

Voici maintenant un exemple o l'on utilise un timer pour mettre dans un PictureBox la couleur du pixel survol par la souris :
Private Sub Timer1_Timer() Dim pixel As Couleur, CursPos As PointAPI GetCursorPos CursPos pixel = CouleurPixel(CursPos.X, CursPos.Y) Picture1.BackColor = RGB(pixel.red, pixel.green, pixel.blue) End Sub

lien : FAQ VB

Comment afficher ou masquer la fentre de base de donnes ?


Auteurs : Team Access , Exemple pour afficher :
Docmd.SelectObject acTable, , True

Exemple pour masquer :


Docmd.SelectObject acTable, , True Docmd.RunCommand acCmdWindowHide

Comment forcer le rafrachissement de l'cran ?


Auteurs : Tofalu , Il arrive que vous changiez par le code la couleur d'un texte, mais celle-ci ne sera prise en compte que plusieurs secondes plus tard. Il vous suffit d'ordonner par le code le refrachissement de l'cran lorsque bon vous semble grce :

- 343 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Me.Repaint

lien : Comment dsactiver le rafrachissement de l'cran (figer l'cran) ?

Comment utiliser les vnements claviers ? (exemple, dtecter lorsque l'utilisateur fait : ctrl+c)
Auteurs : DMboup , Tout d'abord, dans les proprits du formulaire, onglet vnements mettez l'attribut KeyPreview/Aperu des touches Oui. Ensuite, dans ce mme formulaire utilisez par exemple :

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyC And Shift = acCtrlMask Then MsgBox ("Ctrl+C presses") End If End Sub

Ouvrez maintenant ce formulaire, appuyez sur les touches ctrl+c comme pour faire un "copier" et constatez :).

Activer l'affichage des fentres dans la barre des tches depuis VBA
Auteurs : argyronet ,
Public Function AfficherFenetreBDT(Afficher As Boolean) On Error GoTo Err_AfficherFenetreBDT Application.SetOption "ShowWindowsInTaskbar", Afficher Exit_AfficherFenetreBDT: Exit Function Err_AfficherFenetreBDT: If Err.Number = 2091 Then 'Pas dans 97 & 95 sinon Erreur Exit Function Else MsgBox "Erreur N" & Err.Number & vbCrLf & Err.Description, 16 Resume Exit_AfficherFenetreBDT End If End Function Sub Afficher() AfficherFenetreBDT True End Sub 'Appel de la fonction Sub Masquer() AfficherFenetreBDT False End Sub

- 344 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Rappel : Vous aurez le mme rsultat sans passer par VBA en allant dans : Menu Outils/Options onglet Affichage, cochez Fentres dans la barre des tches.

Comment rorganiser les Fentres Horizontalement ou Verticamelent en VBA ?


Auteurs : Philippe JOCHMANS , Lou Pitchoun , chaque commande de menu et de barre d'outils de Microsoft Access est associe une constante que vous pouvez utiliser avec la mthode RunCommand pour excuter cette commande partir de Visual Basic. Ci-dessous les commandes pour rorganiser les fentres ouvertes, horizontalement ou verticalement : Horizontale :
DoCmd.RunCommand (acCmdTileHorizontally)

Verticale :
DoCmd.RunCommand (acCmdTileVertically)

- 345 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interface et graphisme > Trucs et Astuces Afficher / masquer les barres de menu d'environnement Access sans utiliser le code
Auteurs : Team Access , Une fois votre application termine, l'utilisateur doit voir ses possibilits d'actions retreintes. Vous pouvez par exemple cacher les barres de menu Access. Pour cela, rendez-vous dans le menu Outils puis Dmarrage. Pour les rafficher, maintenez la touche MAJ enfonce lors du chargement de la base de donnes et remodifiez les options ci-dessus.

Comment afficher une image au dmarrage de mon application ?


Auteurs : Team Access , Pour qu'une image apparaisse pendant le chargement d'Access au dmarrage de votre application, il suffit de mettre une image BMP dans le mme dossier avec le mme nom que le fichier de l'appli (mdb ou mde).

Utiliser un assistant pour afficher une info l'utilisateur


Auteurs : vbabien ,
With Assistant.NewBalloon .BalloonType = msoBalloonTypeBullets .Icon = msoIconTip .Button = msoButtonSetOk .Heading = "faites un choix" .Labels(1).Text = "NAS" .Labels(2).Text = "ronde 150%/h" .Labels(3).Text = "vlage 90pts +2 h" .Show End With

Changez l'apparence du curseur


Auteurs : shwin ,
private Declare Function SetSystemCursor Lib "user32" (ByVal hcur As Long, ByVal id As Long) As Long private Declare Function LoadCursor Lib "user32" Alias "LoadCursorA" (ByVal hInstance As Long, ByVal _ lpCursorName As Long) As Long private Sub change_curseur() Call SetSystemCursor(LoadCursor(0, 32514), 32512) Call SetSystemCursor(LoadCursor(0, 32515), 32513) End Sub private Sub restaure() Call SetSystemCursor(LoadCursor(0, 32512), 32512) Call SetSystemCursor(LoadCursor(0, 32513), 32513) End Sub

Liste d'apparences disponibles : 32512 flche 32513 curseur en I 32514 sablier


- 346 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

32515 croix 32516 flche vers le haut 32640, 32642, 32643, 32644, 32645, 32646 doubles flches de redimensionnement 32648 stationnement interdit 32650 flche + sablier Curseur personnalis:
private Sub change_curseur() Call SetSystemCursor(LoadCursorFromFile("D:\curseur.ani"), 32513) End Sub

Changer un curseur en pointeur


Auteurs : Bidou ,
'dans l'vnement mousemove de ta zone de texte tu mets Screen.MousePointer= 1 'n'oublie pas de mettre dans le mousemove du formulaire Screen.MousePointer=0 'sans quoi le pointeur restera toujours la flche

Comment changer le gris (couleur de fond) dans Access ?


Auteurs : Arkham46 , Dans un premier temps, crez un nouveau module, collez-y le code suivant et enregistrez-le avec le nom que vous souhaitez :

' Constante pour modif du fond Private Const GCL_HBRBACKGROUND = -10 ' Cre une brosse unie Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long ' Cre une brosse partir d'une image (pour utilisation en mosaque uniquement) Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long ' Modifier une fentre selon sa classe Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long ' Trouver l'identifiant d'une fentre Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long ' Rafrachir l'affichage Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Any, ByVal bErase As Long) As Long ' wpv_arg est soit un nombre reprsentant une couleur(=RGB(xxx,xxx,xxx)), soit un chemin vers un fichier Public Sub SetBackGround(wpv_Arg As Variant) ' Object Image temporaire Dim wlo_Image As Object ' Identifiant de la brosse Dim wlv_Brush As Long ' Identifiant de la fentre Dim wlv_Hwnd As Long ' Si argument = nom de fichier If Not IsNumeric(wpv_Arg) Then ' Charge l'image dans un objet temporaire Set wlo_Image = LoadPicture(wpv_Arg) ' Cre une brosse mosaque partir de l'image charge

- 347 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

wlv_Brush = CreatePatternBrush(wlo_Image.handle) ' Libre la mmoire occupe par l'objet image temporaire Set wlo_Image = Nothing ' Si argument numrique Else ' Cre une brosse unie wlv_Brush = CreateSolidBrush(wpv_Arg) End If ' Recherche l'identifiant de la fentre de fond de la base (de classe "MDIClient") wlv_Hwnd = FindWindowEx(Application.hWndAccessApp, 0, "MDIClient", vbNullString) ' Modifie l'identifiant de la brosse servant dessiner le fond de la fentre SetClassLong wlv_Hwnd, GCL_HBRBACKGROUND, wlv_Brush ' Rafrachit l'affichage pour dessiner le fond d'cran avec la nouvelle bross InvalidateRect wlv_Hwnd, vbNullString, 1 End Sub

Puis, si vous souhaitez mettre une autre couleur excuter par exemple la ligne :

SetBackGround 16570023

Et si vous souhaitez mettre une image :

SetBackGround "C:\MonImage.jpg"

Prferez l'utilisation d'images en mosaque.

Comment afficher le sablier pendant un traitement


Auteurs : BBert , Lors d'un traitement prenant beaucoup de temps, il est parfois pratique d'afficher le sablier pendant ce traitement pour signaler l'utilisateur. Ce code est trs simple :
'affichage du sablier pendant le traitement DoCmd.Hourglass True 'taper ici le code de traitement 'repasse en mode affichage classique (flche dans mon cas) DoCmd.Hourglass False

Remarque : Dans Microsoft Windows 2000 et Microsoft Windows XP, il s'agit de l'icne que vous dfinissez pour occup dans la bote de dialogue Proprits de la souris du panneau de configuration de Windows. Il s'agit par dfaut d'une icne de sablier anime.

- 348 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Tables et relations Comment effacer les relations entre les tables ?
Auteurs : Cafeine ,
Function xDropRelations() Dim Rel As Relation For Each Rel In CurrentDb.Relations Debug.Print "effacement de la relation [" & Rel.Table & "]![" & Rel.Fields(0).name & "] -=> _ & "[" & Rel.ForeignTable & "]![" & Rel.Fields(0).ForeignName & "]" CurrentDb.Relations.Delete Rel.name Next Rel End Function

Comment supprimer une relation en VBA ?


Auteurs : Maxence HUBICHE ,
CurrentDb.Relations.Delete "NomTableUnNomTableDeux"

Comment crer une relation en VBA ?


Auteurs : Maxence HUBICHE , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
'On cre une relation et dfinit ses proprits. Dim rel as DAO.Relation 'Dfinit les attributs de l'objet Relation pour appliquer l'intgrit rfrentielle. Set rel = Currentdb.CreateRelation("CommandesEmploys", "Employs", "Commandes") ' On cre un champ dans la collection Fields de l'objet Relation rel.Attributes = dbRelationDeleteCascade + dbRelationUpdateCascade ' On ajoute le champ l'objet Relation et l'objet Set chp = rel.CreateField("N employ") ' Fournit le nom du champ cl externe. chp.ForeignName = "N employ" rel.Fields.Append chp Currentdb.Relations.Append rel

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Dtruire automatiquement la table des erreurs qui peut se crer lors d'une importation
Auteurs : Gal Donat , Cafeine , Cette table se nomme toujours : <nom de ton fichier sans l'extension>_ImportErrors Il suffit de vrifier l'existence de la table, puis, si elle existe de faire :
DoCmd.DeleteObject acTable, fichier & "_ImportErrors"

ou
CurrentDB.TableDefs.Delete fichier & "_ImportErrors"

- 349 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

En complment, voici comment puger les tables d'erreurs de la base : Fonctionne sur toutes les versions d'Access depuis Access 97.

Function PurgeErreurs() Dim tbl As TableDef For Each tbl In CurrentDb.TableDefs If InStr(tbl.Name, "importerrors") Then Debug.Print "Effacement de " & tbl.Name CurrentDb.TableDefs.Delete tbl.Name End If Next tbl Set tbl = Nothing End Function

Comment trouver en VBA le champ cl primaire d'une table ?


Auteurs : Team Access ,
Function TrouverCP(nom_table As String) As String Dim bds As Database, dft As TableDef, chp As Field Dim idx As Index ' base de donnes en cours. Set bds = CurrentDb ' Retourne un objet Tabledef pointant sur une table. Set dft = bds.TableDefs(nom_table) ' Parcourt la collection Indexes de l'objet TableDef. For Each idx In dft.Indexes ' Vrifie la proprit Primary de l'index de ' l'objet Recordset. If idx.Primary Then For Each chp In idx.Fields TrouverCP = chp.Name 'clef primaire trouv Set bds = Nothing Exit Function ' on quitte la fonction Next chp End If Next idx Set bds = Nothing TrouverCP = "null" ' pas de clef primaire trouv End Function

- 350 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications Comment lier une base Lotus Notes (*.nsf) et Access ?
Auteurs : Gal Donat , Ce n'est pas de tout repos. Il existe un drivers Lotus SQL ODBC ( les objets sont considr comme des vues) dans Access. NotesSQL),vous pourrez lier une vue Lotus (car

Migration ACCESS 2000 vers SQL SERVER 2000.


Auteurs : Maxence HUBICHE , Livre rfrence : "Migrer votre base de donnes Access Vers SQL Server" de Marc Isral (ISBN : 2840824434)

Exemple de procdure pour se connecter directement sql server


Auteurs : thorgal85 ,
Public Sub connect() '--------------------------------------'Connection au serveur SQL NomServeur '--------------------------------------'instanciation de la connection Set Cnx = New ADODB.Connection 'parametre de connection Cnx.ConnectionString = "Driver={SQL Server};server=NomServeur;UID=sa;PWD=;database=NomMDB" Cnx.Open 'test de connection If Cnx.State = adStateOpen Then MsgBox "connection OK" End If End Sub

Comment lancer un programme et attendre la fin de son excution avant de continuer ?


Auteurs : argyronet ,
'--------------------------'--- Dclaration des API --'--------------------------Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As _ Long, ByVal dwlProcessID As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long '----------------------------'--- Dclaration des CONSTANTES --'----------------------------Private Const PROCESS_QUERY_INFORMATION = &H400 Private Const STATUS_PENDING = &H103& '---------------'--- Fonction --'---------------Private Sub LancerProg(PathFilename As String)

- 351 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim lhProcess As Long Dim lProcessID As Long Dim lpExitCode As Long 'Ouverture du programme + rcupration de sont handle 'La rcupration du handle est ncessaire pour pouvoir ouvrir un processus sur celui-ci lProcessID = Shell(PathFilename, 1) 'Ouverture d'un processus sur le programme ouvert + rcupration du handle du processus 'La rcupration du handle est ncessaire pour obtenir des informations sur celui-ci lhProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, lProcessID) 'Boucle tant que la variable lpExitCode <> STATUS_PENDING (&H103&) Do 'Rcupration du code de sorti du processus 'Si programme ouvert -> la variable lpExitCode = STATUS_PENDING 'Sinon -> la variable lpExitCode = 0. Donc fin de la boucle Call GetExitCodeProcess(lhProcess, lpExitCode) DoEvents 'Continue effectu les opration effectu par access Loop While lpExitCode = STATUS_PENDING Call CloseHandle(lhProcess) 'Ferme le handle du processus End Sub

lien : Comment forcer Access attendre la fin d'un traitement avant de continuer ?

Comment excuter un programme ?


Auteurs : nightfall , Utilisez la fonction Shell. Vous pouvez indiquer dans le deuxime paramtre comment la fentre du programme doit s'afficher (si elle doit rester invisible, ou s'afficher normalement, ou en prenant tout l'cran, etc...).
Dim ret As Long ret = Shell("notepad.exe", vbNormalFocus)

lien : FAQ VB lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? lien : Que faire quand l'API ShellExecute ne fonctionne pas ?

Comment fermer un programme ouvert avec la fonction Shell ?


Auteurs : nightfall , Vous trouverez une mthode possible dans le code source ci-dessous. La procdure KillApp() ferme le programme dont l'identifiant est pass en paramtre. Vous pouvez utiliser la valeur renvoye par la fonction Shell(). La seule ligne contenue dans la procdure KillApp() a pour effet d'numrer toutes les fentres ouvertes, et d'appeler pour chacune d'entre-elles la fonction CloseWindow(). La fonction CloseWindow() regarde si la fentre en cours appartient au processus que l'on doit fermer, et si elle contient un menu Systme (menu qui apparat quand on clique sur l'icne de la fentre). Si c'est le cas, elle ferme la fentre. Insrez ce code dans un module standard:
Private Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

- 352 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, _ lpdwprocessid As Long) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Const WM_CLOSE = &H10 Private Const GWL_STYLE = (-16) Private Const WS_SYSMENU = &H80000 Private Function CloseWindow(ByVal hwnd As Long, ByVal hInstance As Long) As Long Dim idproc As Long idproc = 0 'reoit dans idproc l'id du processus li cette fentre GetWindowThreadProcessId hwnd, idproc If (idproc = hInstance) And ((GetWindowLong(hwnd, GWL_STYLE) And WS_SYSMENU) = WS_SYSMENU) Then PostMessage hwnd, WM_CLOSE, 0, 0 End If 'obligatoire pour qu'EnumWindows continue l'numration CloseWindow = True End Function Public Sub KillApp(hInstance As Long) EnumWindows AddressOf CloseWindow, hInstance End Sub

Certains programmes n'acceptent pas d'tre ouverts plusieurs fois en mme temps. Pour cela, ils commencent par chercher si une instance du programme est dj en mmoire. Si c'est le cas, ils terminent l'instance qui vient d'tre cre, et si une nouvelle fentre doit tre ouverte, c'est l'ancienne instance qui le fait. Avec ce code source vous ne pourrez donc pas, par exemple, fermer une fentre de l'explorateur Windows ouverte par Shell(), car le processus dont l'id vous est renvoy est automatiquement ferm, et la nouvelle fentre est ouverte par l'instance qui tait dj en mmoire. lien : FAQ VB lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? lien : Que faire quand l'API ShellExecute ne fonctionne pas ?

Comment tuer un processus en connaissant le nom de sa fentre ?


Auteurs : Jean-Marc Rabilloud , Le code suivant est assez similaire celui de la question prcdente, la diffrence rsidant dans le fait que vous ne connaissez pas l'identifiant du processus mais juste le titre de la fentre. Ce code doit tre plac dans un module standard. Le principe utilis est celui d'une numration l'aide d'un callback classique : la fonction EnumWindows numre toutes les fentres ouvertes et appelle la fonction EnumCallback pour chacune d'entre elles. Celle-ci ferme la fentre si son titre contient l'expression recherche.
Declare Function EnumWindows Lib "user32" (ByVal wndenmprc As Long, ByVal Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal ByVal ByVal lParam As Long) As Long hwnd As Long, _ lpString As String, _ cch As Long) As Long

- 353 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Const WM_CLOSE = &H10 Private AppCible As String Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long Dim buf As String * 256 Dim Titre As String Dim Longueur As Long 'Rcupre le titre de la fentre Longueur = GetWindowText(app_hWnd, buf, Len(buf)) Titre = Left$(buf, Longueur) 'Vrifie si le titre de la fentre correspond au nom recherch If InStr(Titre, AppCible) <> 0 Then 'Ferme la fentre SendMessage app_hWnd, WM_CLOSE, 0, 0 End If 'Poursuit l'numration EnumCallback = 1 End Function Public Sub KillApp(App_Cherchee As String) AppCible = App_Cherchee 'Demande Windows d'numrer les fentres ouvertes EnumWindows AddressOf EnumCallback, 0 End Sub

Un appel du type KillApp "Excel" fermera Microsoft Excel. Attention d'viter l'utilisation de termes trop simples pouvant se trouver dans le titre d'une fentre d'une autre application. lien : FAQ VB

Comment lancer un excutable et reprendre la main quand il a fini ?


Auteurs : abelman , Copiez ce code dans un module standard :
Public Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" _ (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, _ ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _ ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, _ lpProcessInformation As PROCESS_INFORMATION) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long

- 354 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Type pour grer les lancements de processus Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type 'Info sur un processus Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const STILL_ACTIVE = &H103& Public Sub AttendreFinProcess(proc As PROCESS_INFORMATION, Optional timeout As Long = 60) Dim Ret As Long Dim tms As Single Dim exitcode As Long 'Attendre la fin de la commande tms = Timer Ret = GetExitCodeProcess(proc.hProcess, exitcode) Do While Ret <> 0 And exitcode = STILL_ACTIVE Ret = GetExitCodeProcess(proc.hProcess, exitcode) DoEvents Sleep 100 If Timer - tms > timeout Then Err.Raise STILL_ACTIVE, "AttendreFinProcess", "Timeout sur l'attente de la fin d'un process" End If Loop If Ret = 0 Then Err.Raise Err.LastDllError, "AttendreFinProcess", "Erreur systeme N " & Err.LastDllError End If End Sub Public Sub LancerProcess(sExe As String, proc As PROCESS_INFORMATION) Dim start As STARTUPINFO Dim Ret As Long 'StartupInfo pour le processus qui lancera la commande start.cb = Len(start) 'Lancement de la commande Ret& = CreateProcess(0&, sExe, 0&, 0&, 0&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) If Ret = 0 Then Err.Raise Err.LastDllError, "LancerProcess", "Erreur systeme N " & Err.LastDllError End If

- 355 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

Crez une form et placez-y un bouton nomm Command1. Puis copiez ce code dans le module de la form :
Private Sub Command1_Click() Dim proc As PROCESS_INFORMATION On Error GoTo errortag proc.hProcess = -1 proc.hThread = -1 Debug.Print "Debut du processus" Call LancerProcess("notepad", proc) Call AttendreFinProcess(proc) Debug.Print "fin du processus" Call CloseHandle(proc.hProcess) Call CloseHandle(proc.hThread) Exit Sub errortag: If proc.hProcess <> -1 Then CloseHandle proc.hProcess If proc.hThread <> -1 Then CloseHandle proc.hThread MsgBox Err.Number & " - " & Err.Description End Sub

La fonction AttendreFinProcess() attend la fin d'un processus tant que le temps indiqu par le paramtre timeout n'est pas coul. Executez le projet et cliquez sur le bouton de commande. Le Notepad se lance. Lorsque vous le fermez, la console de dbuggage affiche "fin du processus". lien : FAQ VB

Comment envoyer un mail avec Lotus Notes ?


Auteurs : Team Access ,
'Envoi d'un mail avec Lotus Notes 'Subject : sujet du mail 'Attachment : nom d'une pice jointe 'Recipient : adresse e-mail du destinataire principal 'ccRecipient : destinataire en copie 'bccRecipient : destinataire en copie invisible 'BodyText : corps du mail 'SaveIt : mettre True pour que le mail soit sauvegard 'Password : mot de passe Public Sub SendNotesMail(ByVal ByVal ByVal ByVal Dim Dim Dim Dim Dim Dim Dim Maildb As Object UserName As String MailDbName As String MailDoc As Object AttachME As Object Session As Object EmbedObj As Object Subject As String, ByVal Attachment As String, _ Recipient As String, ByVal ccRecipient As String, _ bccRecipient As String, ByVal BodyText As String, _ SaveIt As Boolean, ByVal Password As String)

'La base des mails 'Le nom d'utilisateur 'Le nom de la base des mails 'Le mail 'L'objet pice jointe en RTF 'La session Notes 'L'objet incorpor

- 356 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Cre une session notes Set Session = CreateObject("Notes.NotesSession") '*** Cette ligne est rserve aux versions 5.x et suprieur : *** Session.Initialize (Password) 'Rcupre le nom d'utilisateur et cre le nom de la base des mails UserName = Session.UserName MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 'Ouvre la base des mails Set Maildb = Session.GETDATABASE("", MailDbName) If Not Maildb.ISOPEN Then Maildb.OPENMAIL 'Paramtre le mail envoyer Set MailDoc = Maildb.CREATEDOCUMENT MailDoc.Form = "Memo" MailDoc.sendto = Recipient MailDoc.CopyTo = ccRecipient MailDoc.BlindCopyTo = bccRecipient MailDoc.Subject = Subject MailDoc.Body = BodyText MailDoc.SAVEMESSAGEONSEND = SaveIt 'Prend en compte les pices jointes If Attachment <> "" Then Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment") Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment") MailDoc.CREATERICHTEXTITEM ("Attachment") End If 'Envoie le mail MailDoc.PostedDate = Now() MailDoc.SEND 0, Recipient Set Set Set Set Set End Sub Maildb = Nothing MailDoc = Nothing AttachME = Nothing Session = Nothing EmbedObj = Nothing

Il est aussi possible d'indiquer Lotus Notes plusieurs destinataires en affectant un tableau de type Variant la proprit sendto :
Dim recip(25) as Variant recip(0) = "emailaddress1" recip(1) = "emailaddress2" maildoc.sendto = recip

lien : FAQ VB

Comment envoyer un mail avec une pice attache ?


Auteurs : Papy Turbo , Pour excuter ce code il faut ajouter les rfrences : Microsoft CDO for Windows 2000 Library et Microsoft ActiveX Data Objects 2.X Library
Option Compare Database Option Explicit

- 357 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Private Sub cmdEnvoyer_Click() 'txtForm CDOSendMail txtFrom, txtTo, txtSubject, txtBody, txtAttach 'txtForm : Mail de l'envoyeur 'txtTo : Mail de destination 'txtSubject = Objet 'txtBody = contenu 'txtAttach = chemin complet du fichier End Sub Public Sub CDOSendMail(SendFrom As String, _ SendTo As String, _ Subject As String, _ PlainTextBody As String, _ FullPathFileName As String) Dim cdoMail As CDO.Message Dim iBp As CDO.IBodyPart ' for IBodyPart on message Dim iBp1 As CDO.IBodyPart Dim Flds As ADODB.Fields Dim Stm As ADODB.Stream Set cdoMail = New CDO.Message With cdoMail .From = SendFrom .To = SendTo .Subject = Subject ''Set iBp = .BodyPart Set iBp = cdoMail '?? ' TEXT BODYPART ' Add the body part for the text/plain part of message Set iBp1 = iBp.AddBodyPart ' set the fields here Set Flds = iBp1.Fields Flds("urn:schemas:mailheader:content-type") = "text/plain; charset=""iso-8859-1""" Flds.Update ' get the stream and add the message Set Stm = iBp1.GetDecodedContentStream Stm.WriteText PlainTextBody Stm.Flush ' HTML BODYPART ' Do the HTML part here Set iBp1 = iBp.AddBodyPart ' set the content-type field here Set Flds = iBp1.Fields Flds("urn:schemas:mailheader:content-type") = "text/html" Flds.Update ' get the stream and add message HTML text to it Set Stm = iBp1.GetDecodedContentStream Stm.WriteText "<HTML><H1>this is some content for the body part object</H1></HTML>" Stm.Flush ' Now set the Message object's Content-Type header ' to multipart/alternative Set Flds = iBp.Fields Flds("urn:schemas:mailheader:content-type") = "multipart/alternative" Flds.Update .AddAttachment FullPathFileName .Send End With End Sub

- 358 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Cette solution marche avec Outlook express comme mail par dfaut, tester pour les autres services de messagerie.

lien :

Le publipostage avec Access

Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ?
Auteurs : nightfall , Placez cette dclaration dans le module d'une form :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

La ligne suivante affiche le site Developpez.com dans le navigateur par dfaut, en fournissant le rpertoire de votre application comme rpertoire par dfaut :
ShellExecute Me.hwnd, "open", "http://www.developpez.com", "", CurrentProject.Path, 1

lien : FAQ VB lien : Que faire quand l'API ShellExecute ne fonctionne pas ?

Que faire quand l'API ShellExecute ne fonctionne pas ?


Auteurs : Philippe JOCHMANS , Dans un premier temps dclarer une variable de type variant :
Dim Ret as Variant

Rcuprer le rsultat de la fonction ShellExecute (ne pas oublier les parenthses) dans cette variable :
Ret = ShellExecute(.....) msgbox Ret

Interprter le rsultat retourn en fonction de la liste suivante :


0 Le systme manque de mmoire ou de ressources, l'excutable est corrompu ou rallocations non valides. 2 Fichier non trouv. 3 Chemin non trouv. 5 Une tentative a t faite pour se lier dynamiquement une tche, ou il y a eu une erreur de partage ou de protection rseau. 6 La librairie requiert des segments de donnes spars pour chaque tche. 8 Il n'y a pas assez de mmoire disponible pour lancer l'application. 10 Version de Windows incorrecte. 11 Le fichier excutable n'est pas correct, il se peut que ce ne soit pas une application Windows, ou qu'il y ait une erreur dans le fichier .EXE; 12 L'application a t conue pour un autre systme d'exploitation. 13 L'application a t conue pour MS-DOS 4.0. 14 Le type de fichier excutable est inconnu. 15 Tentative de chargement d'une application en mode rel. 16 Tentative de charger une seconde instance d'un fichier excutable contenant plusieurs segments de donnes qui ne sont pas marqus en lecture seule. 19 Tentative de charger un fichier excutable compress, le fichier doit tre dcompress avant d'tre charg.

- 359 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

20 Fichier de librairie lie dynamiquement (DLL) incorrect, une des DLLs requise pour excuter cette application est corrompue. 21 L'application requiert les extensions Microsoft Windows 32-bit. 31 Il n'y a pas d'association avec le type de fichier spcifi, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi

lien :

Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ?

- 360 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office Comment piloter une autre application Office partir de MS Access ?
Auteurs : Bidou ,
Dim xlApp As Object Dim mySheet As Object Set xlApp = CreateObject("Excel.Application") Set mySheet = xlApp.Workbooks.Open("D:\EXCEL\test.xls") ' Dfinit le fichier EXCEL ouvrir ' endroit o mettre le code de pilotage ' Code de fermeture mySheet.Save mySheet.Close xlApp.Quit Set xlApp = Nothing Set mySheet = Nothing

Remarque : si vous crez un nouveau fichier plutt que d'en ouvrir un nouveau en utilisant
Set mySheet = xlApp.Workbooks.Add

vous devrez obligatoirement remplacer


mySheet.Save

par
mySheet.SaveAs "NomDuFichier"

Car quand le nom du fichier n'est pas connu la mthode Save affiche une bote de dialogue ne sera visible que si Excel l'est, ce qui n'est pas le cas dans notre exemple. En dehors de la phase de test il est prfrable de ne pas rendre l'application visible pour viter que l'utilisateur n'interfre, par exemple en fermant Excel.

lien : lien :

Utiliser Excel partir de Visual Basic VB/VBA : Programmer efficacement avec Excel

Comment excuter une macro Access depuis n'importe quelle application Office supportant VBA ?
Auteurs : tibadabo ,
Sub ExcuterMacroAccess() Dim MonAccess As New Access.Application MonAccess.OpenCurrentDatabase "D:\etude.mdb" 'Ici le chemin de la bdd Access DoCmd.RunMacro "Export" 'Ici le nom de la macro MonAccess.Quit acquitsaveNone Set MonAccess = Nothing End Sub

Comment excuter une procdure Access depuis n'importe quelle application Office supportant VBA ?
Auteurs : Lucifer , Dans Access on fait une procdure dans un module.
- 361 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

exemple :
Public Sub test(pArg as string) MsgBox "Bonjour Matre " & pArg End Sub

et on l'appelle de la faon suivante depuis Excel ou tout autre application office-vba :


Sub Bouton1_QuandClic() Dim MonAccess As New Access.Application MonAccess.OpenCurrentDatabase "D:\etude.mdb" MonAccess.run "test", "Lucifer" MonAccess.Quit acquitsaveNone Set MonAccess = Nothing End Sub

Comment, depuis n'importe quelle application Office supportant VBA, commander l'exportation de tables ou requtes Access au format Excel ?
Auteurs : Lucifer , On dfinit au pralable dans un module Access, la procdure d'exportation : exemple :
Public Sub Export() DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet End Sub

acExport, acExport, acExport, acExport, acExport,

, , , , ,

"table1", "D:\Etudes1.xls", False, "" "table2", "D:\Etudes2.xls", False, "" "requte3", " D:\EtudesSuite.xls ", False, "" "requte4", " D:\EtudesSuite.xls ", False, "" "X OPCVM brut", " D:\EtudesAutre.xls ", False, ""

Ensuite on appelle la procdure Export de la faon suivante depuis excel ou tout autre application office-vba :
Sub Bouton1_QuandClic() Dim MonAccess As New Access.Application MonAccess.OpenCurrentDatabase "D:\etude.mdb" MonAccess.run "Export" MonAccess.Quit acquitsaveNone Set MonAccess = Nothing End Sub

- 362 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Excel Comment exporter un fichier Excel vers CSV
Auteurs : jbaudin , Depuis Excel 2002, l'export en CSV via VBA prend par dfaut une virgule. (Sauf si on le fait la main: Fichier/ Enregistrer sous/ CSV (sparateur point-virgule)) Pour forcer Excel ou Access utiliser un point-virgule lors de l'export d'un fichier Excel vers CSV, il faut : 1 2 Vrifier dans les Options Rgionales (Panneau de configuration de Windows), onglets Nombres, si le sparateur de liste est bien un point-virgule. Ajouter ceci dans le code : Local:=True pour forcer Excel utiliser le sparateur configur sur l'ordinateur utilis.

Soit :

appXl.ActiveWorkbook.SaveAs Filename:= _ "D:\MonFichier.csv", FileFormat:=xlCSV, _ CreateBackup:=False, Local:=True

Et l on a bien des points-virgules comme sparateurs dans le fichier CSV.

Tester si une feuille Excel existe au sein d'un classeur


Auteurs : Tofalu , Tout d'abord vous devez ajouter la rfrence Microsoft Excel X.0 Object Library votre projet. Puis dans un module :

Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier As String) As Boolean On Error GoTo err Dim oAppExcel As Excel.Application Dim oWbk As Excel.Workbook Dim oSht As Excel.Worksheet 'Lance Excel Set oAppExcel = New Excel.Application 'Ouvre le classeur Set oWbk = oAppExcel.Workbooks.Open(strNomFichier) 'Accde la feuille Set oSht = oWbk.Sheets(strNomFeuille) TestExistenceFeuille = True 'Libre les variables et quitte Set oSht = Nothing oWbk.Close oAppExcel.Quit Set oWbk = Nothing Set oAppExcel = Nothing err: End Function

Exemple d'utilisation :

Sub test()

- 363 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

MsgBox TestExistenceFeuille("Feuil1", "D:\test.xls") End Sub

Notez que si vous utilisez dj un objet Excel.Application dans votre code principal, vous pouvez le passer en argument la fonction afin d'acclrer le traitement. Cela donne :

Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier As String, oAppExcel As Excel.Application) As Boolean On Error GoTo err Dim oWbk As Excel.Workbook Dim oSht As Excel.Worksheet 'Ouvre le classeur Set oWbk = oAppExcel.Workbooks.Open(strNomFichier) 'Accde la feuille Set oSht = oWbk.Sheets(strNomFeuille) TestExistenceFeuille = True 'Libre les variables et quitte Set oSht = Nothing oWbk.Close Set oWbk = Nothing err: End Function

Que vous utiliserez dans votre code ainsi :

Dim MonAppli as Excel.Application 'ici votre code d'ouverture du fichier, et vos traitements prliminaires 'Appel de la fonction If TestExistenceFeuille("Feuil1", "D:\test.xls",MonAppli) Then Msgbox "La feuille existe dj" else Msgbox "La feuille n'existe pas" End if

Piloter Excel via Access : exemples d'oprations courantes effectues sur cellules, plages, lignes ou colonnes excel partir d'access.
Auteurs : cladlemeilleur , Pour utiliser ce code il faut rfrencer la bibliothque Excel (VBE : menu Outils/Rfrences)
Private Dim Dim Dim Dim Dim Sub DmoPilotageExcel() xlApp As Excel.Application xlSheet As Excel.Worksheet xlBook As Excel.Workbook i as long vtemp As Variant

'J'initialise mes variables Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\Chemin\Feuille.xls") 'Ajouter une feuille de calcul nomme Toto Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Toto" 'Manipuler une cellule xlSheet.Cells(1, 1) = "je suis dans la ligne1 et colonne1"

- 364 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

'Manipuler une plage xlSheet.Range("A2:D6").Value = "Zones A2:D6" 'Remplie la colonne E de la ligne i avec le num de la ligne (i) For i = 2 To 6 xlSheet.Cells(i, 5).Value = i Next 'Permet de trier une plage xlSheet.Range("A2:E6").Sort xlSheet.Columns("E"), xlDescending 'Trouver une valeur dans une plage vtemp = xlSheet.Range("A2:E6").Find("2").Row 'Touver une valeur dans une colonne vtemp = xlSheet.Columns("E").Find("2").Row 'Copier une plage vers une destination directement 'xlBook.Worksheets("Feuil1").Range("A1:E3").Copy Destination:=xlBook.Worksheets _ '("C:\Chemin\FeuilleDestination.xls").Range("A1:E3") 'Copier une plage xlSheet.Range("A" & vtemp & ":E" & vtemp).Copy 'Coller les valeurs xlSheet.Paste Destination:=xlSheet.Range("A8:E8") 'Supprimer une plage 'Si l'on supprime une ligne alors cela remonte les lignes 'xlSheet.Range("A" & vtemp & ":E" & vtemp).Delete 'Supprimer une ligne xlSheet.Rows(vtemp).Delete 'insertion d'une ligne xlSheet.Range("A" & i & ":H" & i).EntireRow.Insert Shift:=xlShiftDown 'Code de fermeture xlBook.Save xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing MsgBox "Fin de la procdure. :)" End Sub

Importation de fichier Excel


Auteurs : Maxence HUBICHE , Comment n'importer que quelques colonnes d'un fichier Excel ? Il est possible de faire une table qui a les mmes noms de champs que dans Excel. Lors de l'import dans la table ainsi cre, Access n'importera que les champs de la table. Si les noms de champs ne sont pas spcifis dans excel, il ne sera pas possible de n'importer que quelques colonnes d'une plage, mais on peut dlimiter la plage importer comme ceci :

DoCmd.TransferSpreadsheet acImport, 8, "Employs","C:\Fichier.xls", True, "A1:G12"

Par contre, l'import d'un fichier texte permet de spcifier de nombreux attributs pour chaque colonne importer (nom, type, sauter ou pas, ...). Il est mme possible d'enregistrer les spcifications d'import en suivant la technique suivante : excuter l'importation l'aide de l'assistant et avant de cliquer sur "TERMINER", cliquer sur le petit bouton en bas gauche "AVANCE ..." afin de dfinir et sauvegarder les spcifications d'import... Pour importer des colonnes non

- 365 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

contigus d'une plage d'un fichier Excel, vous pouvez donc passer par l'enregistrement du fichier Excel dans un des formats texte (csv, txt, ...)

Lors d'export vers Excel, comme forcer Excel interprter les donnes comme du texte ?
Auteurs : Maxence HUBICHE , Dans Excel, prfixez les valeurs numriques d'un ' Cela convertira les donnes numriques en donnes texte.

Comment exporter le rsultat d'une requte sous Excel ?


Auteurs : Gal Donat , On passe ici par une requte temporaire, mais on peut galement exporter une requte existante bien videmment.
Dim qd As QueryDef Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", "Select * From MATABLE") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97,"Requete_Temporaire", "c:\fichier.xls" DoCmd.DeleteObject acQuery,"Requete_Temporaire"

Il faut que la librairie Microsoft DAO soit coche (dans un module faites Outils / Rfrences).

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment envoyer des donnes Access sur Excel ?


Auteurs : Coin , Dclaration:
Dim appexcel as Excel.Application Dim wbexcel as Excel.Workbook

Ne pas oublier de cocher dans le menu Outil/Rfrences, la bibliothque Microsoft Excel X Object Library (avec x = 8 pour Excel 97, x = 9 pour Excel 2000, x = 10 pour Excel XP, x = 11 pour excs 2003). Appel du fichier Excel :
Set appexcel = CreateObject("Excel.Application") appexcel.Visible = True Set wbexcel = appexcel.Workbooks.Open("Chemin du fichier Excel")

Appel de la feuille correspondante :


appexcel.Sheets("Feuil1").Select

Remplissage dans Excel (Exemple partir d'une requte), sur des cellules bien prcises.
appexcel.cells(5, 2) = rst![Nomduchamps] appexcel.cells(5, 4) = rst![Nomduchamps]

- 366 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

appexcel.cells(5, 7) = rst![Nomduchamps]

Attention la cellule (5,2) correspond la cellule B5 d'excs. la fonction rst correspond un enregistrement RecordSet. lien : Crer un jeu de donnes (recordset)

Rcuprer le nom du classeur Excel actif


Auteurs : Frank ,
Dim XLApp As Object Set XLApp = GetObject(,"Excel.Application") MsgBox "" & XLApp.ActiveWorkbook.Name & ""

Comment ouvrir un fichier vierge bas sur un modle et travailler sur cette session d'Excel, puis retourner dans Access
Auteurs : GAGNON ,
On Error Resume Next Set xlApp = GetObject(, "Excel.application") If Err = ERR_NOT_RUNNING Then Err.Clear Set xlApp = CreateObject("Excel.application") End If Set xlWkb = xlApp.Workbooks.Add("\\monDossier\MonFichier.xlt") 'chemin du fichier ' ' ici nous lanons les macros automatiques d'Excel mais vous pouvez mettre du code ' xlWkb.RunAutoMacros xlAutoOpen xlApp.Visible = True Set xlWkb = Nothing Set xlApp = Nothing

lien : Erreur 429 : Un composant Activex ne peut crer d'objet

Comment vrifier qu'Excel soit install sur un poste ?


Auteurs : Tofalu , Voici deux fonctions permettant d'arriver vos fins : En utilisant un appel automation :

Public Function TestExcel() as boolean On error goto err Dim oTmp as Object Set oTmp=CreateObject("Excel.Application") Set oTmp=Nothing TestExcel=True err: End Function

En vrifiant le registre :

- 367 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Public Function TestExcel2() As Boolean Dim lngR As Long TestExcel2 = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\Excel", lngR) = 0 End Function

Ces deux fonctions renverront bien sr True si MS Excel est install sur le poste.

Comment enregistrer (ou non) les modifications apportes un classeur excel, sans demander l'utilisateur ?
Auteurs : Celia1303 , Soit xlBook un classeur :

xlBook.Close (True) 'on dit qu'on enregistre les modifs du fichiers xlBook.Close(False) 'pour ne pas enregistrer les modifs

Comment lister les onglets d'un fichier excel sans l'ouvrir


Auteurs : Cafeine , Ce code permet de lister les onglets d'un fichier Excel sans l'ouvrir. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

Sub GetDAOExcelTabs(ByVal strPath As String) Dim db As DAO.Database Dim td As DAO.TableDef Set db = DAO.OpenDatabase(strPath, False, True, "Excel 8.0;") DoEvents For Each td In db.TableDefs Debug.Print "onglet : " & td.Name Next td db.Close Set td = Nothing Set db = Nothing End Sub

lien :

Comment modifier la valeur d'une cellule d'un classeur excel ferm en DAO ?

Comment modifier la valeur d'une cellule d'un classeur excel ferm en DAO ?
Auteurs : Cafeine , Il faut ajouter la rfrence : Microsoft DAO 3.x Object Library
Sub DAOUpdateExcelFile(ByVal ByVal ByVal ByVal ByVal strFullPath As String, _ strTab As String, _ RowIndex As Long, _ ColumnIndex As Long, _ setValue As Variant)

' Ajoutez la rfrence DAO Dim db As DAO.Database

- 368 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim rec As DAO.Recordset ' on ouvre le fichier excel en tant que base de donnes DAO Set db = OpenDatabase(strFullPath, False, False, "Excel 8.0;") DoEvents ' on ouvre un recordset sur un onglet comme on le ferait ' sur une table Access ' En DAO, les tables sont les onglets avec un $ final Set rec = db.OpenRecordset(strTab & "$", DAO.dbOpenDynaset) ' on se dplace sur l'enregistrement souhait rec.Move RowIndex - 1 ' on dite l'enregistrement rec.Edit rec.Fields(ColumnIndex - 1).Value = setValue rec.Update ' on sauvegarde ' fermez les objets rec.Close db.Close ' librez les objets ! Set db = Nothing Set rec = Nothing End Sub

Un exemple qui permet de passer la valeur de la cellule E12 de l'onglet "Feuil1" 999 :
DAOUpdateExcelFile "c:\temp\db.xls","Feuil1",12,5,999

lien :

Comment lister les onglets d'un fichier excel sans l'ouvrir

- 369 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Outlook Comment envoyer un mail avec Outlook ?
Auteurs : Etienne Bar , Pour excuter ce code il faut la rfrence : Microsoft Outlook X.0 Object Library
Public Sub CreateEmail( _ Recipient As String, _ Subject As String, _ Body As String, _ Optional Attach As Variant) ' -------------------------Dim I As Integer Dim oEmail As Outlook.MailItem Dim appOutLook As Outlook.Application ' crer un nouvel item mail Set appOutLook = New Outlook.Application Set oEmail = appOutLook.CreateItem(olMailItem) ' les paramtres oEmail.To = Recipient oEmail.Subject = Subject oEmail.Body = Body If Not IsMissing(Attach) Then If TypeName(Attach) = "String" Then ' s'il y a des pices jointes oEmail.Attachments.Add Attach Else For I = 0 To UBound(Attach) - 1 oEmail.Attachments.Add Attach(I) Next End If End If ' envoie le message oEmail.Send ' dtruit les rfrences aux objets Set oEmail = Nothing Set appOutLook = Nothing End Sub

Et pour viter la demande d'Outlook qui indique qu'une application est en train d'envoyer un message, il y a une solution ici : http://www.express-soft.com/mailmate/clickyes.html

lien :

Le publipostage avec Access

- 370 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

lien :

Comment envoyer un mail format HTML avec Outlook

Comment rcuprer le carnet d'adresses d'Outlook ?


Auteurs : ThierryAIM , grafikm_fr , Ce code n'est utiliser seulement si Outlook est le client de messagerie par dfaut, sinon MAPI vous renvoie une erreur. Cochez la rfrence Outlook dans les rfrences du projet. Posez un textbox nomm "rsultat" sur une form et placez ce code dans le module de la form :

Private Declare Function MAPIDetails Lib "MAPI32.DLL" Alias "BMAPIDetails" _ (ByVal Session&, ByVal UIParam&, Recipient As MapiRecip, _ ByVal Flags&, ByVal Reserved&) As Long Private Declare Function MAPIResolveName Lib "MAPI32.DLL" Alias "BMAPIResolveName" _ (ByVal Session&, ByVal UIParam&, ByVal UserName$, _ ByVal Flags&, ByVal Reserved&, Recipient As MapiRecip) As Long Private Type MapiRecip Reserved As Long RecipClass As Long Name As String Address As String EIDSize As Long EntryID As String End Type Sub listemail() Dim X As Long, I As Long Dim out As Outlook.Application Dim a As Object, mapi As Object Dim ctrlists As Integer Dim info As MapiRecip Set out = New Outlook.Application Set mapi = out.GetNameSpace("MAPI") For ctrlists = 1 To mapi.AddressLists.Count Set a = mapi.AddressLists(ctrlists) For X = 1 To a.AddressEntries.Count I = MAPIResolveName(0, 0, a.AddressEntries(X), 0, 0, info) resultat.Text = resultat.Text & "Nom : " & info.Name & " Replace(info.Address, "SMTP:", "") & vbCrLf 'I = MAPIDetails(0, 0, info, 0, 0) 'pour editer les dtails. DoEvents Next DoEvents Next Set a = Nothing Set out = Nothing Set mapi = Nothing End Sub

" & " @ : " & _

- 371 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

La procdure listemail affiche les informations dans le textbox. lien : FAQ VB

Ajout de rendez-vous dans Microsoft Outlook l'aide d'Automation


Auteurs : MultiClic , http://support.Microsoft.com/default.aspx?scid=kb;fr;160502&Product=accFra

Comment ajouter des contacts dans la liste des contacts commune sous Outlook avec un serveur Exchange ?
Auteurs : Isa38 , Il suffit d'utiliser le code suivant aprs avoir ajouter une rfrence Microsoft Outlook votre projet.

Dim Dim Dim Dim Set Set Set Set

myOlApp As New Outlook.Application myNameSpace As NameSpace myFolder, myContactFolder As MAPIFolder myNewContact As Outlook.ContactItem myOlApp = CreateObject("Outlook.Application") myNameSpace = myOlApp.GetNamespace("MAPI") myFolder = myNameSpace.Folders("Dossiers Communs") myContactFolder = myFolder.Folders("Contacts commmuns")

Set myNewContact = myContactFolder.Items.Add(olContactItem) With myNewContact .FirstName = "Astrix" .LastName = "Le Gaulois" .Email1Address="asterix@dolmen.fr" .Save End With Msgbox "Contact Ajout" myOlApp.Close Set myOlApp=Nothing

Comment sauvegarder un mail ?


Auteurs : Team Access ,
Function SendMailCDO(MTo As String, MSubject As String, Optional MBody As String, Optional MAttach As String) Dim myOlApp As Object Dim myitem As Object Set myOlApp = CreateObject("Outlook.Application") Set myitem = myOlApp.CreateItem(0) myitem.Body = MBody myitem.Attachments.Add MAttach myitem.Subject = MSubject myitem.To = MTo myitem.Save 'ou .send pour envoyer Set myOlApp = Nothing

- 372 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

lien :

Le publipostage avec Access

Comment envoyer un mail format HTML avec Outlook


Auteurs : Cafeine , Pour pouvoir ajouter des enrichissements de mise en forme on peut utiliser du HTML dans le corps du message grce .HTMLBody comme dans la fonction suivante :
Private Sub cmdSend_Click() Dim strHTML As String Dim oEmail As Outlook.MailItem Dim appOutlook As Outlook.Application Set appOutlook = New Outlook.Application Set oEmail = appOutlook.CreateItem(olMailItem) oEmail.To = Me.txtTo oEmail.Subject = Me.txtSubject strHTML = "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"">" & _ "<HTML><HEAD>" & _ "<META http-equiv=Content-Type content=""text/html; charset=iso-8859-1"">" & _ "<META content=""MSHTML 6.00.2800.1516"" name=GENERATOR></HEAD>" & _ "<BODY><DIV STYLE=""font-size: 11px; font-face: Tahoma;"">" oEmail.HTMLBody = strHTML & Replace(Me.txtBody, vbCrLf, "<br>") & "</DIV></BODY></HTML>"

oEmail.Send Set oEmail = Nothing Set appOutlook = Nothing End Sub

lien :

Le publipostage avec Access

- 373 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Word Publipostage de donnes Access vers Word (en VBA)
Auteurs : Coin , Pour lancer un publipostage partir d'un bouton, il suffit de mettre le code suivant dans la proprit de click du bouton.

'Voici pour la dclaration du code: Dim wdapp As Word.Application 'Dmarrer Word Set wdapp = CreateObject("Word.application") With wdapp .Visible = True 'ouvrir le document .Documents.Open "Chemincompletdudocumentwordouvrir" 'Diriger le publipostage vers un nouveau document .ActiveDocument.MailMerge.Execute End With 'fermer et librer les objets Set wdapp = Nothing

Ne pas oublier de cocher dans le menu Outil/Rfrences, la bibliothque Microsoft Word X Object Library (avec x = 8 pour Excel 97, x = 9 pour Excel 2000, x = 10 pour excel XP, x = 11 pour excel 2003).

Comment excuter une macro Word partir d'Access


Auteurs : Team Access ,
Word.Application.Run MacroName:="nom macro"

Comment imprimer un document Word ?


Auteurs : Tofalu , Ceci est possible en utilisant Automation par exemple. Aprs avoir ajout une rfrence Microsoft Word votre projet :

Sub imprimer() Dim oApp As New Word.Application oApp.Documents.Open "D:\test.doc" oApp.PrintOut oApp.Quit Set oApp = Nothing

- 374 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Sub

Comment ouvrir un document Word depuis VBA en dsactivant les macro qu'il contient ?
Auteurs : argyronet , Vous pouvez ajouter une proprit DisableAutoMacros comme ceci :

Sub OpenDocument() Dim appwd As Word.Application Dim strNomFichierWord As String strNomFichierWord = "C:\Un document.doc" Set appwd = CreateObject("Word.Application") With appwd .WordBasic.DisableAutoMacros 1 '0 pour activer .Visible = True .Documents.Open strNomFichierWord .Activate End With End Sub

Il faut toutefois que le niveau de scurit soit au maximum Moyen et que la macro dsactiver soit une AutoOpen().

- 375 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Access Comment ouvrir un formulaire ou un tat depuis une autre application Access ? (intgration d'applications)
Auteurs : Papy Turbo , Dans une application complexe comportant plusieurs modules applicatifs (plusieurs fichiers .mdb), vous souhaitez ouvrir, partir d'une application "Portail", les formulaires des autres applications : _ Il faut, dans chaque "Portail", crer une rfrence chacune des applications que le portail va appeler : dans VBA, menu Outils, Rfrences, Parcourir, choisir le type de fichier 'Base de donnes (*.mdb)', ... Conseil, ce propos : installe toutes les applications dans le mme dossier, sur les postes des utilisateurs. Tu viteras ainsi des erreurs de rfrence au moment de l'excution, aprs l'installation chez ton 'client'. _ Vous pourrez alors accder chacune des fonctions dclares comme publiques dans des modules standard, donc : _ dans chaque application, vous crez une fonction publique dans un module standard, qui ouvre les formulaires. Exemple de fonctions gnriques :
'Intgration d'applications : Public Function FormOpen(FormName As String, _ Optional View As AcFormView = acNormal, _ Optional FilterName As String, _ Optional WhereCondition As String, _ Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _ Optional WindowMode As AcWindowMode = acWindowNormal, _ Optional OpenArgs As String) 'Appele depuis le portail, pour ouvrir les formulaires de cette application DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs End Function Public Function ReportOpen(ReportName As String, _ Optional View As AcView = acNormal, _ Optional FilterName As String, _ Optional WhereCondition As String) 'Appele depuis le portail, pour ouvrir les tats de cette application DoCmd.OpenReport ReportName, View, FilterName, WhereCondition End Function

_ C'est une de ces fonctions que vous appellez depuis l'application "Portail", pour ouvrir un formulaire ou un tat de l'autre. Pour tre sr de ne pas se tromper d'application, faites prcder le nom de la fonction par le nom de projet (Menu VBA : Outils, Proprits de ApplicationXxx...) de l'application appele, comme dans :
ApplicationXxx.FormOpen "NomFormulaire", acDesign

Comment ouvrir par le code une autre base Access et ouvrir un de ses formulaires ?
Auteurs : Morsi , Dans un module :

Private Declare Function apiSetForegroundWindow Lib "user32" _ Alias "SetForegroundWindow" _ (ByVal hwnd As Long) _ As Long Private Declare Function apiShowWindow Lib "user32" _ Alias "ShowWindow" _ (ByVal hwnd As Long, _ ByVal nCmdShow As Long) _

- 376 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

As Long Private Const SW_MAXIMIZE = 3 Private Const SW_NORMAL = 1 Function fOpenRemoteForm(strMDB As String, _ strForm As String, _ Optional intView As Variant) _ As Boolean Dim objAccess As Access.Application Dim lngRet As Long On Error GoTo fOpenRemoteForm_Err If IsMissing(intView) Then intView = acViewNormal If Len(Dir(strMDB)) > 0 Then Set objAccess = New Access.Application With objAccess lngRet = apiSetForegroundWindow(.hWndAccessApp) lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE) 'le premier appel ShowWindow semble rester sans effet lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE) .OpenCurrentDatabase strMDB .DoCmd.OpenForm strForm, intView Do While Len(.CurrentDb.Name) > 0 DoEvents Loop End With End If fOpenRemoteForm_Exit: On Error Resume Next objAccess.Quit Set objAccess = Nothing Exit Function fOpenRemoteForm_Err: fOpenRemoteForm = False Select Case err.Number Case 7866: 'mdb ouverte en mode exclusif MsgBox "The database you specified " & vbCrLf & strMDB & _ vbCrLf & "is currently open in exclusive mode. " & vbCrLf _ & vbCrLf & "Please reopen in shared mode and try again", _ vbExclamation + vbOKOnly, "Could not open database." Case 2102: 'ce formulaire n'existe pas MsgBox "The Form \'" & strForm & _ "\' doesn\'t exist in the Database " _ & vbCrLf & strMDB, _ vbExclamation + vbOKOnly, "Form not found" Case 7952: 'l'utilisateur a fermer la base de donnes fOpenRemoteForm = True Case Else: MsgBox "Error#: " & err.Number & vbCrLf & err.DESCRIPTION, _ vbCritical + vbOKOnly, "Runtime error" End Select Resume fOpenRemoteForm_Exit End Function

L'appel se fera de la manire suivante :

- 377 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Call fOpenRemoteForm("chemin_de_ma_base\base.mdb", "Form_a_ouvrir")

Comment travailler sur une autre base de donnes Access protge par un mot de passe ?
Auteurs : Lo , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Il est possible d'intgrer le mot de passe au code lors de l'ouverture de la base de donnes :
Dim db as Dao.DataBase Set db = DBEngine.OpenDatabase("C:\MaBase.mdb", False, False, ";pwd=password") 'Effectuer le traitement sur la base de donnes ici. db.Close

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment rcuprer le code d'une base Access non ouverte par VBA ?
Auteurs : Lou Pitchoun , Philippe JOCHMANS , jpcheck , Voici un code permettant d'accder au code d'une base Access non ouverte.
Function MajCodeVBA(PathBase As String) As Boolean Dim db_encours As DAO.Database Dim db_temporaire As DAO.Database Dim RS As DAO.Recordset Dim strSQL As String Dim Dim Dim Dim Dim 'On Dim Dim temp As VBComponent AppAccess As Access.Application Accmodule As Module i As Integer j As Integer Error GoTo fin oAccess As New Access.Application oDb As DAO.Database strSQL = "SELECT ancienne_valeur, nouvelle_valeur from T_CONVERSION_Queries;" Set RS = CurrentDb.OpenRecordset(strSQL) With oAccess .OpenCurrentDatabase (PathBase) Set oDb = .CurrentDb End With

For i = 1 To oAccess.VBE.VBProjects(1).VBComponents.Count For j = 1 To oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.CountOfLines Do Until RS.EOF Debug.Print oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.Lines(j, 1) oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.ReplaceLine j, Replace(oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.Lines(j, 1), RS! ancienne_valeur, RS!nouvelle_valeur) RS.MoveNext

- 378 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Loop RS.MoveFirst Next j Next i RS.Close 'Set CurrentDb = db_encours Set oAccess = Nothing oDb.Close Set oDb = Nothing MajCodeVBA = True Exit Function 'fin: ' MajCodeVBA = False End Function

- 379 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Power Point Comment excuter une prsentation PowerPoint depuis Access ?
Auteurs : Morgan BILLY , Pour excuter une prsentation PowerPoint (PPS) on peut utiliser un objet OLE, l'avantage de ce principe est que la fentre PowerPoint se ferme toute seule la fin de la prsentation. 1 - Crer un cadre d'objet indpendant, dans la fentre qui s'ouvre, slectionner "A partir d'un fichier" 2 - Cliquez sur "Parcourir" afin de slectionner la prsentation. 3 - Dans les proprits du cadre, mettez l'option Visible False. 4 - Pour activer la prsentation, excutez ce code sur l'vnement de votre choix par exemple sur clic d'un bouton
MonCadreIndependant.Action = acOLEActivate

- 380 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Interaction avec d'autres applications > Trucs et Astuces Adresse d'une base Access attaches
Auteurs : 6psyk9 ,
Dim cheminBASE As String Dim fso As FileSystemObject Set fso = New FileSystemObject cheminBASE = fso.GetParentFolderName(Replace(CurrentDb.TableDefs("LITIGE").Connect, ";DATABASE=", "")) & "\"

Pensez rajouter le Microsoft Scripting Runtime dans les Rfrences.

Appeler des procdures d'une autre Base de donnes


Auteurs : Angelico , Il faut passer par Rfrence Bibliothques. Crer une base Access stockant toutes tes procdures, puis via Tools/References (accessible depuis un module), slectionner la base o sont stockes toutes les procdures en passant par Browse.

Ouvrir classeur excel protg depuis access


Auteurs : Bidou ,
Dim MonExcel as Excel.Application, wb As Excel.workbook Set MonExcel = New Excel.Application SetWb = MonExcel.Workbooks.Open(FileName:="C:\User\SAMA\P1.xls", Password:="password")

Comment viter d'ouvrir X instances d'outlook lors de l'envoi de plusieurs mails par le code
Auteurs : norac , Vous devez crer la liste d'envoi avant d'envoyer le mail :
destinataire = "" do while (pas la fin de ma table) if mail = ok destinataire = destinataire + mail + "," end if loop DoCmd.SendObject acSendNoObject, , , , , destinataire

Zipper des fichiers en excutant la fonction shell


Auteurs : ARO , mnssylvain , Voici le code pour le logiciel WinZip
Shell "C:\winzip\winzip32.exe -a C:\MonRep\MonFichier.zip F:\MonRep\MonFichierAZiper"

Voici le code pour le logiciel gratuit 7-zip


- 381 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Shell """C:\Program Files\rep programme\7z.exe"" a -tzip ""C:\rep destination\nomarchive.zip"" ""C: \Program Files\rep programme\compte rendu\*"" -r"

lien : Comment compresser et dcompresser des fichiers ? lien : lien : Zipper un fichier Zipper un rpertoire

Comment vitez de saisir le login et le mot de passe de connexion lorsqu'on travaille sur une table SQL Server ?
Auteurs : Cafeine , Intressez-vous la valeur renvoye par la proprit .Connect de ta table lie. C'est en effet grce cette commande que l'ont peut passer, entre autre, le mot de passe. Pour le voir :

Print CurrentDB.TableDefs("NomDeMaTableLie").Connect

Dans cette exemple les informations s'afficheront dans la fentre d'excution (ctrl+g).

Comment Afficher un document PDF dans un Formulaire ?


Auteurs : Heureux-oli , Pour afficher un document PDF dans un formulaire il suffit d'ajouter un contrle Active X => Adobe PDF Reader dans votre formulaire

- 382 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Contrle Active X ajouter Pour lier le document PDF au contrle il vous faut passer par le VBA :
Me.AcroPDF0.LoadFile ("c:\temp\a.pdf")

O AcroPDF0 nom du contrle Active X et c:\temp\a.pdf le chemin du document PDF.

- 383 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Dbogage et problmes divers Comment mettre un point d'arrt dans mon code ?
Auteurs : Team Access , Un point d'arrt dans le code permet de stopper son excution permettant ainsi de contrler son bon droulement. Pour ajouter un point d'arrt, placez le curseur sur la ligne concerne et appuyez sur la touche F9. Quand l'excution passe sur cette ligne, elle est interrompue. Vous pouvez alors dcider de continuer en mode pas-pas (F8) ou reprendre une excution normale (F5). Lorsque vous fermez VBA, les points d'arrt sont perdus. Pour utiliser des points d'arrt enregistrs avec le code, utilisez l'instruction VBA Stop. Exemple :

Msgbox "A" Stop Msgbox "B"

Qu'est-ce que la fentre de dbogage ?


Auteurs : Team Access , La fentre de dbogage (aussi appele fentre d'excution) permet de consulter le droulement du code VBA. Elle permet par exemple de lancer du code VBA vous donnant ainsi la possibilit de tester le comportement de votre code. Par exemple, la syntaxe Debug.Print variable affiche le contenu de variable. Pour afficher cette fentre, rendez-vous dans VBA, menu Affichage, Fentre Excution. lien : Comment debugger une requte gnre par code ?

Comment debugger une requte gnre par code ?


Auteurs : Team Access , Le dbogage d'une requte code dans VBA passe bien souvent par l'utilisation de debug.print SQLdelarequte. Pour plus de dtails, vous pouvez consulter le tutoriel de cafeine : Initiation - Dbogage : requtes crites par VBA lien : Qu'est-ce que la fentre de dbogage ?

Erreur de compilation: projet ou bibliothque introuvable. Dll manquante.


Auteurs : Team Access , Allez dans un module (page o on crit le code VBA). Dans la barre de menus d'ACCESS cliquez sur Outils puis Rfrences. S'il manque une bibliothque ou une DLL elle sera marque comme tel dans la liste droulante. Il suffit alors de la copier dans le rpertoire "system32" de l'ordinateur et de taper : REGSVR32 C:\WINDOWS \SYSTEM32\maDLL.DLL

- 384 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

ou REGSVR32 C:\WINDOWS\SYSTEM32\monOCX.OCX Le produit est alors enregistr dans la base de registres et reconnu par le systme (sous NT il faut taper WINNT au lieu de WINDOWS)

"Erreur d'excution 94 : utilisation incorrecte de Null" ?


Auteurs : Team Access , Souvent lors de calculs vous avez cette erreur. Il s'agit souvent d'une des variables composant le calcul qui a la valeur Null (par exemple lorsque le calcul contient une zone de texte non remplie). Pour viter ce message et que le calcul ne prenne pas en compte le champ vide en question, il suffit d'utiliser la fonction Nz(). Cette fonction est galement utilisable dans les requtes SQL. Exemple :
MsgBox Nz(ZoneDeTexte) + 1

Erreur de compilation, type dfini par l'utilisateur non dfini (RecordSet, DataBase ...).
Auteurs : Demco , Ce message d'erreur apparat sur :
Dim labase As DAO.Database

Il s'agit probablement du manque d'une dll. Dans le code VBA allez dans le menu "Outils/rfrences" et cochez Microsoft DAO 3.x Object library. lien : Erreur d'excution '13', Incompatiblit de type lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Erreur : fonction ou variable attendue.


Auteurs : Maxence HUBICHE , Il ne faut mettre les '()' que lorsque vous attendez un rsultat utiliser ultrieurement. Ainsi quand vous crivez :
MaFonction(Paramtre1, Paramtre2)

Vous lui demandez de renvoyer une valeur, mais vous ne lui dites pas o mettre ce rsultat. Il est plus correct d'crire :
Result = MaFonction(Paramtre1, Paramtre2)

En effet une fonction renvoit une valeur, il faut donc la stocker quelque part. Ici, le rsultat est stock dans la variable Result.

- 385 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Si vous n'attendez pas de rponse, il suffit de ne pas mettre les parenthses :


MaProcedure txtErreur, txtErreurVar

Ceci fonctionne galement pour les MsgBox().

Message d'erreur :Type de donnes incompatible dans l'expression du critre


Auteurs : Demco , Si vous utilisez un RecordSet et la bibliothque DAO : Dans un module (l o vous tapez le code VBA) faites : Outils/rfrences. Microsoft DAO 3.x Object Library

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Fonction de gestion des messages d'erreur


Auteurs : Frank ,
'Permet d'afficher l'ensemble des erreurs de l'application par ce biais Public Sub SUB_Display_Error(intErrNumber As Integer, strErrDescription As String _ , strErrSource As String, strErrModule As String, strErrFonction As String) On Error GoTo SUB_Display_Error MsgBox "Erreur : " _ & intErrNumber & Chr(13) & " Description : " _ & strErrDescription & Chr(13) & " Source : " & strErrSource & Chr(13) & _ " Module : " & strErrModule & Chr(13) & " Fonction : " & _ strErrFonction, vbCritical Exit Sub SUB_Display_Error: MsgBox "Erreur : " & Err.Number & Chr(13) & "Description : " & Err.Description & Chr(13) & _ "Source : " & Err.Source & Chr(13) & _ "Module : General_Module Dmarrage" & Chr(13) & _ "Fonction : Public Sub SUB_Display_Error(intErrNumber As " & _ "Integer, strErrDescription As String, strErrSource As String, " & _ "strErrModule As String, strErrFonction As String)", vbCritical End Sub

J'obtiens le message d'erreur "Fonction "" non dfinie dans l'expression"


Auteurs : Maxence HUBICHE , Ceci peut tre provoqu par un pb de rfrence, par exemple lors de l'utilisation d'un autre pc alors que tout fonctionne bien sur le poste d'origine. Allez dans un module. Allez dans Outils/Rfrences Dcochez les rfrences marques MANQUANT (s'il y en a).

- 386 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Recochez les rfrences que vous devririez avoir (si vous en avez dcoch). Dcochez au minimum une rfrence et validez la bote de rfrences, avant d'aller la recocher...

Cette manipulation a rsolu le problme.

Comment afficher la liste des proprits d'un objet dans l'diteur VBA au cours de la frappe (aprs un .) ?
Auteurs : Petogaz , Ceci est une option normalement active par dfaut. Pour l'activer, si elle ne fonctionne pas, allez dans VBA, puis dans le menu Outis, Option, cocher la case Complment automatique des instructions.

Comment obliger ma progressBar se rafrachir


Auteurs : FRED.G , Souvent la ProgressBar fonctionne trs bien du moment que le traitement n'est pas trop gros. Si ca dpasse un certain temps, le curseur de la souris se change en sablier et la fentre ne se met plus jour et la progressbar non plus. Un simple DoEvent dans le code avant Mise jour de la progressbar arrangera cel.

"Vous avez crit une sous-requte pouvant renvoyer plus d'un champ sans utiliser le mot rserv EXISTS dans la clause FROM de la requte principale."
Auteurs : Demco , Ce message d'erreur peut d'afficher lorsque vous travaillez avec des requtes imbriques. La rgle est que la requte sous-imbrique ne doit slectionner qu'un seul champ (celui sur lequel s'applique la condition).

L'diteur VBA ignore mes points d'arrts pendant l'excution de mon code
Auteurs : ARO , Vrifier que les touches spciales d'accs sont disponibles. Pour cela : Menu Outils/Dmarrage, la case utiliser les touches spciales d'accs doit tre coche.

Comment afficher la fentre "Debug" en VBA ?


Auteurs : =JBO= , Vous pouvez utiliser la mthode suivante :

- 387 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

DoCmd.RunCommand acCmdDebugWindow

Comment accder une classe d'une autre base ?


Auteurs : =JBO= , Pour rfrencer les objets d'une autre base (base A) dans une base B, il faut lui tablir une rfrence. Dans VBA (menu Outils / Rfrences). Une fois la rfrence tablie, vous verrez que vous avez accs tous les modules normaux mais pas aux modules de classes. Pour rsoudre ce problme vous devez : 1. modifier la porte de la classe pour la rendre publique. Dans l'IDE VBA, slectionnez la classe et dans la fentre des proprits, modifiez la proprit [Instancing] avec la valeur [2. PublicNotCreatable] Access permet de choisir entre les portes [Private] Ou [Public not creatable]. [Public not creatable] signifie que les instances de la classe peuvent tre utilises par n'importe quelle application Access qui rfrence la base A, avec une grosse limitation: seul le code contenu dans la base A est autoris instancier la classe (en clair, l'instruction New clsTest n'est pas valide en-dehors de la base A). 2. Etant donn que la classe n'est pas instanciable ailleurs que depuis A, il faut crer une mthode publique dans un module (pas un module de classe) qui instanciera l'objet et retournera une rfrence vers celui-ci. C'est cette mthode qui sera appele dans B. Dans A :

Public Function NewTitre() As clsTitre Set NewTitre = New clsTitre End Function

Dans B :

Function test() Dim oTitre As clsTitre Set oTitre = Newtitre() End Function

lien :

Introduction la POO illustre par VB6

Pourquoi l'diteur VBA est lent et signale des erreurs inexistantes lors de la saisie du code ?
Auteurs : =JBO= , Du code VBA est en cours d'excution. Ceci peut arriver quand une procdure vnementielle est excute, suite au dclenchement de l'vnement Timer d'un formulaire, ou encore s'il y un appel une procdure de l'application Access via OLE automation.

- 388 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans l'environnement de dveloppement Visual Basic (IDE) la barre de titre affiche [Excution en cours] pour signaler que du code est en cours d'excution.

- 389 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Macros Pourquoi ne devrais-je pas utiliser les macros ?
Auteurs : Team Access , Les macros conviennent pour des actions basiques. Insertion d'enregistrements, suppression, ouverture de formulaire, etc. Leur utilisation devient vite limite du fait qu'il n'est pas possible d'effectuer de test ni de boucle. De plus, contrairement VBA, elles ne permettent pas d'utiliser des composants externes (rfrences) pourtant bien pratique pour interragir avec d'autres applications Office. La seule macro recommande est la macro nomme AutoExec qui lance une action au dmarrage de la base de donnes. D'ailleurs, bien souvent cette action sera d'excuter une fonction VBA.

Comment lancer une macro partir d'un module de code ?


Auteurs : Team Access ,
DoCmd.RunMacro "MacroName"

Il est clair qu'il vaut mieux convertir une macro en VBA que d'utiliser cette mthode.

Comment voir le code VBA correspondant l'action une macro


Auteurs : Demco , Il faut faire : Outils / Macro / Convertir les macros en Visual Basic

Comment obtenir la liste des macros par le code ?


Auteurs : Faw ,
Public Sub MacroEditor() Dim Mcr As AccessObject 'on parcourt l'ensemble des macros de l'application For Each Mcr In CurrentProject.AllMacros MsgBox Mcr.Name 'on affiche le nom de la macro Next Mcr End Sub

Abaisser le niveau de scurit du Runtime pour masquer les messages d'avertissement sur les macros.
Auteurs : Tofalu , Installer le service pack 8 du moteur Jet (disponible sur le site Microsoft) Puis dans la base des registres :

- 390 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sous la cl : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines], crer ou modifier la valeur DWord nomme SandBoxMode avec la valeur 2 Sous la cl : [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security], crer ou modifier la valeur DWord nomme Level avec la valeur 1

- 391 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > SQL et VBA Comment excuter/utiliser du SQL dans VBA ?
Auteurs : Demco , Voici deux liens. Le premier vous amnera aux RecordSet, qui servent exploiter les requtes de slection (SELECT). Le second vous expliquera comment excuter des requtes d'action (INSERT [insertion], UPDATE [mise jour], ...). lien : Crer un jeu de donnes (recordset) lien : Excuter une requte action (ajout, suppression ou mise jour)

Crer un jeu de donnes (recordset)


Auteurs : Team Access , DAO
Sub DAOOpenRecordset () Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field Dim sSQL As String ' Ouverture de la base de donnes Set db = DBEngine.OpenDatabase (".\Comptoir.mdb") sSQL = "Select * From CLIENTS Where Rgion= \'WA\'" ' Ouverture du recordset Set rst = db.OpenRecordset (sSQL, dbOpenForwardOnly, dbReadOnly) ' Fermeture du Recordset rst.Close End Sub

Notes : -> Il est important d'crire "DAO." lors de la dclaration. -> Pensez galement cocher la rfrence Microsoft DAO 3.6 Object Library ( Dans un module faites Outils / rfrences ) ADO
Sub ADOOpenRecordset () Dim cnn As New ADODB.connection, rst As New ADODB.Recordset, fld As ADODB.Field ' Ouverture de la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=.\Comptoir.mdb;" ' Ouverture du Recordset en dfilement en avant, et en lecture seule rst.Open "SELECT * FROM Clients WHERE Rgion =\'WA\'", cnn, adOpenForwardOnly, adLockReadOnly ' Fermeture du Recordset rst.Close End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Parcourir un recordset
Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

- 392 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ces exemples permettent de parcourir un Recordset


If Not oRecordset.EOF Then Rst.MoveFirst While Not rst.Eof ' code rst.MoveNext Wend else Msgbox "Le jeu d'enregistrements est vide" End if

Ou
Do Until rst.Eof ' code rst.MoveNext Loop

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Erreur d'excution '13', Incompatiblit de type


Auteurs : Demco , FRED.G , Modifiez la dclaration du recordset :
Dim Rst as DAO.RecordSet

Nous rajoutons le DAO devant RecordSet afin d'viter les conflits entre bibliothques ayant certains objets portant le mme nom. En effet ici, les bibliothques DAO et ADODB possdent chacune un objet nomm "RecordSet". Ainsi, en crivant DAO.RecorsSet nous savons quelle bibliothque nous faisons appel. Lorsque la librairie n'est pas prcise, le type choisi par dfaut correspond celui de la premire librairie compatible rfrence dans le projet VBA (en partant du haut). Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library lien : Erreur de compilation, type dfini par l'utilisateur non dfini (RecordSet, DataBase ...). lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Je n'arrive pas utiliser les mthodes FindFirst/FindLast/FindNext/ FindPrevious ou la mthode Seek ou la mthode Find avec mon recordset.
Auteurs : FRED.G , Pour un DAO.Recordset : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library - Si le recordset est de type Table (dbOpenTable) : utilisez la mthode Seek. La mhode Seek requiert l'utilisation d'une table indexe (voir l'aide pour plus de d'infos).
- 393 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Lorsque vous utilisez la mthode OpenRecordset, si vous ne prcisez pas l'argument type, vba crera par dfaut un recordset de type Table si celui-ci est bas sur une table. - Pour les autres types de recordset : utilisez les mthodes FindFirst / FindLast / FindNext / FindPrevious. Pour un ADODB.Recordset : Pour excuter ce code il faut activer les rfrences : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library utilisez la mthode Find

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment supprimer des enregistrements lorsque l'intgrit rfrentielle est active ?


Auteurs : Team Access , On ne peut effacer la cl primaire sans effacer les cls trangres correspondantes : L'intgrit rfrentielle est un mcanisme de vrification qui s'assure chaque ajout, modification, suppression d'une cl (trangre ou primaire) qu'il y aura toujours la cl primaire correspondant la cl trangre. Cependant il est parfaitement possible de supprimer des cls trangres.

Je n'arrive pas supprimer ma table ?


Auteurs : Drosera , Vous essayez de supprimer une table sans succs en utilisant une requte de type "DROP TABLE" ou en utilisant la commande DeleteObject ? Cela provient certainement d'un RecordSet charg avec les donnes de la table. Cette dernire est alors considre comme "verrouille" et donc impossible supprimer. Il suffit de fermer le RecordSet pour dverrouiller la table :
MonRecordSet.Close

Cette ligne doit bien sr tre place avant la suppression.

Comment effacer toutes les donnes de la base ?


Auteurs : Team Access , Voici comment effacer le contenu d'une table :
dim SQL as string SQL = "Delete * From TABLE" Docmd.RunSQL SQL

Il suffit de ritrer l'action pour chaque table.

- 394 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On peut aussi imaginer rcuprer le nom de toutes les tables dans un tableau, et pour chaque table excuter la suppression. lien : Comment effacer tout le contenu d'une table ?

Excuter une requte action (ajout, suppression ou mise jour)


Auteurs : Team Access , DAO Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Sub DAOExecuteBulkOpQuery() Dim db As DAO.Database Set db = DBEngine.OpenDatabase (".\Comptoir.mdb") ' Excution de la requte db.Execute "Update CLIENTS Set PAYS = \'tats-Unis\' Where PAYS = \'USA\'" Debug.Print "Records Affected = " & db.RecordsAffected db.Close End Sub

ADO Pour excuter ce code il faut activer les rfrences : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library
Sub ADOExecuteBulkOpQuery() Dim cnn As New ADODB.connection, iAffected As Integer Dim sSQL As String cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=.\Comptoir.mdb;" sSQL = "Update CLIENTS Set PAYS = \'tats-Unis\' Where PAYS = \'USA\'" ' Excution de la requte cnn.Execute sSQL, iAffected, adExecuteNoRecords Debug.Print "Records Affected = " & iAffected cnn.Close End Sub

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment supprimer les messages d'alertes ?


Auteurs : Team Access , En VBA, placez ce code avant la requte d'insertion/de modification :
DoCmd.SetWarnings False

Macro : Avertissements=Non Pensez rajouter la confirmation aprs la requte :


DoCmd.SetWarnings True

- 395 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Macro : Avertissements=Oui lien : Comment supprimer l'apparition des message d'avertissement pour toute l'application ?

Les messages d'avertissement n'apparaissent pas lorsque j'excute mes requtes action en vba.
Auteurs : FRED.G , Tout d'abord, vrifiez que l'option d'avertissement n'est pas dselectionne dans access : Menu Outils, Options, Modifier/Rechercher, Confirmer => Requte Action = Oui Ensuite, si vous utilisez la mthode Docmd.SetWarnings, assurez-vous que le dernier appel avant l'excution de votre requte active les messages. Enfin vous devez utiliser la mthode Docmd.RunSql car la mthode Execute d'un objet Database ne dclenche jamais les messages d'avertissement access.
Docmd.SetWarnings True Docmd.RunSql ""Update MATABLE Set MATABLE.[MONCHAMP] = ""DVP.COM"";"

Comment insrer dans une table une chane de caractres contenant des quotes (apostrophes) ?
Auteurs : Team Access , Il faut faire ceci :
Dim val As String val = "l\'exemple" CurrentDb.Execute "Insert Into TEST Values(""" & val & """)"

Comment tester l'existence d'une requte en VBA et la supprimer ?


Auteurs : Tofalu , Voici une solution : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Sub supp() 'Pour fonctionner ce code ncessite la rfrence ' - Microsoft DAO X Object Library Dim oDb As DAO.Database Dim oQdf As DAO.QueryDef Dim strReqName As String 'Nom de la requte supprimer

'Accde la base de donnes courante Set oDb = CurrentDb strReqName = "R1" 'Parcours toutes les requtes jusqu' la suppression For Each oQdf In oDb.QueryDefs With oQdf

- 396 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If .Name = strReqName Then ' Une requte porte le nom recherch, donc nous la supprimons oDb.QueryDefs.Delete strReqName 'Quitte la boucle Exit For End If End With Next oQdf End Sub

Le mme code avec une gestion d'erreur :


Sub supp() 'Pour fonctionner ce code ncessite la rfrence ' - Microsoft DAO X Object Library 'Gestion d'erreur On Error GoTo err

Dim oDb As DAO.Database Dim oQdf As DAO.QueryDef Dim strReqName As String 'Nom de la requte supprimer

'Accde la base de donnes courante Set oDb = CurrentDb strReqName = "R2" 'Tente la suppression oDb.QueryDefs.Delete strReqName 'Affiche un message MsgBox "La requte " & strReqName & " a t supprime"

fin: 'Libre l'objet oDb Set oDb = Nothing Exit Sub err: 'Affiche un message suivant l'erreur Select Case err.Number Case 3265: MsgBox "La requte n'existe pas" Case Else: MsgBox "Erreur critique inconnue" End Select 'Termine le programme Resume fin End Sub

lien : lien : lien : lien :

Comment savoir si une table existe ? Comment supprimer une table si elle existe ? Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Ma requte ne fonctionne pas suivant le type des variables qu'elle utilise ?


Auteurs : Maxence HUBICHE , Il faut utiliser des marqueurs diffrents suivant le type de valeur utilis :

- 397 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Numrique (aucun dlimiteur)


SQL & "And roulage!numro = " & Me.cmbRechNumero

Texte ( Chr(34) cre des ")


SQL = SQL & "And roulage!repre = "& chr(34) & Me.cmbRechRepere & chr(34)

Date (Dlimiteur # et format mm/dd/yyyy)


SQL & "And roulage!LADATE= #" & format(Me.txtRechDateDebut,"mm/dd/yyyy") & "#"

Comment insrer des enregistrements de la table1 dans la table2, puis effacer ces enregistrements de la table1
Auteurs : Maxence HUBICHE , Test sous Access 2000 :
Sub Sauvegarder() 'Cration des 2 recordsets Dim myRS1 As New ADODB.Recordset Dim myRS2 As New ADODB.Recordset myRS1.Open "Table1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic myRS2.Open "Table2", CurrentProject.Connection, adOpenDynamic, adLockOptimistic 'Parcours du RS pour ajouter table1 tout en supprimant de table2 Do Until myRS2.EOF With myRS1 .AddNew Array("Champ1", "Champ2", "Champ3"), _ Array(myRS2("Alpha"), myRS2("Beta"), myRS2("Gamma")) .Update End With myRS2.Delete myRS2.MoveNext Loop 'Fermeture des recordsets myRS1.Close myRS2.Close Set myRS1 = Nothing Set myRS2 = Nothing End Sub

Comment faire une requte qui recherche les doublons dans une table ?
Auteurs : Cafeine ,
Select TABLE.CHAMP1, Sum(TABLE.CHAMP2) AS CHAMP2 Into NOUVELLETABLE From TABLE Group By TABLE.CHAMP1, Order By TABLE.CHAMP1,

- 398 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

O Champs1 est le champ comportant les doublons supprimer.

Comment se connecter en ADO une bdd pour excuter une requte action
Auteurs : Maxence HUBICHE ,
Dim cn as ADODB.Connection Dim cmd as ADODB.Command Dim insQuery as String Set cn = New ADODB.Connection Set cmd = New ADODB.Command cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=D:\CS527\P1\bd1_archive.mdb;Persist Security Info=False;" & _ "Jet OLEDB:System database=c:\LePath\LeFichier.mdw" insQuery = "INSERT INTO purchasearchive VALUES (" & Chr(34) _ & PUID & Chr(34) & "," & Chr(34) _ & cardNum & Chr(34) & "," & Chr(34) _ & cardType & Chr(34) & "," & Chr(34) _ & productID & Chr(34) & ",#" _ & date & "#," _ & number & ");" cn.Open cmd.ActiveConnection=cn cmd.CommandText=insQuery cmd.Execute

Pour se connecter une bbs scurise au niveau utilisateur : dans la chane de connexion, ajoute ceci :
Password=LeMotDePasse;User ID=LeUser

en mettant le bon mot de passe et le bon User

Est-il plus performant de faire appel une requte enregistre (OpenQuery) ou bien de l'crire dans le code (VBA) et l'excuter avec DoCmd.RunSql
Auteurs : Maxence HUBICHE , Si la requte utilise des critres bass sur des champs indexs, alors mieux vaut passer par une requete et OpenQuery. Docmd.Runsql ne fait qu'excuter une instruction sql tandis que OpenQuery excute une requte enregistre (bnficiant de la technologie Rushmore). Cette technologie est notamment base sur l'usage des index pour la recherche d'un enregistrement. Ces index sont stocks dans une structure cache. Lorsque la requte s'excute, si les critres sont poss sur des champs indexs, la requte peut tre optimise car la recherche se fait sur la structure des index et non directement sur la table.

Est-il possible de crer une requte paramtre dont la valeur du paramtre proviendrait d'une variable ?
Auteurs : Lucifer , Nous avons une requte du type :
Parameters TON_PARAM Text;

- 399 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Insert Into TABLE1 Select

CHAMP1 From TABLE2 Where CHAMP2 = [TON_PARAM];

Voici un exemple de code :


Set qdf= CurrentDb.QueryDefs("TAREQUETE") With qdf .Parameters("TON_PARAM") = TaVariable .Execute End With

Comment dfinir en vba le SQL d'une requte existante ?


Auteurs : Team Access , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Dim qdf Set qdf qdf.SQL Set qdf As DAO.Querydef = Currentdb.Querydefs!NomDeMaRequte = "Select * From MaTABLE" = Nothing

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment personnaliser le message d'erreur d'Access lors de doublons


Auteurs : Team Access , Par exemple ici, on tente d'enregistrer dans une table un nom qui existe dj. Or le champ Nom n'accepte pas les doublons.
Sub Form_Error(DataErr As Integer, Response As Integer) ' Si l'erreur est due un doublon, la fonction affiche un message permettant d'annuler une commande. Const ERR_DOUBLON = 3022 ' erreur de doublon ' DataErr reoit le code erreur de la part du moteur de la bdd ou de l'interface Select Case DataErr Case ERR_DOUBLON 'Votre message... MsgBox "Ce nom existe dj.", vbExclamation, "Attention" 'La zone a surveiller [Client].SetFocus 'Demande Access de continuer l'excution sans afficher le message standard Response = acDataErrContinue End Select End Sub

lien : Comment personnaliser les messages d'erreur ?

Comment chercher les enregistrements contenant une certaine chane ? (LIKE)


Auteurs : Petogaz ,
requete = "Select * From carnet Where Prnom Like \'*" & prenom & "*\'"

- 400 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans ce cas, prnom est une variable ou un contrle contenant la chane que nous cherchons.

Pour insrer des donnes, vaut-il mieux passer par un RecordSet ou par une requte de type INSERT ?
Auteurs : Cafeine , L'utilisation d'un Recordset rend le traitement plus rapide. Ce code de Cafine vous permettra de constatez vous mme la diffrence. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library

Function BenchmarkIt() Dim t0 As Single, t1 As Single Dim rst As DAO.Recordset Dim i As Long t0 = Timer For i = 1 To 5000 CurrentDb.Execute "INSERT INTO [tblINSERT] VALUES (" & Format(i, "000000") & ");" Next i t1 = Timer Debug.Print "Excution par INSERT : " & Format(t1 - t0, "0.000") & " s" t0 = Timer Set rst = CurrentDb.OpenRecordset("tblRecordset") For i = 1 To 5000 rst.AddNew rst!dum = Format(i, "000000") rst.Update Next i rst.Close set rst = Nothing t1 = Timer Debug.Print "Excution par RECORDSET : " & Format(t1 - t0, "0.000") & " s" End Function

Ce code donne : benchmarkit Excution par INSERT : 5,328 s Excution par RECORDSET : 0,141 s Il est possible que la diffrence soit due au fait que le recordset travaille avec la mmoire avant d'crire sur le disque, alors que n requtes provoquent n accs disque.

lien : lien :

Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?

Comment supprimer l'apparition des message d'avertissement pour toute l'application ?


Auteurs : loufab , Outils/Options, Modifier/Rechercher

- 401 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dans le cadre Confirmer dcochez ce que bon vous semble. lien : Comment supprimer les messages d'alertes ?

Comment rcuprer le rsultat de ma requte en VBA ?


Auteurs : Demco , Vous trouverez ci-dessous un lien vous indiquant o se trouve la rponse votre question. Intressez-vous plus particulirement au RecordSet. lien : Comment excuter/utiliser du SQL dans VBA ?

- 402 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Utilisateurs Comment connatre le nom de l'utilisateur connect ?
Auteurs : Team Access , La proprit CurrentUser de l'objet Access.Application retourne le nom de l'utilisateur de la base de donnes. Exemple :

Msgbox Application.CurrentUser

lien : Gestion de la scurit - Niveau utilisateur lien : Comment connatre le nom de l'utilisateur courant ? lien : Rcuprer le nom d'un utilisateur Novel

Comment connatre le nom de l'utilisateur courant ?


Auteurs : Cafeine ,
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Function fOSUserName() As String ' Retourne le nom d'usager fourni lors du branchement au rseau. Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If lngX <> 0 Then fOSUserName = left$(strUserName, lngLen - 1) Else fOSUserName = "" End If End Function

lien : Comment obtenir le nom de l'utilisateur de Windows ? lien : Comment connatre le nom de l'utilisateur connect ? lien : Rcuprer le nom d'un utilisateur Novel

Comment obtenir le nom de l'utilisateur de Windows ?


Auteurs : Maxence HUBICHE ,
Environ("UserName")

lien : Comment connatre le nom de l'utilisateur courant ? lien : Rcuprer le nom d'un utilisateur Novel

Comment utiliser une variable Type utilisateur ?


Auteurs : Drosera , On dfnit le type :

Type Patient

- 403 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dtmdrc As Date

'date cration

strIPP As String 'numro d'IPP strNom As String 'Nom strNjf As String 'Nom de jeune fille strPre As String 'Prnom dtmDdn As Date 'Date de naissance

strGro As String 'Groupe sanguin strRhe As String 'Rhsus strAdr As String 'Adresse strCpo As String 'Code postal strVil As String 'Ville strTel As String 'Tlphone lngCjt As Long End Type 'numro de conjoint attach la fiche adminstrative

dans le code on dclare la variable :


Dim udtPatient As Patient

et on utilise :
udtPatient.dtmdrc = #12/10/1968# udtPatient.strIPP = "021584" udtPatient.strNom = "LA GAFFE" udtPatient.strNjf = "" udtPatient.strPre = "Gaston"

Comment savoir si la personne connecte est administrateur ou non ?


Auteurs : Drosera , Pour faire a il faut faire appel au groupe Administrateur en tant que groupe d'appartenance de l'utilisateur par :
DBEngine.Workspaces(0).Users(strUser).Groups("admins").Name

Si pas d'erreur l'utilisateur appartient au groupe administrateur. Si Err.Number = 3265 lment non trouv dans cette collection, l'utilisateur n'est pas administrateur. Exemple :
Dim esp As Workspace Dim strUser As String

- 404 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

On Error Resume Next strUser = Application.CurrentUser Set esp = DBEngine.Workspaces(0) 'L'instruction suivante provoque ou non une erreur strUser = esp.Users(strUser).Groups("admins").Name If Err.Number = 3265 Then 'lment non trouv dans cette collection, l'utilisateur n'est pas administrateur ElseIf Err.Number > 0 Then 'autre erreur ElseIf Err.Number = 0 Then 'l'utilisateur appartient au groupe 'administrateur' End If

Rcuprer le nom d'un utilisateur Novel


Auteurs : argyronet , Normalement, un UserName sous Novell est logg avec son nom de Login Windows... Il faut donc utiliser l'api GetUserName :
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Private Function fGetUserName() As String Dim strUserName As String strUserName = String(100, vbNullChar) GetUserName strUserName, 100 strUserName = Left$(strUserName, InStr(strUserName, vbNullChar) - 1) fGetUserName = strUserName End Function

lien : Comment connatre le nom de l'utilisateur connect ?

Permettre l'utilisateur de changer son mot de passe


Auteurs : Tofalu , Lou Pitchoun , Utilisez le code VBA suivant :

With DBEngine.Workspaces(0) .Users(.UserName).NewPassword "ancienmotdepasse", "nouveaumotdepasse" End With

Voici un exemple complet d'utilisation dans un Formulaire : Composition du Formulaire : 4 zones de textes indpendantes : une pour rcuprer l'utilisateur courant, 1 pour l'ancien mdp et 2 pour le nouveau mdp (choix+confirmation). 2 boutons : 1 valider et un annuler.
Private Sub CmdAnnuler_Click() On Error GoTo err DoCmd.Close err: - 405 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Select Case err Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub Private Sub CmdValider_Click() On Error GoTo err If Me.OldPwd = Me.NewPwd Then MsgBox "Le nouveau mot de passe est identique l'ancien." & vbLf & _ "Veuillez choisir un autre mot de passe.", vbOKOnly + vbExclamation, "Nouveau mot de passe invalide" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl Me.NewPwd Else If Me.NewPwd <> Me.ConfNewPwd Then MsgBox "Le mot de passe entr en confirmation" & vbLf & _ "ne correspond pas au nouveau mot de passe.", vbOKOnly + vbExclamation, "Erreur de confirmation" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl Me.NewPwd Else With DBEngine.Workspaces(0) .Users(.UserName).NewPassword Me.OldPwd, Me.NewPwd End With MsgBox "Le mot de passe a t chang.", vbOKOnly + vbInformation, "Confirmation" DoCmd.Close End If End If err: Select Case err Case 3033

MsgBox "L'ancien mot de passe saisi n'est pas valide.", vbOKOnly + vbExclamation, "Ancien mot de passe incorre Me.OldPwd = "" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl ("OldPwd") Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub Private Sub Form_Load() On Error GoTo err Me.UtilCourant = "Utilisateur courant : " & DBEngine.Workspaces(0).UserName err: Select Case err Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub

Voici ce que cela donne

- 406 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

- 407 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Rfrences Comment lister les rfrences d'une base ou en ajouter ?
Auteurs : Cafeine , _ Lister les rfrences :
Function GetReferences() Dim Ref As Reference For Each Ref In Application.References Debug.Print "Rfrence : " & Ref.name & " - Version : " & Ref.Major & "." _ & Ref.Minor & " - FullPath : " & Ref.FullPath Next Ref End Function

_ Ajouter une rfrence : Pour ajouter une rfrence, utiliser la mthode AddFromFile de l'objet References.
References.AddFromFile("C:\Program Files\Common Files\System\ado\msado21.tlb ")

lien : Comment dclarer une rfrence dans MS-Access ?

Comment dclarer une rfrence dans MS-Access ?


Auteurs : Team Access , Dans l'diteur Visual Basic, cliquez sur le menu Outils puis Rfrences, choississez ensuite la rfrence que vous voulez ajouter et validez. Lorsque du code est en cours d'excution ou de debogage, cette fonction n'est pas disponible. Vous tes alors obligs d'arrter le traitement (bouton Stop). lien : Comment lister les rfrences d'une base ou en ajouter ?

Comment rfrencer dynamiquement un activex, sans avoir besoin de faire : Menu Outils -> activeX controls ->Register etc. ?
Auteurs : shwin , Il est possible d'inscrire un fichier.ocx dans la base de registre par le code en utilisant la fonction Shell + regsvr32 / s lefichier.ocx

- 408 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Divers Comment crer un raccourci ?


Auteurs : Team Access , Ajoutez la rfrence Windows Script Host Object Model (wshom.ocx) votre projet.

Dim strCheminRaccourci As String Dim oWsh As New WshShell Dim oRac As WshShortcut 'Rcupre le chemin du bureau et le concatne avec le nom du raccourci strCheminRaccourci = oWsh.SpecialFolders("Desktop") & "\Fichier.lnk" 'Cre un nouveau raccourci Set oRac = oWsh.CreateShortcut(strCheminRaccourci) 'Paramtre le raccourci With oRac 'Cible .TargetPath = Chr(34) & "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" & Chr(34) 'Argument .Arguments = "D:\mabase.mdb /wrkgrp d:\system.mdw" 'Style de fentre .WindowStyle = 4 'Chemin vers l'icne .IconLocation = "d:\monicone.ico" 'Dossier de travail .WorkingDirectory = "D:\" 'Enregistre le raccourci .Save End With 'Libre les objets Set oRac = Nothing Set oWsh = Nothing

lien : Comment dclarer une rfrence dans MS-Access ?

Comment excuter des commandes Dos ?


Auteurs : Team Access , FAQ VB

Comment envoyer un mail (courriel) contenant des sauts de ligne ?


Auteurs : Team Access ,
Sub tesjdn() Dim textemsg As String textemsg = "coucou" & "<br>" & "TEST3" DoCmd.SendObject , , acFormatTXT, "toto@aol.com", , , "titre", textemsg, True End Sub

- 409 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

La balise HTML BR sert revenir la ligne. Donc utilisez des balises html et vous ferez ce que bon vous semble :)

Comment utiliser l'objet Microsoft Progress Bar ?


Auteurs : Team Access , Cette objet peut tre utilis par exemple lors de l'excution d'un long processus, l'utilisateur verra un tat d'avancement (progression) et cela le rassurera dans son attente.
mabarre.min = 0 mabarre.max = 100 i=1 While i <= 100 mabarre.value = i i=i+1 Wend

Ainsi la barre s'incrmente de 1 chaque passage. Donc par exemple, si vous importez des donnes, il est bon de s'informer sur le nombre d'enregistrements importer. Ainsi, le maximum de la barre sera le nombre total d'enregistrements. Et chaque enregistrement import on incrmente la valeur de la barre. (Astuce de Thogal ;) ). lien : Comment avoir un indicateur de progression d'un traitement quelconque ?

Comment avoir un indicateur de progression d'un traitement quelconque ?


Auteurs : Morsi , Il est possible d'utiliser le contrle MS Progress Bar dans Access. Sinon la mthode Application.Syscmd permet galement d'afficher du texte et/ou une jauge d'avancement dans la barre d'tat :
Syscmd acSysCmdInitMeter,"Text afficher", 100 'Dfinit le texte afficher et la valeur maximale de la jauge. Syscmd acSysCmdUpdateMeter, 50 'Dfinit le texte afficher et la valeur actuelle de la jauge. Syscmd acSysCmdRemoveMeter 'Supprime la jauge d'avancement

lien : Comment utiliser l'objet Microsoft Progress Bar ?

Comment supprimer les Objets d'une base de donnes Externe


Auteurs : Team Access ,
Function DeleteObjectExterne() Dim acApp As Access.Application Set acApp = GetObject("toto.mbd") acApp.DoCmd.DeleteObject acForm, "nom_form" acApp.Quit Set acApp = Nothing

- 410 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End Function

Composer un numro de tlphone depuis Access


Auteurs : Papy Turbo , - activez les assistants, - ajoutez un bouton de commande sur un formulaire, - choisir Divers -> Numrotation Automatique, - choisir une image, - Terminer. Le bouton et son code _Click() : - dtectent le texte de la zone de texte active, - appellent le numro, s'il y en a un valide, - affiche une bote de dialogue qui vous dit de dcrocher ds que le rpondant dcroche : vous entendez la ligne dans le haut parleur du PC, - il est facile d'amliorer et d'adapter ce code vos besoins... Ensuite, faut juste avoir un tlphone, sur la mme ligne que le modem.

Comment simuler la fonction annuler (fleche bleue) de access


Auteurs : Frank ,
Me.Undo

lien : Comment fermer un formulaire sans sauvegarder l'enregistrement en cours ?

Comment renommer un objet en VBA ?


Auteurs : Drosera , Utilisez la commande
DoCmd.Rename

[*.MDE] Comment, depuis la base en cours, faire rfrence la Base MDE contenant le Code qui s'excute
Auteurs : Maxence HUBICHE , Imaginons une base Access MDA (Microsoft Add-In) dans laquelle on trouve un module VBA et une table. Si dans une procdure du module on souhaite ouvrir un recordset sur la table, il faut remplacer CurrentDB par CodeDB :
Set rs = CodeDB.Openrecordset()

En effet, lorsque la procdure du module de la base MDA sera appele depuis une base MDB ou MDE classique, Access cherchera la table dans la base de donnes active (MDB ou MDE) et la procdure chouera puisqu'il fallait chercher

- 411 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

dans la base MDA... CurrentDB fait rfrence la base de donnes Active, CodeDB fait rfrence la BDD contenant le Code qui s'excute.

Comment annuler ou redfinir l'effet d'une touche ou d'une combinaison de touches ?


Auteurs : FRED.G , Vous pouvez dfinir et utiliser une macro AUTOKEYS. Celle-ci sera active sur la totalit de votre application. Si vous souhaitez contrler par du vba, formulaire par formulaire l'effet de certaines touches, dfinissez Oui la proprit KeyPreview (AperuTouches) des formulaires concerns, puis utilisez l'vnement KeyDown (Touche appuye). Pour les dtails concernant le fonctionnement de ces diffrentes mthodes, consultez l'aide Access. Pour un exemple d'utilisation du KeyDown dans un formulaire, rfrez vous au lien ci-dessous. lien : Excuter une procdure en appuyant sur les touches F1, F2, etc.

Comment savoir si l'on est connect internet ?


Auteurs : nightfall , La fonction ConnexionInternetActive() ci-dessous renvoie Vrai si l'on est connect internet.
Private Declare Function InternetGetConnectedState Lib "wininet.dll" _ (ByRef lpdwFlags As Long, _ ByVal dwReserved As Long) As Long Public Function ConnexionInternetActive() As Boolean ConnexionInternetActive = InternetGetConnectedState(0&, 0&) End Function

lien : FAQ VB

Connaitre l'adresse d'une base de donne


Auteurs : Team Access ,
CurrentDb.Name

ou
Application.CurrentProject.Path

Comment savoir si un objet est cach


Auteurs : =JBO= , Depuis Access 2000, l'objet Application offre 2 mthodes: >> GetHiddenAttribute >> SetHiddenAttribute. Elles permettent de consulter ou de modifier l'attribut "masqu" normalement accessible dans la fentre des [Proprits] de n'importe quel objet d'application Access :
- 412 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Table, Query, Form, Report, Macro, Module... Exemple pour dterminer si la requte [Ma Requte] est masque:

Dim bMasqu as Boolean bMasqu = Application.GetHiddenAttribute(acQuery,"Ma Requte")

Comment rcuprer l'quation de tendance d'un graphique access ?


Auteurs : MasterOfChakhaL , DatDebut sert donner la borne infrieure pour l'analyse des dates (il n'y a pas de borne suprieure car selon moi ca ne sert rien de faire des calculs de tendance sur les mois passs Exclamation ). X est la valeur des abscisses pour laquelle on veut l'extrapolation. Voici un exemple de code, mais il faut que vous adaptiez la requte pour que ca marche avec vos tables bien sr. Veillez galement ce que la rfrence ADO soit coche. (fentre VBA Outils>Rfrence Microsoft ADO...)

Option Compare Database Type ParamTendance Pente As Double OrdonneeZero As Double End Type Public Function CalculTendance(DatDebut As Date, X As Double) As Double

Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim

Rst As New ADODB.Recordset MaRequete As String NbDonnee As Integer DonneeCumul() As Double i As Integer SumX As Double SumX2 As Double SumChiffre As Double SumChiffreX As Double Type_Param As ParamTendance

MaRequete = "SELECT T.DateJour, T.ChiffreDAffaire AS Chiffre" & vbNewLine & _ "FROM T_ChiffreDAffaire T" & vbNewLine & _ "WHERE T.DateJour>=#" & DatDebut & "#" & vbNewLine & _ "ORDER BY T.DateJour;" Rst.Open MaRequete, CurrentProject.Connection, adOpenStatic NbDonnee = Rst.RecordCount If NbDonnee = 0 Then MsgBox "Pas de donnes" CalculTendance = 0 Exit Function End If Rst.Close ReDim DonneeCumul(1 To NbDonnee)

- 413 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Rst.Open MaRequete, CurrentProject.Connection, adOpenDynamic Rst.MoveFirst 'Calcul le cumul du chiffre d'affaire pour chaque jour For i = 1 To NbDonnee If i = 1 Then DonneeCumul(1) = Rst("Chiffre") Else DonneeCumul(i) = Rst("Chiffre") + DonneeCumul(i - 1) End If Rst.MoveNext Next i Rst.Close SumX = 0 SumX2 = 0 SumChiffre = 0 SumChiffreX = 0

For i = 1 To NbDonnee SumX = SumX + i SumX2 = SumX2 + i ^ 2 SumChiffre = SumChiffre + DonneeCumul(i) SumChiffreX = SumChiffreX + DonneeCumul(i) * i Next i Type_Param.Pente = (NbDonnee * SumChiffreX - SumX * SumChiffre) / (NbDonnee * SumX2 - SumX ^ 2) Type_Param.OrdonneeZero = (SumX2 * SumChiffre - SumX * SumChiffreX) / (NbDonnee * SumX2 - SumX ^ 2) CalculTendance = Type_Param.Pente * X + Type_Param.OrdonneeZero End Function

Ensuite voici comment appeler cette fonction :

Public Sub ChiffreTendance18jour() 'calcul la tendance au 18me jour Debug.Print CalculTendance(CDate("01/01/2004"), 18) End Sub

Comment retrouver le nom d'une constante par sa valeur ?


Auteurs : Cafeine , Les contantes sont dfinies dans des numrations elles mmes incluses dans une rfrence. Par exemple, l'numration VbMsgBoxResult de la rfrence VBA propose les constantes VbOK, VbYes, etc. Si vous avez besoin de retrouver le nom d'une constante en fonction de sa valeur, vous pouvez utiliser la manipulation suivante : 1. Ajouter la rfrence TypeLib Information (C:\Winnt\system32\tblinf32.dll) 2. Crer un module de classe dont le nom est imprativement : CEnumValue.

Option Compare Database

- 414 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Option Explicit Public Public Public Public LibName As String GroupName As String ItemName As String ItemValue As Long

Property Get ClassType() As LocalClassType ClassType = LocalClassTypeCEnumValue End Property

3. Dans un module normal insrer le code suivant :

Option Compare Database Option Explicit Dim TLApp As TLI.TLIApplication Dim TLInfo As TLI.TypeLibInfo Dim Coll_TLI As Collection Public Enum MethodType MethodConstant = TLI.InvokeKinds.INVOKE_CONST MethodEvent = TLI.InvokeKinds.INVOKE_EVENTFUNC MethodFunction = TLI.InvokeKinds.INVOKE_FUNC MethodGet = TLI.InvokeKinds.INVOKE_PROPERTYGET MethodLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT MethodSet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF MethodSub = 0 MethodAll = MethodConstant + MethodEvent + MethodFunction + MethodGet + MethodLet + MethodSet + MethodSub End Enum Public Enum MethodContext MethodContextNA = 0 MethodContextReturns = 1 MethodContextTakes = 2 MethodContextBoth = MethodContextReturns + MethodContextTakes End Enum Public Enum PropertyType PropertyGet = TLI.InvokeKinds.INVOKE_PROPERTYGET PropertyLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT PropertySet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF PropetyBoth = PropertyGet + PropertyLet + PropertySet End Enum Public Enum LocalClassType LocalClassTypeCEnumValue = 1 LocalClassTypeCMethod LocalClassTypeCParam End Enum Public Function GetNameFromEnum(ByVal val As Long, _ ByVal strRefname As String, _ ByVal strEnumGroup As String) As String Dim lngI As Long Dim coll As Collection Dim EnumV As CEnumValue Set coll = EnumValues(strRefname, strEnumGroup) For lngI = 1 To coll.count Set EnumV = coll(lngI) If EnumV.ItemValue = val Then GetNameFromEnum = EnumV.ItemName End If

- 415 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Next lngI Set coll = Nothing Set EnumV = Nothing End Function

Public Function ListEnum(ByVal strRefname As String, _ ByVal strEnumGroup As String) Dim lngI As Long Dim coll As Collection Dim EnumV As CEnumValue Set coll = EnumValues(strRefname, strEnumGroup) For lngI = 1 To coll.count Set EnumV = coll(lngI) Debug.Print EnumV.LibName, EnumV.GroupName, EnumV.ItemName, EnumV.ItemValue Next lngI Set coll = Nothing Set EnumV = Nothing End Function

Private Function EnumValues(ByVal strRefname As String, _ ByVal strEnumGroup As String) As Collection Dim MemInfo As TLI.MemberInfo Dim TypInfo As TLI.TypeInfo Dim ConstInfo As TLI.ConstantInfo Dim coll As Collection Dim EVI As CEnumValue Init strRefname Set coll = New Collection Set ConstInfo = TLInfo.Constants.NamedItem(strEnumGroup) If Not ConstInfo Is Nothing Then For Each MemInfo In ConstInfo.Members Set EVI = New CEnumValue With EVI .LibName = TLInfo.Name .GroupName = ConstInfo.Name .ItemName = MemInfo.Name .ItemValue = MemInfo.Value End With coll.Add Item:=EVI Next MemInfo End If Set EnumValues = coll Set Set Set Set Set coll = Nothing EVI = Nothing ConstInfo = Nothing TypInfo = Nothing MemInfo = Nothing

End Function Private Sub Init(ByVal strRefname As String) Dim TL As TLI.TypeLibInfo Dim Ref As Reference

- 416 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

If TLApp Is Nothing Then Set TLApp = New TLI.TLIApplication End If Set TLInfo = TLApp.TypeLibInfoFromFile( _ Filename:=Application.References(strRefname).FullPath) Set Coll_TLI = New Collection For Each Ref In Application.References Set TL = New TLI.TypeLibInfo Set TL = TLApp.TypeLibInfoFromFile(Filename:=Ref.FullPath) Coll_TLI.Add Item:=TL, Key:=TL.Name Next Ref Set Ref = Nothing Set TL = Nothing End Sub

4. Exemple d'utilisation :

?getnamefromenum (1, "VBA","VbMsgBoxResult") vbOk

Le premier paramtre correspond la valeur recherche, le second la rfrence utiliser et le dernier l'numration.

Comment imprimer un document sans pour autant ouvir l'application associe


Auteurs : Demco , ShellExecute permet de raliser cette opration : Collez la procdure suivante dans un module :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Public Sub imprimer_fichier(Chemin As String, le_form As Form) 'imprimer le fichier dont le chemin est pass en paramtre ShellExecute le_form.hwnd, "print", Chemin, "", "", 1 End Sub

Vous pouvez alors l'appeller depuis un formulaire de la faon suivant :


Call imprimer_fichier("C:\monFic.pdf", Me)

On peut galement bien sr se passer de crer une mthode et d'crire directement la commande d'impression, suivant votre besoin. Ecrivez alors simplement dans un module de formulaire :
ShellExecute Me.hwnd, "print", "C:\monImage.jpg", "", "", 1

Ceci fonctionne pour tout type de document, texte ou image. Il faut cependant que vous ayez une application permettant d'ouvrir le fichier. Car l'API utilise l'application associ dans le panneau de configuration des dossiers de windows.

- 417 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Par exemple pour imprimer un document PDF, il faut avoir un logiciel capable de le lire les PDF d'install sur la machine. ShellExecute en a besoin, mme si son appel est transparent pour l'utilisateur. lien : lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? Que faire quand l'API ShellExecute ne fonctionne pas ?

Comment faire disparaitre les "barres de commandes"


Auteurs : BrunoM45 , Ce code permet de tester si la barre est visible, si tel est le cas elle est cache.
Dim I As Integer For I = 1 To Application.CommandBars.Count If Application.CommandBars.Item(I).Visible = True Then DoCmd.ShowToolbar Application.CommandBars.Item(I).Name, acToolbarNo End If Next I

Comment dfinir en VBA le texte d'une Info Bulle ?


Auteurs : Morgan BILLY , Comment dfinir par vba le texte d'une Info Bulle d'un contrle :
MonControl.ControlTipText = "Texte mettre"

lien :

Comment afficher une info bulle pendant le survol d'un controle ?

Comment connatre le sparateur dcimal ?


Auteurs : Cafeine ,
Function GiveSep() As String GiveSep = Mid(3 / 2, 2, 1) End Function

Comment rcuprer tous les noms des formulaire en VBA


Auteurs : Tofalu , keita , Lou Pitchoun , Voici deux exemples qui permet de lister toutes les Formulaires de base de donnes : Mthode 1 : Crer une requte ayant comme source SQL le code ci-dessous.
SELECT MSysObjects.Name AS ReportName FROM MSysObjects WHERE ((Left([Name],1)<>"~") AND ((MSysObjects.Type)=-32768));

Mthode 2 : Copier et coller cette fonction dans un module.


Function Test()

- 418 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Dim frm As AccessObject For Each frm In CurrentProject.AllForms MsgBox "Formulaire : " & frm.Name Next End Function

Autre mthode :
Sub FormsName() Dim MyDb As DAO.Database Dim MyDocument As DAO.Document Set MyDb = CurrentDb() With MyDb For Each MyDocument In .Containers("Forms").Documents Debug.Print "Nom: " & MyDocument.name Next End With End Sub

Ces deux mthodes fonctionnent sous toutes les versions D'Access lien : Comment rcuprer la date et l'heure de la dernire modification d'un Etat et d'un Formulaire

Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?
Auteurs : ckeromen , Lou Pitchoun , L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un code permettant de valider le XML
Dim WshShell Set WshShell = CreateObject("WScript.Shell") Dim xmlDoc Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.async = False xmlDoc.validateOnParse = True Dim xmlSchema Set xmlSchema = CreateObject("Msxml2.DOMDocument.6.0") xmlSchema.async = False xmlSchema.validateOnParse = True xmlSchema.Load "C:\Users\Morgan\Downloads\voiture.xsd" Dim xsdCache Set xsdCache = CreateObject("Msxml2.XMLSchemaCache.6.0") xsdCache.Add "http://www.w3.org/1999/XMLSchema", xmlSchema Set xmlDoc.schemas = xsdCache xmlDoc.Load "C:\Users\Morgan\Downloads\voiture.xml" Set myErr = xmlDoc.parseError If (myErr <> 0) Then MsgBox ("Erreur : " & myErr.reason) Else MsgBox ("ok")

- 419 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

End If

lien : Comment lire un fichier XML ? lien : FAQ VB lien : Repousser les limites d'Access - rcuprer un fil RSS

Quelles sont les correspondances en VBA des touches ?


Auteurs : Morgan BILLY , Ci-joint vous trouverez la liste de correspondance des touches en VBA : Constantes vbKey0 Description Touche 0. Cette constante fonctionne pour les chiffres de 0 9, il vous suffit de remplacer le chiffre. Touche A. Cette constante fonctionne pour les lettres de A Z, il vous suffit de remplacer la lettre. Touche Retour en arrire Touche Vrrouillage majuscule Touche Effacer Touche Ctrl Touche Suppr Touche Flche vers le bas Touche Fin Touche Echap Touche Excute Touche Aide Touche Home Touche Insert Touche Flche vers la gauche Touche Menu Touche Vrrouillage Num Touche Page Suivante Touche Page Suivante Touche Pause Touche Impression Ecran Touche Entre Touche Flche vers la droite Touche Select Touche MAJ Touche Instantan Touche Espace Touche Tabulation Touche Flche vers le haut

vbKeyA

vbKeyBack vbKeyCapital vbKeyClear vbKeyControl vbKeyDelete vbKeyDown vbKeyEnd vbKeyEscape vbKeyExecute vbKeyHelp vbKeyHome vbKeyInsert vbKeyLeft vbKeyMenu vbKeyNumlock vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint vbKeyReturn vbKeyRight vbKeySelect vbKeyShift vbKeySnapshot vbKeySpace vbKeyTab vbKeyUp lien :

Excuter une procdure en appuyant sur les touches F1, F2, etc.

- 420 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Sommaire > VBA > Divers > Trucs et Astuces Batch qui lance une macro Access
Auteurs : ARO , L'extension pour excuter une macro est /x start /WAIT msaccess.exe O:\outils\automa~1\autonet.mdb /x Archivage >> %LogFil% 2>Archivage

Dtecter si un lecteur / lecteur rseau existe.


Auteurs : Team Access , Pour tester l'existence d'un lecteur rseau et sa connexion, vous pouvez utiliser l'objet FileSystemObject de la rfrence Microsoft Scripting Runtime. Vous devez donc ajouter cette rfrence votre projet Exemple d'utilisation :

Dim oFSO As New FileSystemObject Dim oDrv As Drive Dim strLettre As String strLettre = "Z" If oFSO.DriveExists(strLettre) Then Set oDrv = oFSO.GetDrive(strLettre) If oDrv.IsReady Then MsgBox "Le lecteur rseau est disponible" Else MsgBox "Ce lecteur rseau n'est pas configur sur votre machine" End If

Importer des donnes de fichiers File Maker FP5 dans ACCESS


Auteurs : Etienne Bar , C'est possible par ODBC. Voici la manipulation qui fonctionne avec les .fp5, tester avec les autres : Il faut que ton fichier soit ouvert dans Filemaker. Tu vas dans le menu fichier pour partager ton fichier Il faut que tu dclares une source ODBC dans le panneau de configuration de Ouindoze en indiquant ton fichier Tu vas dans Access et tu lies tes tables via ODBC. Tu les verras alors comme des tables Access Attention : - pour utiliser votre lien, il faut que votre fichier soit ouvert dans FileMaker - vos rubriques texte de plus de 255 caractres seront tronques sur les 255 premiers

Imprimer un fichier texte


Auteurs : Gal Donat , Lorsqu'on fait un bouton droit sur un fichier Texte (.txt), on a l'option "imprimer" dans le menu contextuel. Aprs une recherche dans la base de registre sur le mot cl "TXT", on trouve ceci : HKEY_CLASS_ROOT\txtfile\shell\print\command : %SystemRoot%\system32\NOTEPAD.EXE /p %1 Et donc la syntaxe pour imprimer avec la fonction Shell est la suivante :
- 421 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Shell "M:\WINNT\NOTEPAD.EXE /p " & strPathTmp & "ArtSansTpsCycle.txt"

Peut-on ouvrir des fichiers wav avec Access ?


Auteurs : Maxence HUBICHE , Dans un module standard, il faut mettre :
Declare Function PlaySound Lib "winmm.dll" Alias "sndPlaySoundA" _ (ByVal lpszSoundName As Any, ByVal uFlags As Long) As Long 'Mettre 0 dans le uFlags pour laisser le son se terminer avant que le programme ne reprenne le controle 'Mettre 1 dans le uFlags pour que le programme reprenne le controle immdiatement aprs le dbut du playback 'Mettre 0& (Null) dans le lpszSoundName ET 1 dans le uFlags pour arrter le Playback en cours

Dans le formulaire de dmarrage, il faut mettre :


Private Sub Form_Close() PlaySound 0&, 1 End Sub Private Sub Form_Load() PlaySound "LePathDuFichier.wav", 1 End Sub

lien : Comment jouer un son midi dans mon application ?

Rafraichir la mmoire cache


Auteurs : Maxence HUBICHE , Utiliser la ligne suivante :
DBEngine.Idle dbRefreshCache

Rcuprer les paramtres rgionaux Windows


Auteurs : Maxence HUBICHE ,
Option Compare Database Option Explicit Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, _ ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Public Const LOCALE_USER_DEFAULT = &H400 Public Enum LOCALES LOCALE_ICENTURY = &H24 ' century format specifier LOCALE_ICOUNTRY = &H5 ' country code LOCALE_ICURRDIGITS = &H19 ' # local monetary digits LOCALE_ICURRENCY = &H1B ' positive currency mode LOCALE_IDATE = &H21 ' short date format ordering LOCALE_IDAYLZERO = &H26 ' leading zeros in day field LOCALE_IDEFAULTCODEPAGE = &HB ' default code page LOCALE_IDEFAULTCOUNTRY = &HA ' default country code LOCALE_IDEFAULTLANGUAGE = &H9 ' default language id LOCALE_IDIGITS = &H11 ' number of fractional digits LOCALE_IINTLCURRDIGITS = &H1A ' # intl monetary digits

- 422 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

LOCALE_ILANGUAGE = &H1 LOCALE_ILDATE = &H22 LOCALE_ILZERO = &H12 LOCALE_IMEASURE = &HD LOCALE_IMONLZERO = &H27 LOCALE_INEGCURR = &H1C LOCALE_INEGSEPBYSPACE = &H57 LOCALE_INEGSIGNPOSN = &H53 LOCALE_INEGSYMPRECEDES = &H56 LOCALE_IPOSSEPBYSPACE = &H55 LOCALE_IPOSSIGNPOSN = &H52 LOCALE_IPOSSYMPRECEDES = &H54 LOCALE_ITIME = &H23 LOCALE_ITLZERO = &H25 LOCALE_NOUSEROVERRIDE = &H80000000 LOCALE_S1159 = &H28 LOCALE_S2359 = &H29 LOCALE_SABBREVCTRYNAME = &H7 LOCALE_SABBREVDAYNAME1 = &H31 LOCALE_SABBREVDAYNAME2 = &H32 LOCALE_SABBREVDAYNAME3 = &H33 LOCALE_SABBREVDAYNAME4 = &H34 LOCALE_SABBREVDAYNAME5 = &H35 LOCALE_SABBREVDAYNAME6 = &H36 LOCALE_SABBREVDAYNAME7 = &H37 LOCALE_SABBREVLANGNAME = &H3 LOCALE_SABBREVMONTHNAME1 = &H44 LOCALE_SABBREVMONTHNAME10 = &H4D LOCALE_SABBREVMONTHNAME11 = &H4E LOCALE_SABBREVMONTHNAME12 = &H4F LOCALE_SABBREVMONTHNAME13 = &H100F LOCALE_SABBREVMONTHNAME2 = &H45 LOCALE_SABBREVMONTHNAME3 = &H46 LOCALE_SABBREVMONTHNAME4 = &H47 LOCALE_SABBREVMONTHNAME5 = &H48 LOCALE_SABBREVMONTHNAME6 = &H49 LOCALE_SABBREVMONTHNAME7 = &H4A LOCALE_SABBREVMONTHNAME8 = &H4B LOCALE_SABBREVMONTHNAME9 = &H4C LOCALE_SCOUNTRY = &H6 LOCALE_SCURRENCY = &H14 LOCALE_SDATE = &H1D LOCALE_SDAYNAME1 = &H2A LOCALE_SDAYNAME2 = &H2B LOCALE_SDAYNAME3 = &H2C LOCALE_SDAYNAME4 = &H2D LOCALE_SDAYNAME5 = &H2E LOCALE_SDAYNAME6 = &H2F LOCALE_SDAYNAME7 = &H30 LOCALE_SDECIMAL = &HE LOCALE_SENGCOUNTRY = &H1002 LOCALE_SENGLANGUAGE = &H1001 LOCALE_SGROUPING = &H10 LOCALE_SINTLSYMBOL = &H15 LOCALE_SLANGUAGE = &H2 LOCALE_SLIST = &HC LOCALE_SLONGDATE = &H20 LOCALE_SMONDECIMALSEP = &H16 LOCALE_SMONGROUPING = &H18 LOCALE_SMONTHNAME1 = &H38 LOCALE_SMONTHNAME10 = &H41 LOCALE_SMONTHNAME11 = &H42 LOCALE_SMONTHNAME12 = &H43 LOCALE_SMONTHNAME2 = &H39 LOCALE_SMONTHNAME3 = &H3A LOCALE_SMONTHNAME4 = &H3B LOCALE_SMONTHNAME5 = &H3C LOCALE_SMONTHNAME6 = &H3D

' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '

language id long date format ordering leading zeros for decimal 0 = metric, 1 = US leading zeros in month field negative currency mode mon sym sep by space from neg amt negative sign position mon sym precedes neg amt mon sym sep by space from pos amt positive sign position mon sym precedes pos amt time format specifier leading zeros in time field do not use user overrides AM designator PM designator abbreviated country name abbreviated name for Monday abbreviated name for Tuesday abbreviated name for Wednesday abbreviated name for Thursday abbreviated name for Friday abbreviated name for Saturday abbreviated name for Sunday abbreviated language name abbreviated name for January abbreviated name for October abbreviated name for November abbreviated name for December abbreviated name for February abbreviated name for March abbreviated name for April abbreviated name for May abbreviated name for June abbreviated name for July abbreviated name for August abbreviated name for September localized name of country local monetary symbol date separator long name for Monday long name for Tuesday long name for Wednesday long name for Thursday long name for Friday long name for Saturday long name for Sunday decimal separator English name of country English name of language digit grouping intl monetary symbol localized name of language list item separator long date format string monetary decimal separator monetary grouping long name for January long name for October long name for November long name for December long name for February long name for March long name for April long name for May long name for June

- 423 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

LOCALE_SMONTHNAME7 = &H3E LOCALE_SMONTHNAME8 = &H3F LOCALE_SMONTHNAME9 = &H40 LOCALE_SMONTHOUSANDSEP = &H17 LOCALE_SNATIVECTRYNAME = &H8 LOCALE_SNATIVEDIGITS = &H13 LOCALE_SNATIVELANGNAME = &H4 LOCALE_SNEGATIVESIGN = &H51 LOCALE_SPOSITIVESIGN = &H50 LOCALE_SSHORTDATE = &H1F LOCALE_STHOUSAND = &HF LOCALE_STIME = &H1E LOCALE_STIMEFORMAT = &H1003 End Enum

' ' ' ' ' ' ' ' ' ' ' ' '

long name for July long name for August long name for September monetary thousand separator native name of country native ascii 0-9 native name of language negative sign positive sign short date format string thousand separator time separator time format string

Function GetLocale(ByVal TypeLocal As LOCALES) As Variant Dim sBuffer As String Dim nRet As Long sBuffer = String(256, 0) nRet = GetLocaleInfo(LOCALE_USER_DEFAULT, TypeLocal, sBuffer, Len(sBuffer)) If nRet > 0 Then GetLocale = Left(sBuffer, nRet - 1) Else GetLocale = "" End If End Function

Pour rcuprer par exemple le style de date courte, il suffira de faire appel la fonction GetLocale, en lui passant le paramtre LOCALE_SSHORTDATE.

Trouver le Drive d'installation de "Winnt\system32"


Auteurs : Bidou , Mettre en rfrence : Microsoft Scripting Runtime
Dim fso As New FileSystemObject, Repertoire As Folder Set Repertoire = fso.GetSpecialFolder(SystemFolder)

Trouver un fichier dans un dossier (par exemple un fichier excel)


Auteurs : Cupidon ,
Function ChercherFichier(nomFichier As String) As Boolean 'nomFichier : Nom du fichier cherch qui est pass en paramtre d'appel de la fonction With Application.FileSearch .lookin = "D:\Sauvegarde\Programmation\Developpez.com\EditeurFaq" .FileName = nomFichier .filetype = msoFileTypeAllFiles .Searchsubfolders = True If .Execute Then ChercherFichier = True Else ChercherFichier = False End If End With End Function

- 424 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Pour utiliser cette la constante msoFileTypeAllFiles, il faut rfrencer la librairie Micosoft Office x.x Object library.

Comment jouer un son midi dans mon application ?


Auteurs : Tofalu , Pour jouer un fichier mid, il faut utiliser les API. Dans un module :
Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long Public Sub JouerMusique(ByVal Fichier As String) mciExecute ("play " & Fichier) End Sub Private Sub ArreterMusique(ByVal Fichier As String) mciExecute ("stop " & Fichier) End Sub

Pour lancer la lecture :


JouerMusique("d:\town.mid")

Pour arrter :
ArreterMusique("d:\town.mid")

lien : Peut-on ouvrir des fichiers wav avec Access ?

Comment dclencher plusieurs Beep successifs


Auteurs : Tofalu , Dans un module :
Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Puis dans le code :


For i=1 to 1000 beep sleep(500) next i

Comment fermer la fentre VBA en VBA ?


Auteurs : Tofalu , Il faut utiliser l'objet VBE

- 425 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Application.VBE.MainWindow.Visible = False

Comment savoir si mon clavier est en majuscule ou pas?


Auteurs : Tofalu ,
Public Declare Function GetKeyState Lib "user32" (ByVal iVirtualKey As Integer) As Long Public Function Is_Majuscule() As Boolean Is_Majuscule = (&H1 And GetKeyState(vbKeyCapital)) <> 0 End Function

La fonction Is_Majuscule renvoie true si le clavier est en majuscule, false sinon. lien : Comment Activer/Dsactiver le Caps Lock du clavier

Comment Activer/Dsactiver le Caps Lock du clavier


Auteurs : Maxence HUBICHE ,
Private Type KeyboardBytes kbByte(0 To 255) As Byte End Type Enum apiOnOff apiOn = 1 apiOff = 0 End Enum Dim kbArray As KeyboardBytes Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long Private Sub ChangerCapsLock(v As apiOnOff) GetKeyboardState kbArray kbArray.kbByte(&H14) = v SetKeyboardState kbArray End Sub

Utiliser sous la forme pour dsactiver :


ChangerCapsLock apiOff

ou, pour activer :


ChangerCapsLock apiOn

Comment faire qu'une fonction renvoie en tableau en Access 97 ou infrieures ?


Auteurs : Cafeine , Au moyen d'un type de donnes qui encapsule un tableau. Exemple avec une fonction de dcomposition de chane en tableau. La fonction stringTab() renvoie bien un tableau.

Option Explicit

- 426 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Type typTabResult items() As String * 1 End Type Function stringTab(ByVal str) As typTabResult Dim i As Integer For i = 1 To Len(str) ReDim Preserve stringTab.items(i) stringTab.items(i) = Mid(str, i, 1) Next i End Function

Function TestTab() Dim monTab As typTabResult Dim i As Integer monTab = stringTab("Hello World !") For i = 1 To UBound(monTab.items) Debug.Print i, monTab.items(i) Next i End Function

objet OLE insrer un objet par bouton de commande


Auteurs : Arkham46 , Pour faire l'quivalent du click droit --> insrer objet

LeContrleOLE.SetFocus Docmd.RunCommand acCmdInsertObject

pour viter l'erreur si l'utilisateur slectionne le bouton Annuler il faut mettre une gestion d'erreur. voir on error dans l'aide : le plus simple mais pas le meilleur, annuler tous les messages d'erreur

On error resume next LeContrleOLE.SetFocus Docmd.RunCommand acCmdInsertObject

sinon utilisez on error goto pour renvoyer les erreurs vers une tiquette et les traiter en fonction de la valeur de Err.Number

Comment afficher le clavier virtuel en VBA ?


Auteurs : Philippe JOCHMANS , Cafeine , Pour afficher le clavier virtuel, tapez osk dans Excuter du menu Dmarrer. Pour raliser la mme chose en VBA, voici le code :

- 427 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

Ce code permet d'afficher le clavier virtuel sur un clic droit dans une zone de texte
Private Sub LaTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ShortcutMenu = False If Button = acRightButton Then Shell "osk.exe" End If End Sub

Ce code ne fonctionne pas sous Access 2007, pour raliser la mme chose avec la version 2007 il vous faut utiliser les API.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub LaTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ShortcutMenu = False If Button = acRightButton Then ShellExecute Me.hwnd, "open", "osk.exe", "", "", 1 End If End Sub

lien : lien :

Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? Que faire quand l'API ShellExecute ne fonctionne pas ?

- 428 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/

You might also like