{"id":61,"date":"2025-06-13T17:30:37","date_gmt":"2025-06-13T17:30:37","guid":{"rendered":"https:\/\/loufab.alwaysdata.net\/blogaccess\/?p=61"},"modified":"2025-06-13T17:30:37","modified_gmt":"2025-06-13T17:30:37","slug":"vba-connaitre-le-nom-du-formulaire-etat-et-le-controle-actif","status":"publish","type":"post","link":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/vba-connaitre-le-nom-du-formulaire-etat-et-le-controle-actif\/","title":{"rendered":"VBA : Conna\u00eetre le nom du formulaire\/\u00e9tat et le contr\u00f4le actif"},"content":{"rendered":"\n<p>Dans la rubrique d\u2019assistance \u00e0 la maintenance d\u2019application voici un bout de code \u00e0 coupler \u00e0 une macro&nbsp; <strong>AutoKeys<\/strong>.<\/p>\n\n\n\n<p>Lorsque vous devez intervenir sur une vieille application ou une application volumineuse, ce code vous rendra le service de ne pas avoir \u00e0 chercher le formulaire et le contr\u00f4le actif parmi les multitudes de biblioth\u00e8ques et de formulaires ou \u00e9tats. Cerise sur le g\u00e2teau si vous ouvrez l\u2019\u00e9diteur <strong>VBA <\/strong>vous serez automatiquement positionn\u00e9 sur son module.<\/p>\n\n\n\n<p>Son fonctionnement est simple ; Il rep\u00e8re le nom retourn\u00e9 par <strong>Screen.Activeform<\/strong> et <strong>Screen. Activecontrole<\/strong> et essaye de trouver le code dans le <strong>VBE components<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Function msgNameBase() \n' Auteur : Fabrice CONSTANS MVP \n' Description : renvoie le nom : de l'objet, de la base pour l'objet \n' actif \nOn Error GoTo Err_msgNomBase \n\nDim strNomBase As String \nDim sCurfrm As String, sExt As String \nDim sCurControle As String \nDim i As Integer \n\nsExt = \"form_\" ' c'est un formulaire par d\u00e9faut. \n' recup\u00e8re le nom du forms, si c'est un report ' il part en erreur (voir traitement des erreurs) \n\nsCurfrm = Screen.ActiveForm.Name \nsCurControle = Screen.ActiveControl.Name \n\n' si le nom n'existe pas (voir erreur) \nCurfrm = Application.VBE.VBProjects(i).VBComponents(sExt &amp; _ sCurfrm).Name \nGoTo Exit_msgNomBase Err_msgNomBase: \n\n' TRAITEMENT POUR UN ETAT. \nIf Err = 2475 Then \n   ' ce n'est pas un form (2476 ce n'est pas un report) \n   ' on capture le nom du report sCurfrm = Screen.ActiveReport.Name \n   ' le prefixe pour un report  \n   sExt = \"Report_\" Resume Next \n\n   ' on continue \nElseIf Err = 9 Then \n   'Erreur \n   i = i + 1 \n   If i > Application.VBE.VBProjects.Count Then \n      MsgBox \"Impossible de trouver \" &amp; sCurfrm &amp; _ \" dans l'application.\" \n      Exit Function \n   End If \n\n   Resume \nElseIf Err > 0 Then \n   MsgBox \"Erreur non pr\u00e9vue :\" &amp; Err.Number &amp; \"---\" &amp; _ Err.Description \n   Exit Function \nEnd If \nExit_msgNomBase: \nMsgBox IIf(sExt = \"form_\", \"Forms\", \"Report\") &amp; \" : \" &amp; _ sCurfrm &amp; vbCrLf &amp; _ \"Controle : \" &amp; sCurControle &amp; vbCrLf &amp; _ \"Base : \" &amp; Application.VBE.VBProjects(i).Name \n\nEnd Function<\/code><\/pre>\n\n\n\n<p>L\u2019int\u00e9r\u00eat est \u00e9videmment de pouvoir le d\u00e9clencher n\u2019importe quand dans l\u2019IHM, c\u2019est pour cela qu\u2019il faut le coupler \u00e0 une macro <strong>AutoKeys<\/strong>.<\/p>\n\n\n\n<p>Bonne utilisation !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans la rubrique d\u2019assistance \u00e0 la maintenance d\u2019application voici un bout de code \u00e0 coupler \u00e0 une macro&nbsp; AutoKeys. Lorsque vous devez intervenir sur une vieille application ou une application volumineuse, ce code vous rendra le service de ne pas &hellip; <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/vba-connaitre-le-nom-du-formulaire-etat-et-le-controle-actif\/\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,6],"tags":[11,7],"class_list":["post-61","post","type-post","status-publish","format-standard","hentry","category-access","category-code-vba","tag-access","tag-code-vba"],"_links":{"self":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/61","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/comments?post=61"}],"version-history":[{"count":1,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/61\/revisions"}],"predecessor-version":[{"id":62,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/61\/revisions\/62"}],"wp:attachment":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/media?parent=61"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/categories?post=61"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/tags?post=61"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}