{"id":12393,"date":"2024-04-27T17:34:36","date_gmt":"2024-04-27T15:34:36","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=12393"},"modified":"2024-04-27T17:43:13","modified_gmt":"2024-04-27T15:43:13","slug":"analyse-de-donnees-fec-provisoire-creer-des-numeros-decriture-avec-un-script-python","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=12393","title":{"rendered":"Analyse de donn\u00e9es &#038; FEC provisoire : cr\u00e9er des num\u00e9ros d&#8217;\u00e9criture avec un script Python"},"content":{"rendered":"<p style=\"text-align: justify;\">L&#8217;analyse de FEC est une activit\u00e9 qui peut \u00eatre r\u00e9alis\u00e9e en cours d&#8217;exercice comptable sans attendre la cl\u00f4ture. Or, certains logiciels de comptabilit\u00e9 produisent des <strong>FEC provisoires d\u00e9pourvus de num\u00e9ros d&#8217;\u00e9criture<\/strong> (champ <em>EcritureNum<\/em> vide ou \u00e0 0) tant que les <strong>\u00e9critures comptables ne sont pas valid\u00e9es<\/strong>. Cette position se tient dans la mesure o\u00f9 l&#8217;Administration fiscale consid\u00e8re qu&#8217;une \u00e9criture comptable n&#8217;acquiert ce statut d&#8217;\u00e9critures que lors de sa validation.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12394\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-EcritureNum-a-zero.png\" alt=\"FEC EcritureNum \u00e0 z\u00e9ro\" width=\"859\" height=\"338\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-EcritureNum-a-zero.png 859w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-EcritureNum-a-zero-300x118.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-EcritureNum-a-zero-768x302.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-EcritureNum-a-zero-730x287.png 730w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\" \/><\/p>\n<p style=\"text-align: justify;\">Toutefois, l&#8217;absence de num\u00e9ro d&#8217;\u00e9criture ne facilite pas l&#8217;analyse des donn\u00e9es comptables.<\/p>\n<p style=\"text-align: justify;\">C&#8217;est ce point que je vous propose de r\u00e9soudre \u00e0 l&#8217;aide d&#8217;un <strong>script Python<\/strong> qui va alimenter le champ <em>EcritureNum<\/em>.<\/p>\n<p style=\"text-align: justify;\">Pour calculer un num\u00e9ro d&#8217;\u00e9criture, il est n\u00e9cessaire de <strong>trier les \u00e9critures<\/strong> par date (champ <em>EcritureDate<\/em>) et par journal (<em>JournalCode<\/em>) puis de calculer un <strong>solde progressif<\/strong> (<em>SoldeProgressif<\/em>) ; un solde progressif nul signalant un changement d&#8217;\u00e9criture comptable. Cette m\u00e9thode n&#8217;est pas parfaite puisque si \u00e0 une m\u00eame date plusieurs \u00e9critures sont comptabilis\u00e9es dans le m\u00eame journal, ces \u00e9critures seront potentiellement identifi\u00e9es comme une \u00e9criture unique. Malgr\u00e9 cette imperfection, l&#8217;analyse des donn\u00e9es comptables sera facilit\u00e9e.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12395\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif.png\" alt=\"FEC solde progressif\" width=\"1260\" height=\"317\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif.png 1260w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif-300x75.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif-1024x258.png 1024w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif-768x193.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/FEC-solde-progressif-730x184.png 730w\" sizes=\"auto, (max-width: 1260px) 100vw, 1260px\" \/><\/p>\n<p style=\"text-align: justify;\">Fonctionnement du script :<\/p>\n<p style=\"text-align: justify;\">L&#8217;utilisateur est invit\u00e9 \u00e0 s\u00e9lectionner un FEC :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12396\" src=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/Python-FEC-PROVISOIRE.png\" alt=\"Python FEC PROVISOIRE\" width=\"768\" height=\"426\" srcset=\"https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/Python-FEC-PROVISOIRE.png 768w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/Python-FEC-PROVISOIRE-300x166.png 300w, https:\/\/www.auditsi.eu\/wp-content\/uploads\/2024\/04\/Python-FEC-PROVISOIRE-730x405.png 730w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p style=\"text-align: justify;\">La fonction <em>filedialog.askopenfilename<\/em> renvoie le nom du FEC s\u00e9lectionn\u00e9 par l&#8217;utilisateur.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def ouvrir_fichier():\r\n    # Ouvrir une bo\u00eete de dialogue pour s\u00e9lectionner le fichier FEC\r\n    chemin_fichier = filedialog.askopenfilename(filetypes=[(\"Fichiers FEC\", \"*.txt\")])\r\n    if chemin_fichier:\r\n        # Effectuer le tri sur les champs EcritureDate et JournalCode\r\n        lignes_triees = trier_fichier(chemin_fichier)\r\n\r\n        # Convertir les champs Debit et Credit en float et calculer le champ Solde\r\n        lignes_converties = convertir_champs_en_float(lignes_triees)\r\n\r\n        # Calculer le champ SoldeProgressif\r\n        calculer_solde_progressif(lignes_converties)\r\n\r\n        # Variable compteur utilis\u00e9e pour num\u00e9roter les \u00e9critures initialis\u00e9e \u00e0 1\r\n        compteur = 1\r\n\r\n        # Modifier les champs EcritureNum et incr\u00e9menter le compteur si SoldeProgressif est nul\r\n        modifier_champs_ecriturenum(lignes_converties, compteur)\r\n\r\n        # Enregistrer le fichier FEC sous un nouveau nom avec le pr\u00e9fixe NouveauEcrNum_\r\n        enregistrer_nouveau_fichier(chemin_fichier, lignes_converties)<\/pre>\n<p style=\"text-align: justify;\">Le script trie les \u00e9critures comptables date d&#8217;\u00e9criture (<em>EcritureDate<\/em>) et code journal (<em>JournalCode<\/em>) :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def trier_fichier(chemin_fichier):\r\n    separateur = determiner_separateur(chemin_fichier)\r\n    with open(chemin_fichier, 'r', encoding='utf-8') as fichier:\r\n        reader = csv.DictReader(fichier, delimiter=separateur)\r\n        lignes_triees = sorted(reader, key=lambda x: (x['EcritureDate'], x['JournalCode']))\r\n    return lignes_triees<\/pre>\n<p style=\"text-align: justify;\">Les champs <em>Debit<\/em> et <em>Credit<\/em> sont convertis en nombres puis un nouveau champ intitul\u00e9 <em>Solde<\/em> est cr\u00e9\u00e9 en soustrayant les champs <em>Debit<\/em> et <em>Credit<\/em> :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def convertir_champs_en_float(lignes_triees):\r\n    lignes_converties = []\r\n    for ligne in lignes_triees:\r\n        ligne['Debit'] = float(ligne['Debit'].replace(',', '.'))\r\n        ligne['Credit'] = float(ligne['Credit'].replace(',', '.'))\r\n        ligne['Solde'] = ligne['Debit'] - ligne['Credit']\r\n        lignes_converties.append(ligne)\r\n    return lignes_converties\r\n<\/pre>\n<p style=\"text-align: justify;\">Ensuite, le script calcule le solde progressif (arrondi \u00e0 deux d\u00e9cimales) :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">def calculer_solde_progressif(lignes_converties):\r\n    solde_progressif = 0\r\n    for ligne in lignes_converties:\r\n        solde_progressif += ligne['Solde']\r\n        ligne['SoldeProgressif'] = round(solde_progressif, 2)  # Arrondi \u00e0 deux d\u00e9cimales<\/pre>\n<p style=\"text-align: justify;\">Enfin, le script met \u00e0 jour le champ <em>EcritureNum<\/em> avec la valeur de la variable <em>compteur<\/em> :<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\">def modifier_champs_ecriturenum(lignes_converties, compteur):\r\n    for ligne in lignes_converties:\r\n        ligne['EcritureNum'] = compteur\r\n        if ligne['SoldeProgressif'] == 0:\r\n            compteur += 1<\/pre>\n<p style=\"text-align: justify;\">Le FEC est enregistr\u00e9 avec un nouveau nom et comporte deux nouveaux champs <em>Solde<\/em> et <em>SoldeProgressif<\/em>. Le FEC produit par ce script ne peut en aucun cas \u00eatre communiqu\u00e9 \u00e0 l&#8217;Administration fiscale dans le cadre d&#8217;une v\u00e9rification de comptabilit\u00e9.<\/p>\n<p style=\"text-align: justify;\">L&#8217;ex\u00e9cutable du script est <strong>t\u00e9l\u00e9chargeable ci-apr\u00e8s<\/strong>. Il est stock\u00e9 sous la forme d&#8217;un fichier compress\u00e9 (*.zip). Avant toute utilisation, il faut le d\u00e9compresser sur le PC. Ce programme ne n\u00e9cessite aucune installation. Pour le lancer, il suffit de double-cliquer dessus.<\/p>\n<p style=\"text-align: justify;\">___<\/p>\n<p style=\"text-align: justify;\">Pour approfondir le sujet : <a href=\"https:\/\/www.auditsi.eu\/?tag=fichier-des-ecritures-comptables\">Fichier des Ecritures Comptables<\/a> \/ <a href=\"https:\/\/www.auditsi.eu\/?p=12059\">se former \u00e0 la programmation en langage Python pour automatiser ses t\u00e2ches<\/a><\/p>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\n<div id=\"sconnect-is-installed\" style=\"display: none;\">2.13.0.0<\/div>\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=\"Analyse%20de%20donn%C3%A9es%20%26%20FEC%20provisoire%20%3A%20cr%C3%A9er%20des%20num%C3%A9ros%20d%27%C3%A9criture%20avec%20un%20script%20Python\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>L&#8217;analyse de FEC est une activit\u00e9 qui peut \u00eatre r\u00e9alis\u00e9e en cours d&#8217;exercice comptable sans attendre la cl\u00f4ture. Or, certains logiciels de comptabilit\u00e9 produisent des FEC provisoires d\u00e9pourvus de num\u00e9ros d&#8217;\u00e9criture (champ EcritureNum vide ou \u00e0 0) tant que les \u00e9critures comptables ne sont pas valid\u00e9es. Cette position se tient dans la mesure o\u00f9 l&#8217;Administration &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=12393\" class=\"more-link\">Continue reading &lsquo;Analyse de donn\u00e9es &#038; FEC provisoire : cr\u00e9er des num\u00e9ros d&#8217;\u00e9criture avec un script Python&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=\"Analyse%20de%20donn%C3%A9es%20%26%20FEC%20provisoire%20%3A%20cr%C3%A9er%20des%20num%C3%A9ros%20d%27%C3%A9criture%20avec%20un%20script%20Python\";<\/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":[50,3087],"tags":[166,1210,3088,441,2317,1137],"class_list":["post-12393","post","type-post","status-publish","format-standard","hentry","category-audit-de-donnees","category-python","tag-analyse-de-donnees","tag-fec","tag-python","tag-round","tag-solde-progressif","tag-tri"],"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\/12393","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=12393"}],"version-history":[{"count":4,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/12393\/revisions"}],"predecessor-version":[{"id":12400,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/12393\/revisions\/12400"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12393"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}