Une interface graphique avec LibreOffice Base
On a une belle base SQLite, c'est très bien. Mais l'interface de DB Browser, c'est plutôt fait pour les gens qui bidouillent la structure de la base et qui ont pas peur du SQL. Ce qu'on veut maintenant, c'est quelque chose de plus confortable pour saisir et consulter les données au quotidien, sans avoir à taper des requêtes à la main. :keyboard:
LibreOffice Base, c'est le pendant libre et gratuit de Microsoft Access. Les deux permettent de créer des formulaires de saisie, des requêtes et des états (des rapports imprimables) par-dessus une base de données. Access est plus répandu dans les environnements Windows institutionnels, LibreOffice Base tourne sur Windows, macOS et Linux. Dans ce support, on va se concentrer sur LibreOffice Base, mais les concepts sont très proches d'Access — si vous êtes obligé.e d'utiliser Access pour des raisons institutionnelles (la vie est ainsi
), les captures d'écran seront différentes (si je les fais à chaque fois pour les deux, mais je risque d'avoir la flemme, en plus il faudrait que je trouve un ordinateur Windows uniquement pour ça
), mais la logique reste la même.
LibreOffice Base a sa propre base de données interne (HSQLDB), mais on ne va pas l'utiliser. On va le brancher directement sur notre SQLite/GeoPackage existant, pour ne pas avoir à dupliquer les données.
Connecter LibreOffice Base à notre base SQLite
La connexion passe par un pilote JDBC (Java Database Connectivity). C'est un standard qui permet à des applications Java (LibreOffice en fait partie) de dialoguer avec des bases de données. Il faut donc Java installé sur la machine et le bon fichier de pilote.
Installer Java et le pont LibreOffice-Java
Sur Windows / macOS : rendez-vous sur https://adoptium.net/ et téléchargez la dernière version LTS.
Télécharger le pilote SQLite JDBC
Rendez-vous sur la page des releases du projet : https://github.com/xerial/sqlite-jdbc/releases
Téléchargez le fichier nommé sqlite-jdbc-3.x.x.x.jar.
Attention, sur cette page il y a aussi un fichier sqlite-jdbc-3.x.x.x-natives-linux.jar — ce n'est pas le bon, il ne contient pas les classes Java. Prenez bien le fichier .jar sans mention natives. (oui parce que des fois on se rue sur le fichier qui contient le nom de son environnement de travail et ça prend pas mal de temps TRÈS (vraiment très...) frustrant d'erreurs pour se rendre compte que c'était juste pas le bon fichier dès le début...
(pensez aussi à afficher tous les assets sur la page, quand il y a trop de fichiers, github ne montre que les premiers de la liste))
Placez ce fichier quelque part de stable sur votre machine (par exemple ~/librairies/).
Déclarer le pilote dans LibreOffice
Dans LibreOffice : Outils → Options → LibreOffice → Avancé → Paramètres Java
Vérifiez d'abord qu'un JRE apparaît dans la liste avec une coche. Si la liste est vide, cliquez sur "Ajouter" et pointez vers le dossier d'installation de Java sur votre système.
Cliquez ensuite sur "Chemin de classe" → "Ajouter une archive" → sélectionnez votre fichier .jar. Fermez complètement LibreOffice (toutes les fenêtres) et relancez-le.
Créer la connexion
Ouvrez LibreOffice Base (Fichier → Nouveau → Base de données) :
- Sélectionnez "Se connecter à une base de données existante"
- Choisissez "JDBC" dans la liste déroulante
- Cliquez sur Suivant
Dans l'écran suivant :
- URL de source de données JDBC :
jdbc:sqlite:/chemin/absolu/vers/votre/base.db(en général vous pouvez le copier-coller depuis la barre d'adresse en haut du navigateur de fichiers)- Pour un GeoPackage : même chose avec l'extension
.gpkg
- Pour un GeoPackage : même chose avec l'extension
- Classe du pilote JDBC :
org.sqlite.JDBC→ ici, vous pouvez tout de suite tester la classe pour être sûr que tout est bien paramétré.
Le chemin doit être absolu — si vous indiquez juste un nom de fichier sans chemin complet, SQLite crée silencieusement une base vide au lieu d'ouvrir l'existante, et vous vous retrouvez avec des tables vides sans message d'erreur (même chose si vous vous trompez dans le chemin d'accès ou le nom de la base, ça vous en crée une vide et on se sent bien bête
).
Cliquez sur "Tester la connexion" — si ça répond "La connexion a été établie avec succès", c'est parti ! 
À l'écran suivant, laissez cochée l'option d'enregistrer les données de connexion dans le fichier .odb (le format natif de LibreOffice Base). Donnez un nom au fichier et enregistrez-le à côté de votre base SQLite. Ce fichier .odb n'est que la configuration de la connexion — vos données restent dans le fichier SQLite.
SQLite ne gère qu'une écriture à la fois. Si vous ouvrez la base dans DB Browser et LibreOffice Base en même temps et que vous modifiez des données dans les deux, vous risquez des conflits. Travaillez dans un seul outil à la fois.
:baguette_bread: Truc cool, ne vous en faites pas, vous n'avez à faire cette opération que la première fois que vous voulez ouvrir votre base de cette façon. Après la connexion, libreOffice enregistre un fichier
.odbqui conserve les informations de connexion en plus des formulaires, requêtes, rapports, etc.
Explorer la base depuis LibreOffice Base
Une fois connecté.e, vous voyez l'interface principale avec quatre sections à gauche : Tables, Requêtes, Formulaires, États.
- Les Tables, j'espère ne pas avoir à vous ré-expliquer ce que c'est.
- Les Requêtes (Queries, parce que j'ai laissé mon interface en anglais, c'est la vie :bald_man:), ce sont des questions que vous pourrez enregistrer, ça peut être croiser des données, mais aussi les filtrer (genre "donne moi les structures des zones de priorité basse") ou même des comptages et statistiques de base. Vous pouvez utiliser ces requêtes pour créer des rapports et pour les statistiques plus complexes, je vous conseille d'exporter des requêtes propres qui seront hyper faciles à intégrer dans R
- Formulaires, c'est assez simple, il s'agit de faire de beaux formulaires de saisie ou de consultation. Vous pouvez réaliser autant de formulaires que vous le désirez sur une même table ou une même requête, dans plusieurs langues aussi. Ce sera le moment de penser à l'ergonomie de votre base.
- États, ce sont les rapports dont j'ai déjà parlé. En gros
, c'est un outil qui permet d'exporter vos données avec une mise ne page correcte, comme produire un catalogue ou synthétiser un ensemble d'enregistrements.
Les tables
Cliquez sur "Tables". Vous devriez voir apparaître toutes vos tables SQLite : T_zones, T_mobilier, L_natures_mob, etc. Double-cliquez sur une table pour voir son contenu dans un tableur. Vous pouvez saisir directement dans cette vue, ça peut être pratique dans certains cas, mais c'est rudimentaire. C'est pour ça qu'on va créer des formulaires. 
Créer un formulaire de saisie
Le formulaire de base avec l'assistant
Pour les formulaires on fait simple : on utilise l'assistant. :superhero:
Formulaires → Créer un formulaire en utilisant l'assistant... (ou quelque chose comme ça avec une baguette magique, j'ai directement traduit depuis l'interface en anglais).
L'assistant vous guide pas à pas :
Sélection des champs : choisissez la table
T_mobilieret déplacez les champs que vous voulez dans le formulaire (pas besoin de mettreid, il est géré automatiquement ougeomqui ici, ne ferait qu'afficher des signes incompréhensibles). Ajoutezidentifiant,zone,nature,contexte_sol,date_creation,date_modification,auteurice,photographie,commentaires. Ou pour faire plus rapide, cliquez sur le double chevron et retirez les champsidetgeomqui ne nous intéressent pas ici.Sous-formulaire : on n'en a pas besoin ici, ignorez cette étape. Par exemple, si vous voulez afficher directement les structures des zones dans le formulaire des zones, vous pouvez faire ça ici directement. Pour une liste simple, c'est très pratique, mais si vous voulez un truc un peu poussé, on peut intégrer un sous-formulaire plus tard, à partir d'un formulaire déjà existant (les
3.et4.n'apparaissent que pour les sous-formulaires).Organiser les contrôles : choisissez la disposition qui vous convient. "En colonnes - Étiquettes à gauche" c'est classique et lisible et facile à modifier. Je préfère "Étiquettes au-dessus", mais c'est vraiment du goût perso. :black_cat:
Définir la saisie des données : Comme vous allez utiliser cette base vous-même, laissez l'option par défaut : "Le formulaire doit afficher toutes les données" (Là, je suis allé voir la documentation en français donc il ne devrait pas y avoir de problème de traduction).
Style : choisissez ce qui vous plaît, mais évitez les trucs trop chargés si vous voulez rester concentré.e sur les données. De toute façon, tous les trucs de base sont moches !

Nom : appelez-le quelque chose de clair, genre
formulaire_mobilier.
Maintenant, vous pouvez, soit directement travailler avec le formulaire (mais les champs zone, nature, contexte_sol et auteurice affichent des nombres (les clés étrangères) au lieu des libellés) soit modifier le formulaire pour faire de beaux menus déroulants, mettre des étiquettes un peu plus lisible, tout ça, tout ça
(donc moi je fais directement "modifier le formulaire").
Transformer un champ en liste déroulante
On n'oublie pas, par exemple, pour la nature du mobilier, on a fait le lien entre la liste des natures de mobilier et la table du mobilier avec une clé primaire. C'est-à-dire que c'est la clé primaire correspondant à un terme qui est enregistré (par exemple 1 pour Céramique), même si nous on veut afficher Céramique. C'est le rôle du menu déroulant, nous afficher les termes d'un champ choisi pour enregistrer la clé primaire correspondante dans la table.
- Clic droit sur
Nature→Dégrouper(l'étiquette et le champ sont groupés par défaut, donc il faut les dégrouper d'abord) - Ensuite supprimez et dans les contrôles supplémentaires "Zone de liste" (ou faites directement un clic droit → Remplacer par → Zone de liste)
- Champ lié :
zone(le champ de votre tableT_mobilier) - Type de contenu de liste : "SQL"
- Contenu de liste :
SELECT nom, id FROM T_zones ORDER BY nom— ça affiche le nom mais enregistre l'id. :exploding_head:
L'ordre
SELECT libellé, idest important : le premier champ est affiché, le second est enregistré. C'est l'inverse de ce qu'on ferait intuitivement, mais c'est la convention LibreOffice Base.
Répétez l'opération pour nature (SELECT nature_mob, id FROM L_natures_mob), contexte_sol (SELECT contexte, id FROM L_contextes) et auteurice (SELECT auteurice, id FROM L_auteurices).
Enregistrez, passez en mode données et testez. Vos menus déroulants devraient afficher les libellés et enregistrer les bons identifiants en base. 
Créer une requête graphique
Requêtes → Créer une requête en utilisant l'assistant...
Ou, si vous êtes un peu à l'aise, Créer une requête en mode ébauche... qui propose une interface graphique pour construire des requêtes par glisser-déplacer, sans écrire de SQL à la main. C'est un peu l'équivalent du concepteur de requêtes d'Access.
Pour afficher le mobilier avec les noms lisibles :
- Ajoutez les tables
T_mobilier,T_zones,L_natures_mobdans le mode ébauche - Faites glisser les liens entre les champs correspondants (zone → id, nature → id)
- Cochez les champs à afficher :
identifiant,nom(de T_zones),nature_mob(de L_natures_mob),commentaires
LibreOffice Base génère la requête SQL en dessous, vous pouvez basculer en vue SQL pour la voir et l'affiner si besoin.
Créer un état (rapport imprimable)
États → Créer un état en utilisant l'assistant...
Les états permettent de générer des documents imprimables depuis vos données — utile pour un rapport de terrain, une liste d'inventaire, etc. L'assistant est similaire à celui des formulaires. Choisissez votre requête ou table source, sélectionnez les champs, choisissez un regroupement si nécessaire (par zone, par nature...) et laissez l'assistant générer la mise en page.
Et Access dans tout ça ?
Si vous travaillez sous Windows avec Microsoft Access, la technologie est la même (ODBC), mais la configuration se fait différemment — via le gestionnaire de sources de données de Windows plutôt qu'un fichier texte :
- Installez le pilote SQLiteODBC : http://www.ch-werner.de/sqliteodbc/
- Ouvrez les "Sources de données ODBC" (recherchez "ODBC" dans le menu Démarrer), créez une nouvelle source de données utilisateur avec le pilote SQLite3 et pointez vers votre fichier
.db - Dans Access : Données externes → Base de données ODBC → liez les tables
Les formulaires, requêtes et états se créent ensuite de la même façon qu'avec n'importe quelle base connectée à Access. L'interface est différente, les boutons ne sont pas aux mêmes endroits, mais la logique est identique. 
Access ne lit pas les géométries spatiales du GeoPackage. Les colonnes
geomapparaîtront comme du binaire illisible. Pour les données purement attributaires, ça fonctionne très bien. Pour le spatial, restez sur QGIS ou SQLite/SpatiaLite.
Ressources
- Documentation LibreOffice Base : https://documentation.libreoffice.org/fr/
- Pilote SQLite JDBC : https://github.com/xerial/sqlite-jdbc/releases
- SQLiteODBC (pour Access/Windows) : http://www.ch-werner.de/sqliteodbc/
LibreOffice Base a sa propre base de données interne (HSQLDB), mais on ne va pas l'utiliser. On va le brancher directement sur notre SQLite/GeoPackage existant, pour ne pas avoir à dupliquer les données.
). 