Exemples pratiques
Voici une collection d'exemples concrets et réutilisables pour différents domaines métier. Copiez et adaptez-les à vos besoins.
Facturation
Calcul du total TTC d'une facture
Calcule le total TTC en sommant les lignes de produits avec leurs quantités et TVA.
var lignes = {{facture.lignes}};
var totalHT = SOMME(
TRANSFORMER(lignes, {{$.quantite}} * {{$.prixUnitaire}})
);
var totalTVA = SOMME(
TRANSFORMER(lignes,
{{$.quantite}} * {{$.prixUnitaire}} * {{$.tauxTVA}} / 100
)
);
var totalTTC = totalHT + totalTVA;
CONCAT(
"HT: ", FIXER.DECIMALES(totalHT, 2), " € | ",
"TVA: ", FIXER.DECIMALES(totalTVA, 2), " € | ",
"TTC: ", FIXER.DECIMALES(totalTTC, 2), " €"
)Ventilation de TVA par taux
Affiche le détail de la TVA pour chaque taux utilisé dans la facture.
var lignes = {{facture.lignes}};
var tauxUniques = UNIQUE(TRANSFORMER(lignes, {{$.tauxTVA}}));
JOINDRE(
TRANSFORMER(tauxUniques,
CONCAT(
"TVA ", {{$}}, "% : ",
FIXER.DECIMALES(
SOMME(
TRANSFORMER(
FILTRER(lignes, {{$.tauxTVA}} == {{$1}}),
{{$.quantite}} * {{$.prixUnitaire}} * {{$.tauxTVA}} / 100
)
),
2
),
" €"
)
),
" | "
)
// Résultat: "TVA 5.5% : 12.50 € | TVA 20% : 45.00 €"Statut de paiement
Affiche un statut clair selon l'état du paiement et l'échéance.
SI {{facture.payee}} == true
ALORS "✅ Payée le " + DDMMYYYY(DATE.DU.PASSAGE.AU.STATUT({{facture}}, "payée"))
SINON SI {{facture.dateEcheance}} < AUJOURDHUI()
ALORS CONCAT(
"⚠️ En retard de ",
AUJOURDHUI() - {{facture.dateEcheance}},
" jours"
)
SINON SI {{facture.dateEcheance}} == AUJOURDHUI()
ALORS "📌 Échéance aujourd'hui"
SINON CONCAT(
"⏳ Échéance dans ",
{{facture.dateEcheance}} - AUJOURDHUI(),
" jours"
)
FINSIGestion commerciale
Calcul de remise progressive
Applique une remise selon le montant de la commande.
var montant = {{commande.totalHT}};
var tauxRemise =
SI montant >= 5000 ALORS 15
SINON SI montant >= 2000 ALORS 10
SINON SI montant >= 1000 ALORS 7
SINON SI montant >= 500 ALORS 5
SINON 0
FINSI;
var remise = montant * tauxRemise / 100;
var netHT = montant - remise;
CONCAT(
"Montant: ", FIXER.DECIMALES(montant, 2), " € - ",
"Remise ", tauxRemise, "%: -", FIXER.DECIMALES(remise, 2), " € = ",
"Net: ", FIXER.DECIMALES(netHT, 2), " €"
)Chiffre d'affaires client sur l'année
Calcule le CA réalisé avec un client sur l'année en cours.
var commandes = CHERCHER.OBJETS(commande, {});
var commandesClient = FILTRER(commandes, {{$.clientId}} == {{client.id}});
var commandesAnnee = FILTRER(commandesClient,
ANNEE({{$.date}}) == ANNEE(AUJOURDHUI())
ET {{$.statut}} != "annulée"
);
var caHT = SOMME(TRANSFORMER(commandesAnnee, {{$.totalHT}}));
var nbCommandes = COMPTER(commandesAnnee);
CONCAT(
nbCommandes, " commande(s) - CA: ",
FIXER.DECIMALES(caHT, 2), " € HT"
)Alerte stock bas
Affiche une alerte si le stock est inférieur au seuil minimum.
var stock = {{produit.stock}};
var seuilAlerte = SI.VIDE.RENVOYER({{produit.seuilAlerte}}, 10);
var seuilCritique = SI.VIDE.RENVOYER({{produit.seuilCritique}}, 5);
SI stock <= 0
ALORS "🔴 Rupture de stock"
SINON SI stock <= seuilCritique
ALORS CONCAT("🟠 Stock critique: ", stock, " unités")
SINON SI stock <= seuilAlerte
ALORS CONCAT("🟡 Stock bas: ", stock, " unités")
SINON CONCAT("🟢 En stock: ", stock, " unités")
FINSIRessources humaines
Calcul de jours de mission
Calcule le nombre de jours ouvrés et le coût d'une mission.
var debut = {{mission.dateDebut}};
var fin = {{mission.dateFin}};
var tjm = {{consultant.tarifJournalier}};
var joursOuvres = JOURS.OUVRES(debut, fin);
var coutHT = joursOuvres * tjm;
var coutTTC = coutHT * 1.20;
CONCAT(
"Du ", DDMMYYYY(debut), " au ", DDMMYYYY(fin), "
",
joursOuvres, " jours × ", tjm, " € = ",
FIXER.DECIMALES(coutTTC, 2), " € TTC"
)Ancienneté d'un employé
Calcule et affiche l'ancienneté en années et mois.
var dateEmbauche = {{employe.dateEmbauche}};
var joursAnciennete = JOURS.ENTRE.INCLU(dateEmbauche, AUJOURDHUI());
var annees = joursAnciennete / 365;
var anneesEntieres = NOMBRE(FIXER.DECIMALES(annees, 0));
var moisRestants = NOMBRE(FIXER.DECIMALES((annees - anneesEntieres) * 12, 0));
SI anneesEntieres >= 1
ALORS CONCAT(anneesEntieres, " an(s) et ", moisRestants, " mois")
SINON CONCAT(moisRestants, " mois")
FINSIFiche collaborateur
Génère un résumé des informations d'un collaborateur.
var nom = CONCAT({{employe.prenom}}, " ", MAJUSCULE({{employe.nom}}));
var poste = SI.VIDE.RENVOYER({{employe.poste}}, "Non défini");
var email = SI.VIDE.RENVOYER({{employe.email}}, "N/A");
var tel = SI.VIDE.RENVOYER({{employe.telephone}}, "N/A");
var nationalite = SI.ECHOUE.RENVOYER(
NATIONALITE({{employe.nationalite}}),
"Non renseignée"
);
CONCAT(
"👤 ", nom, "
",
"💼 ", poste, "
",
"📧 ", email, "
",
"📱 ", tel, "
",
"🌍 ", nationalite
)Suivi de projets
Avancement d'un projet
Calcule le pourcentage d'avancement basé sur les tâches terminées.
var taches = {{projet.taches}};
var totalTaches = COMPTER(taches);
var tachesTerminees = COMPTER(FILTRER(taches, {{$.statut}} == "terminée"));
SI totalTaches == 0
ALORS "Aucune tâche définie"
SINON
var pourcentage = (tachesTerminees / totalTaches) * 100;
var barre = SI pourcentage >= 75 ALORS "🟩🟩🟩"
SINON SI pourcentage >= 50 ALORS "🟩🟩⬜"
SINON SI pourcentage >= 25 ALORS "🟩⬜⬜"
SINON "⬜⬜⬜"
FINSI;
CONCAT(
barre, " ",
FIXER.DECIMALES(pourcentage, 0), "% (",
tachesTerminees, "/", totalTaches, " tâches)"
)
FINSITâches en retard
Liste les tâches en retard avec leur nombre de jours de dépassement.
var taches = {{projet.taches}};
var tachesEnRetard = FILTRER(taches,
{{$.dateEcheance}} < AUJOURDHUI()
ET {{$.statut}} != "terminée"
);
SI COMPTER(tachesEnRetard) == 0
ALORS "✅ Aucune tâche en retard"
SINON
CONCAT(
"⚠️ ", COMPTER(tachesEnRetard), " tâche(s) en retard:
",
JOINDRE(
TRANSFORMER(tachesEnRetard,
CONCAT(
"• ", {{$.titre}}, " (",
AUJOURDHUI() - {{$.dateEcheance}}, " jours)"
)
),
"
"
)
)
FINSIBudget consommé
Affiche le budget consommé par rapport au budget total.
var budgetTotal = {{projet.budget}};
var depenses = SOMME({{projet.depenses.montant}});
var reste = budgetTotal - depenses;
var pourcentageConsomme = (depenses / budgetTotal) * 100;
var statut =
SI pourcentageConsomme >= 100 ALORS "🔴 Dépassement"
SINON SI pourcentageConsomme >= 90 ALORS "🟠 Attention"
SINON SI pourcentageConsomme >= 75 ALORS "🟡 Vigilance"
SINON "🟢 OK"
FINSI;
CONCAT(
statut, " Budget consommé à ", FIXER.DECIMALES(pourcentageConsomme, 0), "%
",
"Dépensé: ", FIXER.DECIMALES(depenses, 2), " € / ",
FIXER.DECIMALES(budgetTotal, 2), " €
",
"Reste: ", FIXER.DECIMALES(reste, 2), " €"
)Génération de références
Numéro de facture
Génère un numéro de facture au format FAC-AAAA-MM-NNNN.
var annee = ANNEE(AUJOURDHUI());
var mois = REMPLIR.ZEROS(MOIS(AUJOURDHUI()) + 1, 2);
var numero = REMPLIR.ZEROS({{facture.numeroSequentiel}}, 4);
CONCAT("FAC-", annee, "-", mois, "-", numero)
// Résultat: "FAC-2026-01-0042"Code client automatique
Génère un code client basé sur le nom et un numéro incrémental.
var prefixe = MAJUSCULE(COUPER({{client.nom}}, 3));
var numero = REMPLIR.ZEROS({{client.id}}, 5);
CONCAT(prefixe, "-", numero)
// "ACME" → "ACM-00042"Référence produit intelligente
Génère une référence incluant catégorie, année et numéro séquentiel.
var categorie = MAJUSCULE(COUPER({{produit.categorie}}, 2));
var annee = COUPER(CONCAT(ANNEE(AUJOURDHUI())), 2, 2);
var numero = REMPLIR.ZEROS({{produit.numeroSequentiel}}, 4);
CONCAT(categorie, annee, "-", numero)
// Catégorie "Électronique", 2026, n°42 → "EL26-0042"Prochaine étape
Terminez votre apprentissage avec les bonnes pratiques pour écrire des formules performantes et maintenables.