Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/08/2026, à 19:28

O_20_100_O

(Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Bonjour,
L'application Grisbi est capable d'affecter automatiquement des opérations à une "catégorie", en se basant sur le champ "tiers".
Quand j'importe les opés de ma banque, le champ "<NAME>" du fichier OFX téléchargé est copié dans "tiers" de Grisbi.

C'est un début, mais pas parfait car cette zone contient des variables comme la date et une autre référence.
Si, avant d'importer le fichier OFX, je pouvais éliminer les données parasites de <NAME>, alors Grisbi devrait reconnaître le tiers et affecter automatiquement la catégorie habituelle.

Je cherche donc à quelle moulinette je pourrais faire passer le fichier avant de l'importer.
Après les données d'en-tête, chaque opération est ainsi :

<STMTTRN>
<TRNTYPE>OTHER
<DTPOSTED>20260723
<TRNAMT>-29.13
<FITID>864xxxxxx
<NAME>X6666 AAP*BAC SUPER U machin 21/07
<MEMO>Paiement par carte  xxxxxxxxxxxxxxxx  21/07
</STMTTRN>

Dans ce cas, il faudrait que "X6666 AAP*BAC SUPER U machin 21/07" devienne juste "AAP*BAC SUPER U machin"
Après analyse de divers enregistrements, dans <NAME>, il faut supprimer la première zone et la dernière.

Dernière modification par O_20_100_O (Le 04/08/2026, à 11:57)

Hors ligne

#2 Le 03/08/2026, à 19:45

Watael

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

optimisable/correctible

sed -E '/^<NAME>/s/>[^ ]* (.*) .*/>\1/'

nany ? wink

Dernière modification par Watael (Le 03/08/2026, à 19:46)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 03/08/2026, à 20:08

O_20_100_O

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Merci Watael,
Comment je peux utiliser cette commande ? Prendre le fichier en entrée et appliquer ?

Hors ligne

#4 Le 03/08/2026, à 20:19

nany

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Bonjour,



Watael a écrit :

nany ? wink

Pas mieux.



O_20_100_O a écrit :

Comment je peux utiliser cette commande ? Prendre le fichier en entrée et appliquer ?

sed -E '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' /le/fichier/OFX

Si c’est bon et que tu veux modifier le fichier directement :

sed -Ei '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' /le/fichier/OFX

Hors ligne

#5 Le 03/08/2026, à 20:30

Watael

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

et si tu en a plusieurs à modifier :

sed -sEi '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' /che/min/fichiers/*.ofx

si les OFX ont pour extension .ofx


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#6 Le 03/08/2026, à 20:59

O_20_100_O

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Merci à vous, ça fait bien son office.

Mais ces enf**** ne font pas deux jours de suite avec la même logique. Sur une autre journée, les <NAME> ne sont pas faits tout à fait pareil mad
Cela remet en cause ma demande, il me faut affiner ... ou passer à autre chose cool

Dernière modification par O_20_100_O (Le 03/08/2026, à 20:59)

Hors ligne

#7 Le 03/08/2026, à 21:28

Watael

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

ouaip, affiner. 'faut voir les variantes...


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#8 Le 04/08/2026, à 07:48

O_20_100_O

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Bon, on va considérer que le contre-exemple vient d'un jour où ils ont pété les plombs, mais c'était gratiné :

<NAME>PAIEMENT PAR CARTE X1111 xxx E
<MEMO>Paiement par carte PAIEMENT PAR CARTE X1111 xxx EXPRESS machin  28/04

Les autres fichiers sont sur le même principe que mon premier exemple.

Et comme cette commande enlève bien ce qu'il faut là où il faut pour les paiements par carte, il me reste à voir :
* quoi faire pour les autres types d'opérations
* comment lier ce traitement à l'importation des fichiers de la banque.
Pour le moment :

 sed -E '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' aa.ofx > bb.ofx

Dernière modification par O_20_100_O (Le 04/08/2026, à 08:29)

Hors ligne

#9 Le 04/08/2026, à 08:54

nany

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Bonjour,



O_20_100_O a écrit :

Pour le moment :

 sed -E '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' aa.ofx > bb.ofx

Pourquoi faire une redirection alors que l’option i permet de traiter directement dans le fichier ?
Si tu veux une sauvegarde du fichier, il suffit d’ajouter un suffixe derrière cette option, par exemple .original :

sed -Ei.original '/^<NAME>/s/>[^ ]* (.*) .*/>\1/' aa.ofx

Tu auras alors le fichier aa.ofx transformé que tu pourras importer et un fichier de sauvegarde aa.ofx.original.

Hors ligne

#10 Le 04/08/2026, à 11:49

O_20_100_O

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

nany a écrit :

Tu auras alors le fichier aa.ofx transformé que tu pourras importer et un fichier de sauvegarde aa.ofx.original.

Merci c'est parfait.

Une analyse de plusieurs mois d'opérations montre que la simple suppression de début et de la fin de NAME ne peut pas fonctionner. Il faut voir autrement.
Dans quelques cas, <MEMO> n'est pas renseigné, là on touche pas à <NAME>.
Si <MEMO> n'est pas vide, alors son contenu est toujours meilleur que celui de <NAME>, mais Grisbi se base sur ce dernier pour remplir "Tiers".
L'idéal serait de refaire <NAME> à partir de <MEMO> en excluant tout ce qui peut varier d'une opération à l'autre pour un même tiers.
Peut-être à partir d'une liste de termes à supprimer.

Dernière modification par O_20_100_O (Le 04/08/2026, à 11:59)

Hors ligne

#11 Le 04/08/2026, à 14:12

O_20_100_O

Re : (Résolu) Tronquer les libellés d'opérations d'un fichier OFX

Il fallait d'abord creuser un peu plus ce que sait faire Grisbi, on peut l'utiliser pour normaliser les tiers et regrouper les
* toto 01/01/26
* toto 03/02/26
....
sur juste toto !

Ceci fait, on peut aussi créer des règles d'importation qui ne peuvent travailler que sur <NAME> et ignorent <MEMO>. Si ça ne suffit pas, il faudra filtrer avant importation.

Hors ligne