Analyse de données & FEC provisoire : créer des numéros d’écriture avec un script Python

L’analyse de FEC est une activité qui peut être réalisée en cours d’exercice comptable sans attendre la clôture. Or, certains logiciels de comptabilité produisent des FEC provisoires dépourvus de numéros d’écriture (champ EcritureNum vide ou à 0) tant que les écritures comptables ne sont pas validées. Cette position se tient dans la mesure où l’Administration fiscale considère qu’une écriture comptable n’acquiert ce statut d’écritures que lors de sa validation.

FEC EcritureNum à zéro

Toutefois, l’absence de numéro d’écriture ne facilite pas l’analyse des données comptables.

C’est ce point que je vous propose de résoudre à l’aide d’un script Python qui va alimenter le champ EcritureNum.

Pour calculer un numéro d’écriture, il est nécessaire de trier les écritures par date (champ EcritureDate) et par journal (JournalCode) puis de calculer un solde progressif (SoldeProgressif) ; un solde progressif nul signalant un changement d’écriture comptable. Cette méthode n’est pas parfaite puisque si à une même date plusieurs écritures sont comptabilisées dans le même journal, ces écritures seront potentiellement identifiées comme une écriture unique. Malgré cette imperfection, l’analyse des données comptables sera facilitée.

FEC solde progressif

Fonctionnement du script :

L’utilisateur est invité à sélectionner un FEC :

Python FEC PROVISOIRE

La fonction filedialog.askopenfilename renvoie le nom du FEC sélectionné par l’utilisateur.

def ouvrir_fichier():
    # Ouvrir une boîte de dialogue pour sélectionner le fichier FEC
    chemin_fichier = filedialog.askopenfilename(filetypes=[("Fichiers FEC", "*.txt")])
    if chemin_fichier:
        # Effectuer le tri sur les champs EcritureDate et JournalCode
        lignes_triees = trier_fichier(chemin_fichier)

        # Convertir les champs Debit et Credit en float et calculer le champ Solde
        lignes_converties = convertir_champs_en_float(lignes_triees)

        # Calculer le champ SoldeProgressif
        calculer_solde_progressif(lignes_converties)

        # Variable compteur utilisée pour numéroter les écritures initialisée à 1
        compteur = 1

        # Modifier les champs EcritureNum et incrémenter le compteur si SoldeProgressif est nul
        modifier_champs_ecriturenum(lignes_converties, compteur)

        # Enregistrer le fichier FEC sous un nouveau nom avec le préfixe NouveauEcrNum_
        enregistrer_nouveau_fichier(chemin_fichier, lignes_converties)

Le script trie les écritures comptables date d’écriture (EcritureDate) et code journal (JournalCode) :

def trier_fichier(chemin_fichier):
    separateur = determiner_separateur(chemin_fichier)
    with open(chemin_fichier, 'r', encoding='utf-8') as fichier:
        reader = csv.DictReader(fichier, delimiter=separateur)
        lignes_triees = sorted(reader, key=lambda x: (x['EcritureDate'], x['JournalCode']))
    return lignes_triees

Les champs Debit et Credit sont convertis en nombres puis un nouveau champ intitulé Solde est créé en soustrayant les champs Debit et Credit :

def convertir_champs_en_float(lignes_triees):
    lignes_converties = []
    for ligne in lignes_triees:
        ligne['Debit'] = float(ligne['Debit'].replace(',', '.'))
        ligne['Credit'] = float(ligne['Credit'].replace(',', '.'))
        ligne['Solde'] = ligne['Debit'] - ligne['Credit']
        lignes_converties.append(ligne)
    return lignes_converties

Ensuite, le script calcule le solde progressif (arrondi à deux décimales) :

def calculer_solde_progressif(lignes_converties):
    solde_progressif = 0
    for ligne in lignes_converties:
        solde_progressif += ligne['Solde']
        ligne['SoldeProgressif'] = round(solde_progressif, 2)  # Arrondi à deux décimales

Enfin, le script met à jour le champ EcritureNum avec la valeur de la variable compteur :

def modifier_champs_ecriturenum(lignes_converties, compteur):
    for ligne in lignes_converties:
        ligne['EcritureNum'] = compteur
        if ligne['SoldeProgressif'] == 0:
            compteur += 1

Le FEC est enregistré avec un nouveau nom et comporte deux nouveaux champs Solde et SoldeProgressif. Le FEC produit par ce script ne peut en aucun cas être communiqué à l’Administration fiscale dans le cadre d’une vérification de comptabilité.

L’exécutable du script est téléchargeable ci-après. Il est stocké sous la forme d’un fichier compressé (*.zip). Avant toute utilisation, il faut le décompresser sur le PC. Ce programme ne nécessite aucune installation. Pour le lancer, il suffit de double-cliquer dessus.

___

Pour approfondir le sujet : Fichier des Ecritures Comptables / se former à la programmation en langage Python pour automatiser ses tâches

Share Button
FEC PROVISOIRE (EcritureNum)
FEC PROVISOIRE (EcritureNum)
FEC-PROVISOIRE-EcritureNum.zip
9.6 MiB
39 téléchargements
Détails...
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

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.