Quand j’ai commencé à développer ma base de données clients, je voulais surtout mettre un peu les doigts dans Base et voir comment cela fonctionnait. Il n’y a donc pas eu de cahier des charges, et le développement s’est fait au fil de l’eau. Ce qui explique, d’ailleurs, qu’il y a deux trois trucs mineurs qui ne fonctionnent pas comme cela devrait.
Et, comme je ne suis pas franchement développeuse et que ma connaissance du SQL est basique, voire moins, je n’ai utilisé que les fonctionnalités de Base en particulier et de LibreOffice en général pour mettre en place le module qui fonctionne bien merci.
L’objet de la base
Ma base de données comporte, et c’est le point de départ, une table avec les coordonnées des clients à partir de laquelle tout se découle, ensuite il y a une table factures qui permet d’en gérer le suivi, de l’émission au paiement, une table devis et une table suivi clients pour la gestion des autres documents échangés (ou non) avec eux plus diverses autres tables pour les listes déroulantes : civilité, états des documents, moyens de paiement, etc.
Au moment de la création de ma base de données, je pensais ne gérer que le suivi des factures, le premier formulaire créé a donc un sous-formulaire pour la gestion des factures, car, idéalement, pour un client donné on est susceptible d’en générer plus d’une.
Après cela, se sont greffés, au fur et à mesure, les autres modules qui fonctionnent tous de la même façon : formulaire principal avec les coordonnées des personnes et des entreprises plus sous-formulaire. Rien que de très banal et à la portée de n’importe quel utilisateur. L’essentiel étant que les tables soient créées avant les formulaires et que les sous-formulaires soient générés en même temps que leur formulaire principal [1].
Les fonctionnalités de la base
Sur la capture d’écran précédente, on voit qu’il y a un bouton Facture qui ouvre mon modèle de facture fait sous Writer (j’en ai un aussi sous Calc mais c’est moins pratique). Le formulaire de suivi, a aussi des boutons qui ouvrent soit des modèles de document (conventions par exemple), soit la feuille de calcul qui me permet de gérer le temps passé pour certaines prestations, soit carrément le dossier clients. Les notes du sous-formulaire me servent aussi à noter le nombre de personnes formées, passant, à établir plus facilement le bilan pédagogique annuel réclamé par la direction du contrôle de la formation continue.
Dans tout ça aucune macro : uniquement des fonctionnalités proposées par Base.
Pour rechercher une personne, j’utilise simplement le bouton de recherche (les jumelles) de Base qui ouvre une boite de dialogue dans laquelle on peut entrer ce que l’on veut : pas de requête SQL à écrire.
Comment ça marche avec les autres modules de LibreOffice ?
Dans l’application du document, ici Writer, j’affiche la Source de données, menu Affichage > Source de données
ou raccourci clavier Ctrl + Maj + F4
. En pratique, j’ai ajouté le bouton à ma barre d’outils. Je recherche l’enregistrement en utilisant le bouton ad hoc (les jumelles) qui m’ouvre la même boite de dialogue que dans Base.
Ensuite, je sélectionne l’enregistrement en cliquant tout à gauche de la colonne, puis sur le bouton Données dans les champs
. Et hop, les données sélectionnées s’affichent au bon endroit dans les champs du document.
Et, comme pour les données de facture ou de devis, je fais pareil avec les tables équivalentes. En fait, je n’utilise pas la fonctionnalité de recherche dans ces cas-là puisque, quand je dois faire une facture ou un devis, ce sont toujours les derniers enregistrements des tables qui sont concernés.
Ça fonctionne aussi bien avec Writer qu’avec Calc, mais, dans Calc, les enregistrements se posent en ligne et tout l’enregistrement, impossible de choisir les champs et leur emplacement. Je devais donc avoir une feuille supplémentaire qui affichait ces données et la facture qui les utilisait, une banale liaison du type : =Cellule source
. À partir du moment où il m’a semblé utile d’envoyer des factures au format pdf hybride (donc avec le fichier xml pour un traitement automatique), cette formule ne pouvait pas fonctionner.
Ça tient bien la route car mes factures sont très simples et qu’il n’y a pas de lien avec une base de données de produits ni de calculs complexes. Au besoin, je peux ajouter une annexe avec des détails supplémentaires : la première page indique le nombre de jour facturés, la suivante les dates, comme pour les factures de téléphone en fait.
Pour conclure
Pour tout dire, au début j’avais vaguement honte de ma ch’tite base de données qui me paraissait un peu minable. Mais, après avoir vu chez des clients qui ont des volumes de facture nettement plus importants que les miens des gestions de facture nettement moins bien, j’ai revu ma position et je suis plutôt fière du résultat qui est tout à fait fonctionnel.