{"id":96,"date":"2025-06-14T16:18:51","date_gmt":"2025-06-14T16:18:51","guid":{"rendered":"https:\/\/loufab.alwaysdata.net\/blogaccess\/?p=96"},"modified":"2025-07-30T21:44:07","modified_gmt":"2025-07-30T21:44:07","slug":"access-champ-memo-tronque-lors-dun-export-excel","status":"publish","type":"post","link":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/14\/access-champ-memo-tronque-lors-dun-export-excel\/","title":{"rendered":"ACCESS : Champ m\u00e9mo tronqu\u00e9 lors d&rsquo;un Export Excel"},"content":{"rendered":"\n<p>Si vous avez un jour tent\u00e9 de lier&nbsp;un source de donn\u00e9es MS Access, requ\u00eate ou table,&nbsp;\u00e0 Excel, vous avez s\u00fbrement \u00e9t\u00e9 confront\u00e9 \u00e0 l&rsquo;interpr\u00e9tation al\u00e9atoire des champs m\u00e9mo.<\/p>\n\n\n\n<p>Al\u00e9atoire ? Pas tant que \u00e7a. Il faut savoir que pour r\u00e9aliser un export \u00e0 partir du menu DONNEES EXTERNES \/ Exporter Excel, MS Access ne se base non pas sur la structure du champ mais sur le contenu des premi\u00e8res lignes. Si dans ces premi\u00e8res lignes il rencontre un contenu de plus de 255 caract\u00e8res il consid\u00e8re ce champ comme m\u00e9mo (texte long)&#8230; et l\u00e0 tout va bien.<\/p>\n\n\n\n<p>Dans le cas contraire, il tronquera tout le reste \u00e0 255 caract\u00e8res qui est la limite du format Texte Court, anciennement Texte. Adieu vos 32 000 caract\u00e8res suivant !<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Info : Un champ Texte Long, anciennement&nbsp; M\u00e9mo, de la base de donn\u00e9es <br>Jet (Ms ACCESS) et d'une capacit\u00e9 de 65 535 caract\u00e8res exactement. <br>Une cellule MS EXCEL en contient tout au plus 32 767. <br>Il en manquera toujours un peu.<\/pre>\n\n\n\n<p>On peut donc oublier l&rsquo;export CSV ou depuis la commande MS Access, \u00e0 part faire un tri sur le nombre de caract\u00e8res de votre champ m\u00e9mo, si techniquement cela ne pose aucun probl\u00e8me fonctionnellement cela peut ne pas convenir. On ne sera jamais s\u00fbr d&rsquo;avoir la totalit\u00e9 du contenu.<\/p>\n\n\n\n<p>Heureusement, il existe un m\u00e9thode, certes un peu plus complexe mais \u00e9galement plus efficace. Il s&rsquo;agit de <strong>l&rsquo;automation<\/strong>. Autrement dit, piloter Excel depuis Access. Il existe une m\u00e9thode de copie de <strong>recordset <\/strong>disponible avec VBA Excel.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>CopyFromRecordset<\/strong><\/h4>\n\n\n\n<p>Cette m\u00e9thode est disponible dans Excel sans ajout de biblioth\u00e8que (R\u00e9f\u00e9rences) car il faut le savoir, Excel est un consommateur de <strong>Recordset <\/strong>\u00e0 ses heures.<\/p>\n\n\n\n<p>Voici le code comment\u00e9 :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"visualbasic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Function fInsertInSheet(ByVal strPath As String, ByVal strFeuille As String, rst As Recordset2) As Boolean \n'----------------------------------------------------------------- \n' Procedure : fInsertInSheet \n' Author : Fabrice CONSTANS (MVP) \n' Date : 21\/01\/2014 \n' Purpose : Ins\u00e8re un ou plusieurs enregistrements issu de RST \n' dans la feuille excel strFeuille du fichier strPath \n' utilise fFieldFormated() et ADODB \n' Parameters: strPath = chemin+nom du fichier Xls au format 12.0 \n' strFeuille = la feuille dans laquelle ins\u00e9rer l'enrg \n' rst = le recordset contenant les donn\u00e9es \u00e0 ins\u00e9rer \n' Return : Boolean renvoi vrai si insertion r\u00e9ussie \n'----------------------------------------------------------------- \n\n'Ecrit le recordset transmis dans la feuille indiqu\u00e9e \n\nDim strSql As String \nDim i As Long \nDim l As Long\n \n'Late Binding \nDim oExcel As Object ' Excel application \nDim oFeuille As Object ' la feuille \nDim oWork As Object ' le workbook \nDim boolStateDisplayAlerts As Boolean \nDim boolStateAskToUpdateLinks As Boolean \n\nOn Error GoTo Errsub \nSet oExcel = CreateObject(\"Excel.Application\") \noExcel.Visible = False \n'enregistre l'\u00e9tat \nboolStateDisplayAlerts = oExcel.DisplayAlerts \nboolStateAskToUpdateLinks = oExcel.AskToUpdateLinks \n'met en mode silentieux \noExcel.AskToUpdateLinks = False\noExcel.DisplayAlerts = False \n\nSet oWork = oExcel.Workbooks.Open(strPath) ' ouvre le classeur \nSet oFeuille = oWork.Sheets(strFeuille) ' active la feuille \n'xlByRows, xlPrevious l = 1 \n\n'insertion en ligne 1 \noFeuille.Cells(l, 1).CopyFromRecordset rst 'copie recordset \noExcel.Windows(1).Visible = True \noWork.Save 'on le sauve \n\n'remet \u00e0 l'\u00e9tat d'origine \noExcel.DisplayAlerts = boolStateDisplayAlerts \noExcel.AskToUpdateLinks = boolStateAskToUpdateLinks \noExcel.Visible = True \noExcel.Quit \n\nSet oFeuille = Nothing ' vide les objets xls \nSet oWork = Nothing \nSet oExcel = Nothing \nfInsertInSheet = True '\u00e7a c'est bien pass\u00e9 ! \n\nExitsub: \nOn Error GoTo 0 Exit Function \n\nErrsub: \nfInsertInSheet = False 'il y a un probl\u00e8me \n'mettre ici une gestion d'erreur ou un msg \nEnd Function<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>Voil\u00e0 un code pas si myst\u00e9rieux o\u00f9 l&rsquo;on ouvre un <strong>recordset <\/strong>cot\u00e9 Access pour le copier dans la feuille Excel. Plus d&rsquo;informations sur le <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/vba-early-ou-late-binding-quest-ce-que-cest-comment-choisir\/\" data-type=\"link\" data-id=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/13\/vba-early-ou-late-binding-quest-ce-que-cest-comment-choisir\/\" target=\"_blank\" rel=\"noreferrer noopener\">LateBinding<\/a>.<\/p>\n\n\n\n<p>Bonne utilisation !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Si vous avez un jour tent\u00e9 de lier&nbsp;un source de donn\u00e9es MS Access, requ\u00eate ou table,&nbsp;\u00e0 Excel, vous avez s\u00fbrement \u00e9t\u00e9 confront\u00e9 \u00e0 l&rsquo;interpr\u00e9tation al\u00e9atoire des champs m\u00e9mo. Al\u00e9atoire ? Pas tant que \u00e7a. Il faut savoir que pour r\u00e9aliser &hellip; <a href=\"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/2025\/06\/14\/access-champ-memo-tronque-lors-dun-export-excel\/\">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,13],"tags":[11,7,12],"class_list":["post-96","post","type-post","status-publish","format-standard","hentry","category-access","category-code-vba","category-excel","tag-access","tag-code-vba","tag-excel"],"_links":{"self":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/96","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=96"}],"version-history":[{"count":5,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/96\/revisions"}],"predecessor-version":[{"id":274,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/posts\/96\/revisions\/274"}],"wp:attachment":[{"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/media?parent=96"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/categories?post=96"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/loufab.alwaysdata.net\/blogaccess\/index.php\/wp-json\/wp\/v2\/tags?post=96"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}