Vous êtes sur la page 1sur 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 326