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.
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.
Fonctionnement du script :
L’utilisateur est invité à sélectionner un FEC :
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
Derniers articles parBenoît RIVIERE (voir tous)
- Nouveautés de l’interpréteur de formules de calcul (v1.1) - dimanche 3 novembre 2024
- Dématérialisation de la facturation : nouvelles mentions obligatoires - lundi 28 octobre 2024
- Interpréteur de formules de calcul en Python - dimanche 13 octobre 2024
- Les données de la facturation électronique - mercredi 9 octobre 2024
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024