Substitutions selon un fichier d'associations

Le
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édité ou débité (concrètement un nombre du style 4041=
),
l'intitulé du compte tel qu'il apparait dans le plan comptable généra=
l
(PCG)
(ex: pour 4041 on aura "Fournisseurs - Achats d'immobilisations") et
le montant
associé.

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.

Merci

--
Yves
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Thomas vO
Le #18117761
bonjour,

À (at) Thu, 11 Dec 2008 16:57:19 -0800 (PST),
Gamotte
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... (
--
Thomas vO -
Gamotte
Le #18119411
On 12 déc, 08:10, Thomas vO wrote:
bonjour,


comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (



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.
Marc Boyer
Le #18119601
On 2008-12-12, Gamotte
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 ?
Alain Ketterlin
Le #18119591
Gamotte
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.
Marc Boyer
Le #18119771
On 2008-12-12, Alain Ketterlin
Gamotte
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 ?
François Meyer
Le #18120291
Thomas vO
bonjour,

À (at) Thu, 11 Dec 2008 16:57:19 -0800 (PST),
Gamotte
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... (


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
Thomas vO
Le #18120551
À (at) 12 Dec 2008 12:37:20 GMT,
François Meyer
Thomas vO
comme ça, à froid, j'aurais envie de faire ça avec
dblatex... (


[...]

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 -
Gamotte
Le #18122511
On 12 déc, 12:56, Marc Boyer
On 2008-12-12, Alain Ketterlin



> 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
Publicité
Poster une réponse
Anonyme