Interfacer Gnucash avec Libre Office


NB : si vous relevez des erreurs ou procédures incomplètes, merci de corriger dans les commentaires.
Ce document explique comment récupérer les données comptables gérées dans Gnucash pour les analyser dans des tableaux et/ou élaborer des rapports de synthèse.
Les procédures ci-dessous ont été réalisées sous XUbuntu 14.04, en supposant que vous avez Libre Office 4 installé.
  • Mettre votre base de données Gnucash en SQLite : (si ce n’est déjà fait)

installer le pilote SQLite :  dans la Logithèque, rechercher Gnucash, puis ajouter le greffon optionnel « Pilote de base de données SQLite3 pour libdi »

enregistrer votre base en SQLite : dans Gnucash, menu « fichier », « enregistrer sous », puis sélectionner le format de données « sqlite3 »

NB : vous pouvez continuer à travailler sur cette nouvelle base

  • Préparer la connexion ODBC pour Libre Office :

installer le pilote ODBC : dans la Logithèque, rechercher Base, puis ajouter le greffon optionnel « ODBC driver for SQLite embedded database (libsqliteodbc)

vérifier la présence du fichier /etc/odbcinst.ini qui devrait contenir :

[SQLite]

Description                = SQLite ODBC Driver

Driver                = libsqliteodbc.so

Setup                = libsqliteodbc.so

UsageCount                = 1

[SQLite3]

Description                = SQLite3 ODBC Driver

Driver                = libsqlite3odbc.so

Setup                = libsqlite3odbc.so

UsageCount                = 1

  • modifier le fichier .odbc.ini dans votre dossier personnel en indiquant :

[Le nom de votre comptabilité]

Driver=SQLITE3

Database=/home/votrenom/VotredossierGnucash/Votrebasededonnées.gnucash

  • Préparer dans Base la requête qui vous permettra de lire les données sous forme d’un journal général :

Dans Libre Office, créer une nouvelle base de données

choisir : « connecter une base de données existantes » et sélectionner ODBC

puis sélectionner votre base [le nom de votre comptabilité] comme source ODBC

créer une nouvelle requête en mode SQL en collant le code ci-dessous :

SELECT strftime( ‘%Y-%m-%d’, SUBSTR( « transactions ». »post_date », 1, 4 ) || « – » || SUBSTR( « transactions ». »post_date », 5, 2 ) || « – » || SUBSTR( « transactions ». »post_date », 7, 2 ), ‘+1 day’ ) AS « Date », « transactions ». »description » AS « Libellé », « accounts ». »code » AS « Numéro », « accounts ». »name » AS « Compte », CASE WHEN « value_num » > 0 THEN ROUND( « splits ». »value_num », 0 ) / ROUND( « splits ». »value_denom » ) ELSE «  » END AS « Débit », CASE WHEN « value_num » < 0 THEN ROUND( « splits ». »value_num », 0 ) / ROUND( « splits ». »value_denom » ) ELSE «  » END AS « Crédit » FROM « transactions », « splits », « accounts » WHERE « transactions ». »guid » = « splits ». »tx_guid » AND « accounts ». »guid » = « splits ». »account_guid »

  • Cela va vous donner un tableau avec : la date, le libellé de l’opération, le numéro de compte (si renseigné), la dénomination du compte, le montant débité ou le montant crédité
  • Cette requête corrige quelques problèmes :

la date qui est au format AAAAMMJJHHMMSS sous forme texte avec un jour de décalage (?)

les valeurs qui sont également au format texte

Maintenant, à vous de jouer soit :
  •  dans Base en créant vos propres rapport : balance, grand livre comptable, regroupements de mouvements par dates, etc. Vous pouvez également modifier la requête pour ajouter des critères et/ou fonctions d’agrégation.
  • dans Calc : pour transférer le résultat de la requête :
  • dans Base : copier la requête en faisant un clic droit sur le nom de la requête, puis copier
  • dans Calc : coller dans une cellule
  • vous pouvez ensuite triturer les données dans tous les sens et/ou utiliser les tables de pilote (menu « Données »).