Professional Documents
Culture Documents
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.
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/
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.
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 ?
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/
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.
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.
-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 '
-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 ?
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)
- 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 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 :
- 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 ?
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 :
lien : COMMENT FAIRE : Vrification des personnes connectes une base de donnes avec Jet UserRoster dans Access 2000
- 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 :
/Wrkgrp "Chemin\vers\votre
Astuce si vous ne voulez pas taper votre mot de passe chaque fois :
/user NomUtilisateur /pwd LeMotDePasse
- 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/
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.
- 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 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 :
- 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/
- 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 :
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 :
- 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...
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 :
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}
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.
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
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
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"
A noter : lorsque vous cocherez 'Modifier la structure' pour les requtes, cette case sera systmatiquement coche pour les tables.
- 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/
lien :
lien :
- 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
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
- 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.
- 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
- 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
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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 !!!
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, ...) ?
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).
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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 :
ou
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
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 ?
- 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 ?
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 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 ?
- 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/
Utilisation :
MsgBox RenommerTable("Produit", "Produit2")
Affiche true si la table Produit t renomme avec succs en Produit2. Renvoie false en cas d'echec.
lien :
- 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")
lien :
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
lien : lien :
Comment tester l'existence d'une requte en VBA et la supprimer ? Comment supprimer une table si elle existe ?
- 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 :
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 ?
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/
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
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 ?
lien :
- 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 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
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
lien :
' 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
- 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 :
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 ?
- 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/
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
"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
Comment rinitialiser un champ de type numro Auto ? Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Exit_function: DoCmd.Echo True Exit Function GestionErreur: MsgBox Err.Description Resume Exit_function End Function
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 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/
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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 :
- 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
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 ?
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/
lien :
Utilisation :
Debug.print ExisteChamp("Produit", "stock")
Affiche dans la fentre de debogage True si le champ existe dans la table Produit , false sinon.
lien :
- 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 = "##-##-##-##-##"
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 :
- 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 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 ?
- 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/
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>
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
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 ?
lien :
- 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 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.
Pour faire cela je vous renvoi vers le tuto DAO de Tofalu dans la partie 4 au paragraphe 4.4.2.
lien :
- 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.
_ 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
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
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 :
- 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/
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 ?
- 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
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 :
Info : La variable @@IDENTITY est une variable globale SQL qui permet de retrouver la dernire valeur utilise pour un numro automatique d'une table.
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.
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
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 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
Crer un jeu de donnes (recordset) Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Exemple d'utilisation :
MsgBox testQuery("RqtClasses")
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].
- 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 :
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.
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 :
lien :
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/
lien :
Exemple d'utilisation :
SupprimerRequete "MaRequete"
lien :
- 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] = ...
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)
(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%\'
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#]...
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.
ou bien :
monsql = "Select * From MATABLE Where " & BuildCriteria("MonChamp", dbText, 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 :
Le but est de raliser une recherche qui retourne les lignes commenant par deux toiles.
- 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 :
- 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
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").
- 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/
Mettre uniquement NULL pour autoriser l'utilisation de la valeur NULL sur ce champs.
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 ?
- 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/
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
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.
lien :
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;
Pour le dernier :
Select Last(MONCHAMP) From LATABLE;
- 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*"
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;
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;
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 :
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.
- 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/
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.
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)
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] )
- 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.
La fonction int() permet de ne slectionner seulement la date et non la date suivie de l'heure.
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.
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
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/
lien :
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
- 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 :
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 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]
- 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/
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 ?
Me.ShortcutMenu = False
lien :
- 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/
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.
ou
DoCmd.SelectObject acForm, Form2, False
- 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
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
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
- 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 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 :
- 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/
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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 ?
- 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 :
- 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
- 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
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
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
'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
- 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]
"#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
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 :
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
- 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
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]
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 :
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/
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 :
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 :
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!
- 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
MonOnglet.Pages(0).Picture=""
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
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 !
- 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
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
- 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
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) ?
- 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 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/
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
- 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 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 ?
MsgBox MaZdt.SelStart
- 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 :
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
Me.NomSsForm.SetFocus Me.[NomSsForm].Form![NomControle].SetFocus
lien :
- 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/
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
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
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
lien :
Msgbox MaZoneDeListe.ListCount
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 ?
' 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
- 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/
Comment savoir quelle ligne d'une zone de liste modifiable est slectionne ?
Auteurs : Demco ,
MsgBox Me.MaListe.ListIndex
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)
- 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 ?
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.
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
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/
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 :
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 ?
- 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 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(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).
lien :
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 :
- 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
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 :
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.
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)
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
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 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))
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
- 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/
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
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.
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
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/
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
- 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/
- 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
- 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
' 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/
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
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]
En effet, ce code n'est pas du tout portable. Privilgiez donc une suppression via requte ou sur le recordset du formulaire.
lien :
- 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 :
- 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".
- 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 :
Me.CadreSousFormulaire.Form.Recordset.MoveFirst
Me.CadreSousFormulaire.Form.Recordset.MoveLast
Me.CadreSousFormulaire.Form.Recordset.MovePrevious
Me.CadreSousFormulaire.Form.Recordset.MoveNext
Me.CadreSousFormulaire.Form.Recordset.AddNew
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 ?
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, 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.
Msgbox Me.Recordset.PercentPosition
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
- 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
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 :
- 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
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 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
_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/
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.
lien :
Comment faire pour rduire un formulaire ? (effet du bouton tiret en haut droite des fentres Windows)
- 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.
- 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/
- 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/
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 :
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) ?
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 :
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 :
- 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/
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 :
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
Private Sub tiquette_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.tiquette.SpecialEffect = 0 End Sub
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
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
- 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 :
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
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
If IsError(frm.Controls(ctlName).Tag) Then Err.Clear Exit Function Else ExistControl = True End If End Function
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
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}"
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
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 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.
- 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.
- 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 :
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/
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 ?
gif.filename = gif.filename
- 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) :
lien :
- 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 :
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/
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.
- 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/
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
- 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 :
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/
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.
- 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 :
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
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 ?
lien : FAQ VB
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.
- 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/
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 ?
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.
Vous devez maintenant pouvoir travailler les tats sans aucun problme.
Dim i As Long DoCmd.OpenReport "Commandes", acViewPreview For i = 1 To Reports("Commandes").Pages DoCmd.PrintOut acPages, i, i Next
- 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.
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;
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.
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
' 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/
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
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
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/
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 :
- 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/
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/
lien : FAQ VB lien : lien : Repousser les limites d'Access - rcuprer un fil RSS Visual Basic 6.0 et le format XML
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 ?
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
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
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
- 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 :
lien :
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
Le premier paramtre correspond au chemin du fichier ou du dossier, le second correspond au chemin courant. Exemple :
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
lien : FAQ VB
lien : Comment travailler sur un fichier texte (cration, lecture, criture ...) lien : Manipuler les fichiers textes
- 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/
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"
lien : FAQ VB
lien : FAQ VB
Le fichier doit exister sinon une erreur d'excution a lieu. lien : FAQ VB
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/
- 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
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
- 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/
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/
If (GetSaveFileName(structSave)) Then EnregistrerUnFichier = Mid$(structSave.lpstrFile, 1, InStr(1, structSave.lpstrFile, vbNullChar) - 1) End If End Function
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
lien : FAQ VB
- 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
- 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
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 ?
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 :
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
lien : FAQ VB
- 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 ?
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 :
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
- 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/
lien : FAQ VB
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.
- 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
lien : FAQ VB
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
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/
Exemple d'utilisation :
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
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
compteur = compteur + 1 fichier = dir Loop Next extension nbfich = compteur End Function
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/
lien : FAQ VB
lien : FAQ VB
- 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
- 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/
lien : FAQ VB
MsgBox Environ("COMPUTERNAME")
- 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/
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
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
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_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) & & & & & " " " " " " " " " " & & & & & _ _ _ _ _
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
- 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
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
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
- 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
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
- 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
- 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.
'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)
- 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
'***************** 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
Dim test As String test = "resolution" MsgBox "Rsolution de l'cran : " & Resol(test)
lien :
'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.
Le Microsoft Comm Control 6.0 Piloter une sortie srie RS232 Comment Use MSCOMM32.OCX
lien :
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/
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
'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.
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/
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)
ExitWindowsEx(EWX_SHUTDOWN OR EWX_FORCE, 0)
- 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/
- 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
lien :
FAQ VB
- 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
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
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
lien : FAQ VB
- 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
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
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
- 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
Vous pouvez galement jeter un oeil la premire partie du tutoriel de Louis-Guillaume MORAND. lien : FAQ VB
- 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.
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
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
Ceci affichera 3.
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"
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/
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.
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
- 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/
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 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 :
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
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.
- 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/
' 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().
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.
- 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.
O n est le nombre de dcimales voulues, et Nb le nombre. Vous obtiendrez le mme rsultat en utilisant :
Round(Nb,n)
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.
- 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 ?
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
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 :
MaVariable reoit "DEVELOPPEZ123" Mise en minuscule -> Lcase$() Fonction Strconv() Renvoie une valeur de type Variant (String)
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 :
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 :
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.
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)
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 :
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.
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
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
lien :
- 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 :
- 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/
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 !
- 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 :
- 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.
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
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.
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/
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#)
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#)
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
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 :
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()).
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
30/04/2004 15:19:35
- 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
- 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 ?
- 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
' 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.
- 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
Utilisation :
Msgbox PremierJourSemaine(26, 2005)
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
la rponse en anglais :
lien :
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.
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
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
' Lundi de Pques = Paques + 1 jour fLundiPaques = DateAdd("d", 1, (Lj & "/" & Lm & "/" & Iyear)) End Function
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 :
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 :
Bien entendu, cette requte ne retourne rien. Un recordset sur celle ci sera donc trs lger.
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 ?
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/
- 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
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
- 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
- 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
de la touche
lien :
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
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
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
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
lien : FAQ VB lien : Comment mesurer le temps d'excution d'un morceau de code ?
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 !
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 ?
- 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/
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.
lien :
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 :
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 !
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
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
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 :
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 :
Dim flagNonRenseign As Boolean flagNonRenseign = False If strArg1 = "<empty>" Then flagNonRenseign = True strArg1 = "" End If
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+
Dim strIcon As String strIcon = currentproject.Path & "\NomFichier.ico" SetDBprop "AppIcon", dbText, strIcon 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 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/
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
- 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
lien :
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/
Appel de la fonction :
Private Sub Form_Load() Call BarButton(Me, False,true,True) End Sub
- 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
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")
- 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/
- 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
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
- 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
- 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/
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
_ _
_ _
- 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/
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
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
' 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
lien :
- 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.
- 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
- 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/
- 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
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.
- 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.
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 ?
lien : lien :
http://www.mvps.org/accessfr/general/gen0002.htm http://www.mvps.org/accessfr/apis/api0029.htm
- 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
- 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/
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
- 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
- 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
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.
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.
32515 croix 32516 flche vers le haut 32640, 32642, 32643, 32644, 32645, 32646 doubles flches de redimensionnement 32648 stationnement interdit 32650 flche + sablier Curseur personnalis:
private Sub change_curseur() Call SetSystemCursor(LoadCursorFromFile("D:\curseur.ani"), 32513) End Sub
' Constante pour modif du fond Private Const GCL_HBRBACKGROUND = -10 ' Cre une brosse unie Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long ' Cre une brosse partir d'une image (pour utilisation en mosaque uniquement) Private Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long ' Modifier une fentre selon sa classe Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long ' Trouver l'identifiant d'une fentre Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long ' Rafrachir l'affichage Private Declare Function InvalidateRect Lib "user32" (ByVal hwnd As Long, ByVal lpRect As Any, ByVal bErase As Long) As Long ' wpv_arg est soit un nombre reprsentant une couleur(=RGB(xxx,xxx,xxx)), soit un chemin vers un fichier Public Sub SetBackGround(wpv_Arg As Variant) ' Object Image temporaire Dim wlo_Image As Object ' Identifiant de la brosse Dim wlv_Brush As Long ' Identifiant de la fentre Dim wlv_Hwnd As Long ' Si argument = nom de fichier If Not IsNumeric(wpv_Arg) Then ' Charge l'image dans un objet temporaire Set wlo_Image = LoadPicture(wpv_Arg) ' Cre une brosse mosaque partir de l'image charge
- 347 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
wlv_Brush = CreatePatternBrush(wlo_Image.handle) ' Libre la mmoire occupe par l'objet image temporaire Set wlo_Image = Nothing ' Si argument numrique Else ' Cre une brosse unie wlv_Brush = CreateSolidBrush(wpv_Arg) End If ' Recherche l'identifiant de la fentre de fond de la base (de classe "MDIClient") wlv_Hwnd = FindWindowEx(Application.hWndAccessApp, 0, "MDIClient", vbNullString) ' Modifie l'identifiant de la brosse servant dessiner le fond de la fentre SetClassLong wlv_Hwnd, GCL_HBRBACKGROUND, wlv_Brush ' Rafrachit l'affichage pour dessiner le fond d'cran avec la nouvelle bross InvalidateRect wlv_Hwnd, vbNullString, 1 End Sub
Puis, si vous souhaitez mettre une autre couleur excuter par exemple la ligne :
SetBackGround 16570023
SetBackGround "C:\MonImage.jpg"
Remarque : Dans Microsoft Windows 2000 et Microsoft Windows XP, il s'agit de l'icne que vous dfinissez pour occup dans la bote de dialogue Proprits de la souris du panneau de configuration de Windows. Il s'agit par dfaut d'une icne de sablier anime.
- 348 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Tables et relations Comment effacer les relations entre les tables ?
Auteurs : Cafeine ,
Function xDropRelations() Dim Rel As Relation For Each Rel In CurrentDb.Relations Debug.Print "effacement de la relation [" & Rel.Table & "]![" & Rel.Fields(0).name & "] -=> _ & "[" & Rel.ForeignTable & "]![" & Rel.Fields(0).ForeignName & "]" CurrentDb.Relations.Delete Rel.name Next Rel End Function
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Dtruire automatiquement la table des erreurs qui peut se crer lors d'une importation
Auteurs : Gal Donat , Cafeine , Cette table se nomme toujours : <nom de ton fichier sans l'extension>_ImportErrors Il suffit de vrifier l'existence de la table, puis, si elle existe de faire :
DoCmd.DeleteObject acTable, fichier & "_ImportErrors"
ou
CurrentDB.TableDefs.Delete fichier & "_ImportErrors"
- 349 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
En complment, voici comment puger les tables d'erreurs de la base : Fonctionne sur toutes les versions d'Access depuis Access 97.
Function PurgeErreurs() Dim tbl As TableDef For Each tbl In CurrentDb.TableDefs If InStr(tbl.Name, "importerrors") Then Debug.Print "Effacement de " & tbl.Name CurrentDb.TableDefs.Delete tbl.Name End If Next tbl Set tbl = Nothing End Function
- 350 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications Comment lier une base Lotus Notes (*.nsf) et Access ?
Auteurs : Gal Donat , Ce n'est pas de tout repos. Il existe un drivers Lotus SQL ODBC ( les objets sont considr comme des vues) dans Access. NotesSQL),vous pourrez lier une vue Lotus (car
- 351 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dim lhProcess As Long Dim lProcessID As Long Dim lpExitCode As Long 'Ouverture du programme + rcupration de sont handle 'La rcupration du handle est ncessaire pour pouvoir ouvrir un processus sur celui-ci lProcessID = Shell(PathFilename, 1) 'Ouverture d'un processus sur le programme ouvert + rcupration du handle du processus 'La rcupration du handle est ncessaire pour obtenir des informations sur celui-ci lhProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, lProcessID) 'Boucle tant que la variable lpExitCode <> STATUS_PENDING (&H103&) Do 'Rcupration du code de sorti du processus 'Si programme ouvert -> la variable lpExitCode = STATUS_PENDING 'Sinon -> la variable lpExitCode = 0. Donc fin de la boucle Call GetExitCodeProcess(lhProcess, lpExitCode) DoEvents 'Continue effectu les opration effectu par access Loop While lpExitCode = STATUS_PENDING Call CloseHandle(lhProcess) 'Ferme le handle du processus End Sub
lien : Comment forcer Access attendre la fin d'un traitement avant de continuer ?
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 ?
- 352 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, _ lpdwprocessid As Long) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, _ ByVal nIndex As Long) As Long Private Const WM_CLOSE = &H10 Private Const GWL_STYLE = (-16) Private Const WS_SYSMENU = &H80000 Private Function CloseWindow(ByVal hwnd As Long, ByVal hInstance As Long) As Long Dim idproc As Long idproc = 0 'reoit dans idproc l'id du processus li cette fentre GetWindowThreadProcessId hwnd, idproc If (idproc = hInstance) And ((GetWindowLong(hwnd, GWL_STYLE) And WS_SYSMENU) = WS_SYSMENU) Then PostMessage hwnd, WM_CLOSE, 0, 0 End If 'obligatoire pour qu'EnumWindows continue l'numration CloseWindow = True End Function Public Sub KillApp(hInstance As Long) EnumWindows AddressOf CloseWindow, hInstance End Sub
Certains programmes n'acceptent pas d'tre ouverts plusieurs fois en mme temps. Pour cela, ils commencent par chercher si une instance du programme est dj en mmoire. Si c'est le cas, ils terminent l'instance qui vient d'tre cre, et si une nouvelle fentre doit tre ouverte, c'est l'ancienne instance qui le fait. Avec ce code source vous ne pourrez donc pas, par exemple, fermer une fentre de l'explorateur Windows ouverte par Shell(), car le processus dont l'id vous est renvoy est automatiquement ferm, et la nouvelle fentre est ouverte par l'instance qui tait dj en mmoire. lien : FAQ VB lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? lien : Que faire quand l'API ShellExecute ne fonctionne pas ?
- 353 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Const WM_CLOSE = &H10 Private AppCible As String Public Function EnumCallback(ByVal app_hWnd As Long, ByVal param As Long) As Long Dim buf As String * 256 Dim Titre As String Dim Longueur As Long 'Rcupre le titre de la fentre Longueur = GetWindowText(app_hWnd, buf, Len(buf)) Titre = Left$(buf, Longueur) 'Vrifie si le titre de la fentre correspond au nom recherch If InStr(Titre, AppCible) <> 0 Then 'Ferme la fentre SendMessage app_hWnd, WM_CLOSE, 0, 0 End If 'Poursuit l'numration EnumCallback = 1 End Function Public Sub KillApp(App_Cherchee As String) AppCible = App_Cherchee 'Demande Windows d'numrer les fentres ouvertes EnumWindows AddressOf EnumCallback, 0 End Sub
Un appel du type KillApp "Excel" fermera Microsoft Excel. Attention d'viter l'utilisation de termes trop simples pouvant se trouver dans le titre d'une fentre d'une autre application. lien : FAQ VB
- 354 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
'Type pour grer les lancements de processus Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type 'Info sur un processus Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const STILL_ACTIVE = &H103& Public Sub AttendreFinProcess(proc As PROCESS_INFORMATION, Optional timeout As Long = 60) Dim Ret As Long Dim tms As Single Dim exitcode As Long 'Attendre la fin de la commande tms = Timer Ret = GetExitCodeProcess(proc.hProcess, exitcode) Do While Ret <> 0 And exitcode = STILL_ACTIVE Ret = GetExitCodeProcess(proc.hProcess, exitcode) DoEvents Sleep 100 If Timer - tms > timeout Then Err.Raise STILL_ACTIVE, "AttendreFinProcess", "Timeout sur l'attente de la fin d'un process" End If Loop If Ret = 0 Then Err.Raise Err.LastDllError, "AttendreFinProcess", "Erreur systeme N " & Err.LastDllError End If End Sub Public Sub LancerProcess(sExe As String, proc As PROCESS_INFORMATION) Dim start As STARTUPINFO Dim Ret As Long 'StartupInfo pour le processus qui lancera la commande start.cb = Len(start) 'Lancement de la commande Ret& = CreateProcess(0&, sExe, 0&, 0&, 0&, NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) If Ret = 0 Then Err.Raise Err.LastDllError, "LancerProcess", "Erreur systeme N " & Err.LastDllError End If
- 355 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
End Sub
Crez une form et placez-y un bouton nomm Command1. Puis copiez ce code dans le module de la form :
Private Sub Command1_Click() Dim proc As PROCESS_INFORMATION On Error GoTo errortag proc.hProcess = -1 proc.hThread = -1 Debug.Print "Debut du processus" Call LancerProcess("notepad", proc) Call AttendreFinProcess(proc) Debug.Print "fin du processus" Call CloseHandle(proc.hProcess) Call CloseHandle(proc.hThread) Exit Sub errortag: If proc.hProcess <> -1 Then CloseHandle proc.hProcess If proc.hThread <> -1 Then CloseHandle proc.hThread MsgBox Err.Number & " - " & Err.Description End Sub
La fonction AttendreFinProcess() attend la fin d'un processus tant que le temps indiqu par le paramtre timeout n'est pas coul. Executez le projet et cliquez sur le bouton de commande. Le Notepad se lance. Lorsque vous le fermez, la console de dbuggage affiche "fin du processus". lien : FAQ VB
'La base des mails 'Le nom d'utilisateur 'Le nom de la base des mails 'Le mail 'L'objet pice jointe en RTF 'La session Notes 'L'objet incorpor
- 356 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
'Cre une session notes Set Session = CreateObject("Notes.NotesSession") '*** Cette ligne est rserve aux versions 5.x et suprieur : *** Session.Initialize (Password) 'Rcupre le nom d'utilisateur et cre le nom de la base des mails UserName = Session.UserName MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf" 'Ouvre la base des mails Set Maildb = Session.GETDATABASE("", MailDbName) If Not Maildb.ISOPEN Then Maildb.OPENMAIL 'Paramtre le mail envoyer Set MailDoc = Maildb.CREATEDOCUMENT MailDoc.Form = "Memo" MailDoc.sendto = Recipient MailDoc.CopyTo = ccRecipient MailDoc.BlindCopyTo = bccRecipient MailDoc.Subject = Subject MailDoc.Body = BodyText MailDoc.SAVEMESSAGEONSEND = SaveIt 'Prend en compte les pices jointes If Attachment <> "" Then Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment") Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment") MailDoc.CREATERICHTEXTITEM ("Attachment") End If 'Envoie le mail MailDoc.PostedDate = Now() MailDoc.SEND 0, Recipient Set Set Set Set Set End Sub Maildb = Nothing MailDoc = Nothing AttachME = Nothing Session = Nothing EmbedObj = Nothing
Il est aussi possible d'indiquer Lotus Notes plusieurs destinataires en affectant un tableau de type Variant la proprit sendto :
Dim recip(25) as Variant recip(0) = "emailaddress1" recip(1) = "emailaddress2" maildoc.sendto = recip
lien : FAQ VB
- 357 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Private Sub cmdEnvoyer_Click() 'txtForm CDOSendMail txtFrom, txtTo, txtSubject, txtBody, txtAttach 'txtForm : Mail de l'envoyeur 'txtTo : Mail de destination 'txtSubject = Objet 'txtBody = contenu 'txtAttach = chemin complet du fichier End Sub Public Sub CDOSendMail(SendFrom As String, _ SendTo As String, _ Subject As String, _ PlainTextBody As String, _ FullPathFileName As String) Dim cdoMail As CDO.Message Dim iBp As CDO.IBodyPart ' for IBodyPart on message Dim iBp1 As CDO.IBodyPart Dim Flds As ADODB.Fields Dim Stm As ADODB.Stream Set cdoMail = New CDO.Message With cdoMail .From = SendFrom .To = SendTo .Subject = Subject ''Set iBp = .BodyPart Set iBp = cdoMail '?? ' TEXT BODYPART ' Add the body part for the text/plain part of message Set iBp1 = iBp.AddBodyPart ' set the fields here Set Flds = iBp1.Fields Flds("urn:schemas:mailheader:content-type") = "text/plain; charset=""iso-8859-1""" Flds.Update ' get the stream and add the message Set Stm = iBp1.GetDecodedContentStream Stm.WriteText PlainTextBody Stm.Flush ' HTML BODYPART ' Do the HTML part here Set iBp1 = iBp.AddBodyPart ' set the content-type field here Set Flds = iBp1.Fields Flds("urn:schemas:mailheader:content-type") = "text/html" Flds.Update ' get the stream and add message HTML text to it Set Stm = iBp1.GetDecodedContentStream Stm.WriteText "<HTML><H1>this is some content for the body part object</H1></HTML>" Stm.Flush ' Now set the Message object's Content-Type header ' to multipart/alternative Set Flds = iBp.Fields Flds("urn:schemas:mailheader:content-type") = "multipart/alternative" Flds.Update .AddAttachment FullPathFileName .Send End With End Sub
- 358 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Cette solution marche avec Outlook express comme mail par dfaut, tester pour les autres services de messagerie.
lien :
Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ?
Auteurs : nightfall , Placez cette dclaration dans le module d'une form :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
La ligne suivante affiche le site Developpez.com dans le navigateur par dfaut, en fournissant le rpertoire de votre application comme rpertoire par dfaut :
ShellExecute Me.hwnd, "open", "http://www.developpez.com", "", CurrentProject.Path, 1
lien : FAQ VB lien : Que faire quand l'API ShellExecute ne fonctionne pas ?
Rcuprer le rsultat de la fonction ShellExecute (ne pas oublier les parenthses) dans cette variable :
Ret = ShellExecute(.....) msgbox Ret
- 359 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
20 Fichier de librairie lie dynamiquement (DLL) incorrect, une des DLLs requise pour excuter cette application est corrompue. 21 L'application requiert les extensions Microsoft Windows 32-bit. 31 Il n'y a pas d'association avec le type de fichier spcifi, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi
lien :
Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ?
- 360 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office Comment piloter une autre application Office partir de MS Access ?
Auteurs : Bidou ,
Dim xlApp As Object Dim mySheet As Object Set xlApp = CreateObject("Excel.Application") Set mySheet = xlApp.Workbooks.Open("D:\EXCEL\test.xls") ' Dfinit le fichier EXCEL ouvrir ' endroit o mettre le code de pilotage ' Code de fermeture mySheet.Save mySheet.Close xlApp.Quit Set xlApp = Nothing Set mySheet = Nothing
Remarque : si vous crez un nouveau fichier plutt que d'en ouvrir un nouveau en utilisant
Set mySheet = xlApp.Workbooks.Add
par
mySheet.SaveAs "NomDuFichier"
Car quand le nom du fichier n'est pas connu la mthode Save affiche une bote de dialogue ne sera visible que si Excel l'est, ce qui n'est pas le cas dans notre exemple. En dehors de la phase de test il est prfrable de ne pas rendre l'application visible pour viter que l'utilisateur n'interfre, par exemple en fermant Excel.
lien : lien :
Utiliser Excel partir de Visual Basic VB/VBA : Programmer efficacement avec Excel
Comment excuter une macro Access depuis n'importe quelle application Office supportant VBA ?
Auteurs : tibadabo ,
Sub ExcuterMacroAccess() Dim MonAccess As New Access.Application MonAccess.OpenCurrentDatabase "D:\etude.mdb" 'Ici le chemin de la bdd Access DoCmd.RunMacro "Export" 'Ici le nom de la macro MonAccess.Quit acquitsaveNone Set MonAccess = Nothing End Sub
Comment excuter une procdure Access depuis n'importe quelle application Office supportant VBA ?
Auteurs : Lucifer , Dans Access on fait une procdure dans un module.
- 361 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
exemple :
Public Sub test(pArg as string) MsgBox "Bonjour Matre " & pArg End Sub
Comment, depuis n'importe quelle application Office supportant VBA, commander l'exportation de tables ou requtes Access au format Excel ?
Auteurs : Lucifer , On dfinit au pralable dans un module Access, la procdure d'exportation : exemple :
Public Sub Export() DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet DoCmd.TransferSpreadsheet End Sub
, , , , ,
"table1", "D:\Etudes1.xls", False, "" "table2", "D:\Etudes2.xls", False, "" "requte3", " D:\EtudesSuite.xls ", False, "" "requte4", " D:\EtudesSuite.xls ", False, "" "X OPCVM brut", " D:\EtudesAutre.xls ", False, ""
Ensuite on appelle la procdure Export de la faon suivante depuis excel ou tout autre application office-vba :
Sub Bouton1_QuandClic() Dim MonAccess As New Access.Application MonAccess.OpenCurrentDatabase "D:\etude.mdb" MonAccess.run "Export" MonAccess.Quit acquitsaveNone Set MonAccess = Nothing End Sub
- 362 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Excel Comment exporter un fichier Excel vers CSV
Auteurs : jbaudin , Depuis Excel 2002, l'export en CSV via VBA prend par dfaut une virgule. (Sauf si on le fait la main: Fichier/ Enregistrer sous/ CSV (sparateur point-virgule)) Pour forcer Excel ou Access utiliser un point-virgule lors de l'export d'un fichier Excel vers CSV, il faut : 1 2 Vrifier dans les Options Rgionales (Panneau de configuration de Windows), onglets Nombres, si le sparateur de liste est bien un point-virgule. Ajouter ceci dans le code : Local:=True pour forcer Excel utiliser le sparateur configur sur l'ordinateur utilis.
Soit :
Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier As String) As Boolean On Error GoTo err Dim oAppExcel As Excel.Application Dim oWbk As Excel.Workbook Dim oSht As Excel.Worksheet 'Lance Excel Set oAppExcel = New Excel.Application 'Ouvre le classeur Set oWbk = oAppExcel.Workbooks.Open(strNomFichier) 'Accde la feuille Set oSht = oWbk.Sheets(strNomFeuille) TestExistenceFeuille = True 'Libre les variables et quitte Set oSht = Nothing oWbk.Close oAppExcel.Quit Set oWbk = Nothing Set oAppExcel = Nothing err: End Function
Exemple d'utilisation :
Sub test()
- 363 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Notez que si vous utilisez dj un objet Excel.Application dans votre code principal, vous pouvez le passer en argument la fonction afin d'acclrer le traitement. Cela donne :
Public Function TestExistenceFeuille(strNomFeuille As String, strNomFichier As String, oAppExcel As Excel.Application) As Boolean On Error GoTo err Dim oWbk As Excel.Workbook Dim oSht As Excel.Worksheet 'Ouvre le classeur Set oWbk = oAppExcel.Workbooks.Open(strNomFichier) 'Accde la feuille Set oSht = oWbk.Sheets(strNomFeuille) TestExistenceFeuille = True 'Libre les variables et quitte Set oSht = Nothing oWbk.Close Set oWbk = Nothing err: End Function
Dim MonAppli as Excel.Application 'ici votre code d'ouverture du fichier, et vos traitements prliminaires 'Appel de la fonction If TestExistenceFeuille("Feuil1", "D:\test.xls",MonAppli) Then Msgbox "La feuille existe dj" else Msgbox "La feuille n'existe pas" End if
Piloter Excel via Access : exemples d'oprations courantes effectues sur cellules, plages, lignes ou colonnes excel partir d'access.
Auteurs : cladlemeilleur , Pour utiliser ce code il faut rfrencer la bibliothque Excel (VBE : menu Outils/Rfrences)
Private Dim Dim Dim Dim Dim Sub DmoPilotageExcel() xlApp As Excel.Application xlSheet As Excel.Worksheet xlBook As Excel.Workbook i as long vtemp As Variant
'J'initialise mes variables Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("C:\Chemin\Feuille.xls") 'Ajouter une feuille de calcul nomme Toto Set xlSheet = xlBook.Worksheets.Add xlSheet.Name = "Toto" 'Manipuler une cellule xlSheet.Cells(1, 1) = "je suis dans la ligne1 et colonne1"
- 364 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
'Manipuler une plage xlSheet.Range("A2:D6").Value = "Zones A2:D6" 'Remplie la colonne E de la ligne i avec le num de la ligne (i) For i = 2 To 6 xlSheet.Cells(i, 5).Value = i Next 'Permet de trier une plage xlSheet.Range("A2:E6").Sort xlSheet.Columns("E"), xlDescending 'Trouver une valeur dans une plage vtemp = xlSheet.Range("A2:E6").Find("2").Row 'Touver une valeur dans une colonne vtemp = xlSheet.Columns("E").Find("2").Row 'Copier une plage vers une destination directement 'xlBook.Worksheets("Feuil1").Range("A1:E3").Copy Destination:=xlBook.Worksheets _ '("C:\Chemin\FeuilleDestination.xls").Range("A1:E3") 'Copier une plage xlSheet.Range("A" & vtemp & ":E" & vtemp).Copy 'Coller les valeurs xlSheet.Paste Destination:=xlSheet.Range("A8:E8") 'Supprimer une plage 'Si l'on supprime une ligne alors cela remonte les lignes 'xlSheet.Range("A" & vtemp & ":E" & vtemp).Delete 'Supprimer une ligne xlSheet.Rows(vtemp).Delete 'insertion d'une ligne xlSheet.Range("A" & i & ":H" & i).EntireRow.Insert Shift:=xlShiftDown 'Code de fermeture xlBook.Save xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing MsgBox "Fin de la procdure. :)" End Sub
Par contre, l'import d'un fichier texte permet de spcifier de nombreux attributs pour chaque colonne importer (nom, type, sauter ou pas, ...). Il est mme possible d'enregistrer les spcifications d'import en suivant la technique suivante : excuter l'importation l'aide de l'assistant et avant de cliquer sur "TERMINER", cliquer sur le petit bouton en bas gauche "AVANCE ..." afin de dfinir et sauvegarder les spcifications d'import... Pour importer des colonnes non
- 365 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
contigus d'une plage d'un fichier Excel, vous pouvez donc passer par l'enregistrement du fichier Excel dans un des formats texte (csv, txt, ...)
Lors d'export vers Excel, comme forcer Excel interprter les donnes comme du texte ?
Auteurs : Maxence HUBICHE , Dans Excel, prfixez les valeurs numriques d'un ' Cela convertira les donnes numriques en donnes texte.
Il faut que la librairie Microsoft DAO soit coche (dans un module faites Outils / Rfrences).
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Ne pas oublier de cocher dans le menu Outil/Rfrences, la bibliothque Microsoft Excel X Object Library (avec x = 8 pour Excel 97, x = 9 pour Excel 2000, x = 10 pour Excel XP, x = 11 pour excs 2003). Appel du fichier Excel :
Set appexcel = CreateObject("Excel.Application") appexcel.Visible = True Set wbexcel = appexcel.Workbooks.Open("Chemin du fichier Excel")
Remplissage dans Excel (Exemple partir d'une requte), sur des cellules bien prcises.
appexcel.cells(5, 2) = rst![Nomduchamps] appexcel.cells(5, 4) = rst![Nomduchamps]
- 366 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
appexcel.cells(5, 7) = rst![Nomduchamps]
Attention la cellule (5,2) correspond la cellule B5 d'excs. la fonction rst correspond un enregistrement RecordSet. lien : Crer un jeu de donnes (recordset)
Comment ouvrir un fichier vierge bas sur un modle et travailler sur cette session d'Excel, puis retourner dans Access
Auteurs : GAGNON ,
On Error Resume Next Set xlApp = GetObject(, "Excel.application") If Err = ERR_NOT_RUNNING Then Err.Clear Set xlApp = CreateObject("Excel.application") End If Set xlWkb = xlApp.Workbooks.Add("\\monDossier\MonFichier.xlt") 'chemin du fichier ' ' ici nous lanons les macros automatiques d'Excel mais vous pouvez mettre du code ' xlWkb.RunAutoMacros xlAutoOpen xlApp.Visible = True Set xlWkb = Nothing Set xlApp = Nothing
Public Function TestExcel() as boolean On error goto err Dim oTmp as Object Set oTmp=CreateObject("Excel.Application") Set oTmp=Nothing TestExcel=True err: End Function
En vrifiant le registre :
- 367 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Public Function TestExcel2() As Boolean Dim lngR As Long TestExcel2 = RegOpenKey(HKEY_LOCAL_MACHINE, "Software\Microsoft\Office\Excel", lngR) = 0 End Function
Ces deux fonctions renverront bien sr True si MS Excel est install sur le poste.
Comment enregistrer (ou non) les modifications apportes un classeur excel, sans demander l'utilisateur ?
Auteurs : Celia1303 , Soit xlBook un classeur :
xlBook.Close (True) 'on dit qu'on enregistre les modifs du fichiers xlBook.Close(False) 'pour ne pas enregistrer les modifs
Sub GetDAOExcelTabs(ByVal strPath As String) Dim db As DAO.Database Dim td As DAO.TableDef Set db = DAO.OpenDatabase(strPath, False, True, "Excel 8.0;") DoEvents For Each td In db.TableDefs Debug.Print "onglet : " & td.Name Next td db.Close Set td = Nothing Set db = Nothing End Sub
lien :
Comment modifier la valeur d'une cellule d'un classeur excel ferm en DAO ?
Comment modifier la valeur d'une cellule d'un classeur excel ferm en DAO ?
Auteurs : Cafeine , Il faut ajouter la rfrence : Microsoft DAO 3.x Object Library
Sub DAOUpdateExcelFile(ByVal ByVal ByVal ByVal ByVal strFullPath As String, _ strTab As String, _ RowIndex As Long, _ ColumnIndex As Long, _ setValue As Variant)
- 368 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dim rec As DAO.Recordset ' on ouvre le fichier excel en tant que base de donnes DAO Set db = OpenDatabase(strFullPath, False, False, "Excel 8.0;") DoEvents ' on ouvre un recordset sur un onglet comme on le ferait ' sur une table Access ' En DAO, les tables sont les onglets avec un $ final Set rec = db.OpenRecordset(strTab & "$", DAO.dbOpenDynaset) ' on se dplace sur l'enregistrement souhait rec.Move RowIndex - 1 ' on dite l'enregistrement rec.Edit rec.Fields(ColumnIndex - 1).Value = setValue rec.Update ' on sauvegarde ' fermez les objets rec.Close db.Close ' librez les objets ! Set db = Nothing Set rec = Nothing End Sub
Un exemple qui permet de passer la valeur de la cellule E12 de l'onglet "Feuil1" 999 :
DAOUpdateExcelFile "c:\temp\db.xls","Feuil1",12,5,999
lien :
- 369 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Outlook Comment envoyer un mail avec Outlook ?
Auteurs : Etienne Bar , Pour excuter ce code il faut la rfrence : Microsoft Outlook X.0 Object Library
Public Sub CreateEmail( _ Recipient As String, _ Subject As String, _ Body As String, _ Optional Attach As Variant) ' -------------------------Dim I As Integer Dim oEmail As Outlook.MailItem Dim appOutLook As Outlook.Application ' crer un nouvel item mail Set appOutLook = New Outlook.Application Set oEmail = appOutLook.CreateItem(olMailItem) ' les paramtres oEmail.To = Recipient oEmail.Subject = Subject oEmail.Body = Body If Not IsMissing(Attach) Then If TypeName(Attach) = "String" Then ' s'il y a des pices jointes oEmail.Attachments.Add Attach Else For I = 0 To UBound(Attach) - 1 oEmail.Attachments.Add Attach(I) Next End If End If ' envoie le message oEmail.Send ' dtruit les rfrences aux objets Set oEmail = Nothing Set appOutLook = Nothing End Sub
Et pour viter la demande d'Outlook qui indique qu'une application est en train d'envoyer un message, il y a une solution ici : http://www.express-soft.com/mailmate/clickyes.html
lien :
- 370 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
lien :
Private Declare Function MAPIDetails Lib "MAPI32.DLL" Alias "BMAPIDetails" _ (ByVal Session&, ByVal UIParam&, Recipient As MapiRecip, _ ByVal Flags&, ByVal Reserved&) As Long Private Declare Function MAPIResolveName Lib "MAPI32.DLL" Alias "BMAPIResolveName" _ (ByVal Session&, ByVal UIParam&, ByVal UserName$, _ ByVal Flags&, ByVal Reserved&, Recipient As MapiRecip) As Long Private Type MapiRecip Reserved As Long RecipClass As Long Name As String Address As String EIDSize As Long EntryID As String End Type Sub listemail() Dim X As Long, I As Long Dim out As Outlook.Application Dim a As Object, mapi As Object Dim ctrlists As Integer Dim info As MapiRecip Set out = New Outlook.Application Set mapi = out.GetNameSpace("MAPI") For ctrlists = 1 To mapi.AddressLists.Count Set a = mapi.AddressLists(ctrlists) For X = 1 To a.AddressEntries.Count I = MAPIResolveName(0, 0, a.AddressEntries(X), 0, 0, info) resultat.Text = resultat.Text & "Nom : " & info.Name & " Replace(info.Address, "SMTP:", "") & vbCrLf 'I = MAPIDetails(0, 0, info, 0, 0) 'pour editer les dtails. DoEvents Next DoEvents Next Set a = Nothing Set out = Nothing Set mapi = Nothing End Sub
- 371 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Comment ajouter des contacts dans la liste des contacts commune sous Outlook avec un serveur Exchange ?
Auteurs : Isa38 , Il suffit d'utiliser le code suivant aprs avoir ajouter une rfrence Microsoft Outlook votre projet.
myOlApp As New Outlook.Application myNameSpace As NameSpace myFolder, myContactFolder As MAPIFolder myNewContact As Outlook.ContactItem myOlApp = CreateObject("Outlook.Application") myNameSpace = myOlApp.GetNamespace("MAPI") myFolder = myNameSpace.Folders("Dossiers Communs") myContactFolder = myFolder.Folders("Contacts commmuns")
Set myNewContact = myContactFolder.Items.Add(olContactItem) With myNewContact .FirstName = "Astrix" .LastName = "Le Gaulois" .Email1Address="asterix@dolmen.fr" .Save End With Msgbox "Contact Ajout" myOlApp.Close Set myOlApp=Nothing
- 372 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
End Function
lien :
lien :
- 373 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Word Publipostage de donnes Access vers Word (en VBA)
Auteurs : Coin , Pour lancer un publipostage partir d'un bouton, il suffit de mettre le code suivant dans la proprit de click du bouton.
'Voici pour la dclaration du code: Dim wdapp As Word.Application 'Dmarrer Word Set wdapp = CreateObject("Word.application") With wdapp .Visible = True 'ouvrir le document .Documents.Open "Chemincompletdudocumentwordouvrir" 'Diriger le publipostage vers un nouveau document .ActiveDocument.MailMerge.Execute End With 'fermer et librer les objets Set wdapp = Nothing
Ne pas oublier de cocher dans le menu Outil/Rfrences, la bibliothque Microsoft Word X Object Library (avec x = 8 pour Excel 97, x = 9 pour Excel 2000, x = 10 pour excel XP, x = 11 pour excel 2003).
Sub imprimer() Dim oApp As New Word.Application oApp.Documents.Open "D:\test.doc" oApp.PrintOut oApp.Quit Set oApp = Nothing
- 374 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
End Sub
Comment ouvrir un document Word depuis VBA en dsactivant les macro qu'il contient ?
Auteurs : argyronet , Vous pouvez ajouter une proprit DisableAutoMacros comme ceci :
Sub OpenDocument() Dim appwd As Word.Application Dim strNomFichierWord As String strNomFichierWord = "C:\Un document.doc" Set appwd = CreateObject("Word.Application") With appwd .WordBasic.DisableAutoMacros 1 '0 pour activer .Visible = True .Documents.Open strNomFichierWord .Activate End With End Sub
Il faut toutefois que le niveau de scurit soit au maximum Moyen et que la macro dsactiver soit une AutoOpen().
- 375 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Access Comment ouvrir un formulaire ou un tat depuis une autre application Access ? (intgration d'applications)
Auteurs : Papy Turbo , Dans une application complexe comportant plusieurs modules applicatifs (plusieurs fichiers .mdb), vous souhaitez ouvrir, partir d'une application "Portail", les formulaires des autres applications : _ Il faut, dans chaque "Portail", crer une rfrence chacune des applications que le portail va appeler : dans VBA, menu Outils, Rfrences, Parcourir, choisir le type de fichier 'Base de donnes (*.mdb)', ... Conseil, ce propos : installe toutes les applications dans le mme dossier, sur les postes des utilisateurs. Tu viteras ainsi des erreurs de rfrence au moment de l'excution, aprs l'installation chez ton 'client'. _ Vous pourrez alors accder chacune des fonctions dclares comme publiques dans des modules standard, donc : _ dans chaque application, vous crez une fonction publique dans un module standard, qui ouvre les formulaires. Exemple de fonctions gnriques :
'Intgration d'applications : Public Function FormOpen(FormName As String, _ Optional View As AcFormView = acNormal, _ Optional FilterName As String, _ Optional WhereCondition As String, _ Optional DataMode As AcFormOpenDataMode = acFormPropertySettings, _ Optional WindowMode As AcWindowMode = acWindowNormal, _ Optional OpenArgs As String) 'Appele depuis le portail, pour ouvrir les formulaires de cette application DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs End Function Public Function ReportOpen(ReportName As String, _ Optional View As AcView = acNormal, _ Optional FilterName As String, _ Optional WhereCondition As String) 'Appele depuis le portail, pour ouvrir les tats de cette application DoCmd.OpenReport ReportName, View, FilterName, WhereCondition End Function
_ C'est une de ces fonctions que vous appellez depuis l'application "Portail", pour ouvrir un formulaire ou un tat de l'autre. Pour tre sr de ne pas se tromper d'application, faites prcder le nom de la fonction par le nom de projet (Menu VBA : Outils, Proprits de ApplicationXxx...) de l'application appele, comme dans :
ApplicationXxx.FormOpen "NomFormulaire", acDesign
Comment ouvrir par le code une autre base Access et ouvrir un de ses formulaires ?
Auteurs : Morsi , Dans un module :
Private Declare Function apiSetForegroundWindow Lib "user32" _ Alias "SetForegroundWindow" _ (ByVal hwnd As Long) _ As Long Private Declare Function apiShowWindow Lib "user32" _ Alias "ShowWindow" _ (ByVal hwnd As Long, _ ByVal nCmdShow As Long) _
- 376 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
As Long Private Const SW_MAXIMIZE = 3 Private Const SW_NORMAL = 1 Function fOpenRemoteForm(strMDB As String, _ strForm As String, _ Optional intView As Variant) _ As Boolean Dim objAccess As Access.Application Dim lngRet As Long On Error GoTo fOpenRemoteForm_Err If IsMissing(intView) Then intView = acViewNormal If Len(Dir(strMDB)) > 0 Then Set objAccess = New Access.Application With objAccess lngRet = apiSetForegroundWindow(.hWndAccessApp) lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE) 'le premier appel ShowWindow semble rester sans effet lngRet = apiShowWindow(.hWndAccessApp, SW_MAXIMIZE) .OpenCurrentDatabase strMDB .DoCmd.OpenForm strForm, intView Do While Len(.CurrentDb.Name) > 0 DoEvents Loop End With End If fOpenRemoteForm_Exit: On Error Resume Next objAccess.Quit Set objAccess = Nothing Exit Function fOpenRemoteForm_Err: fOpenRemoteForm = False Select Case err.Number Case 7866: 'mdb ouverte en mode exclusif MsgBox "The database you specified " & vbCrLf & strMDB & _ vbCrLf & "is currently open in exclusive mode. " & vbCrLf _ & vbCrLf & "Please reopen in shared mode and try again", _ vbExclamation + vbOKOnly, "Could not open database." Case 2102: 'ce formulaire n'existe pas MsgBox "The Form \'" & strForm & _ "\' doesn\'t exist in the Database " _ & vbCrLf & strMDB, _ vbExclamation + vbOKOnly, "Form not found" Case 7952: 'l'utilisateur a fermer la base de donnes fOpenRemoteForm = True Case Else: MsgBox "Error#: " & err.Number & vbCrLf & err.DESCRIPTION, _ vbCritical + vbOKOnly, "Runtime error" End Select Resume fOpenRemoteForm_Exit End Function
- 377 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Comment travailler sur une autre base de donnes Access protge par un mot de passe ?
Auteurs : Lo , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library Il est possible d'intgrer le mot de passe au code lors de l'ouverture de la base de donnes :
Dim db as Dao.DataBase Set db = DBEngine.OpenDatabase("C:\MaBase.mdb", False, False, ";pwd=password") 'Effectuer le traitement sur la base de donnes ici. db.Close
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Comment rcuprer le code d'une base Access non ouverte par VBA ?
Auteurs : Lou Pitchoun , Philippe JOCHMANS , jpcheck , Voici un code permettant d'accder au code d'une base Access non ouverte.
Function MajCodeVBA(PathBase As String) As Boolean Dim db_encours As DAO.Database Dim db_temporaire As DAO.Database Dim RS As DAO.Recordset Dim strSQL As String Dim Dim Dim Dim Dim 'On Dim Dim temp As VBComponent AppAccess As Access.Application Accmodule As Module i As Integer j As Integer Error GoTo fin oAccess As New Access.Application oDb As DAO.Database strSQL = "SELECT ancienne_valeur, nouvelle_valeur from T_CONVERSION_Queries;" Set RS = CurrentDb.OpenRecordset(strSQL) With oAccess .OpenCurrentDatabase (PathBase) Set oDb = .CurrentDb End With
For i = 1 To oAccess.VBE.VBProjects(1).VBComponents.Count For j = 1 To oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.CountOfLines Do Until RS.EOF Debug.Print oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.Lines(j, 1) oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.ReplaceLine j, Replace(oAccess.VBE.VBProjects(1).VBComponents.Item(i).CodeModule.Lines(j, 1), RS! ancienne_valeur, RS!nouvelle_valeur) RS.MoveNext
- 378 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Loop RS.MoveFirst Next j Next i RS.Close 'Set CurrentDb = db_encours Set oAccess = Nothing oDb.Close Set oDb = Nothing MajCodeVBA = True Exit Function 'fin: ' MajCodeVBA = False End Function
- 379 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Applications Office > Power Point Comment excuter une prsentation PowerPoint depuis Access ?
Auteurs : Morgan BILLY , Pour excuter une prsentation PowerPoint (PPS) on peut utiliser un objet OLE, l'avantage de ce principe est que la fentre PowerPoint se ferme toute seule la fin de la prsentation. 1 - Crer un cadre d'objet indpendant, dans la fentre qui s'ouvre, slectionner "A partir d'un fichier" 2 - Cliquez sur "Parcourir" afin de slectionner la prsentation. 3 - Dans les proprits du cadre, mettez l'option Visible False. 4 - Pour activer la prsentation, excutez ce code sur l'vnement de votre choix par exemple sur clic d'un bouton
MonCadreIndependant.Action = acOLEActivate
- 380 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Interaction avec d'autres applications > Trucs et Astuces Adresse d'une base Access attaches
Auteurs : 6psyk9 ,
Dim cheminBASE As String Dim fso As FileSystemObject Set fso = New FileSystemObject cheminBASE = fso.GetParentFolderName(Replace(CurrentDb.TableDefs("LITIGE").Connect, ";DATABASE=", "")) & "\"
Comment viter d'ouvrir X instances d'outlook lors de l'envoi de plusieurs mails par le code
Auteurs : norac , Vous devez crer la liste d'envoi avant d'envoyer le mail :
destinataire = "" do while (pas la fin de ma table) if mail = ok destinataire = destinataire + mail + "," end if loop DoCmd.SendObject acSendNoObject, , , , , destinataire
Shell """C:\Program Files\rep programme\7z.exe"" a -tzip ""C:\rep destination\nomarchive.zip"" ""C: \Program Files\rep programme\compte rendu\*"" -r"
lien : Comment compresser et dcompresser des fichiers ? lien : lien : Zipper un fichier Zipper un rpertoire
Comment vitez de saisir le login et le mot de passe de connexion lorsqu'on travaille sur une table SQL Server ?
Auteurs : Cafeine , Intressez-vous la valeur renvoye par la proprit .Connect de ta table lie. C'est en effet grce cette commande que l'ont peut passer, entre autre, le mot de passe. Pour le voir :
Print CurrentDB.TableDefs("NomDeMaTableLie").Connect
Dans cette exemple les informations s'afficheront dans la fentre d'excution (ctrl+g).
- 382 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Contrle Active X ajouter Pour lier le document PDF au contrle il vous faut passer par le VBA :
Me.AcroPDF0.LoadFile ("c:\temp\a.pdf")
- 383 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Dbogage et problmes divers Comment mettre un point d'arrt dans mon code ?
Auteurs : Team Access , Un point d'arrt dans le code permet de stopper son excution permettant ainsi de contrler son bon droulement. Pour ajouter un point d'arrt, placez le curseur sur la ligne concerne et appuyez sur la touche F9. Quand l'excution passe sur cette ligne, elle est interrompue. Vous pouvez alors dcider de continuer en mode pas-pas (F8) ou reprendre une excution normale (F5). Lorsque vous fermez VBA, les points d'arrt sont perdus. Pour utiliser des points d'arrt enregistrs avec le code, utilisez l'instruction VBA Stop. Exemple :
- 384 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
ou REGSVR32 C:\WINDOWS\SYSTEM32\monOCX.OCX Le produit est alors enregistr dans la base de registres et reconnu par le systme (sous NT il faut taper WINNT au lieu de WINDOWS)
Erreur de compilation, type dfini par l'utilisateur non dfini (RecordSet, DataBase ...).
Auteurs : Demco , Ce message d'erreur apparat sur :
Dim labase As DAO.Database
Il s'agit probablement du manque d'une dll. Dans le code VBA allez dans le menu "Outils/rfrences" et cochez Microsoft DAO 3.x Object library. lien : Erreur d'excution '13', Incompatiblit de type lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Vous lui demandez de renvoyer une valeur, mais vous ne lui dites pas o mettre ce rsultat. Il est plus correct d'crire :
Result = MaFonction(Paramtre1, Paramtre2)
En effet une fonction renvoit une valeur, il faut donc la stocker quelque part. Ici, le rsultat est stock dans la variable Result.
- 385 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 386 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Recochez les rfrences que vous devririez avoir (si vous en avez dcoch). Dcochez au minimum une rfrence et validez la bote de rfrences, avant d'aller la recocher...
Comment afficher la liste des proprits d'un objet dans l'diteur VBA au cours de la frappe (aprs un .) ?
Auteurs : Petogaz , Ceci est une option normalement active par dfaut. Pour l'activer, si elle ne fonctionne pas, allez dans VBA, puis dans le menu Outis, Option, cocher la case Complment automatique des instructions.
"Vous avez crit une sous-requte pouvant renvoyer plus d'un champ sans utiliser le mot rserv EXISTS dans la clause FROM de la requte principale."
Auteurs : Demco , Ce message d'erreur peut d'afficher lorsque vous travaillez avec des requtes imbriques. La rgle est que la requte sous-imbrique ne doit slectionner qu'un seul champ (celui sur lequel s'applique la condition).
L'diteur VBA ignore mes points d'arrts pendant l'excution de mon code
Auteurs : ARO , Vrifier que les touches spciales d'accs sont disponibles. Pour cela : Menu Outils/Dmarrage, la case utiliser les touches spciales d'accs doit tre coche.
- 387 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
DoCmd.RunCommand acCmdDebugWindow
Public Function NewTitre() As clsTitre Set NewTitre = New clsTitre End Function
Dans B :
Function test() Dim oTitre As clsTitre Set oTitre = Newtitre() End Function
lien :
Pourquoi l'diteur VBA est lent et signale des erreurs inexistantes lors de la saisie du code ?
Auteurs : =JBO= , Du code VBA est en cours d'excution. Ceci peut arriver quand une procdure vnementielle est excute, suite au dclenchement de l'vnement Timer d'un formulaire, ou encore s'il y un appel une procdure de l'application Access via OLE automation.
- 388 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dans l'environnement de dveloppement Visual Basic (IDE) la barre de titre affiche [Excution en cours] pour signaler que du code est en cours d'excution.
- 389 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Macros Pourquoi ne devrais-je pas utiliser les macros ?
Auteurs : Team Access , Les macros conviennent pour des actions basiques. Insertion d'enregistrements, suppression, ouverture de formulaire, etc. Leur utilisation devient vite limite du fait qu'il n'est pas possible d'effectuer de test ni de boucle. De plus, contrairement VBA, elles ne permettent pas d'utiliser des composants externes (rfrences) pourtant bien pratique pour interragir avec d'autres applications Office. La seule macro recommande est la macro nomme AutoExec qui lance une action au dmarrage de la base de donnes. D'ailleurs, bien souvent cette action sera d'excuter une fonction VBA.
Il est clair qu'il vaut mieux convertir une macro en VBA que d'utiliser cette mthode.
Abaisser le niveau de scurit du Runtime pour masquer les messages d'avertissement sur les macros.
Auteurs : Tofalu , Installer le service pack 8 du moteur Jet (disponible sur le site Microsoft) Puis dans la base des registres :
- 390 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sous la cl : [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines], crer ou modifier la valeur DWord nomme SandBoxMode avec la valeur 2 Sous la cl : [HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Access\Security], crer ou modifier la valeur DWord nomme Level avec la valeur 1
- 391 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > SQL et VBA Comment excuter/utiliser du SQL dans VBA ?
Auteurs : Demco , Voici deux liens. Le premier vous amnera aux RecordSet, qui servent exploiter les requtes de slection (SELECT). Le second vous expliquera comment excuter des requtes d'action (INSERT [insertion], UPDATE [mise jour], ...). lien : Crer un jeu de donnes (recordset) lien : Excuter une requte action (ajout, suppression ou mise jour)
Notes : -> Il est important d'crire "DAO." lors de la dclaration. -> Pensez galement cocher la rfrence Microsoft DAO 3.6 Object Library ( Dans un module faites Outils / rfrences ) ADO
Sub ADOOpenRecordset () Dim cnn As New ADODB.connection, rst As New ADODB.Recordset, fld As ADODB.Field ' Ouverture de la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=.\Comptoir.mdb;" ' Ouverture du Recordset en dfilement en avant, et en lecture seule rst.Open "SELECT * FROM Clients WHERE Rgion =\'WA\'", cnn, adOpenForwardOnly, adLockReadOnly ' Fermeture du Recordset rst.Close End Sub
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Parcourir un recordset
Auteurs : Cafeine , Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
- 392 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Ou
Do Until rst.Eof ' code rst.MoveNext Loop
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Nous rajoutons le DAO devant RecordSet afin d'viter les conflits entre bibliothques ayant certains objets portant le mme nom. En effet ici, les bibliothques DAO et ADODB possdent chacune un objet nomm "RecordSet". Ainsi, en crivant DAO.RecorsSet nous savons quelle bibliothque nous faisons appel. Lorsque la librairie n'est pas prcise, le type choisi par dfaut correspond celui de la premire librairie compatible rfrence dans le projet VBA (en partant du haut). Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library lien : Erreur de compilation, type dfini par l'utilisateur non dfini (RecordSet, DataBase ...). lien : lien : Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
Je n'arrive pas utiliser les mthodes FindFirst/FindLast/FindNext/ FindPrevious ou la mthode Seek ou la mthode Find avec mon recordset.
Auteurs : FRED.G , Pour un DAO.Recordset : Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library - Si le recordset est de type Table (dbOpenTable) : utilisez la mthode Seek. La mhode Seek requiert l'utilisation d'une table indexe (voir l'aide pour plus de d'infos).
- 393 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Lorsque vous utilisez la mthode OpenRecordset, si vous ne prcisez pas l'argument type, vba crera par dfaut un recordset de type Table si celui-ci est bas sur une table. - Pour les autres types de recordset : utilisez les mthodes FindFirst / FindLast / FindNext / FindPrevious. Pour un ADODB.Recordset : Pour excuter ce code il faut activer les rfrences : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library utilisez la mthode Find
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 394 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
On peut aussi imaginer rcuprer le nom de toutes les tables dans un tableau, et pour chaque table excuter la suppression. lien : Comment effacer tout le contenu d'une table ?
ADO Pour excuter ce code il faut activer les rfrences : Microsot ADO Ext 2.X for dll and security et Microsof ActiveX Data Object 2.X Library
Sub ADOExecuteBulkOpQuery() Dim cnn As New ADODB.connection, iAffected As Integer Dim sSQL As String cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=.\Comptoir.mdb;" sSQL = "Update CLIENTS Set PAYS = \'tats-Unis\' Where PAYS = \'USA\'" ' Excution de la requte cnn.Execute sSQL, iAffected, adExecuteNoRecords Debug.Print "Records Affected = " & iAffected cnn.Close End Sub
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 395 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Macro : Avertissements=Oui lien : Comment supprimer l'apparition des message d'avertissement pour toute l'application ?
Les messages d'avertissement n'apparaissent pas lorsque j'excute mes requtes action en vba.
Auteurs : FRED.G , Tout d'abord, vrifiez que l'option d'avertissement n'est pas dselectionne dans access : Menu Outils, Options, Modifier/Rechercher, Confirmer => Requte Action = Oui Ensuite, si vous utilisez la mthode Docmd.SetWarnings, assurez-vous que le dernier appel avant l'excution de votre requte active les messages. Enfin vous devez utiliser la mthode Docmd.RunSql car la mthode Execute d'un objet Database ne dclenche jamais les messages d'avertissement access.
Docmd.SetWarnings True Docmd.RunSql ""Update MATABLE Set MATABLE.[MONCHAMP] = ""DVP.COM"";"
Comment insrer dans une table une chane de caractres contenant des quotes (apostrophes) ?
Auteurs : Team Access , Il faut faire ceci :
Dim val As String val = "l\'exemple" CurrentDb.Execute "Insert Into TEST Values(""" & val & """)"
'Accde la base de donnes courante Set oDb = CurrentDb strReqName = "R1" 'Parcours toutes les requtes jusqu' la suppression For Each oQdf In oDb.QueryDefs With oQdf
- 396 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
If .Name = strReqName Then ' Une requte porte le nom recherch, donc nous la supprimons oDb.QueryDefs.Delete strReqName 'Quitte la boucle Exit For End If End With Next oQdf End Sub
Dim oDb As DAO.Database Dim oQdf As DAO.QueryDef Dim strReqName As String 'Nom de la requte supprimer
'Accde la base de donnes courante Set oDb = CurrentDb strReqName = "R2" 'Tente la suppression oDb.QueryDefs.Delete strReqName 'Affiche un message MsgBox "La requte " & strReqName & " a t supprime"
fin: 'Libre l'objet oDb Set oDb = Nothing Exit Sub err: 'Affiche un message suivant l'erreur Select Case err.Number Case 3265: MsgBox "La requte n'existe pas" Case Else: MsgBox "Erreur critique inconnue" End Select 'Termine le programme Resume fin End Sub
Comment savoir si une table existe ? Comment supprimer une table si elle existe ? Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 397 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Comment insrer des enregistrements de la table1 dans la table2, puis effacer ces enregistrements de la table1
Auteurs : Maxence HUBICHE , Test sous Access 2000 :
Sub Sauvegarder() 'Cration des 2 recordsets Dim myRS1 As New ADODB.Recordset Dim myRS2 As New ADODB.Recordset myRS1.Open "Table1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic myRS2.Open "Table2", CurrentProject.Connection, adOpenDynamic, adLockOptimistic 'Parcours du RS pour ajouter table1 tout en supprimant de table2 Do Until myRS2.EOF With myRS1 .AddNew Array("Champ1", "Champ2", "Champ3"), _ Array(myRS2("Alpha"), myRS2("Beta"), myRS2("Gamma")) .Update End With myRS2.Delete myRS2.MoveNext Loop 'Fermeture des recordsets myRS1.Close myRS2.Close Set myRS1 = Nothing Set myRS2 = Nothing End Sub
Comment faire une requte qui recherche les doublons dans une table ?
Auteurs : Cafeine ,
Select TABLE.CHAMP1, Sum(TABLE.CHAMP2) AS CHAMP2 Into NOUVELLETABLE From TABLE Group By TABLE.CHAMP1, Order By TABLE.CHAMP1,
- 398 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Comment se connecter en ADO une bdd pour excuter une requte action
Auteurs : Maxence HUBICHE ,
Dim cn as ADODB.Connection Dim cmd as ADODB.Command Dim insQuery as String Set cn = New ADODB.Connection Set cmd = New ADODB.Command cn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=D:\CS527\P1\bd1_archive.mdb;Persist Security Info=False;" & _ "Jet OLEDB:System database=c:\LePath\LeFichier.mdw" insQuery = "INSERT INTO purchasearchive VALUES (" & Chr(34) _ & PUID & Chr(34) & "," & Chr(34) _ & cardNum & Chr(34) & "," & Chr(34) _ & cardType & Chr(34) & "," & Chr(34) _ & productID & Chr(34) & ",#" _ & date & "#," _ & number & ");" cn.Open cmd.ActiveConnection=cn cmd.CommandText=insQuery cmd.Execute
Pour se connecter une bbs scurise au niveau utilisateur : dans la chane de connexion, ajoute ceci :
Password=LeMotDePasse;User ID=LeUser
Est-il plus performant de faire appel une requte enregistre (OpenQuery) ou bien de l'crire dans le code (VBA) et l'excuter avec DoCmd.RunSql
Auteurs : Maxence HUBICHE , Si la requte utilise des critres bass sur des champs indexs, alors mieux vaut passer par une requete et OpenQuery. Docmd.Runsql ne fait qu'excuter une instruction sql tandis que OpenQuery excute une requte enregistre (bnficiant de la technologie Rushmore). Cette technologie est notamment base sur l'usage des index pour la recherche d'un enregistrement. Ces index sont stocks dans une structure cache. Lorsque la requte s'excute, si les critres sont poss sur des champs indexs, la requte peut tre optimise car la recherche se fait sur la structure des index et non directement sur la table.
Est-il possible de crer une requte paramtre dont la valeur du paramtre proviendrait d'une variable ?
Auteurs : Lucifer , Nous avons une requte du type :
Parameters TON_PARAM Text;
- 399 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 400 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dans ce cas, prnom est une variable ou un contrle contenant la chane que nous cherchons.
Pour insrer des donnes, vaut-il mieux passer par un RecordSet ou par une requte de type INSERT ?
Auteurs : Cafeine , L'utilisation d'un Recordset rend le traitement plus rapide. Ce code de Cafine vous permettra de constatez vous mme la diffrence. Pour excuter ce code il faut activer la rfrence : Microsoft DAO 3.x Object Library
Function BenchmarkIt() Dim t0 As Single, t1 As Single Dim rst As DAO.Recordset Dim i As Long t0 = Timer For i = 1 To 5000 CurrentDb.Execute "INSERT INTO [tblINSERT] VALUES (" & Format(i, "000000") & ");" Next i t1 = Timer Debug.Print "Excution par INSERT : " & Format(t1 - t0, "0.000") & " s" t0 = Timer Set rst = CurrentDb.OpenRecordset("tblRecordset") For i = 1 To 5000 rst.AddNew rst!dum = Format(i, "000000") rst.Update Next i rst.Close set rst = Nothing t1 = Timer Debug.Print "Excution par RECORDSET : " & Format(t1 - t0, "0.000") & " s" End Function
Ce code donne : benchmarkit Excution par INSERT : 5,328 s Excution par RECORDSET : 0,141 s Il est possible que la diffrence soit due au fait que le recordset travaille avec la mmoire avant d'crire sur le disque, alors que n requtes provoquent n accs disque.
lien : lien :
Dfinition et manipulation de donnes avec DAO par Tofalu Comment dclarer une rfrence dans MS-Access ?
- 401 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dans le cadre Confirmer dcochez ce que bon vous semble. lien : Comment supprimer les messages d'alertes ?
- 402 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Utilisateurs Comment connatre le nom de l'utilisateur connect ?
Auteurs : Team Access , La proprit CurrentUser de l'objet Access.Application retourne le nom de l'utilisateur de la base de donnes. Exemple :
Msgbox Application.CurrentUser
lien : Gestion de la scurit - Niveau utilisateur lien : Comment connatre le nom de l'utilisateur courant ? lien : Rcuprer le nom d'un utilisateur Novel
lien : Comment obtenir le nom de l'utilisateur de Windows ? lien : Comment connatre le nom de l'utilisateur connect ? lien : Rcuprer le nom d'un utilisateur Novel
lien : Comment connatre le nom de l'utilisateur courant ? lien : Rcuprer le nom d'un utilisateur Novel
Type Patient
- 403 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
dtmdrc As Date
'date cration
strIPP As String 'numro d'IPP strNom As String 'Nom strNjf As String 'Nom de jeune fille strPre As String 'Prnom dtmDdn As Date 'Date de naissance
strGro As String 'Groupe sanguin strRhe As String 'Rhsus strAdr As String 'Adresse strCpo As String 'Code postal strVil As String 'Ville strTel As String 'Tlphone lngCjt As Long End Type 'numro de conjoint attach la fiche adminstrative
et on utilise :
udtPatient.dtmdrc = #12/10/1968# udtPatient.strIPP = "021584" udtPatient.strNom = "LA GAFFE" udtPatient.strNjf = "" udtPatient.strPre = "Gaston"
Si pas d'erreur l'utilisateur appartient au groupe administrateur. Si Err.Number = 3265 lment non trouv dans cette collection, l'utilisateur n'est pas administrateur. Exemple :
Dim esp As Workspace Dim strUser As String
- 404 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
On Error Resume Next strUser = Application.CurrentUser Set esp = DBEngine.Workspaces(0) 'L'instruction suivante provoque ou non une erreur strUser = esp.Users(strUser).Groups("admins").Name If Err.Number = 3265 Then 'lment non trouv dans cette collection, l'utilisateur n'est pas administrateur ElseIf Err.Number > 0 Then 'autre erreur ElseIf Err.Number = 0 Then 'l'utilisateur appartient au groupe 'administrateur' End If
Voici un exemple complet d'utilisation dans un Formulaire : Composition du Formulaire : 4 zones de textes indpendantes : une pour rcuprer l'utilisateur courant, 1 pour l'ancien mdp et 2 pour le nouveau mdp (choix+confirmation). 2 boutons : 1 valider et un annuler.
Private Sub CmdAnnuler_Click() On Error GoTo err DoCmd.Close err: - 405 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Select Case err Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub Private Sub CmdValider_Click() On Error GoTo err If Me.OldPwd = Me.NewPwd Then MsgBox "Le nouveau mot de passe est identique l'ancien." & vbLf & _ "Veuillez choisir un autre mot de passe.", vbOKOnly + vbExclamation, "Nouveau mot de passe invalide" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl Me.NewPwd Else If Me.NewPwd <> Me.ConfNewPwd Then MsgBox "Le mot de passe entr en confirmation" & vbLf & _ "ne correspond pas au nouveau mot de passe.", vbOKOnly + vbExclamation, "Erreur de confirmation" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl Me.NewPwd Else With DBEngine.Workspaces(0) .Users(.UserName).NewPassword Me.OldPwd, Me.NewPwd End With MsgBox "Le mot de passe a t chang.", vbOKOnly + vbInformation, "Confirmation" DoCmd.Close End If End If err: Select Case err Case 3033
MsgBox "L'ancien mot de passe saisi n'est pas valide.", vbOKOnly + vbExclamation, "Ancien mot de passe incorre Me.OldPwd = "" Me.NewPwd = "" Me.ConfNewPwd = "" DoCmd.GoToControl ("OldPwd") Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub Private Sub Form_Load() On Error GoTo err Me.UtilCourant = "Utilisateur courant : " & DBEngine.Workspaces(0).UserName err: Select Case err Case 0 Case Else MsgBox err.Description & vbLf & err.Source End Select End Sub
- 406 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
- 407 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Rfrences Comment lister les rfrences d'une base ou en ajouter ?
Auteurs : Cafeine , _ Lister les rfrences :
Function GetReferences() Dim Ref As Reference For Each Ref In Application.References Debug.Print "Rfrence : " & Ref.name & " - Version : " & Ref.Major & "." _ & Ref.Minor & " - FullPath : " & Ref.FullPath Next Ref End Function
_ Ajouter une rfrence : Pour ajouter une rfrence, utiliser la mthode AddFromFile de l'objet References.
References.AddFromFile("C:\Program Files\Common Files\System\ado\msado21.tlb ")
Comment rfrencer dynamiquement un activex, sans avoir besoin de faire : Menu Outils -> activeX controls ->Register etc. ?
Auteurs : shwin , Il est possible d'inscrire un fichier.ocx dans la base de registre par le code en utilisant la fonction Shell + regsvr32 / s lefichier.ocx
- 408 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dim strCheminRaccourci As String Dim oWsh As New WshShell Dim oRac As WshShortcut 'Rcupre le chemin du bureau et le concatne avec le nom du raccourci strCheminRaccourci = oWsh.SpecialFolders("Desktop") & "\Fichier.lnk" 'Cre un nouveau raccourci Set oRac = oWsh.CreateShortcut(strCheminRaccourci) 'Paramtre le raccourci With oRac 'Cible .TargetPath = Chr(34) & "C:\Program Files\Microsoft Office\Office\MSACCESS.EXE" & Chr(34) 'Argument .Arguments = "D:\mabase.mdb /wrkgrp d:\system.mdw" 'Style de fentre .WindowStyle = 4 'Chemin vers l'icne .IconLocation = "d:\monicone.ico" 'Dossier de travail .WorkingDirectory = "D:\" 'Enregistre le raccourci .Save End With 'Libre les objets Set oRac = Nothing Set oWsh = Nothing
- 409 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
La balise HTML BR sert revenir la ligne. Donc utilisez des balises html et vous ferez ce que bon vous semble :)
Ainsi la barre s'incrmente de 1 chaque passage. Donc par exemple, si vous importez des donnes, il est bon de s'informer sur le nombre d'enregistrements importer. Ainsi, le maximum de la barre sera le nombre total d'enregistrements. Et chaque enregistrement import on incrmente la valeur de la barre. (Astuce de Thogal ;) ). lien : Comment avoir un indicateur de progression d'un traitement quelconque ?
- 410 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
End Function
[*.MDE] Comment, depuis la base en cours, faire rfrence la Base MDE contenant le Code qui s'excute
Auteurs : Maxence HUBICHE , Imaginons une base Access MDA (Microsoft Add-In) dans laquelle on trouve un module VBA et une table. Si dans une procdure du module on souhaite ouvrir un recordset sur la table, il faut remplacer CurrentDB par CodeDB :
Set rs = CodeDB.Openrecordset()
En effet, lorsque la procdure du module de la base MDA sera appele depuis une base MDB ou MDE classique, Access cherchera la table dans la base de donnes active (MDB ou MDE) et la procdure chouera puisqu'il fallait chercher
- 411 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
dans la base MDA... CurrentDB fait rfrence la base de donnes Active, CodeDB fait rfrence la BDD contenant le Code qui s'excute.
lien : FAQ VB
ou
Application.CurrentProject.Path
Table, Query, Form, Report, Macro, Module... Exemple pour dterminer si la requte [Ma Requte] est masque:
Option Compare Database Type ParamTendance Pente As Double OrdonneeZero As Double End Type Public Function CalculTendance(DatDebut As Date, X As Double) As Double
Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim
Rst As New ADODB.Recordset MaRequete As String NbDonnee As Integer DonneeCumul() As Double i As Integer SumX As Double SumX2 As Double SumChiffre As Double SumChiffreX As Double Type_Param As ParamTendance
MaRequete = "SELECT T.DateJour, T.ChiffreDAffaire AS Chiffre" & vbNewLine & _ "FROM T_ChiffreDAffaire T" & vbNewLine & _ "WHERE T.DateJour>=#" & DatDebut & "#" & vbNewLine & _ "ORDER BY T.DateJour;" Rst.Open MaRequete, CurrentProject.Connection, adOpenStatic NbDonnee = Rst.RecordCount If NbDonnee = 0 Then MsgBox "Pas de donnes" CalculTendance = 0 Exit Function End If Rst.Close ReDim DonneeCumul(1 To NbDonnee)
- 413 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Rst.Open MaRequete, CurrentProject.Connection, adOpenDynamic Rst.MoveFirst 'Calcul le cumul du chiffre d'affaire pour chaque jour For i = 1 To NbDonnee If i = 1 Then DonneeCumul(1) = Rst("Chiffre") Else DonneeCumul(i) = Rst("Chiffre") + DonneeCumul(i - 1) End If Rst.MoveNext Next i Rst.Close SumX = 0 SumX2 = 0 SumChiffre = 0 SumChiffreX = 0
For i = 1 To NbDonnee SumX = SumX + i SumX2 = SumX2 + i ^ 2 SumChiffre = SumChiffre + DonneeCumul(i) SumChiffreX = SumChiffreX + DonneeCumul(i) * i Next i Type_Param.Pente = (NbDonnee * SumChiffreX - SumX * SumChiffre) / (NbDonnee * SumX2 - SumX ^ 2) Type_Param.OrdonneeZero = (SumX2 * SumChiffre - SumX * SumChiffreX) / (NbDonnee * SumX2 - SumX ^ 2) CalculTendance = Type_Param.Pente * X + Type_Param.OrdonneeZero End Function
Public Sub ChiffreTendance18jour() 'calcul la tendance au 18me jour Debug.Print CalculTendance(CDate("01/01/2004"), 18) End Sub
- 414 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Option Explicit Public Public Public Public LibName As String GroupName As String ItemName As String ItemValue As Long
Option Compare Database Option Explicit Dim TLApp As TLI.TLIApplication Dim TLInfo As TLI.TypeLibInfo Dim Coll_TLI As Collection Public Enum MethodType MethodConstant = TLI.InvokeKinds.INVOKE_CONST MethodEvent = TLI.InvokeKinds.INVOKE_EVENTFUNC MethodFunction = TLI.InvokeKinds.INVOKE_FUNC MethodGet = TLI.InvokeKinds.INVOKE_PROPERTYGET MethodLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT MethodSet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF MethodSub = 0 MethodAll = MethodConstant + MethodEvent + MethodFunction + MethodGet + MethodLet + MethodSet + MethodSub End Enum Public Enum MethodContext MethodContextNA = 0 MethodContextReturns = 1 MethodContextTakes = 2 MethodContextBoth = MethodContextReturns + MethodContextTakes End Enum Public Enum PropertyType PropertyGet = TLI.InvokeKinds.INVOKE_PROPERTYGET PropertyLet = TLI.InvokeKinds.INVOKE_PROPERTYPUT PropertySet = TLI.InvokeKinds.INVOKE_PROPERTYPUTREF PropetyBoth = PropertyGet + PropertyLet + PropertySet End Enum Public Enum LocalClassType LocalClassTypeCEnumValue = 1 LocalClassTypeCMethod LocalClassTypeCParam End Enum Public Function GetNameFromEnum(ByVal val As Long, _ ByVal strRefname As String, _ ByVal strEnumGroup As String) As String Dim lngI As Long Dim coll As Collection Dim EnumV As CEnumValue Set coll = EnumValues(strRefname, strEnumGroup) For lngI = 1 To coll.count Set EnumV = coll(lngI) If EnumV.ItemValue = val Then GetNameFromEnum = EnumV.ItemName End If
- 415 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Next lngI Set coll = Nothing Set EnumV = Nothing End Function
Public Function ListEnum(ByVal strRefname As String, _ ByVal strEnumGroup As String) Dim lngI As Long Dim coll As Collection Dim EnumV As CEnumValue Set coll = EnumValues(strRefname, strEnumGroup) For lngI = 1 To coll.count Set EnumV = coll(lngI) Debug.Print EnumV.LibName, EnumV.GroupName, EnumV.ItemName, EnumV.ItemValue Next lngI Set coll = Nothing Set EnumV = Nothing End Function
Private Function EnumValues(ByVal strRefname As String, _ ByVal strEnumGroup As String) As Collection Dim MemInfo As TLI.MemberInfo Dim TypInfo As TLI.TypeInfo Dim ConstInfo As TLI.ConstantInfo Dim coll As Collection Dim EVI As CEnumValue Init strRefname Set coll = New Collection Set ConstInfo = TLInfo.Constants.NamedItem(strEnumGroup) If Not ConstInfo Is Nothing Then For Each MemInfo In ConstInfo.Members Set EVI = New CEnumValue With EVI .LibName = TLInfo.Name .GroupName = ConstInfo.Name .ItemName = MemInfo.Name .ItemValue = MemInfo.Value End With coll.Add Item:=EVI Next MemInfo End If Set EnumValues = coll Set Set Set Set Set coll = Nothing EVI = Nothing ConstInfo = Nothing TypInfo = Nothing MemInfo = Nothing
End Function Private Sub Init(ByVal strRefname As String) Dim TL As TLI.TypeLibInfo Dim Ref As Reference
- 416 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
If TLApp Is Nothing Then Set TLApp = New TLI.TLIApplication End If Set TLInfo = TLApp.TypeLibInfoFromFile( _ Filename:=Application.References(strRefname).FullPath) Set Coll_TLI = New Collection For Each Ref In Application.References Set TL = New TLI.TypeLibInfo Set TL = TLApp.TypeLibInfoFromFile(Filename:=Ref.FullPath) Coll_TLI.Add Item:=TL, Key:=TL.Name Next Ref Set Ref = Nothing Set TL = Nothing End Sub
4. Exemple d'utilisation :
Le premier paramtre correspond la valeur recherche, le second la rfrence utiliser et le dernier l'numration.
On peut galement bien sr se passer de crer une mthode et d'crire directement la commande d'impression, suivant votre besoin. Ecrivez alors simplement dans un module de formulaire :
ShellExecute Me.hwnd, "print", "C:\monImage.jpg", "", "", 1
Ceci fonctionne pour tout type de document, texte ou image. Il faut cependant que vous ayez une application permettant d'ouvrir le fichier. Car l'API utilise l'application associ dans le panneau de configuration des dossiers de windows.
- 417 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Par exemple pour imprimer un document PDF, il faut avoir un logiciel capable de le lire les PDF d'install sur la machine. ShellExecute en a besoin, mme si son appel est transparent pour l'utilisateur. lien : lien : Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? Que faire quand l'API ShellExecute ne fonctionne pas ?
lien :
- 418 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Dim frm As AccessObject For Each frm In CurrentProject.AllForms MsgBox "Formulaire : " & frm.Name Next End Function
Autre mthode :
Sub FormsName() Dim MyDb As DAO.Database Dim MyDocument As DAO.Document Set MyDb = CurrentDb() With MyDb For Each MyDocument In .Containers("Forms").Documents Debug.Print "Nom: " & MyDocument.name Next End With End Sub
Ces deux mthodes fonctionnent sous toutes les versions D'Access lien : Comment rcuprer la date et l'heure de la dernire modification d'un Etat et d'un Formulaire
Comment valider un XML via un XSD en VB avec MSXML et sans .Net sous Windows ?
Auteurs : ckeromen , Lou Pitchoun , L'aide en ligne accompagnant XML Parser SDK donne des exemples dans plusieurs langages, ci-dessous un code permettant de valider le XML
Dim WshShell Set WshShell = CreateObject("WScript.Shell") Dim xmlDoc Set xmlDoc = CreateObject("Msxml2.DOMDocument.6.0") xmlDoc.async = False xmlDoc.validateOnParse = True Dim xmlSchema Set xmlSchema = CreateObject("Msxml2.DOMDocument.6.0") xmlSchema.async = False xmlSchema.validateOnParse = True xmlSchema.Load "C:\Users\Morgan\Downloads\voiture.xsd" Dim xsdCache Set xsdCache = CreateObject("Msxml2.XMLSchemaCache.6.0") xsdCache.Add "http://www.w3.org/1999/XMLSchema", xmlSchema Set xmlDoc.schemas = xsdCache xmlDoc.Load "C:\Users\Morgan\Downloads\voiture.xml" Set myErr = xmlDoc.parseError If (myErr <> 0) Then MsgBox ("Erreur : " & myErr.reason) Else MsgBox ("ok")
- 419 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
End If
lien : Comment lire un fichier XML ? lien : FAQ VB lien : Repousser les limites d'Access - rcuprer un fil RSS
vbKeyA
vbKeyBack vbKeyCapital vbKeyClear vbKeyControl vbKeyDelete vbKeyDown vbKeyEnd vbKeyEscape vbKeyExecute vbKeyHelp vbKeyHome vbKeyInsert vbKeyLeft vbKeyMenu vbKeyNumlock vbKeyPageDown vbKeyPageUp vbKeyPause vbKeyPrint vbKeyReturn vbKeyRight vbKeySelect vbKeyShift vbKeySnapshot vbKeySpace vbKeyTab vbKeyUp lien :
Excuter une procdure en appuyant sur les touches F1, F2, etc.
- 420 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Sommaire > VBA > Divers > Trucs et Astuces Batch qui lance une macro Access
Auteurs : ARO , L'extension pour excuter une macro est /x start /WAIT msaccess.exe O:\outils\automa~1\autonet.mdb /x Archivage >> %LogFil% 2>Archivage
Dim oFSO As New FileSystemObject Dim oDrv As Drive Dim strLettre As String strLettre = "Z" If oFSO.DriveExists(strLettre) Then Set oDrv = oFSO.GetDrive(strLettre) If oDrv.IsReady Then MsgBox "Le lecteur rseau est disponible" Else MsgBox "Ce lecteur rseau n'est pas configur sur votre machine" End If
- 422 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
LOCALE_ILANGUAGE = &H1 LOCALE_ILDATE = &H22 LOCALE_ILZERO = &H12 LOCALE_IMEASURE = &HD LOCALE_IMONLZERO = &H27 LOCALE_INEGCURR = &H1C LOCALE_INEGSEPBYSPACE = &H57 LOCALE_INEGSIGNPOSN = &H53 LOCALE_INEGSYMPRECEDES = &H56 LOCALE_IPOSSEPBYSPACE = &H55 LOCALE_IPOSSIGNPOSN = &H52 LOCALE_IPOSSYMPRECEDES = &H54 LOCALE_ITIME = &H23 LOCALE_ITLZERO = &H25 LOCALE_NOUSEROVERRIDE = &H80000000 LOCALE_S1159 = &H28 LOCALE_S2359 = &H29 LOCALE_SABBREVCTRYNAME = &H7 LOCALE_SABBREVDAYNAME1 = &H31 LOCALE_SABBREVDAYNAME2 = &H32 LOCALE_SABBREVDAYNAME3 = &H33 LOCALE_SABBREVDAYNAME4 = &H34 LOCALE_SABBREVDAYNAME5 = &H35 LOCALE_SABBREVDAYNAME6 = &H36 LOCALE_SABBREVDAYNAME7 = &H37 LOCALE_SABBREVLANGNAME = &H3 LOCALE_SABBREVMONTHNAME1 = &H44 LOCALE_SABBREVMONTHNAME10 = &H4D LOCALE_SABBREVMONTHNAME11 = &H4E LOCALE_SABBREVMONTHNAME12 = &H4F LOCALE_SABBREVMONTHNAME13 = &H100F LOCALE_SABBREVMONTHNAME2 = &H45 LOCALE_SABBREVMONTHNAME3 = &H46 LOCALE_SABBREVMONTHNAME4 = &H47 LOCALE_SABBREVMONTHNAME5 = &H48 LOCALE_SABBREVMONTHNAME6 = &H49 LOCALE_SABBREVMONTHNAME7 = &H4A LOCALE_SABBREVMONTHNAME8 = &H4B LOCALE_SABBREVMONTHNAME9 = &H4C LOCALE_SCOUNTRY = &H6 LOCALE_SCURRENCY = &H14 LOCALE_SDATE = &H1D LOCALE_SDAYNAME1 = &H2A LOCALE_SDAYNAME2 = &H2B LOCALE_SDAYNAME3 = &H2C LOCALE_SDAYNAME4 = &H2D LOCALE_SDAYNAME5 = &H2E LOCALE_SDAYNAME6 = &H2F LOCALE_SDAYNAME7 = &H30 LOCALE_SDECIMAL = &HE LOCALE_SENGCOUNTRY = &H1002 LOCALE_SENGLANGUAGE = &H1001 LOCALE_SGROUPING = &H10 LOCALE_SINTLSYMBOL = &H15 LOCALE_SLANGUAGE = &H2 LOCALE_SLIST = &HC LOCALE_SLONGDATE = &H20 LOCALE_SMONDECIMALSEP = &H16 LOCALE_SMONGROUPING = &H18 LOCALE_SMONTHNAME1 = &H38 LOCALE_SMONTHNAME10 = &H41 LOCALE_SMONTHNAME11 = &H42 LOCALE_SMONTHNAME12 = &H43 LOCALE_SMONTHNAME2 = &H39 LOCALE_SMONTHNAME3 = &H3A LOCALE_SMONTHNAME4 = &H3B LOCALE_SMONTHNAME5 = &H3C LOCALE_SMONTHNAME6 = &H3D
' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '
language id long date format ordering leading zeros for decimal 0 = metric, 1 = US leading zeros in month field negative currency mode mon sym sep by space from neg amt negative sign position mon sym precedes neg amt mon sym sep by space from pos amt positive sign position mon sym precedes pos amt time format specifier leading zeros in time field do not use user overrides AM designator PM designator abbreviated country name abbreviated name for Monday abbreviated name for Tuesday abbreviated name for Wednesday abbreviated name for Thursday abbreviated name for Friday abbreviated name for Saturday abbreviated name for Sunday abbreviated language name abbreviated name for January abbreviated name for October abbreviated name for November abbreviated name for December abbreviated name for February abbreviated name for March abbreviated name for April abbreviated name for May abbreviated name for June abbreviated name for July abbreviated name for August abbreviated name for September localized name of country local monetary symbol date separator long name for Monday long name for Tuesday long name for Wednesday long name for Thursday long name for Friday long name for Saturday long name for Sunday decimal separator English name of country English name of language digit grouping intl monetary symbol localized name of language list item separator long date format string monetary decimal separator monetary grouping long name for January long name for October long name for November long name for December long name for February long name for March long name for April long name for May long name for June
- 423 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
LOCALE_SMONTHNAME7 = &H3E LOCALE_SMONTHNAME8 = &H3F LOCALE_SMONTHNAME9 = &H40 LOCALE_SMONTHOUSANDSEP = &H17 LOCALE_SNATIVECTRYNAME = &H8 LOCALE_SNATIVEDIGITS = &H13 LOCALE_SNATIVELANGNAME = &H4 LOCALE_SNEGATIVESIGN = &H51 LOCALE_SPOSITIVESIGN = &H50 LOCALE_SSHORTDATE = &H1F LOCALE_STHOUSAND = &HF LOCALE_STIME = &H1E LOCALE_STIMEFORMAT = &H1003 End Enum
' ' ' ' ' ' ' ' ' ' ' ' '
long name for July long name for August long name for September monetary thousand separator native name of country native ascii 0-9 native name of language negative sign positive sign short date format string thousand separator time separator time format string
Function GetLocale(ByVal TypeLocal As LOCALES) As Variant Dim sBuffer As String Dim nRet As Long sBuffer = String(256, 0) nRet = GetLocaleInfo(LOCALE_USER_DEFAULT, TypeLocal, sBuffer, Len(sBuffer)) If nRet > 0 Then GetLocale = Left(sBuffer, nRet - 1) Else GetLocale = "" End If End Function
Pour rcuprer par exemple le style de date courte, il suffira de faire appel la fonction GetLocale, en lui passant le paramtre LOCALE_SSHORTDATE.
- 424 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Pour utiliser cette la constante msoFileTypeAllFiles, il faut rfrencer la librairie Micosoft Office x.x Object library.
Pour arrter :
ArreterMusique("d:\town.mid")
- 425 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Application.VBE.MainWindow.Visible = False
La fonction Is_Majuscule renvoie true si le clavier est en majuscule, false sinon. lien : Comment Activer/Dsactiver le Caps Lock du clavier
Option Explicit
- 426 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Type typTabResult items() As String * 1 End Type Function stringTab(ByVal str) As typTabResult Dim i As Integer For i = 1 To Len(str) ReDim Preserve stringTab.items(i) stringTab.items(i) = Mid(str, i, 1) Next i End Function
Function TestTab() Dim monTab As typTabResult Dim i As Integer monTab = stringTab("Hello World !") For i = 1 To UBound(monTab.items) Debug.Print i, monTab.items(i) Next i End Function
pour viter l'erreur si l'utilisateur slectionne le bouton Annuler il faut mettre une gestion d'erreur. voir on error dans l'aide : le plus simple mais pas le meilleur, annuler tous les messages d'erreur
sinon utilisez on error goto pour renvoyer les erreurs vers une tiquette et les traiter en fonction de la valeur de Err.Number
- 427 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/
Ce code permet d'afficher le clavier virtuel sur un clic droit dans une zone de texte
Private Sub LaTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ShortcutMenu = False If Button = acRightButton Then Shell "osk.exe" End If End Sub
Ce code ne fonctionne pas sous Access 2007, pour raliser la mme chose avec la version 2007 il vous faut utiliser les API.
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _ (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Private Sub LaTextBox_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Me.ShortcutMenu = False If Button = acRightButton Then ShellExecute Me.hwnd, "open", "osk.exe", "", "", 1 End If End Sub
lien : lien :
Comment ouvrir un fichier HTML, Word, PDF ou autre en utilisant l'excutable associ ? Que faire quand l'API ShellExecute ne fonctionne pas ?
- 428 Les sources prsentes sur cette pages sont libres de droits, et vous pouvez les utiliser votre convenance. Par contre la page de prsentation de ces sources constitue une oeuvre intellectuelle protge par les droits d'auteurs. Copyright 2009 Developpez LLC. Tout droits rservs Developpez LLC. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrts.
http://access.developpez.com/faq/