Aller au contenu

S'exercerNiveau 2, Pratiquer90 minutes

Projet : un tableau de bord alimenté par un formulaire

Les interventions d'une entreprise fictive de maintenance, saisies jusqu'ici à la main dans un tableur partagé : soixante lignes, huit erreurs. Vous les remplacez par un formulaire qui refuse les erreurs, vous contrôlez l'existant, puis vous construisez un tableau de bord qui se met à jour seul. Formules vérifiées par un recalcul, valeurs attendues et correction commentée.

Écrit le 9 octobre 2026 · Vérifié le 9 octobre 2026

Vous saurez

  • Construire un formulaire qui refuse une saisie fausse
  • Relier le formulaire à un tableur, chez Google ou chez Microsoft
  • Contrôler un tableau rempli à la main, ligne par ligne
  • Construire un tableau de bord par formules, et le vérifier contre des valeurs connues

Dans le parcours

Progression par projets

Étape 4 sur 12

Sur cette page
  1. Rappel
  2. L'essentiel
  3. Objectif
  4. Données fournies
  5. Consignes
  6. Critères de réussite
  7. Indications
  8. Correction commentée
  9. Extensions
  10. Lectures suivantes
Rappel de la page précédente

Répondez de tête, puis ouvrez. L'IA dans les tableurs

1Pourquoi demander une formule plutôt qu'un résultat ?

Parce que le tableur calcule juste et de la même façon à chaque fois, et qu'une formule se relit : on voit ce qu'elle additionne.

2Que vérifier avant de se fier à un tableau ?

Que toutes les lignes ont été lues, que chaque formule fait ce qu'on croit, qu'un échantillon refait à la main donne le même résultat, et que les totaux tombent juste face à une source connue.

L'essentiel
  1. Le meilleur contrôle se fait à la saisie : une liste plutôt qu'un texte libre, un nombre entre deux bornes, un format imposé, un champ obligatoire.
  2. Ce qui a déjà été saisi à la main se contrôle par une colonne de formules, qui signale chaque ligne douteuse au lieu de la corriger en silence.
  3. Le tableau de bord se construit par formules, sur les seules lignes valides ; on le vérifie contre des valeurs connues avant de s'y fier.
  4. Chez Microsoft, le classeur des réponses ne doit rien recevoir d'autre, sinon la synchronisation casse : le tableau de bord vit à côté.
  5. L'IA n'est pas nécessaire ici : un formulaire, des règles et des formules font le travail, gratuitement et sans erreur de lecture.
1

Objectif

Calorie Services, une entreprise fictive de maintenance de chauffage, note ses interventions dans un tableur partagé, à la main. Vous allez : créer le formulaire que les techniciens rempliront à la place ; contrôler les soixante dernières saisies ; construire le tableau de bord du mois, par semaine, par type, par technicien ; puis le brancher sur les réponses du formulaire.

Interventions fabriquées pour l'exercice : l'entreprise, ses techniciens, ses clients et ses montants sont inventés.

2

Données fournies

Un classeur : soixante interventions du 7 septembre au 2 octobre 2026, une colonne Contrôle et une colonne Semaine déjà calculées par formules. Huit erreurs de saisie s'y trouvent, comme dans tout tableur rempli à la main.

  • Interventions de septembreExcel, 10 Ko · soixante lignes, deux colonnes de formules
    Télécharger
    Lire le tableau

    Document fabriqué pour un projet d'entraînement de Meridal : l'entreprise, Calorie Services, ses techniciens, ses clients et ses montants sont inventés.

    Les soixante dernières interventions, saisies à la main dans un tableur partagé, du 7 septembre au 2 octobre 2026. Des erreurs de saisie s'y trouvent, comme dans tout tableur rempli à la main : la colonne Contrôle les signale.

    Données fournies
    N°TechnicienDateCode clientTypeDurée (h)Montant HTRésultatContrôleSemaine
    1Amandine2026-09-07CL-1053Entretien1140Terminée
    2Amandine2026-09-07CL-1028Dépannage1,598Terminée
    3Amandine2026-09-07CL-1019Entretien195Terminée
    4Bruno2026-09-08CL-1003Dépannage165Terminée
    5Céline2026-09-08CL-1036Dépannage1110Terminée
    6Céline2026-09-08CL-1007Dépannage165Terminée
    7David2026-09-09CL-1050Dépannage0,532Terminée
    8Bruno2026-09-09CL-1051Entretien1,5140Terminée
    9David2026-09-09Entretien195Terminée
    10Amandine2026-09-10CL-1008Entretien1,25125Terminée
    11David2026-09-10CL-1027Dépannage1110À reprendre
    12Céline2026-09-10CL-1039Entretien0,75125Terminée
    13Céline2026-09-11CL-1031Entretien1,2595Terminée
    14David2026-09-11CL-1019Dépannage0,532Terminée
    15David2026-09-11CL-1023Dépannage3240À reprendre
    16Céline2026-09-14CL-1009Entretien0,75140Terminée
    17Bruno2026-09-14cl 1043Dépannage2250Terminée
    18Céline2026-09-14CL-1046Entretien1110Terminée
    19Bruno2026-09-15CL-1006Entretien1140Terminée
    20Bruno2026-09-15CL-1017Entretien1110À reprendre
    21Céline2026-09-15CL-1009Entretien1140Terminée
    22David2026-09-16CL-1026Dépannage2,5162Terminée
    23Amandine2026-09-16CL-1013Entretien0,75140Terminée
    24Céline2026-09-16CL-1039Entretien0140Terminée
    25Céline2026-09-17CL-1040Entretien0,75110Terminée
    26Céline2026-09-17CL-1023Entretien1140Terminée
    27David2026-09-17CL-1030Dépannage2130À reprendre
    28Céline2026-09-18CL-1048Entretien195Terminée
    29Céline2026-09-18CL-1010Entretien195Terminée
    30Céline2026-09-18CL-1034Dépannage0,578Terminée
    31Céline2026-09-21CL-1041Entretien45125Terminée
    32Bruno2026-09-21CL-1013Entretien1110Terminée
    33David2026-09-21CL-1017Dépannage1,598Terminée
    34Céline2026-09-22CL-1024Entretien1,5125Terminée
    35Céline2026-09-22CL-1014Entretien0,75110Terminée
    36Céline2026-09-22CL-1052Entretien1,595Terminée
    37Bruno2026-09-23CL-1031Dépannage3195Terminée
    38David2026-09-23CL-1030Entretien112500Terminée
    39Bruno2026-09-23CL-1002Entretien0,75110Terminée
    40David2026-09-24CL-1043Entretien1,25110Terminée
    41Amandine2026-09-24CL-1001Installation54800Terminée
    42David2026-09-24CL-1056Dépannage3195Terminée
    43Céline2026-09-25CL-1033Entretien195Terminée
    44David2026-09-25CL-1054Entretien1,5125Terminée
    45David2026-09-25CL-1054Entretien1,5125Terminée
    46Amandine2026-09-28CL-1056Installation82950Terminée
    47Bruno2026-09-28CL-1012Entretien195Terminée
    48Céline2026-09-28CL-1044Entretien1,595Terminée
    49Amandine2026-09-29CL-1016Dépannage2,5282Terminée
    50Amandine2026-09-29CL-1049Entretien0,7595Terminée
    51Bruno2026-09-29CL-1045Installation44200Terminée
    52Bruno2026-11-29CL-1045Entretien1,5140Terminée
    53Amandine2026-09-30CL-1026Dépannage1,598Terminée
    54Bruno2026-09-30CL-1043Entretien0,75110Terminée
    55Céline2026-10-01CL-1010Entretien0,75110Terminée
    56Amandine2026-10-01CL-1026Entretien1140Terminée
    57David2026-10-01CL-1033Installation52950Terminée
    58Amandine2026-10-02CL-1047Entretien1,25110Terminée
    59Amandine2026-10-02CL-1025Entretien1140Terminée
    60Amandine2026-10-02CL-1008Entretien1,5125Terminée
  • Interventions de septembre, en WordWord, 37 Ko · pour lire ou imprimer
    Télécharger
    Lire le document ici

    Document fabriqué pour un projet d'entraînement de Meridal : l'entreprise, Calorie Services, ses techniciens, ses clients et ses montants sont inventés.

    Les soixante dernières interventions, saisies à la main dans un tableur partagé, du 7 septembre au 2 octobre 2026. Des erreurs de saisie s'y trouvent, comme dans tout tableur rempli à la main : la colonne Contrôle les signale.

    Données fournies
    N°TechnicienDateCode clientTypeDurée (h)Montant HTRésultatContrôleSemaine
    1Amandine2026-09-07CL-1053Entretien1140Terminée
    2Amandine2026-09-07CL-1028Dépannage1,598Terminée
    3Amandine2026-09-07CL-1019Entretien195Terminée
    4Bruno2026-09-08CL-1003Dépannage165Terminée
    5Céline2026-09-08CL-1036Dépannage1110Terminée
    6Céline2026-09-08CL-1007Dépannage165Terminée
    7David2026-09-09CL-1050Dépannage0,532Terminée
    8Bruno2026-09-09CL-1051Entretien1,5140Terminée
    9David2026-09-09Entretien195Terminée
    10Amandine2026-09-10CL-1008Entretien1,25125Terminée
    11David2026-09-10CL-1027Dépannage1110À reprendre
    12Céline2026-09-10CL-1039Entretien0,75125Terminée
    13Céline2026-09-11CL-1031Entretien1,2595Terminée
    14David2026-09-11CL-1019Dépannage0,532Terminée
    15David2026-09-11CL-1023Dépannage3240À reprendre
    16Céline2026-09-14CL-1009Entretien0,75140Terminée
    17Bruno2026-09-14cl 1043Dépannage2250Terminée
    18Céline2026-09-14CL-1046Entretien1110Terminée
    19Bruno2026-09-15CL-1006Entretien1140Terminée
    20Bruno2026-09-15CL-1017Entretien1110À reprendre
    21Céline2026-09-15CL-1009Entretien1140Terminée
    22David2026-09-16CL-1026Dépannage2,5162Terminée
    23Amandine2026-09-16CL-1013Entretien0,75140Terminée
    24Céline2026-09-16CL-1039Entretien0140Terminée
    25Céline2026-09-17CL-1040Entretien0,75110Terminée
    26Céline2026-09-17CL-1023Entretien1140Terminée
    27David2026-09-17CL-1030Dépannage2130À reprendre
    28Céline2026-09-18CL-1048Entretien195Terminée
    29Céline2026-09-18CL-1010Entretien195Terminée
    30Céline2026-09-18CL-1034Dépannage0,578Terminée
    31Céline2026-09-21CL-1041Entretien45125Terminée
    32Bruno2026-09-21CL-1013Entretien1110Terminée
    33David2026-09-21CL-1017Dépannage1,598Terminée
    34Céline2026-09-22CL-1024Entretien1,5125Terminée
    35Céline2026-09-22CL-1014Entretien0,75110Terminée
    36Céline2026-09-22CL-1052Entretien1,595Terminée
    37Bruno2026-09-23CL-1031Dépannage3195Terminée
    38David2026-09-23CL-1030Entretien112500Terminée
    39Bruno2026-09-23CL-1002Entretien0,75110Terminée
    40David2026-09-24CL-1043Entretien1,25110Terminée
    41Amandine2026-09-24CL-1001Installation54800Terminée
    42David2026-09-24CL-1056Dépannage3195Terminée
    43Céline2026-09-25CL-1033Entretien195Terminée
    44David2026-09-25CL-1054Entretien1,5125Terminée
    45David2026-09-25CL-1054Entretien1,5125Terminée
    46Amandine2026-09-28CL-1056Installation82950Terminée
    47Bruno2026-09-28CL-1012Entretien195Terminée
    48Céline2026-09-28CL-1044Entretien1,595Terminée
    49Amandine2026-09-29CL-1016Dépannage2,5282Terminée
    50Amandine2026-09-29CL-1049Entretien0,7595Terminée
    51Bruno2026-09-29CL-1045Installation44200Terminée
    52Bruno2026-11-29CL-1045Entretien1,5140Terminée
    53Amandine2026-09-30CL-1026Dépannage1,598Terminée
    54Bruno2026-09-30CL-1043Entretien0,75110Terminée
    55Céline2026-10-01CL-1010Entretien0,75110Terminée
    56Amandine2026-10-01CL-1026Entretien1140Terminée
    57David2026-10-01CL-1033Installation52950Terminée
    58Amandine2026-10-02CL-1047Entretien1,25110Terminée
    59Amandine2026-10-02CL-1025Entretien1140Terminée
    60Amandine2026-10-02CL-1008Entretien1,5125Terminée
3

Consignes

  1. Le formulaire. Créez-le avec les sept questions du tableau ci-dessous, dans l'outil de votre choix (onglets plus bas). Envoyez-vous trois réponses, dont une fausse : « cl 1043 », ou une durée de 45. Le formulaire doit la refuser.
  2. Les contrôles. Ouvrez le classeur fourni. La colonne Contrôle signale les lignes douteuses ; filtrez sur « à vérifier », et pour chacune, notez l'erreur et ce que le formulaire aurait empêché.
  3. Le tableau de bord. Dans un onglet nouveau, le nombre d'interventions par semaine et par type, les heures par technicien, le montant du mois, la part à reprendre, la durée moyenne d'un dépannage ; avec les formules ci-dessous. Puis un graphique : les interventions par semaine.
  4. La vérification. Comparez chaque valeur à la correction, avant de vous fier au tableau.
  5. Le branchement. Remplacez, dans les formules, l'onglet des soixante lignes par celui des réponses du formulaire ; envoyez une réponse, et regardez-la apparaître dans le tableau de bord.
Consignes
Question, obligatoireType et règleCe que la règle empêche
Technicienliste déroulante : Amandine, Bruno, Céline, Davidaucune faute de frappe possible
Date de l'interventiondateune vraie date, pas un texte
Code clientréponse courte ; Validation de réponse, Expression régulière, « Correspond à » : CL-[0-9]{4}refuse « cl 1043 »
Typechoix multiples : Entretien, Dépannage, Installationtrois valeurs, toujours écrites pareil
Durée en heuresréponse courte ; Validation de réponse, Nombre, compris entre 0,25 et 12refuse 0 et refuse 45, des minutes saisies au lieu d'heures
Montant HTréponse courte ; Validation de réponse, Nombre, compris entre 0 et 5 000refuse 12 500
Résultatchoix multiples : Terminée, À reprendreaucune autre valeur
  1. Créez le formulaire et ses sept questions, toutes obligatoires. Pour une règle : le menu Plus de la question, « Validation de réponse », puis le type de règle ; ajoutez un « Texte d'erreur personnalisé ».
  2. Reliez-le à un tableur : « Réponses », « Résumé », le menu Plus, « Sélectionner une destination pour les réponses », « Créer une feuille de calcul », « Créer ». Sheets range les réponses dans un tableau.
  3. Ajoutez au même fichier un onglet « Tableau de bord » : il lit l'onglet des réponses sans le modifier.

Les collaborateurs du formulaire ont accès à la feuille des réponses ; un changement d'accès ultérieur se fait séparément dans le formulaire et dans la feuille.

La colonne Contrôle du classeur, telle qu'elle s'écrit dans un tableur en français ; elle signale une ligne sans code client ou au code mal formé, une durée nulle ou de plus de 12 heures, un montant de plus de 5 000 €, une date à venir, ou un doublon :

controle.txt
=SI(OU(D2="";GAUCHE(D2;3)<>"CL-";F2<=0;F2>12;G2>5000;C2>DATE(2026;10;9);
   NB.SI.ENS($B$2:$B$61;B2;$C$2:$C$61;C2;$D$2:$D$61;D2;$E$2:$E$61;E2)>1);
   "à vérifier";"")
tableau-de-bord.txt
Interventions de la semaine (en A2) et du type (en B1) :
=NB.SI.ENS(interventions!$J$2:$J$61;$A2;interventions!$E$2:$E$61;B$1;
           interventions!$I$2:$I$61;"<>à vérifier")

Heures d'un technicien (en A8) :
=SOMME.SI.ENS(interventions!$F$2:$F$61;interventions!$B$2:$B$61;A8;
              interventions!$I$2:$I$61;"<>à vérifier")

Montant HT du mois :
=SOMME.SI.ENS(interventions!G2:G61;interventions!I2:I61;"<>à vérifier")

Part des interventions à reprendre :
=NB.SI.ENS(interventions!H2:H61;"À reprendre";interventions!I2:I61;"<>à vérifier")
 /NB.SI(interventions!I2:I61;"<>à vérifier")

Durée moyenne d'un dépannage :
=MOYENNE.SI.ENS(interventions!F2:F61;interventions!E2:E61;"Dépannage";
                interventions!I2:I61;"<>à vérifier")

Noms des fonctions dans Excel et Google Sheets en français ; en anglais : IF, OR, LEFT, COUNTIFS, SUMIFS, COUNTIF, AVERAGEIFS, avec des virgules au lieu des points-virgules. La semaine vient de NO.SEMAINE.ISO (ISOWEEKNUM), la numérotation ISO, en usage en Europe.

4

Critères de réussite

5

Indications

Le tableau de bord compte 60 interventions

CauseLe critère « <>à vérifier » manque.

À faireAjoutez-le à chaque formule : on ne compte que les lignes valides.

Les semaines ne tombent pas juste

CauseNO.SEMAINE au lieu de NO.SEMAINE.ISO : la première fait commencer la semaine 1 au 1er janvier, la seconde suit la norme ISO, en usage en Europe.

À faireNO.SEMAINE.ISO, partout.

Une formule renvoie #NOM? ou une erreur d'analyse

CauseLes noms ou les séparateurs ne sont pas ceux de la langue du tableur.

À faireEn français : NB.SI.ENS et des points-virgules ; en anglais : COUNTIFS et des virgules.

Le formulaire accepte « cl 1043 »

CauseLa règle n'est pas une expression régulière, ou elle dit « Contient » au lieu de « Correspond à ».

À faireExpression régulière, « Correspond à », CL-[0-9]{4}.

Chez Microsoft, les nouvelles réponses n'arrivent plus

CauseUn tableau ou une formule a été ajouté au classeur des réponses.

À faireLe retirer, et construire le tableau de bord dans un autre classeur ; au besoin, synchroniser dans un nouveau classeur.

Les deux lignes du doublon sont signalées

CauseC'est voulu : le contrôle ne sait pas laquelle est la bonne.

À faireUne personne garde l'une, supprime l'autre ; la règle d'unicité reste.

6

Correction commentée

Ouvrir la correction
Correction commentée
LigneL'erreurCe qui l'aurait empêchée
9code client absentle champ obligatoire
17« cl 1043 » au lieu de CL-1043le format imposé
24durée de 0le nombre entre 0,25 et 12
31durée de 45 : des minutes, au lieu de 0,75 heurele nombre entre 0,25 et 12
3812 500 € pour un entretien : la virgule oubliée, 125,00 €le nombre entre 0 et 5 000
44 et 45la même intervention saisie deux foisrien : un formulaire n'empêche pas d'envoyer deux fois ; d'où le contrôle
5229 novembre : une date à venirune date dans le passé, à vérifier par le tableur

Les valeurs du tableau de bord, calculées par Meridal depuis le même fichier, avec les mêmes contrôles :

attendu.py
"""Les valeurs attendues du tableau de bord, calculées depuis le fichier d'exercice."""
import datetime as dt
from collections import Counter, defaultdict

lignes = [l for l in open("../fichiers/interventions.md", encoding="utf-8") if l.startswith("| ") and not l.startswith("| N°")]
saisies = []
for l in lignes:
    n, tech, date, client, typ, duree, montant, resultat = [c.strip() for c in l.strip().strip("|").split("|")][:8]
    saisies.append(dict(n=int(n), tech=tech, date=dt.date.fromisoformat(date), client=client, type=typ,
                        duree=float(duree.replace(",", ".")), montant=float(montant), resultat=resultat))

# les mêmes contrôles que la colonne Contrôle du classeur
cle = Counter((s["tech"], s["date"], s["client"], s["type"]) for s in saisies)
for s in saisies:
    s["a_verifier"] = (s["client"] == "" or not s["client"].startswith("CL-") or s["duree"] <= 0
                       or s["duree"] > 12 or s["montant"] > 5000 or s["date"] > dt.date(2026, 10, 9)
                       or cle[(s["tech"], s["date"], s["client"], s["type"])] > 1)
    s["semaine"] = s["date"].isocalendar()[1]

douteuses = [s["n"] for s in saisies if s["a_verifier"]]
print("Lignes à vérifier :", len(douteuses), "(n° " + ", ".join(map(str, douteuses)) + ")")
bonnes = [s for s in saisies if not s["a_verifier"]]
print("Lignes retenues :", len(bonnes))
print()
print("Interventions par semaine et par type")
types = ["Entretien", "Dépannage", "Installation"]
print(f"  {'semaine':<8}" + "".join(f"{t:>13}" for t in types))
for sem in sorted({s["semaine"] for s in bonnes}):
    print(f"  {sem:<8}" + "".join(f"{sum(1 for s in bonnes if s['semaine'] == sem and s['type'] == t):>13}" for t in types))
print()
heures = defaultdict(float)
for s in bonnes:
    heures[s["tech"]] += s["duree"]
print("Heures par technicien :", " ; ".join(f"{t} {h:g} h".replace(".", ",") for t, h in sorted(heures.items())))
print("Montant HT total :", f"{sum(s['montant'] for s in bonnes):,.0f} €".replace(",", " "))
rep = sum(s["resultat"] == "À reprendre" for s in bonnes)
print(f"À reprendre : {rep} sur {len(bonnes)}, soit {rep / len(bonnes):.0%}")
dep = [s["duree"] for s in bonnes if s["type"] == "Dépannage"]
print(f"Durée moyenne d'un dépannage : {sum(dep) / len(dep):.2f} h".replace(".", ","))
La sortiepython3 attendu.py
Lignes à vérifier : 8 (n° 9, 17, 24, 31, 38, 44, 45, 52)Lignes retenues : 52 Interventions par semaine et par type  semaine     Entretien    Dépannage Installation  37                  6            8            0  38                 10            3            0  39                  7            3            1  40                  9            2            3 Heures par technicien : Amandine 28 h ; Bruno 15 h ; Céline 18 h ; David 20,25 hMontant HT total : 20 605 €À reprendre : 4 sur 52, soit 8%Durée moyenne d'un dépannage : 1,62 h

Exécuté le 9 octobre 2026 avec Python 3.12.7. Les formules du classeur et du tableau de bord ont été recalculées dans LibreOffice le même jour : elles donnent les mêmes valeurs.

Ce qui compte le plus. Six des huit erreurs n'auraient pas pu être saisies dans le formulaire. Le tableau de bord le plus juste commence à la saisie, pas dans les formules ; et les deux erreurs qui restent, le doublon et la date, montrent pourquoi la colonne de contrôle reste utile.

7

Extensions

8

Lectures suivantes

↑ Plus général

Rien avant : c'est un point de départ.

Vous êtes ici

Projet : un tableau de bord alimenté par un formulaire

Tout le dossier « Projets d'entraînement »

Limites et sources

Les interventions, l'entreprise et ses montants sont fabriqués par Meridal ; les valeurs attendues sont calculées et recalculées, aucun formulaire réel n'a reçu de réponses pour cette page.

Les étapes sont celles des aides françaises de Google et de Microsoft, lues le 9 octobre 2026 ; les règles de validation de Microsoft Forms n'y sont pas détaillées.

  1. Google, les règles d'un formulaire ; Google, l'emplacement des réponses ; Microsoft, les résultats dans Excel ; Microsoft, la synchronisation.
  2. Le fichier et le calcul : apprendre/pages/projets/projet-tableau-bord/.

Écrit par Meridal, avec l'aide de l'IA ; chaque fait vérifié à sa source et relu avant publication. Texte et schémas sous licence CC BY 4.0 : reprenez-les en citant Meridal. Le code sous licence MIT.

Service correspondant

Ne plus recopier d'un logiciel à l'autre

1 100 € à 3 400 €, puis sur devis

Voir le service

Un premier échange de 30 minutes

En visio et sans frais : vous décrivez votre situation, nous vous indiquons ce qui est réalisable, avec quels outils et pour quel ordre de prix. Vous pouvez aussi nous écrire ; chaque message reçoit une réponse écrite.