Résoudre des problèmes complexes à l’aide la programmation informatique

Dans notre quotidien professionnel, nous devons fréquemment réaliser des tâches répétitives avec des desseins plus ou moins complexes. Par exemple, dans le cadre d’un reporting mensuel, collecter les balances d’un groupe de sociétés, les ouvrir, les mettre en forme pour enfin les analyser. Prises isolément, ces tâches ne prennent pas beaucoup de temps mais répétées, elles sont non seulement chronophages mais également sans aucune valeur ajoutée. L’automatisation de ces tâches sera utilement mise en œuvre afin de focaliser le maximum de temps homme sur la phase d’analyse de données, de loin la plus valorisante.

Sub AfficheMatrice()
  Dim détenteur As Integer
  Dim détenu As Integer
 
  classeurAppli.Sheets.Add after:=Worksheets(Worksheets.Count)
  With classeurAppli.Sheets(classeurAppli.Sheets.Count)
    .Cells(1, 1).Value = "Matrice I-M"
    For détenteur = 1 To NbEntités
      For détenu = 1 To NbEntités
        If détenteur = 1 Then
          .Cells(1, détenu + 1).Value = Entités(détenu)
          .Cells(3 + NbEntités, détenu + 1).Value = Entités(détenu)
        End If
        If détenu = 1 Then
          .Cells(détenteur + 1, 1).Value = Entités(détenteur)
          .Cells(détenteur + NbEntités + 3, 1).Value = Entités(détenteur)
        End If
        .Cells(détenteur + 1, détenu + 1).Value = MatriceImoinsDétentions(détenteur, détenu)
      Next détenu
    Next détenteur
    .Cells(3 + NbEntités, 1).Value = "Matrice (I-M)^-1"
    .Range("B" & 4 + NbEntités & ":" & Chr(64 + NbEntités + 1) & NbEntités * 2 + 3).FormulaArray = "=minverse(B2:" & Chr(64 + NbEntités + 1) & NbEntités + 1 & ")"
    'FormulaArray équivaut à Ctrl+Maj+Entrée
    For détenu = 2 To NbEntités
      PourcentagesIntérêt(détenu) = Cells(4 + NbEntités, détenu + 1)
    Next détenu
  End With
End Sub

La phase de réflexion préalable revêt une importance primordiale. Elle consiste à modéliser le problème à résoudre, c’est-à-dire, à choisir la solution la mieux adaptée (éventuellement la plus simple à programmer et offrant le meilleur gain de temps) puis à décomposer la solution retenue en étapes élémentaires qui chacune feront l’objet d’une codification informatique.

Sur les projets les plus complexes, cette phase représente un investissement important mais loin de constituer une perte de temps, elle est la garantie du succès de la réalisation du projet. Une fois le programme terminé, les gains de temps obtenus sont largement bénéfiques.

Dans les métiers de la comptabilité, la mise en œuvre d’un programme passe généralement par le langage VBA en lien avec Excel et/ou ACCESS, car ce langage est simple à programmer et permet de traiter de conséquents volumes de données.

Il y a quelques années, je cherchais une solution pour calculer rapidement les pourcentages d’intérêt en présence de participations croisées dans le cadre de la validation des comptes consolidés de groupes de sociétés. Le calcul matriciel semblait la solution la plus adaptée. D’ailleurs, le Memento Comptes consolidés évoque la programmation en langage Basic du calcul matriciel, en se gardant toutefois bien d’en fournir une solution opérationnelle. J’avais déjà mis en œuvre cette solution pour résoudre des systèmes d’équations il y a bien longtemps. La modélisation du problème m’a permis de résoudre rapidement la phase de programmation de cette tâche.

Extrait du Memento Comptes consolidés (Editions Francis Lefebvre) :

4324-2 Mise en oeuvre du calcul

Grâce à des programmes informatiques, nous pouvons obtenir directement les résultats du calcul des pourcentages d’intérêts.

Nous ne développons pas ci-après d’exemples de programmes informatiques. Cependant, à l’aide d’un programme de calcul matriciel des participations écrit en Basic et exploité sur un micro-ordinateur, nous obtenons la matrice suivante :

Matrice C = B × (A)-1
1,0000000 0,6231216 0,4969945 0,3853585 0,2312151 0,0000000
0,0000000 0,0000000 0,0000000 0,0000000 0,0000000 0,0000000
0,0000000 0,0000000 0,0000000 0,0000000 0,0000000 0,0000000
0,0000000 0,0000000 0,0000000 0,0000000 0,0000000 0,0000000
0,0000000 0,0000000 0,0000000 0,0000000 0,0000000 0,0000000
0,0000000 0,3768785 0,5030056 0,6146415 0,7687849 1,0000000

 

Share Button
The following two tabs change content below.
Après seize années passées en cabinet d’expertise-comptable et de commissariat aux comptes (où j’ai exercé comme expert-comptable et chef de mission audit), j’ai pris le poste de directeur comptable d’un groupe de distribution automobile en novembre 2014. Au cours de ma carrière, j’ai acquis une expérience significative en audit et en exploitation des systèmes d’information (analyse de données, automatisation des tâches, programmation informatique) au service de la production des comptes annuels et consolidés. C’est cette expérience personnelle et ma passion pour l’informatique que je partage sur ce blog. Mon CV / Réalisations personnelles et projets informatiques / Ma collection / Me contacter

Un commentaire

  1. Bonjour Benoît,

    Je suis étudiant en DSCG et je travaille dans le contrôle de gestion (ETI industrielle).

    Je me rends compte chaque jour du gain de productivité que pourrait apporter la programmation (principalement le VBA) dans le contrôle de gestion de mon entreprise.

    Je pense à me former dans le VBA, pour compléter mon cursus comptable et financier car comme vous le dites, la programmation permet de réels gains de productivité et le recentrage sur les activités créatrices de valeur.

    De plus, il s’agirait d’une réelle plus-value dans mon CV et je pense que la maîtrise de la programmation pourrait rendre le travail de contrôleur de gestion plus intéressant.

    Merci pour cet article !

    Maxime

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.