{"id":7492,"date":"2018-08-04T00:05:48","date_gmt":"2018-08-03T22:05:48","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=7492"},"modified":"2018-08-04T00:05:48","modified_gmt":"2018-08-03T22:05:48","slug":"ms-access-vba-tester-lexistence-dun-objet-requete-table","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=7492","title":{"rendered":"MS\/ACCESS, VBA : tester l\u2019existence d\u2019un objet (requ\u00eate, table\u2026)"},"content":{"rendered":"<p style=\"text-align: justify;\">Il n&#8217;est pas possible de cr\u00e9er deux objets portant le m\u00eame nom. Aussi avant de cr\u00e9er un objet, il est pr\u00e9f\u00e9rable de s&#8217;assurer qu&#8217;il n&#8217;existe pas d\u00e9j\u00e0.&nbsp;ACCESS g\u00e8re diff\u00e9rentes natures d&#8217;objets : requ\u00eate (<em>Query<\/em>), table (<em>Table<\/em>), formulaire (<em>Form<\/em>)&#8230;&nbsp;Le cas qui va \u00eatre trait\u00e9 ici est celui des requ\u00eates. L&#8217;exemple de code fourni ci-apr\u00e8s est ais\u00e9ment adaptable \u00e0 d&#8217;autres objets. Pour ce faire, il suffit, par exemple, de remplacer <em>Query<\/em> par <em>Table<\/em> pour tester l&#8217;existence d&#8217;une table.<\/p>\n<p style=\"text-align: justify;\">En synth\u00e8se, le code source de la fonction ReqExiste ci-apr\u00e8s renvoie \u00ab&nbsp;True&nbsp;\u00bb (vrai) si l\u2019objet test\u00e9 existe&nbsp;ou \u00ab&nbsp;False&nbsp;\u00bb (faux) dans le cas contraire.<\/p>\n<pre class=\"lang:vb decode:true \">'Cette fonction teste l\u2019existence d\u2019une requ\u00eate nomm\u00e9e dans la variable strReq contenue dans la base de donn\u00e9es nomm\u00e9e db\r\nFunction ReqExiste(db As DAO.Database, ByVal strReq As String) As Boolean\r\n  Dim req As DAO.QueryDef\r\n  'Parcourt toutes les requ\u00eates de la base \u00ab db \u00bb\r\n  For Each req In db.QueryDefs\r\n    If req.Name = strReq Then\r\n      'La requ\u00eate a \u00e9t\u00e9 trouv\u00e9e...\r\n      ReqExiste = True\r\n      Exit Function\r\n    End If\r\n  Next\r\n  'La requ\u00eate n'existe pas...\r\n  ReqExiste = False\r\nEnd Function<\/pre>\n<p>Quelques explications sur le code source :<\/p>\n<p>La <a href=\"https:\/\/www.auditsi.eu\/?p=1696\">boucle compteur<\/a> <em>For Each&#8230; In&#8230; Next<\/em> scrute toutes les requ\u00eates (<em>QueryDefs<\/em>) de la base de donn\u00e9es &#8220;db&#8221;.<\/p>\n<p style=\"text-align: justify;\">Le nom de chacune des requ\u00eates (<em>req.Name<\/em>) est compar\u00e9 au nom \u00e0 tester (<em>strReq<\/em>) \u00e0 l&#8217;aide du <a href=\"https:\/\/www.auditsi.eu\/?p=1797\">test conditionnel If&#8230; Then&#8230; Else<\/a>. Si le nom correspond (<em>=<\/em>), la fonction renvoie <em>True<\/em> (la requ\u00eate existe) et le code s&#8217;arr\u00eate (<em>Exit Function<\/em>) ; dans le cas contraire, le code passe \u00e0 la requ\u00eate suivante (<em>Next<\/em>).<\/p>\n<p>Si toutes les requ\u00eates ont \u00e9t\u00e9 pass\u00e9es en revue et qu&#8217;aucune ne correspond au nom recherch\u00e9, la fonction renvoie <em>False<\/em>.<\/p>\n<p>Approfondir le sujet : <a href=\"https:\/\/www.auditsi.eu\/?tag=access\">Ma\u00eetriser ACCESS<\/a> \/&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?cat=1569\">Ma\u00eetriser le langage VBA<\/a> \/&nbsp;<a href=\"https:\/\/www.auditsi.eu\/?cat=1820\">Ma\u00eetriser le langage de requ\u00eate SQL<\/a>&nbsp;\/ <a href=\"https:\/\/www.auditsi.eu\/?cat=50\">Analyse de donn\u00e9es<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img decoding=\"async\" src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"MS%2FACCESS%2C%20VBA%20%3A%20tester%20l%E2%80%99existence%20d%E2%80%99un%20objet%20%28requ%C3%AAte%2C%20table%E2%80%A6%29\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Il n&#8217;est pas possible de cr\u00e9er deux objets portant le m\u00eame nom. Aussi avant de cr\u00e9er un objet, il est pr\u00e9f\u00e9rable de s&#8217;assurer qu&#8217;il n&#8217;existe pas d\u00e9j\u00e0.&nbsp;ACCESS g\u00e8re diff\u00e9rentes natures d&#8217;objets : requ\u00eate (Query), table (Table), formulaire (Form)&#8230;&nbsp;Le cas qui va \u00eatre trait\u00e9 ici est celui des requ\u00eates. L&#8217;exemple de code fourni ci-apr\u00e8s est ais\u00e9ment &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=7492\" class=\"more-link\">Continue reading &lsquo;MS\/ACCESS, VBA : tester l\u2019existence d\u2019un objet (requ\u00eate, table\u2026)&rsquo; &raquo;<\/a><\/p>\n<div style=\"padding-bottom:20px; padding-top:10px;\" class=\"hupso-share-buttons\"><!-- Hupso Share Buttons - https:\/\/www.hupso.com\/share\/ --><a class=\"hupso_counters\" href=\"https:\/\/www.hupso.com\/share\/\"><img src=\"https:\/\/static.hupso.com\/share\/buttons\/lang\/fr\/share-small.png\" style=\"border:0px; padding-top:2px; float:left;\" alt=\"Share Button\"\/><\/a><script type=\"text\/javascript\">var hupso_services_c=new Array(\"twitter\",\"facebook_like\",\"facebook_send\",\"email\",\"print\",\"linkedin\");var hupso_counters_lang = \"fr_FR\";var hupso_image_folder_url = \"\";var hupso_twitter_via=\"BenoitRiviere14\";var hupso_url_c=\"\";var hupso_title_c=\"MS%2FACCESS%2C%20VBA%20%3A%20tester%20l%E2%80%99existence%20d%E2%80%99un%20objet%20%28requ%C3%AAte%2C%20table%E2%80%A6%29\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"ngg_post_thumbnail":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[1569,215],"tags":[60,1916,1917,1918,1919,1920,236,1641],"class_list":["post-7492","post","type-post","status-publish","format-standard","hentry","category-programmer-en-vba","category-vba","tag-access","tag-dao","tag-dao-database","tag-dao-querydef","tag-dao-tabledef","tag-exit-function","tag-for-each-in-next","tag-vba"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/7492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7492"}],"version-history":[{"count":4,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/7492\/revisions"}],"predecessor-version":[{"id":7497,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/7492\/revisions\/7497"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}