Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Substitutions selon un fichier d'associations

8 réponses
Avatar
Gamotte
Bonjour,

Je suis en train de taper un document avec des tableaux comptables
(fuyez pas) sous LaTeX. Une ligne d'un tableau contiendra typiquement
le compte cr=E9dit=E9 ou d=E9bit=E9 (concr=E8tement un nombre du style 4041=
),
l'intitul=E9 du compte tel qu'il apparait dans le plan comptable g=E9n=E9ra=
l
(PCG)
(ex: pour 4041 on aura "Fournisseurs - Achats d'immobilisations") et
le montant
associ=E9.

J'utilise deux commandes \debit et \credit pour renseigner les lignes
du
tableau avec la syntaxe :

\debit{n=B0 du compte}{intitul=E9}{montant}

L'id=E9e que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitul=E9 et d'utiliser un script pour
1) rechercher toutes les occurrences de \debit et \credit et r=E9cup=E9rer
les num=E9ros
de compte associ=E9s
2) greper une version texte du PCG(*) pour r=E9cup=E9rer l'intitul=E9
correspondant
et l'ins=E9rer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n=B0 intitul=E9_correspondant"

Je cherche donc des pistes pour faire =E7a de fa=E7on pas trop moche.

Merci

--
Yves

8 réponses

Avatar
Thomas vO
bonjour,

À (at) Thu, 11 Dec 2008 16:57:19 -0800 (PST),
Gamotte nous disait (told us):
J'utilise deux commandes debit et credit pour renseigner les lignes
du
tableau avec la syntaxe :

debit{n° du compte}{intitulé}{montant}

L'idée que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitulé et d'utiliser un script pour
1) rechercher toutes les occurrences de debit et credit et récup érer
les numéros
de compte associés
2) greper une version texte du PCG(*) pour récupérer l'intitul é
correspondant
et l'insérer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n° intitulé_correspondant"

Je cherche donc des pistes pour faire ça de façon pas trop moch e.



comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (<http://dblatex.sourceforge.net/>)

--
Thomas vO - <http://perso.enstimac.fr/~vanouden/>
Avatar
Gamotte
On 12 déc, 08:10, Thomas vO <vanouden+
wrote:
bonjour,


comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (<http://dblatex.sourceforge.net/>)




Merci

J'ai regardé la description sur http://linuxfr.org/2006/11/22/21666.html.
Ca a l'air intéressant et j'y jetterai sûrement un regard plus
approfondi
quand j'aurai un peu de temps. Pour l'instant, vu que
je ne connais pas du tout, que j'ai déja commencé une bonne partie
de mon document sous latex et que je dois le finir assez rapidement,
je pense que je vais écarter cette solution.
Avatar
Marc Boyer
On 2008-12-12, Gamotte wrote:
Bonjour,


[SNIP]
J'utilise deux commandes debit et credit pour renseigner les lignes
du tableau avec la syntaxe :

debit{n° du compte}{intitulé}{montant}

L'idée que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitulé et d'utiliser un script pour
1) rechercher toutes les occurrences de debit et credit et récupérer
les numéros
de compte associés
2) greper une version texte du PCG(*) pour récupérer l'intitulé
correspondant
et l'insérer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n° intitulé_correspondant"

Je cherche donc des pistes pour faire ça de façon pas trop moche.



sed ? awk ?
Ca doit faire un ou deux scripts d'une dizaine de lignes ça.

Marc Boyer
--
En France, un habitant sur 1000 est en prison.
Aux USA, 7 habitants sur 1000 sont en prison.
Est-ce que les USA sont 7 fois plus sûrs ?
Avatar
Alain Ketterlin
Gamotte writes:

debit{n° du compte}{intitulé}{montant}

L'idée que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitulé et d'utiliser un script pour
1) rechercher toutes les occurrences de debit et credit et récupérer
les numéros
de compte associés
2) greper une version texte du PCG(*) pour récupérer l'intitulé
correspondant
et l'insérer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n° intitulé_correspondant"

Je cherche donc des pistes pour faire ça de façon pas trop moche.



J'était en train de faire quelque chose de similaire avec python,
voici ce que je te propose :

# ------------------------------------------------
import re

pcgre = re.compile('([0-9]+) (.*)')
pcg = {}
for line in file("pcg.txt"):
m = pcgre.match(line)
pcg[m.group(1)] = m.group(2);

datare = re.compile(r"(debit|credit){([0-9]+)}{([^}]*)}{([^}]*)}")
for line in file("data.txt"):
m = datare.match(line)
if ( m == None ):
print line[:-1]
else:
print '%s{%s}{%s}{%s}' %
(m.group(1),m.group(2),pcg[m.group(2)],m.group(4))
# ------------------------------------------------

Absolument pas testé.

-- Alain.
Avatar
Marc Boyer
On 2008-12-12, Alain Ketterlin wrote:
Gamotte writes:

debit{n° du compte}{intitulé}{montant}

L'idée que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitulé et d'utiliser un script pour
1) rechercher toutes les occurrences de debit et credit et récupérer
les numéros
de compte associés
2) greper une version texte du PCG(*) pour récupérer l'intitulé
correspondant
et l'insérer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n° intitulé_correspondant"

Je cherche donc des pistes pour faire ça de façon pas trop moche.



J'était en train de faire quelque chose de similaire avec python,
voici ce que je te propose :



Aller, voici une version sed.
Supposons que le PCG soit dans le fichier PGC.txt
sed -e 's:([0-9]*) (.*):s/credit{1}{}/credit{1}{2}/gns/debit{1}{}/debit{1}{2}/g:' > PGC.sed
sed -f PGC.sed source.tex > complete.tex

On doit pouvoir faire plus court en factorisant credit/debit,
mais ça sera pas plus lisible.

Marc Boyer
--
En France, un habitant sur 1000 est en prison.
Aux USA, 7 habitants sur 1000 sont en prison.
Est-ce que les USA sont 7 fois plus sûrs ?
Avatar
François Meyer
Thomas vO <vanouden+ wrote:
bonjour,

À (at) Thu, 11 Dec 2008 16:57:19 -0800 (PST),
Gamotte nous disait (told us):
J'utilise deux commandes debit et credit pour renseigner les lignes
du
tableau avec la syntaxe :

debit{n° du compte}{intitulé}{montant}

L'idée que j'avais, c'est de gagner du temps en ne remplissant pas le
champs intitulé et d'utiliser un script pour
1) rechercher toutes les occurrences de debit et credit et récupérer
les numéros
de compte associés
2) greper une version texte du PCG(*) pour récupérer l'intitulé
correspondant
et l'insérer dans la paire d'accolades vides
(*) chaque ligne est de la forme "n° intitulé_correspondant"

Je cherche donc des pistes pour faire ça de façon pas trop moche.



comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (<http://dblatex.sourceforge.net/>)



J'ai fait ce genre de choses pour éditer des séries de documents
périodiquement, avec récupération des renseignements administratifs dans
une base de données et récupération des données scientifiques dans les
fichiers de données texte.

L'insertion se fait via dblatex pour la partie base de données et à
coups de sed dans des fichiers types pour les données texte.

Essentiellement il y a 2 pièces de base :

1 un fichier type latex incluant :
. les requêtes dblatex
. des commandes input avec les noms des fichiers de données
formattés latex ou graphiques

2. un script bash qui (outre les traitements de données en amont,
création des graphiques de données,...) formatte les tableaux de
données chiffrées en latex, fait les sed dans le fichier-type latex
(pour insérer les noms des fichiers formattés, ceux des graphiques et
quelques données isolées), appelle dblatex pour instancier les appels
à la base de données, puis compile le latex obtenu en sortie.

Au final ça donne une petite usine à gaz mais qui fonctionne bien.

- pas mal de temps investi
- un peu lourd

+ potentiellement énormément de temps gagné
+ plein de risques d'erreur supprimés
+ une traçabilité des opérations simplifiée par l'absence quasi
complète d'interventions manuelles.
+ c'est un exercice formateur

Voili.

Si ça intéresse...
--
François Meyer
Avatar
Thomas vO
À (at) 12 Dec 2008 12:37:20 GMT,
François Meyer nous disait (told us):
Thomas vO <vanouden+ wrote:
comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (<http://dblatex.sourceforge.net/>)



[...]

L'insertion se fait via dblatex pour la partie base de données et à
coups de sed dans des fichiers types pour les données texte.



autre piste : si tu connais Perl, un petit coup de Template::Toolkit
et DBIx::Class devrait faire l'affaire aussi

--
Thomas vO - <http://perso.enstimac.fr/~vanouden/>
Avatar
Gamotte
On 12 déc, 12:56, Marc Boyer wrote:
On 2008-12-12, Alain Ketterlin wrote:




> J'était en train de faire quelque chose de similaire avec python,
> voici ce que je te propose :

  Aller, voici une version sed.
Supposons que le PCG soit dans le fichier PGC.txt
sed -e 's:([0-9]*) (.*):s/credit{1}{}/credit{1}{2}/gns/debit{1}{ }/debit{1}{2}/g:' > PGC.sed
sed -f PGC.sed source.tex > complete.tex

   On doit pouvoir faire plus court en factorisant credit/debit,
mais ça sera pas plus lisible.



Merci, c'était effectivement plus simple de modifier directement le
fichier PCG pour
avoir toutes les substitutions possibles d'un coup. C'est tout bête,
mais je n'y avais
pas pensé.

Merci à tous