Le tableau de flux de trésorerie (ou TFT) est un document comptable qui assure le lien entre le résultat comptable d’une entreprise (ou le résultat consolidé d’un groupe) et la variation de trésorerie de l’exercice. Cette analyse est très utile pour comprendre comment une entreprise ou un groupe finance ses activités.
Le TFT scinde l’analyse des flux de trésorerie en fonction de leur nature : activité (résultat, retraitement des opérations sans incidence sur la trésorerie, BFR), investissement (acquisitions et cessions d’immobilisations) et financement (emprunts hors découverts, augmentation ou réduction de capital, versement de dividendes…).
L’élaboration du TFT s’avère fastidieuse surtout dans un groupe comprenant de nombreuses filiales. Par ailleurs, une analyse régulière des événements comptables requière une mise à jour trimestrielle voire mensuelle de ces états.
Heureusement, la conception du TFT peut être automatisée (au même titre que le bilan ou que le compte de résultat) en partant comme source de données du Fichier des Ecritures Comptables (FEC). Toutefois, l’élaboration du TFT s’avère plus complexe car elle ne s’appuie pas seulement sur une affectation de comptes dans des postes d’états financiers. La difficulté repose essentiellement sur l’analyse des flux comptables. En effet, selon le sens de l’opération, celle-ci se verra affectée sur une ligne ou une autre du TFT. Ainsi une acquisition ou une cession d’immobilisation est portée sur une ligne différente alors que que ces transactions sont comptabilisées dans un même compte. C’est le sens (débiteur ou créditeur) de l’opération qui détermine l’affectation à telle ou telle ligne du TFT.
Pour ajouter à la complexité, certaines écritures comptables sont dépourvues de flux de trésorerie. Il en est ainsi par exemple de la mise en service d’une immobilisation. L’investissement est réalisé lors de la comptabilisation de l’immobilisation en cours (comptes 23x) au gré de l’exécution du chantier (construction d’un immeuble, déploiement d’un projet informatique…). La mise en service (qui solde le compte 23x et transfère le bien dans un compte d’immobilisation incorporelle (20x) ou corporelle (21x)) ne constitue qu’une opération de nature purement comptable et n’a aucune incidence en matière de trésorerie.
Seule une analyse approfondie des chaque transaction retranscrite en comptabilité permettra d’identifier avec précision les flux de trésorerie. Cette analyse repose en grande partie sur l’identification les schémas d’écritures comptables. C’est précisément l’une des tâches réalisées par le programme d’analyse de données PADoCC_Ecritures.
Exemple de flux pré-identifés par PADoCC_Ecritures sur les immobilisations corporelles :
… et leurs amortissements :
Exemple (extrait) de requête SQL mise en oeuvre par le programme d’analyse de données PADoCC_Ecritures pour calculer les flux liés aux comptes d’immobilisations et des dépréciations associées (amortissements et provisions) par nature (à-nouveau, emplois, ressources, virements internes) :
'Création table FLUX_TFT NomReq = "ECRITUREStemp" NomTable = "X300_FLUX_TFT" If TableExiste(DB_Groupe_SUPERVISION, NomTable) Then If FEC_A_Traiter And (AnciennetéFEC <> 0) Then TexteReq = "DELETE FROM " & NomTable & " IN '" & dossier_Bases & NomBaseDestinationEnCours & "' WHERE CodeEntité=""" & EntitéEnCours & """;" ExéReq End If TexteReq = "" TexteReq = TexteReq & "INSERT INTO " & NomTable & " IN '" & dossier_Bases & NomBaseDestinationEnCours & "' " Else: TexteReq = "" End If TexteReq = TexteReq & "SELECT *" If Not (TableExiste(DB_Groupe_SUPERVISION, NomTable)) Then TexteReq = TexteReq & " INTO " & NomTable & " IN '" & dossier_Bases & NomBaseDestinationEnCours & "'" TexteReq = TexteReq & " FROM (SELECT CodeEntité, Montant, Cpte5, Cpte4, Cpte3, Cpte2, RubEF, FLUX" TexteReq = TexteReq & " FROM (SELECT [_ECRITURES].CodeEntité, " '---FLUX COMPTES 20/21/23/28/29x (+ et -) '------Montant : changement de signe en fonction du Cpte2 et du type de flux (1 ANV, 2 AUGM, 3 VIRT, 4 DIM°) TexteReq = TexteReq & " Sum(IIf((([_ECRITURES].Cpte2=""28"" Or [_ECRITURES].Cpte2=""29"") And (FLUX Like ""1*"" Or FLUX Like ""2*"" Or FLUX Like ""3*"")) Or (([_ECRITURES].Cpte2=""20"" Or [_ECRITURES].Cpte2=""21"") And (FLUX Like ""4*"")),-1,1)*[_ECRITURES].Solde) AS Montant," '------ TexteReq = TexteReq & " [_ECRITURES].Cpte5, [_ECRITURES].Cpte4, [_ECRITURES].Cpte3, [_ECRITURES].Cpte2, [_BG].RubEF, [_BG].EF_PosteLibellé, [_BG].EF_SPartiesLibellé, [_ECRITURES].TypeJournal, [_ECRITURES].SchémEcrit_Nature," '------Flux 1.ANV, 2.AUGM, 3.VIRT et 4.DIM° en fonction TypeJournal ou SchémEcrit_Nature TexteReq = TexteReq & " IIf([SchémEcrit_Nature]=""ANV"",""1.ANV"",IIf([_ECRITURES].TypeJournal=""ACHATS"" Or SchémEcrit_Nature Like ""*ACHATS*"" Or [SchémEcrit_Nature] Like ""*PROD*"" Or SchémEcrit_Nature Like ""*DOT*"" Or SchémEcrit_Nature Like ""*DEPR*"",""2.AUGM"",IIf([SchémEcrit_Nature] Like ""*VIRCAC*"" Or SchémEcrit_Nature Like ""IEC_MISE_SCE"",""3.VIR"",IIf([SchémEcrit_Nature] Like ""*SORTIE*"",""4.DIM°"",Null)))) AS FLUX" '------ TexteReq = TexteReq & " FROM [" & dossier_Bases & BDD_Final & "].[_BG] INNER JOIN [" & dossier_Bases & BDD_Final & "].[_ECRITURES] ON ([_BG].CompteNum = [_ECRITURES].CompteNum) AND ([_BG].CodeEntité = [_ECRITURES].CodeEntité)" TexteReq = TexteReq & " WHERE ((([_ECRITURES].Cpte2) = ""20"" Or ([_ECRITURES].Cpte2) = ""21"" Or ([_ECRITURES].Cpte2) = ""23"" Or ([_ECRITURES].Cpte2) = ""28"" Or ([_ECRITURES].Cpte2) = ""29""))" TexteReq = TexteReq & " GROUP BY [_ECRITURES].CodeEntité, [_ECRITURES].Cpte5, [_ECRITURES].Cpte4, [_ECRITURES].Cpte3, [_ECRITURES].Cpte2, [_BG].RubEF, [_BG].EF_PosteLibellé, [_BG].EF_SPartiesLibellé, [_ECRITURES].TypeJournal, [_ECRITURES].SchémEcrit_Nature)" '--- TexteReq = TexteReq & " UNION ALL" [...] TexteReq = TexteReq & " GROUP BY CodeEntité, Cpte5, Cpte4, Cpte3, Cpte2, RubEF, FLUX);" If FEC_A_Traiter Then ExéReq
En substance, cette requête agrège les flux (l’instruction Sum additionne le contenu de champs de données, ici des soldes comptables, dans le cadre d’une requête regroupement GROUP BY) de même nature (même champ FLUX, même racine comptable (Cpte5, Cpte4…), de même poste comptable (RubEF)), et ce, au niveau de chaque entité du groupe (champ CodeEntité). Le champ FLUX est calculé à partir du type de mouvements comptables identifié par le système. Cette analyse s’opère à partir de règles de gestion déterminées selon le compte (20x, 28x…), le sens débit / crédit de la transaction, la nature du journal comptable (exemple TypeJournal=”ACHATS”…), le schéma d’écriture identifié (production immobilisée = *PROD*, sortie d’actif = SORTIE*…).
___
Approfondir le sujet : Suivre le projet PADoCC… / Voir mes autres réalisations… / En savoir plus sur l’analyse de données / FEC News


Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.21beta) : nouvelle version en ligne - mardi 7 janvier 2025
- Excel : conserver les zéros non significatifs à gauche - dimanche 5 janvier 2025
- Excellente année 2025 ! - mercredi 1 janvier 2025
- Projet IXP (v1.21beta) : contrôles de cohérences et gestion MULTIFEC - lundi 30 décembre 2024
- Joyeuses fêtes de fin d’année ! - mardi 24 décembre 2024
Bonjour
je vous remercie infiniment pour vos partages
mes salutations
Pingback: Automatiser l'élaboration du tableau des...
Merci beaucoup pour ces articles
Nous voulons aussi un article sur l’automatisation de la trésorerie dans une société