Atelier 2 : Devis et lignes
Niveau structurer · Durée ~50 min · Prérequis Atelier 1
Un devis n'est pas une fiche : c'est un en-tête et des lignes. C'est le motif le plus courant de toute application de gestion — devis, facture, commande, feuille de temps, inventaire. Vous allez le construire en entier, puis le remplir depuis un fichier Excel.
À la fin, vous saurez : créer un sous-objet, calculer une ligne, cumuler les lignes dans l'en-tête, écrire une formule conditionnelle, produire un PDF, et importer des données existantes.
Étape 1 : L'objet « Devis »
Studio → onglet Objets → Nouvel objet : nom Devis, icône 📄.
Puis onglet Champs, + Ajouter un champ pour chacun :
| Libellé | Type | Réglage |
|---|---|---|
| Référence | Texte court | Champ obligatoire |
| Client | Texte court | — |
| Date | Date | — |
| Statut | Liste de choix | options Brouillon, Envoyé, Accepté, Refusé |
| Remise (%) | Nombre décimal | — |
L'objet « Devis » figure dans le menu de gauche et sa liste s'ouvre, vide.
Étape 2 : Le sous-objet « Ligne »
Une ligne de devis n'existe pas toute seule : elle appartient à son devis, ne s'affiche pas dans le menu, et se saisit sous la fiche du devis. C'est exactement la définition d'un sous-objet.
- Nouvel objet : nom
Ligne, et surtout Sous-objet de →Devis. - Ajouter ses champs :
| Libellé | Type |
|---|---|
| Désignation | Texte court |
| Quantité | Nombre entier |
| Prix unitaire | Nombre décimal |
Le champ relation vers le devis a été créé automatiquement : vous n'avez pas à le poser.
Si vous avez créé « Ligne » comme objet ordinaire, rien n'est perdu : ouvrez-le et cliquez sur Transformer en sous-objet. Champs et données sont conservés. Voir Créer un objet.
Étape 3 : Le montant d'une ligne
Sur l'objet Ligne, ajouter un champ Champ calculé (formule) :
- Libellé :
Montant - Formule : tapez
{et choisissez Quantité, puis*, puis{et Prix unitaire →
{quantite} * {prix_unitaire}
- Type du résultat : Nombre décimal.
- Format d'affichage : Montant (€).
L'aperçu à droite calcule le résultat en direct. Voir Écrire une formule.
Dans la grille des lignes, la colonne Montant se remplit à mesure que vous tapez la quantité et le prix — pas à l'enregistrement. Tant qu'une valeur nécessaire manque, elle indique « en attente » plutôt qu'un zéro qu'on croirait sur parole.
Étape 4 : Le total du devis
Retour sur l'objet Devis, + Ajouter un champ :
- Libellé :
Total HT, type Cumul d'objets liés. - Objets liés à cumuler :
Ligne · Devis. - Opération : Somme. Champ à cumuler : Montant.
- Format d'affichage : Montant (€).
Créez un devis, ajoutez-lui deux lignes (2 × 120 € et 1 × 300 €) : le Total HT affiche 540,00 €. Modifiez une quantité, le total suit.
Étape 5 : Le net à payer, avec condition
Un total ne suffit pas : la remise ne s'applique qu'au-delà d'un certain montant. Sur Devis, ajouter un Champ calculé :
- Libellé :
Net à payer - Formule :
SI({total_ht} > 1000 ; {total_ht} * (1 - {remise} / 100) ; {total_ht})
- Type du résultat : Nombre décimal, format Montant (€).
Lisez-la à voix haute : si le total dépasse 1000, applique la remise, sinon garde le total. C'est tout l'intérêt de SI.
SI({quantite} == 0 ; 0 ; {total} / {quantite}) ne divise jamais par zéro : seule la branche choisie est évaluée.
Étape 6 : Le PDF du devis
Objet Devis → onglet Documents → + Nouveau document, nommé Devis client.
Composez le document avec + Ajouter un bloc : un titre, un bloc de texte reprenant la référence et le client, puis un tableau des lignes. Contrôlez avec Aperçu du document, puis Enregistrer.
Sur une fiche de devis, le document se génère alors en un clic. Détail des blocs et des variables : Documents PDF.
Étape 7 : Reprendre un fichier existant
Vos devis existent déjà dans un tableur. Plutôt que de les ressaisir :
- Ouvrir la liste Devis, bouton Importer.
- Déposer un fichier
.xlsx,.csvou.txtdont la première ligne porte les noms de colonnes. - Vérifier la correspondance des colonnes, corriger si besoin, lire le décompte.
- Importer.
Fabriquez un petit fichier pour essayer :
Référence;Client;Date;Statut;Remise (%)
DEV-001;Boulangerie Martin;17/08/2026;Envoyé;5
DEV-002;Atelier Dupont;18/08/2026;Accepté;10
Notez ce que le moteur accepte : point-virgule, date jj/mm/aaaa, et le libellé du statut plutôt que son code. Détail : Créer et modifier une fiche.
Une seule ligne en erreur annule l'import complet. C'est voulu : un fichier à moitié importé est plus difficile à rattraper qu'un import refusé.
À vous de jouer
Exercice 1 — La marge
Sur l'objet Ligne (et non sur Devis), ajoutez un champ Coût unitaire, puis un champ calculé Marge qui donne la marge de la ligne en euros.
Corrigé
Sur Ligne, champ calculé Marge, type de résultat Nombre décimal :
({prix_unitaire} - {cout_unitaire}) * {quantite}
Pour la marge du devis entier, ajoutez un champ sur Devis :
- Libellé :
Marge totale, type Cumul d'objets liés. - Objets liés à cumuler :
Ligne · Devis. - Opération : Somme. Champ à cumuler : Marge.
- Format d'affichage : Montant (€).
Exercice 2 — L'état lisible
Le statut affiche Envoyé, Accepté… Ajoutez sur le devis un champ calculé Suivi qui affiche « À relancer » pour un devis envoyé, « Signé » pour un devis accepté, et rien sinon.
Corrigé
Champ calculé, type du résultat : Texte (c'est le piège : en Nombre décimal le résultat resterait vide) :
SI({statut} == "Envoyé" ; "À relancer" ; SI({statut} == "Accepté" ; "Signé" ; ""))
Les SI s'imbriquent. La comparaison de texte ignore la casse et les accents de bord, mais pas l'orthographe : vous pouvez aussi comparer au code de l'option (envoye).
Exercice 3 — Le nombre de lignes
Affichez sur le devis le nombre de lignes qu'il contient.
Corrigé
Cumul d'objets liés, opération Nombre. Aucun champ à cumuler : c'est le seul cas où le sélecteur « Champ à cumuler » disparaît.
Exercice 4 — Un import qui échoue
Ajoutez volontairement une ligne fautive à votre fichier (Remise (%) = beaucoup) et relancez l'import. Lisez le message.
Ce qu'il faut observer
L'analyse annonce la ligne et la colonne fautives, avec le nom de colonne tel qu'il figure dans votre fichier — pas le code technique du champ. Rien n'est créé tant que le fichier n'est pas propre.
Ce que vous avez appris
- Un sous-objet modélise « des lignes sous un en-tête », et se transforme après coup si vous vous êtes trompé.
- Une formule calcule sur la fiche courante ; un cumul agrège les fiches liées. Les deux se combinent : formule sur la ligne, cumul sur l'en-tête.
SIrend une formule conditionnelle, et le type du résultat doit suivre ce qu'elle renvoie.- Un import reprend l'existant sans ressaisie, en annonçant tout avant d'écrire.
Atelier suivant : L'interface sur mesure.