
Créer un CRM basique avec LibreOffice Base : Guide étape par étape
Introduction au CRM avec LibreOffice Base
L’ère numérique requiert des outils performants pour gérer efficacement les relations clients. Un logiciel CRM (Customer Relationship Management) est indispensable pour toute entreprise cherchant à optimiser ses interactions avec ses clients. Si les grandes entreprises investissent souvent dans des solutions onéreuses, il est possible de créer un CRM basique et gratuit en utilisant LibreOffice Base. Ce guide étape par étape vous montrera comment configurer votre CRM maison avec LibreOffice.
Publicité
Pourquoi choisir LibreOffice Base pour créer votre CRM ?
LibreOffice Base est une application de gestion de bases de données gratuite et open-source intégrée à la suite LibreOffice. Ce choix présente plusieurs avantages pour créer un CRM :
- Gratuité : LibreOffice est entièrement gratuit, ce qui le rend accessible à tous.
- Flexibilité : Vous pouvez personnaliser votre CRM selon vos besoins sans restriction.
- Compatibilité : Il est compatible avec divers formats de fichiers, facilitant l'importation et l'exportation de données.
Étape 1 : Installer LibreOffice Base
Avant de commencer, assurez-vous d'avoir la dernière version de LibreOffice installée sur votre ordinateur :
- Téléchargez LibreOffice : Rendez-vous sur le site officiel de LibreOffice pour télécharger la dernière version compatible avec votre système d'exploitation.
- Installez le programme : Suivez les instructions à l'écran pour installer LibreOffice sur votre ordinateur.
Étape 2 : Créer une nouvelle base de données
Avec LibreOffice Base, vous pouvez créer une base de données relationnelle simple :
- Lancez LibreOffice Base : Ouvrez le logiciel à partir du menu de votre ordinateur.
- Créer un fichier de base de données : Cliquez sur “Créer une nouvelle base de données” puis sur “Suivant”.
- Enregistrer la base de données : Donnez un nom pertinent à votre base de données, tel que "CRM_Entreprise".
Étape 3 : Concevoir les tables pour votre CRM
Les tables sont au cœur de votre base de données, où toutes les informations sur vos clients seront stockées :
-
Création de tables : Accédez à l’onglet "Tables" et sélectionnez “Créer une table en mode ébauche”.
-
Définir les champs : Créez des champs essentiels tels que :
- ID_Client (type : Numéro, clé primaire)
- Nom
- Prénom
- Téléphone
- Société
- Notes
-
Enregistrer la table : Nommez votre table, par exemple, “Clients”.
Étape 4 : Créer des formulaires personnalisés
Les formulaires facilitent l'ajout et la gestion des données au sein de votre CRM :
- Accéder aux formulaires : Allez dans l’onglet "Formulaires" et sélectionnez “Utiliser l'assistant de création de formulaire”.
- Sélection des champs : Choisissez les champs pour les afficher dans le formulaire.
- Configurer le formulaire : Suivez les étapes de l’assistant pour personnaliser l’apparence et la fonctionnalité du formulaire.
- Enregistrer le formulaire : Donnez au formulaire un nom descriptif, tel que “Formulaire_Clients”.
Étape 5 : Organiser les requêtes de données
Les requêtes permettent d’extraire, trier et filtrer les données selon vos besoins spécifiques :
- Créer une nouvelle requête : Optez pour “Créer une requête en mode ébauche” via l’onglet "Requêtes".
- Ajouter des tables : Insérez la table "Clients".
- Sélectionner les champs nécessaires : Incluez des champs comme le Nom, l'Email pour constituer votre requête.
- Configurer les critères : Ajoutez des filtres pour extraire, par exemple, les clients sans email.
- Enregistrer la requête : Nommez-la en conséquence, par exemple, “Clients_Sans_Email”.
Étape 6 : Créer des rapports pour analyser les données
Les rapports sont essentiels pour visualiser et analyser efficacement vos données clients :
- Utilisation de l'assistant de rapport : Dans l’onglet "Rapports", sélectionnez “Utiliser l'assistant de création de rapport”.
- Sélection des champs pour le rapport : Choisissez les données que vous souhaitez inclure dans votre rapport.
- Personnaliser l'agencement : Suivez les étapes pour définir l’agencement et le style du rapport.
- Enregistrer et nommer le rapport : Choisissez un nom explicite tel que “Rapport_Clients_Actifs”.
Étape 7 : Tester et ajuster votre CRM
Avant de commencer à utiliser votre CRM, il est crucial de le tester pour vous assurer qu’il fonctionne correctement :
- Entrer des données test : Remplissez le formulaire avec des données fictives pour vérifier son opérationnalité.
- Exécuter des requêtes et des rapports : Assurez-vous que les requêtes retournent les résultats attendus et que les rapports sont précis.
Les avantages d'un CRM avec LibreOffice Base
Créer un CRM basique avec LibreOffice Base est une solution accessible et personnalisable pour les petites entreprises ou individus. Bien que ce système ne dispose pas de toutes les fonctionnalités avancées des logiciels commerciaux, il est suffisamment robuste pour gérer efficacement les relations clients au quotidien. En suivant ce guide étape par étape, vous disposez désormais d'un outil puissant pour renforcer la gestion de vos relations clients sans dépenser un centime. Expérimentez avec votre CRM, adaptez-le à vos besoins spécifiques, et profitez des bénéfices d'une gestion client optimisée avec LibreOffice Base.
Télécharger la dernière version de LibreOffice
FAQ Création CRM
Introduction
Pour la mise en place de votre CRM basique avec LibreOffice Base, voici les questions les plus fréquentes sur les champs, requêtes, fonctions et rapports pour un usage TPE/PME.
Champs (tables & types)
Q1. Quels champs minimum pour une table Clients ?
id_client(INTEGER, clé primaire, auto)nom(VARCHAR)prenom(VARCHAR)email(VARCHAR, unique)telephone(VARCHAR)societe(VARCHAR)source(VARCHAR, ex. site, salon, referral)date_creation(DATE)date_derniere_interaction(DATE)statut(VARCHAR, ex. Prospect, Actif, Perdu)notes(CLOB/TEXT)
Q2. Et pour Suivi/Opportunités (pipeline simple) ?
id_opportunite(INTEGER, clé primaire)id_client(INTEGER, FK ? Clients)intitule(VARCHAR)montant_prevu(DECIMAL)probabilite(INTEGER, 0–100)etape(VARCHAR, ex. Nouveau, Qualif, Proposition, Gagné, Perdu)date_echeance(DATE)responsable(VARCHAR)notes(TEXT)
Q3. Pour Activités/Interactions (appels, emails, rdv) ?
id_action(INTEGER)id_client(INTEGER)type_action(VARCHAR, ex. Appel, Email, RDV)date_action(TIMESTAMP)compte_rendu(TEXT)suivi_le(DATE, pour relance)par(VARCHAR)
Q4. Bonnes pratiques de types et contraintes ?
- Mettez NOT NULL sur les clés et dates clés.
- Un index sur
email,statut,date_derniere_interaction. - Contrainte UNIQUE sur
emailsi possible. - Utilisez des listes de valeurs pour
statut,etape,type_action.
Requêtes les plus utiles
(SQL générique compatible Base ; adaptez CURRENT_DATE, ||/CONCAT, TIMESTAMPADD/DATEADD selon votre moteur HSQLDB/Firebird/MySQL.)
Q5. Prospects à relancer (pas contactés depuis 30 jours) ?
SELECT c.id_client, c.nom, c.email, c.date_derniere_interaction
FROM Clients c
WHERE c.statut IN ('Prospect','Actif')
AND (c.date_derniere_interaction IS NULL
OR c.date_derniere_interaction < CURRENT_DATE - 30)
ORDER BY c.date_derniere_interaction NULLS FIRST;
Q6. Opportunités à échoir ce mois-ci ?
SELECT o.*, c.nom AS client
FROM Opportunites o
JOIN Clients c ON c.id_client = o.id_client
WHERE o.etape IN ('Qualif','Proposition')
AND EXTRACT(MONTH FROM o.date_echeance) = EXTRACT(MONTH FROM CURRENT_DATE)
AND EXTRACT(YEAR FROM o.date_echeance) = EXTRACT(YEAR FROM CURRENT_DATE)
ORDER BY o.date_echeance;
Q7. Valeur attendue du pipeline (montant × probabilité) ?
SELECT SUM(o.montant_prevu * (o.probabilite/100.0)) AS pipeline_pondere
FROM Opportunites o
WHERE o.etape NOT IN ('Gagné','Perdu');
Q8. Top clients par chiffre signé (12 derniers mois) ?
SELECT c.id_client, c.nom, SUM(o.montant_prevu) AS total_signe
FROM Opportunites o
JOIN Clients c ON c.id_client = o.id_client
WHERE o.etape = 'Gagné'
AND o.date_echeance >= CURRENT_DATE - 365
GROUP BY c.id_client, c.nom
ORDER BY total_signe DESC
FETCH FIRST 10 ROWS ONLY;
Q9. Duplicats potentiels (même email) ?
SELECT email, COUNT(*) AS nb
FROM Clients
GROUP BY email
HAVING COUNT(*) > 1
ORDER BY nb DESC;
Q10. Tâches/relances dues aujourd’hui ou en retard ?
SELECT a.*, c.nom AS client
FROM Activites a
JOIN Clients c ON c.id_client = a.id_client
WHERE a.suivi_le IS NOT NULL
AND a.suivi_le <= CURRENT_DATE
ORDER BY a.suivi_le, c.nom;
Q11. Taux de conversion (opportunités gagnées / totales) sur période ?
SELECT
SUM(CASE WHEN etape = 'Gagné' THEN 1 ELSE 0 END) * 1.0
/ NULLIF(COUNT(*),0) AS taux_conversion
FROM Opportunites
WHERE date_echeance BETWEEN :debut AND :fin;
Q12. Temps moyen de cycle (création ? clôture gagnée) ?
SELECT AVG(DATEDIFF('DAY', o.date_creation, o.date_echeance)) AS cycle_moyen_jours
FROM Opportunites o
WHERE o.etape = 'Gagné';
Fonctions utiles (expressions & calculs)
Q13. Normaliser le texte (noms propres) ?
- Majuscules/minuscules :
UPPER(col),LOWER(col) - Titre simple (affichage) : combinez
UPPER(SUBSTRING(...))+LOWER(...)si besoin.
Q14. Concaténer pour un affichage rapide ?
SELECT (c.prenom || ' ' || c.nom || ' – ' || COALESCE(c.societe,'')) AS label
FROM Clients c;
-- Ou CONCAT(c.prenom, ' ', c.nom, ' – ', COALESCE(c.societe,''))
Q15. Dates et relances automatiques ?
-
Aujourd’hui :
CURRENT_DATE -
Ajout de jours :
- HSQLDB/MySQL :
DATEADD('DAY', 14, CURRENT_DATE)ouCURRENT_DATE + 14 - Firebird :
DATEADD(14 DAY TO CURRENT_DATE)
- HSQLDB/MySQL :
Q16. Champs calculés dans une requête (ex. valeur pondérée) ?
SELECT o.*, (o.montant_prevu * (o.probabilite/100.0)) AS valeur_ponderee
FROM Opportunites o;
Rapports (états PDF/print dans Base)
Q17. Quels rapports de base pour une TPE ?
- Fiche client : coordonnées, dernières interactions, opportunités ouvertes.
- Relances à venir : activités avec
suivi_le? J+7. - Pipeline par étape : montants et valeurs pondérées par
etape. - Ventes par mois : opportunités gagnées vs. objectifs.
- Top 20 clients : total signé sur 12 mois glissants.
Q18. Comment regrouper et totaliser par étape/période ?
-
Dans l’éditeur de rapports de LibreOffice Base :
- Tri par
etapepuis pardate_echeance. - Groupes par
etape. - Champs de total :
SUM(montant_prevu)etSUM(valeur_ponderee)en pied de groupe.
- Tri par
Q19. Indicateurs à afficher en couverture du rapport ?
- Pipeline total et pondéré.
- Nombre d’opportunités ouvertes / gagnées / perdues.
- Taux de conversion & cycle moyen (jours).
- Relances dues cette semaine.
Mise en forme & formulaires
Q20. Quels formulaires minimaux pour un CRM basique ?
- Form Client (fiche) + sous-formulaire Activités filtré sur le client.
- Form Opportunité relié au client (liste déroulante).
- Form Relances (liste des
suivi_leà traiter aujourd’hui).
Q21. Listes déroulantes propres (statut, étape, type_action) ?
- Créez une table
Listesou des tables dédiées (Etapes,Statuts). - Liez-les via contrôles de liste pour éviter les fautes et garder des valeurs stables.
Qualité des données & sécurité
Q22. Comment éviter les emails invalides ?
- Masque côté formulaire (regex simple) et contrainte UNIQUE sur
email. - Requête de contrôle périodique (emails vides/invalides).
Q23. Sauvegardes et taille du fichier .odb ?
- Exécutez des sauvegardes régulières.
- Si la base grossit, migrez vers un moteur externe (MariaDB/PostgreSQL) et gardez Base pour l’interface.
Astuces rapides
Q24. Vue “Clients inactifs” (sans action 90 jours) ?
SELECT c.*
FROM Clients c
LEFT JOIN Activites a ON a.id_client = c.id_client
GROUP BY c.id_client, c.nom, c.email, c.date_derniere_interaction, c.statut
HAVING MAX(COALESCE(a.date_action, c.date_derniere_interaction)) < CURRENT_DATE - 90
OR MAX(COALESCE(a.date_action, c.date_derniere_interaction)) IS NULL;
Q25. Prévoir les relances 7 jours après une action ?
SELECT a.id_action, c.nom, a.type_action, a.date_action,
(a.date_action + 7) AS relance_theorique
FROM Activites a
JOIN Clients c ON c.id_client = a.id_client
WHERE a.date_action >= CURRENT_DATE - 30;
Q26. Opportunités sans responsable affecté ?
SELECT o.*, c.nom AS client
FROM Opportunites o
JOIN Clients c ON c.id_client = o.id_client
WHERE (o.responsable IS NULL OR TRIM(o.responsable) = '');
Modèle de champs (copier-coller rapide)
| Table | Champ | Type | Note |
|---|---|---|---|
| Clients | id_client | INTEGER (PK) | Auto |
| nom/prenom | VARCHAR | Index sur nom utile |
|
| VARCHAR (UNIQUE) | Nettoyer doublons | ||
| telephone | VARCHAR | Masque d’entrée | |
| societe | VARCHAR | ||
| source | VARCHAR | Liste de valeurs | |
| statut | VARCHAR | Prospect/Actif/Perdu | |
| date_creation | DATE | Défaut = CURRENT_DATE |
|
| date_derniere_interaction | DATE | MAJ via triggers/requêtes | |
| notes | TEXT | ||
| Opportunites | id_opportunite | INTEGER (PK) | |
| id_client | INTEGER (FK) | Index | |
| intitule | VARCHAR | ||
| montant_prevu | DECIMAL | ||
| probabilite | INTEGER | 0–100 | |
| etape | VARCHAR | Liste de valeurs | |
| date_echeance | DATE | ||
| responsable | VARCHAR | ||
| notes | TEXT | ||
| Activites | id_action | INTEGER (PK) | |
| id_client | INTEGER (FK) | ||
| type_action | VARCHAR | Email/Appel/RDV | |
| date_action | TIMESTAMP | ||
| compte_rendu | TEXT | ||
| suivi_le | DATE | Pour relances | |
| par | VARCHAR | Auteur |
Conclusion
Avec ces champs, requêtes prêtes à l’emploi, fonctions simples et rapports standards, vous couvrez 95 % des besoins d’un CRM basique avec LibreOffice Base pour une petite entreprise. Vous pourrez ensuite affiner : segmentation, scoring, objectifs mensuels, automatisation des relances, et exports vers email marketing.

