{"id":7555,"date":"2018-08-19T14:46:23","date_gmt":"2018-08-19T12:46:23","guid":{"rendered":"https:\/\/www.auditsi.eu\/?p=7555"},"modified":"2018-08-19T14:46:23","modified_gmt":"2018-08-19T12:46:23","slug":"resoudre-des-problemes-complexes-a-laide-la-programmation-informatique","status":"publish","type":"post","link":"https:\/\/www.auditsi.eu\/?p=7555","title":{"rendered":"R\u00e9soudre des probl\u00e8mes complexes \u00e0 l&#8217;aide la programmation informatique"},"content":{"rendered":"<p style=\"text-align: justify;\">Dans notre quotidien professionnel, nous devons fr\u00e9quemment r\u00e9aliser des t\u00e2ches r\u00e9p\u00e9titives avec des desseins plus ou moins complexes. Par exemple, dans le cadre d&#8217;un reporting mensuel, collecter les balances d&#8217;un groupe de soci\u00e9t\u00e9s, les ouvrir, les mettre en forme pour enfin les analyser. Prises isol\u00e9ment, ces t\u00e2ches ne prennent pas beaucoup de temps mais r\u00e9p\u00e9t\u00e9es, elles sont non seulement chronophages mais \u00e9galement sans aucune valeur ajout\u00e9e. L&#8217;<a href=\"https:\/\/www.auditsi.eu\/?tag=automatisation\">automatisation<\/a> de ces t\u00e2ches sera utilement mise en \u0153uvre afin de focaliser le maximum de temps homme sur la phase d&#8217;analyse de donn\u00e9es, de loin la plus valorisante.<\/p>\n<pre class=\"lang:vb decode:true\">Sub AfficheMatrice()\r\n  Dim d\u00e9tenteur As Integer\r\n  Dim d\u00e9tenu As Integer\r\n \r\n  classeurAppli.Sheets.Add after:=Worksheets(Worksheets.Count)\r\n  With classeurAppli.Sheets(classeurAppli.Sheets.Count)\r\n    .Cells(1, 1).Value = \"Matrice I-M\"\r\n    For d\u00e9tenteur = 1 To NbEntit\u00e9s\r\n      For d\u00e9tenu = 1 To NbEntit\u00e9s\r\n        If d\u00e9tenteur = 1 Then\r\n          .Cells(1, d\u00e9tenu + 1).Value = Entit\u00e9s(d\u00e9tenu)\r\n          .Cells(3 + NbEntit\u00e9s, d\u00e9tenu + 1).Value = Entit\u00e9s(d\u00e9tenu)\r\n        End If\r\n        If d\u00e9tenu = 1 Then\r\n          .Cells(d\u00e9tenteur + 1, 1).Value = Entit\u00e9s(d\u00e9tenteur)\r\n          .Cells(d\u00e9tenteur + NbEntit\u00e9s + 3, 1).Value = Entit\u00e9s(d\u00e9tenteur)\r\n        End If\r\n        .Cells(d\u00e9tenteur + 1, d\u00e9tenu + 1).Value = MatriceImoinsD\u00e9tentions(d\u00e9tenteur, d\u00e9tenu)\r\n      Next d\u00e9tenu\r\n    Next d\u00e9tenteur\r\n    .Cells(3 + NbEntit\u00e9s, 1).Value = \"Matrice (I-M)^-1\"\r\n    .Range(\"B\" &amp; 4 + NbEntit\u00e9s &amp; \":\" &amp; Chr(64 + NbEntit\u00e9s + 1) &amp; NbEntit\u00e9s * 2 + 3).FormulaArray = \"=minverse(B2:\" &amp; Chr(64 + NbEntit\u00e9s + 1) &amp; NbEntit\u00e9s + 1 &amp; \")\"\r\n    'FormulaArray \u00e9quivaut \u00e0 Ctrl+Maj+Entr\u00e9e\r\n    For d\u00e9tenu = 2 To NbEntit\u00e9s\r\n      PourcentagesInt\u00e9r\u00eat(d\u00e9tenu) = Cells(4 + NbEntit\u00e9s, d\u00e9tenu + 1)\r\n    Next d\u00e9tenu\r\n  End With\r\nEnd Sub<\/pre>\n<p style=\"text-align: justify;\">La phase de r\u00e9flexion pr\u00e9alable rev\u00eat une importance primordiale. Elle consiste \u00e0 <a href=\"https:\/\/www.auditsi.eu\/?p=1639\">mod\u00e9liser le probl\u00e8me<\/a> \u00e0 r\u00e9soudre, c&#8217;est-\u00e0-dire, \u00e0 choisir la solution la mieux adapt\u00e9e (\u00e9ventuellement la plus simple \u00e0 programmer et offrant le meilleur gain de temps) puis \u00e0 d\u00e9composer la solution retenue en \u00e9tapes \u00e9l\u00e9mentaires qui chacune feront l&#8217;objet d&#8217;une codification informatique.<\/p>\n<p style=\"text-align: justify;\">Sur les projets les plus complexes, cette phase repr\u00e9sente un investissement important mais loin de constituer une perte de temps, elle est la garantie du succ\u00e8s de la r\u00e9alisation du projet. Une fois le programme termin\u00e9, les gains de temps obtenus sont largement b\u00e9n\u00e9fiques.<\/p>\n<p style=\"text-align: justify;\">Dans les m\u00e9tiers de la comptabilit\u00e9, la mise en \u0153uvre d&#8217;un programme passe g\u00e9n\u00e9ralement par le langage VBA en lien avec Excel et\/ou ACCESS, car ce langage est simple \u00e0 programmer et permet de traiter de cons\u00e9quents volumes de donn\u00e9es.<\/p>\n<p style=\"text-align: justify;\">Il y a quelques ann\u00e9es, je cherchais une solution pour calculer rapidement les <a href=\"https:\/\/www.auditsi.eu\/?p=1399\">pourcentages d&#8217;int\u00e9r\u00eat en pr\u00e9sence de participations crois\u00e9es<\/a> dans le cadre de la validation des comptes consolid\u00e9s de groupes de soci\u00e9t\u00e9s. Le <a href=\"https:\/\/www.auditsi.eu\/?p=1456\">calcul matriciel<\/a> semblait la solution la plus adapt\u00e9e. D&#8217;ailleurs, le Memento Comptes consolid\u00e9s \u00e9voque la programmation en <a href=\"https:\/\/www.auditsi.eu\/?tag=basic\">langage Basic<\/a> du calcul matriciel, en se gardant toutefois bien d&#8217;en fournir une solution op\u00e9rationnelle. J&#8217;avais d\u00e9j\u00e0 mis en \u0153uvre cette solution pour r\u00e9soudre des syst\u00e8mes d&#8217;\u00e9quations <a href=\"https:\/\/www.auditsi.eu\/?page_id=1521\">il y a bien longtemps<\/a>. La mod\u00e9lisation du probl\u00e8me m&#8217;a permis de r\u00e9soudre rapidement la phase de programmation de cette t\u00e2che.<\/p>\n<p style=\"text-align: justify;\">Extrait du Memento Comptes consolid\u00e9s (Editions Francis Lefebvre) :<\/p>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td width=\"9%\" style=\"text-align: justify;\"><span style=\"font-size: 10pt;\"><strong>4324-2<\/strong><\/span><\/td>\n<td><span style=\"font-size: 10pt;\"><strong>Mise en oeuvre du calcul<\/strong><\/span><br \/>\n<span style=\"font-size: 10pt;\"><strong><br \/>\n<\/strong>Gr\u00e2ce \u00e0 des programmes informatiques, nous pouvons obtenir directement les r\u00e9sultats du calcul des pourcentages d&#8217;int\u00e9r\u00eats.<\/span><br \/>\n<span style=\"font-size: 10pt;\">Nous ne d\u00e9veloppons pas ci-apr\u00e8s d&#8217;exemples de programmes informatiques. Cependant, \u00e0 l&#8217;aide d&#8217;un programme de calcul matriciel des participations \u00e9crit en Basic et exploit\u00e9 sur un micro-ordinateur, nous obtenons la matrice suivante :<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td colspan=\"6\"><span style=\"font-size: 10pt;\"><strong>Matrice C = B \u00d7 (A)<\/strong><strong><sup>-1<\/sup><\/strong><\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">1,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,6231216<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,4969945<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,3853585<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,2312151<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-size: 10pt;\">0,0000000<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,3768785<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,5030056<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,6146415<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">0,7687849<\/span><\/td>\n<td><span style=\"font-size: 10pt;\">1,0000000<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p style=\"text-align: justify;\">&nbsp;<\/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=\"R%C3%A9soudre%20des%20probl%C3%A8mes%20complexes%20%C3%A0%20l%27aide%20la%20programmation%20informatique\";<\/script><script type=\"text\/javascript\" src=\"https:\/\/static.hupso.com\/share\/js\/counters.js\"><\/script><!-- Hupso Share Buttons --><\/div>","protected":false},"excerpt":{"rendered":"<p>Dans notre quotidien professionnel, nous devons fr\u00e9quemment r\u00e9aliser des t\u00e2ches r\u00e9p\u00e9titives avec des desseins plus ou moins complexes. Par exemple, dans le cadre d&#8217;un reporting mensuel, collecter les balances d&#8217;un groupe de soci\u00e9t\u00e9s, les ouvrir, les mettre en forme pour enfin les analyser. Prises isol\u00e9ment, ces t\u00e2ches ne prennent pas beaucoup de temps mais r\u00e9p\u00e9t\u00e9es, &#8230;<\/p>\n<p><a href=\"https:\/\/www.auditsi.eu\/?p=7555\" class=\"more-link\">Continue reading &lsquo;R\u00e9soudre des probl\u00e8mes complexes \u00e0 l&#8217;aide la programmation informatique&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=\"R%C3%A9soudre%20des%20probl%C3%A8mes%20complexes%20%C3%A0%20l%27aide%20la%20programmation%20informatique\";<\/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":[7,324,215],"tags":[166,815,618,1645,179,1633,82,665,664,617,1641],"class_list":["post-7555","post","type-post","status-publish","format-standard","hentry","category-breves","category-comptes-consolides","category-vba","tag-analyse-de-donnees","tag-automatisation","tag-calcul-matriciel","tag-comptes-consolides","tag-consolidation","tag-excel","tag-modelisation","tag-participations-circulaires","tag-participations-croisees","tag-pourcentage-dinteret","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\/7555","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=7555"}],"version-history":[{"count":10,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/7555\/revisions"}],"predecessor-version":[{"id":7565,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=\/wp\/v2\/posts\/7555\/revisions\/7565"}],"wp:attachment":[{"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7555"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7555"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.auditsi.eu\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7555"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}