Comptes consolidés : calculer les pourcentages d’intérêt à l’aide du calcul matriciel et du langage VBA d’Excel (article publié dans la RFC)

mardi 17 janvier 2012

La Revue Française de Comptabilité publie dans son numéro de janvier 2012 (n° 450) un article, que j’ai écrit, intitulé «Comptes consolidés : calculer les pourcentages d’intérêt à l’aide du calcul matriciel et du langage VBA d’Excel ».

Résumé de l’article :

La détermination des pourcentages d’intérêt s’avère fastidieuse dans les groupes comprenant de nombreuses participations. Les participations circulaires et croisées ajoutent un surcroît de complexité à ces calculs. Les calculs manuels habituellement mis en oeuvre apparaissent complexes tant à poser (consolideur) qu’à contrôler (auditeur) et sources d’erreur.

Méconnu, le calcul matriciel est une méthode de calcul alternative qui offre trois avantages déterminants : rapide à mettre en application, il ne nécessite pas de connaissance approfondie en calcul matriciel et en consolidation, et sécurise les calculs. De surcroît, la modélisation informatique des calculs matriciels est aisée et offre, en plus, une automatisation aboutie de l’ensemble du processus de calculs.

Lire la suite : http://www.auditsi.eu/?p=1399


Choix du langage de programmation

jeudi 19 mai 2011

Comme je l’indiquais dans mon précédent post, un choix s’offrait à moi : celui du langage de développement de l’application. J’avais sélectionné deux solutions, soi le VBA, soit DELPHI (Pascal Objet). Ces deux solutions ont leurs avantages et leurs inconvénients. Toutefois, deux critères principaux ont prévalu dans ma décision : la sécurité et la performance de l’application.

Après de nombreux tests sur différents projets, mon choix s’est finalement porté sur DELPHI. D’une part, parce que d’un point de vue sécurité, le logiciel sera inaltérable puisque compilé (par ailleurs, les paramètres de sécurité d’EXCEL empêchent fréquemment l’exécution des macros obligeant l’utilisateur à des manipulations pour lesquelles il n’est pas nécessairement formé) ; d’autre part les performances seront meilleures (les performances d’écritures/lectures de classeurs EXCEL semblent comparables mais la rapidité générale de fonctionnement des applications semble donner un avantage aux codes compilés).

Le langage est maintenant choisi, reste maintenant à continuer le développement du projet.

A ce stade, je me rends compte que l’objectif que je m’étais est particulièrement ambitieux : notamment quant à l’ampleur du code source à écrire et quant à la prise en main de l’EDI, plus ardue que je ne l’aurais pensé.


Point sur le projet à fin janvier 2011 : un nouveau départ

vendredi 4 février 2011

Le projet a pris énormément de retard par rapport à mes objectifs initiaux. Tout d’abord, je travaille sur plusieurs projets en même temps et ensuite j’ai dû prendre en main DELPHI ainsi que les liens DELPHI / EXCEL (cf. mon post précédent). Par ailleurs, je suis en train de perfectionner mes connaissances en VBA. Tous ces facteurs ont contribué au retard conséquent du projet.

Ceci dit, j’ai tout de même commencé à me pencher sur le développement proprement dit de l’application ; les premières lignes de code sont écrites (cf PS). A ce sujet, deux options s’offrent à moi : soit développer mon application sous DELPHI, soit en VBA. Les deux options ont leurs avantages et leurs inconvénients. Pour le moment, je ne sais pas encore laquelle je vais retenir. J’essaye les deux sachant que deux critères essentiels conditionneront mon choix : la sécurité des traitements et la rapidité d’exécution du code.

L’objectif à fin février est que l’application intègre les balances générales des filiales et que les états financiers consolidés (bilan et compte de résultat) soient paramétrés.

Il y a encore beaucoup de travail mais ça avance (enfin) !

Benoît-René RIVIERE

Expert-comptable à Caen

PS : voici les premières lignes de VBA de la procédure qui intègre les balances sociales dans le grand livre de consolidation :

Sub AffectBGCI_CSO(entité As String, clotex As String)

    Const FeuilleBGCI = « BGCI »

    Const FeuilleFourchette = « CIaffectCSOfourchette »

    Const FeuilleaffectCSO = « BGCIaffectCSO »

    Dim nbligneBGCI, nblignefourchette As Variant

    Dim ligneBGCIaffectCSO As Variant

    Dim cpte4 As String

    Dim i, j As Variant

    Dim montant As Variant

    Dim sens As String

    Dim trancheok As Boolean

    nbligneBGCI = Sheets(FeuilleBGCI).UsedRange.Rows.Count

    nblignefourchette = Sheets(FeuilleFourchette).UsedRange.Rows.Count

    ligneBGCIaffectCSO = Sheets(FeuilleaffectCSO).UsedRange.Rows.Count + 1

    For i = 1 To nbligneBGCI

        If (entité = «  ») Or (entité <> «  » And Sheets(FeuilleBGCI).Cells(i, 1) = entité And Sheets(FeuilleBGCI).Cells(i, 2) = clotex) Then

            cpte4 = Left(Sheets(FeuilleBGCI).Cells(i, 3).Value, 4)