Annales DCG · UE 8
Annales DCG UE8 Systèmes d'information de gestion : sujet type corrigé
Un sujet complet de 4 heures sur le programme 2025 de l'UE8, construit comme le sujet zéro de la session 2027 : cinq dossiers indépendants autour du système d'information d'un loueur d'engins de chantier, sans document ni calculatrice. Le corrigé détaille chaque requête SQL, chaque formule du tableur, le code VBA et les règles du RGPD mobilisées.
- Épreuve écrite de 4 heures
- 5 dossiers, 20 points
- Programme 2025, session 2027
Le sujet
| Dossier | Points |
|---|---|
| Dossier 1 : Le SI d'Altimat et le projet de passage en mode SaaS | 2.5 |
| Dossier 2 : La base de données des locations | 6 |
| Dossier 3 : Le processus de retour des engins | 3 |
| Dossier 4 : Le classeur de suivi des locations | 6 |
| Dossier 5 : Données personnelles, sécurité et durabilité | 2.5 |
UE 8, Systèmes d'information de gestion. Durée de l'épreuve : 4 heures. Coefficient : 1.
- Document autorisé : aucun document ni aucun matériel n'est autorisé. L'usage d'une calculatrice est interdit : les calculs demandés se font de tête ou à la main.
- Le sujet comporte 5 dossiers indépendants et une base documentaire (documents 1 à 12). Le barème indiqué entre parenthèses est indicatif : il sert à gérer ton temps.
Si le texte du sujet, de ses questions ou de ses documents te conduit à formuler une hypothèse, mentionne-la explicitement sur ta copie. Toutes les réponses doivent être justifiées. Les requêtes respectent la norme SQL-92 ; les formules du tableur utilisent les noms de fonctions français et le point-virgule comme séparateur ; la programmation se fait en langage VBA. Soigne la présentation et la qualité rédactionnelle de ta copie.
Contexte. La SAS Altimat loue des engins et du matériel de chantier (nacelles élévatrices, mini-pelles, groupes électrogènes, échafaudages roulants) aux entreprises du bâtiment, aux artisans et aux collectivités. Son siège est à Montauban ; elle exploite quatre agences (Montauban, Toulouse-Nord, Albi, Castres) et un parc d'environ 420 engins et matériels. La croissance de l'activité met le système d'information sous tension : engins annoncés « en location » alors qu'ils sont rentrés au parc, retours mal enregistrés, relances tardives des clients en retard.
Tu es alternant ou alternante au service administratif et financier, sous l'autorité de Mme Vidal, directrice administrative et financière. Tu travailles avec M. Arnal, responsable du système d'information, à la refonte des outils informatiques de l'entreprise.
| Fiche signalétique | |
|---|---|
| Forme | Société par actions simplifiée |
| Effectif | 62 salariés, dont 14 agents de parc, 9 techniciens de maintenance et 6 chauffeurs-livreurs |
| Agences | Montauban (siège, code MTB), Toulouse-Nord (TLS), Albi (ALB), Castres (CAS) |
| Clients | Entreprises du bâtiment, artisans (dont des entrepreneurs individuels), collectivités |
| Date de référence du sujet | 24 octobre 2026 |
Dossier 1 : Le SI d'Altimat et le projet de passage en mode SaaS (2,5 points)
Base documentaire : documents 1 à 3.
Mme Vidal souhaite comprendre l'origine des erreurs sur la disponibilité des engins et disposer d'une analyse du projet proposé par l'éditeur du progiciel de location.
1.1 Analyser la qualité de l'information « disponibilité des engins » au regard de deux critères de qualité de l'information, puis montrer comment le projet de tablettes du document 2 peut l'améliorer.
1.2 Expliquer le rôle du réseau privé virtuel (VPN) et du serveur d'annuaire dans le fonctionnement actuel du SI des agences.
1.3 Présenter deux avantages et deux risques, pour Altimat, du passage du progiciel de location en mode SaaS.
1.4 Analyser les articles du projet de contrat du document 3 : calculer la durée d'indisponibilité admise par l'article 4 sur un mois de 30 jours, relever pour chaque article un point défavorable à Altimat, puis proposer une clause manquante.
Dossier 2 : La base de données des locations (6 points)
Base documentaire : documents 4 à 6.
M. Arnal te confie l'exploitation de la base de données relationnelle du progiciel de location (documents 4 et 5).
2.1 À partir du schéma relationnel :
- a. indiquer si un même engin peut figurer sur plusieurs contrats, puis s'il peut figurer deux fois sur le même contrat ;
- b. justifier que la date de retour figure dans la relation LIGNE_CONTRAT et non dans la relation CONTRAT ;
- c. expliquer pourquoi un tarif journalier est enregistré dans LIGNE_CONTRAT alors que chaque catégorie possède déjà un tarif journalier ;
- d. indiquer, en t'appuyant sur les extraits du document 5, si l'agence qui établit un contrat est nécessairement l'agence de rattachement des engins loués.
2.2 L'agence de Castres doit fermer à la fin de l'année. Un utilisateur a tenté d'exécuter la requête DELETE FROM AGENCE WHERE codeAgence = 'CAS';, refusée par le SGBDR. Expliquer ce refus, puis indiquer comment procéder pour fermer l'agence sans perdre l'historique des locations.
2.3 Indiquer le besoin d'information auquel répond la requête suivante, puis donner son résultat en supposant que les tables se limitent aux extraits du document 5.
SELECT E.numEngin, C.libelleCat, E.codeAgence
FROM ENGIN E
INNER JOIN CATEGORIE C ON E.codeCat = C.codeCat
WHERE E.numEngin NOT IN (SELECT L.numEngin
FROM LIGNE_CONTRAT L
WHERE L.dateRetour IS NULL)
ORDER BY numEngin;
2.4 Écrire les requêtes SQL permettant d'obtenir :
- a. la liste des nacelles (numéro de l'engin, numéro de série, libellé de la catégorie) mises en service avant le 1er janvier 2022, triée par date de mise en service croissante (les codes des catégories de nacelles commencent par « NAC ») ;
- b. pour chaque engin loué non encore rendu dont la date de fin prévue est dépassée à la date du jour : le numéro du contrat, la raison sociale du client, le numéro de l'engin et la date de fin prévue ;
- c. pour chaque engin ayant fait l'objet d'interventions en 2026 pour un coût total supérieur à 1 500 € HT : le numéro de l'engin, le libellé de sa catégorie, le nombre d'interventions et leur coût total, par coût total décroissant ;
- d. la liste des engins (numéro, code catégorie) qui n'ont jamais fait l'objet d'une intervention ;
- e. pour contrôler les remises accordées par les agences, la liste des lignes de contrat dont le tarif appliqué est inférieur au tarif de la catégorie : numéro du contrat, raison sociale du client, numéro de l'engin, tarif de la catégorie, tarif appliqué et taux de remise en pourcentage ;
- f. pour chaque agence (code et nom), le nombre de contrats établis en octobre 2026, y compris les agences qui n'en ont établi aucun.
2.5 Écrire la requête qui augmente de 5 % le tarif journalier des catégories de nacelles. Indiquer si cette requête modifie le montant des contrats déjà signés. Justifier.
2.6 Pour suivre les contrôles périodiques de sécurité réalisés sur les engins par des organismes extérieurs, un stagiaire propose d'ajouter la relation du document 6. Dire si cette relation est normalisée, en justifiant, puis proposer les relations à ajouter au schéma du document 4.
Dossier 3 : Le processus de retour des engins (3 points)
Base documentaire : documents 4, 5, 7 et 8.
Plusieurs clients se plaignent qu'on leur ait facturé des jours de location alors qu'ils avaient rendu leur engin. M. Arnal te demande d'analyser le processus de retour des engins à l'agence.
3.1 Classer les processus suivants d'Altimat selon la typologie de l'AFNOR, en justifiant : louer et livrer les engins aux clients ; gérer les retours d'engins ; recruter et former les agents de parc ; maintenir le système d'information ; élaborer la stratégie d'implantation des agences et le budget. Indiquer ensuite pourquoi le processus de retour peut être qualifié de processus clé.
3.2 Relever les incohérences entre le diagramme BPMN du document 8 et la description du document 7, et montrer celle qui explique les plaintes des clients.
3.3 Une nouvelle règle de gestion s'applique à partir du 1er janvier 2027 : lorsque le devis de réparation dépasse 500 € HT, il est soumis à la validation du responsable d'agence avant d'être transmis au service facturation ; si le responsable le refuse, le technicien le révise. Les devis de 500 € HT ou moins sont transmis directement au service facturation. Représenter, avec la notation du document 8, le processus corrigé et modifié (piscines Client et Altimat).
3.4 Identifier les recours à la base de données (table concernée et action élémentaire : création, lecture, modification ou suppression) des tâches « Rechercher le contrat », « Relever le compteur horaire » et « Enregistrer le retour ». Écrire ensuite les requêtes qui enregistrent le retour de l'engin E103 du contrat C26-0401 le 26 octobre 2026, compteur relevé à 1 012 heures. Proposer enfin les droits de l'agent de parc sur les tables CLIENT, CONTRAT, LIGNE_CONTRAT, ENGIN et INTERVENTION.
Dossier 4 : Le classeur de suivi des locations (6 points)
Base documentaire : documents 9 et 10.
Chaque semaine, les lignes de contrat sont exportées de la base de données au format CSV et importées dans le classeur SUIVI_LOCATIONS (document 9), qui calcule les montants à facturer et repère les retards.
4.1 Expliquer l'intérêt, pour la maintenance du classeur, de la feuille « Param » et des noms définis dans le gestionnaire des noms.
4.2 Écrire les formules des cellules I5, J5, K5, L5 et M5 de la feuille « Locations », à recopier vers le bas, en respectant les règles du document 9. Donner les valeurs obtenues pour les lignes 5 et 9.
4.3 Proposer un jeu d'essai permettant de tester la formule de la cellule J5 (valeurs testées et résultats attendus), en justifiant le choix des valeurs.
4.4 Le fichier complet compte 1 250 lignes de contrat (lignes 5 à 1254). Indiquer la plage renvoyée par le nom Tab_Loc, puis expliquer l'intérêt de cette plage dynamique.
4.5 Écrire les formules des cellules B5 (à recopier jusqu'en B9) et B11 de la feuille « Synthèse ». Donner leurs valeurs sur l'extrait et proposer un graphique adapté pour comparer le chiffre d'affaires des catégories.
4.6 Proposer les règles de validation des données des colonnes F et H, la mise en forme conditionnelle qui fait ressortir les lignes en retard, et les mesures de protection qui empêchent l'écrasement des formules.
4.7 Compléter les lignes (1) à (5) de la procédure Relances du document 10, puis indiquer ce qu'elle affiche et ce qu'elle écrit dans la feuille lorsqu'elle est exécutée sur l'extrait du document 9.
4.8 Écrire une fonction personnalisée TAUX_REMISE qui reçoit une durée en jours et renvoie le taux de remise du barème. Indiquer comment l'utiliser en J5, puis présenter un inconvénient de cette solution par rapport à la formule de la question 4.2.
Dossier 5 : Données personnelles, sécurité et durabilité (2,5 points)
Base documentaire : documents 1, 2, 11 et 12.
5.1 Indiquer si les données de localisation des camions de livraison et celles des boîtiers télématiques des engins loués sont des données à caractère personnel. Justifier.
5.2 Relever les points du projet du document 11 qui ne respectent pas les règles applicables à la géolocalisation des véhicules des salariés, et proposer les corrections nécessaires.
5.3 Qualifier la menace à l'origine de l'incident A du document 12, indiquer le critère de sécurité atteint et proposer deux mesures, l'une organisationnelle, l'autre technique, pour éviter qu'il se reproduise.
5.4 Présenter les obligations d'Altimat au titre du RGPD à la suite de l'incident B du document 12, puis la mesure qui en aurait limité les conséquences.
5.5 Proposer trois bonnes pratiques de numérique responsable pour le projet de tablettes du document 2, en justifiant chacune.
Base documentaire
Document 1 : le système d'information d'Altimat (note de M. Arnal)
- Progiciel de gestion des locations : devis, contrats, gestion du parc, facturation des locations. Il est installé sur un serveur physique situé dans le local technique du siège, avec sa base de données relationnelle.
- Accès des agences : les postes fixes des trois autres agences accèdent au progiciel du siège par un réseau privé virtuel (VPN) établi sur leur connexion internet. Chaque salarié ouvre sa session avec un identifiant et un mot de passe vérifiés par le serveur d'annuaire du siège, qui gère aussi les groupes d'utilisateurs et leurs droits.
- Comptabilité et paie : progiciel de gestion intégré en mode SaaS, accessible par un navigateur.
- Télématique : 180 engins motorisés sont équipés d'un boîtier qui transmet leur position, les heures de fonctionnement du moteur et les alertes de panne à une plateforme en ligne du fabricant des boîtiers. Les agences la consultent pour localiser un engin sur chantier ou anticiper un entretien.
- Camions : les 6 camions de livraison sont équipés d'un dispositif de géolocalisation.
- Sauvegarde : copie quotidienne de la base sur un disque externe rangé dans le local technique du siège.
Document 2 : constats sur la disponibilité des engins et projet de modernisation
Constats (réunion des chefs d'agence, septembre 2026).
- Au retour d'un engin, l'agent de parc remplit une fiche papier (état, compteur horaire). Les fiches sont saisies dans le progiciel en fin de journée, parfois le lendemain matin.
- Un commercial de Toulouse-Nord a refusé une location le 14 septembre : le progiciel affichait la seule nacelle de 18 m « en location » alors qu'elle était rentrée au parc la veille.
- Le compteur de l'engin E102 a été saisi « 18 400 » au lieu de « 1 840 » heures, ce qui a déclenché une alerte d'entretien injustifiée.
Projet proposé par l'éditeur du progiciel.
- Passage du progiciel de location en mode SaaS (abonnement mensuel, données hébergées par l'éditeur), avec arrêt du serveur du siège.
- Équipement des agents de parc de tablettes : état des lieux saisi sur le parc, photos des engins à chaque départ et à chaque retour, signature du client sur l'écran, mise à jour immédiate du progiciel.
- Proposition de l'éditeur : conserver toutes les photos en haute définition, sans limite de durée, et renouveler les tablettes tous les deux ans.
Document 3 : extrait du projet de contrat d'abonnement SaaS
- Article 4. Niveau de service. Le prestataire s'engage à une disponibilité de la solution de 99,5 % par mois civil, hors opérations de maintenance programmées annoncées 48 heures à l'avance. En dessous de ce taux, le client bénéficie d'un avoir de 5 % de l'abonnement mensuel par tranche de 0,5 point manquante, dans la limite de 30 %.
- Article 6. Hébergement. Les données du client sont hébergées dans des centres de données situés dans l'Union européenne. Le prestataire peut recourir librement à des sous-traitants techniques pour l'hébergement.
- Article 8. Réversibilité. À la fin du contrat, le prestataire remet au client, sur demande formulée dans les 15 jours, un export de ses données au format propriétaire de la solution. Les données sont détruites 30 jours après la fin du contrat.
- Article 9. Responsabilité. Le prestataire est tenu d'une obligation de moyens. Sa responsabilité est limitée, tous préjudices confondus, aux sommes versées par le client au cours des trois derniers mois.
Document 4 : schéma relationnel de la base des locations (extrait)
Les clés primaires sont en gras ; les clés étrangères sont précédées du signe #.
AGENCE (codeAgence, nomAgence, villeAgence)
CATEGORIE (codeCat, libelleCat, tarifJour)
ENGIN (numEngin, numSerie, dateMiseService, compteurHeures, #codeCat, #codeAgence)
CLIENT (numClient, raisonSociale, siren, villeClient)
CONTRAT (numContrat, dateContrat, dateDebut, dateFinPrevue, #numClient, #codeAgence)
LIGNE_CONTRAT (#numContrat, #numEngin, tarifJourApplique, dateRetour)
TECHNICIEN (matricule, nomTech, prenomTech, #codeAgence)
INTERVENTION (numInterv, dateInterv, typeInterv, coutHT, #numEngin, #matricule)
Remarques :
- tarifJour et tarifJourApplique sont des tarifs journaliers hors taxes en euros ; coutHT est en euros ; ces trois attributs sont de type numérique décimal (deux décimales) ;
- dans ENGIN, codeAgence désigne l'agence de rattachement de l'engin ; dans CONTRAT, l'agence qui a établi le contrat ;
- compteurHeures est le dernier relevé du compteur horaire ; il est vide (NULL) pour les matériels sans moteur ;
- tarifJourApplique est le tarif négocié avec le client au moment du contrat ;
- dateRetour est vide (NULL) tant que l'engin n'a pas été rendu ;
- un engin est disponible s'il ne figure sur aucune ligne de contrat sans date de retour (on ne tient pas compte des immobilisations pour réparation) ;
- typeInterv prend les valeurs « Entretien » ou « Réparation ».
Document 5 : extraits des tables (données au 24 octobre 2026)
AGENCE
| codeAgence | nomAgence | villeAgence |
|---|---|---|
| MTB | Altimat Montauban | Montauban |
| TLS | Altimat Toulouse-Nord | Toulouse |
| ALB | Altimat Albi | Albi |
| CAS | Altimat Castres | Castres |
CATEGORIE
| codeCat | libelleCat | tarifJour |
|---|---|---|
| NAC12 | Nacelle articulée 12 m | 150 |
| NAC18 | Nacelle articulée 18 m | 220 |
| MPE25 | Mini-pelle 2,5 t | 120 |
| GEN20 | Groupe électrogène 20 kVA | 60 |
| ECH08 | Échafaudage roulant 8 m | 35 |
ENGIN
| numEngin | numSerie | dateMiseService | compteurHeures | codeCat | codeAgence |
|---|---|---|---|---|---|
| E101 | NS-48812 | 15/03/2019 | 3120 | NAC12 | MTB |
| E102 | NS-50247 | 01/06/2021 | 1840 | NAC12 | TLS |
| E103 | NS-61530 | 20/02/2023 | 950 | NAC18 | TLS |
| E104 | NS-33905 | 10/09/2018 | 4410 | MPE25 | MTB |
| E105 | NS-70122 | 02/04/2024 | 610 | MPE25 | ALB |
| E106 | NS-29874 | 22/05/2017 | 5230 | GEN20 | MTB |
| E107 | NS-72460 | 13/01/2025 | 300 | GEN20 | CAS |
| E108 | NS-15003 | 30/11/2020 | ECH08 | ALB |
CLIENT (extrait, sans le SIREN)
| numClient | raisonSociale | villeClient |
|---|---|---|
| 1001 | Garonne Bâtiment | Toulouse |
| 1002 | Toitures Delmas (entrepreneur individuel) | Montauban |
| 1003 | Élec Services Tarn | Albi |
| 1004 | Façades Occitanes | Castres |
CONTRAT
| numContrat | dateContrat | dateDebut | dateFinPrevue | numClient | codeAgence |
|---|---|---|---|---|---|
| C26-0401 | 01/10/2026 | 05/10/2026 | 16/10/2026 | 1001 | TLS |
| C26-0402 | 02/10/2026 | 06/10/2026 | 09/10/2026 | 1002 | MTB |
| C26-0403 | 08/10/2026 | 12/10/2026 | 06/11/2026 | 1003 | ALB |
| C26-0404 | 12/10/2026 | 14/10/2026 | 21/10/2026 | 1004 | MTB |
| C26-0405 | 15/10/2026 | 19/10/2026 | 30/10/2026 | 1001 | TLS |
LIGNE_CONTRAT
| numContrat | numEngin | tarifJourApplique | dateRetour |
|---|---|---|---|
| C26-0401 | E102 | 150 | 16/10/2026 |
| C26-0401 | E103 | 200 | |
| C26-0402 | E104 | 120 | 09/10/2026 |
| C26-0403 | E105 | 108 | |
| C26-0404 | E106 | 60 | 22/10/2026 |
| C26-0404 | E101 | 135 | |
| C26-0405 | E107 | 60 |
Document 6 : relation proposée pour les contrôles périodiques
CONTROLE (numControle, dateControle, resultat, numEngin, codeOrganisme, nomOrganisme, telOrganisme)
| numControle | dateControle | resultat | numEngin | codeOrganisme | nomOrganisme | telOrganisme |
|---|---|---|---|---|---|---|
| 501 | 03/03/2026 | Conforme | E101 | OC2 | Contrôle Levage Sud | [téléphone de OC2] |
| 502 | 10/03/2026 | Réserves | E102 | OC2 | Contrôle Levage Sud | [téléphone de OC2] |
| 503 | 02/09/2026 | Conforme | E101 | OC5 | Vérif'Engins | [téléphone de OC5] |
Un organisme réalise de nombreux contrôles ; chaque contrôle porte sur un seul engin et est réalisé par un seul organisme.
Document 7 : le processus de retour d'un engin à l'agence (description)
Lorsque son chantier est terminé, le client restitue l'engin à l'agence. À l'arrivée de l'engin, l'agent de parc recherche le contrat dans le progiciel, relève le compteur horaire et contrôle l'état de l'engin à l'aide d'une liste de points de contrôle. Dans tous les cas, il enregistre ensuite le retour dans le progiciel (date de retour et compteur).
Si l'engin ne présente aucun dommage, le traitement par l'agence s'arrête là. S'il est endommagé, l'agent photographie les dommages et transmet la fiche de constat au technicien de l'agence, qui établit un devis de réparation.
Le service facturation du siège émet ensuite la facture (location, et réparation le cas échéant) et l'envoie au client. Le traitement du retour est alors terminé.
Document 8 : diagramme BPMN actuel du processus de retour
Notation : Piscine et Couloir ouvrent une piscine et un couloir ; chaque élément s'écrit Identifiant (type) Libellé ; -> désigne un flux de séquence et => un flux de message ; les libellés entre crochets sont ceux des flux sortant d'une passerelle.
Piscine : Client
E1 (début) Chantier terminé
T1 (tâche envoi) Restituer l'engin
E2 (événement intermédiaire message réception) Facture reçue
E3 (fin) Location terminée
Piscine : Altimat
Couloir : Agent de parc
E4 (début message) Engin restitué
T2 (tâche) Rechercher le contrat
T3 (tâche) Relever le compteur horaire
T4 (tâche) Contrôler l'état de l'engin
G1 (passerelle parallèle) Engin endommagé ?
T5 (tâche) Photographier les dommages
T6 (tâche) Enregistrer le retour
Couloir : Technicien
T7 (tâche) Établir le devis de réparation
Couloir : Service facturation
G2 (passerelle exclusive, convergence)
T8 (tâche envoi) Émettre la facture
E5 (fin) Retour traité
Flux de séquence
E1 -> T1
T1 -> E4
E2 -> E3
E4 -> T2
T2 -> T3
T3 -> T4
T4 -> G1
G1 -> T5 [Oui]
G1 -> T6 [Non]
T5 -> T7
T7 -> G2
T6 -> G2
G2 -> T8
T8 -> E5
Flux de messages
T8 => E2
Document 9 : extraits du classeur SUIVI_LOCATIONS
Règles de calcul (feuille « Locations »)
- Les colonnes A à H sont importées de la base ; les colonnes I à M sont calculées.
- Durée facturée (I) : nombre de jours calendaires de la date de début à la date de retour, les deux incluses.
- Taux de remise de durée (J) : donné par le barème de la feuille « Param » selon la durée facturée ; il se cumule avec la remise déjà contenue dans le tarif négocié.
- Montant HT (K) : tarif journalier appliqué × durée × (1 - taux de remise), arrondi au centime.
- Assurance casse et vol (L) : Tx_Assurance × montant HT, arrondi au centime ; elle est nulle si le client a fourni l'attestation de son propre assureur (« O » en colonne H).
- Tant que la date de retour (F) n'est pas renseignée, les cellules I à L restent vides.
- Statut (M) : « Rendu » si la date de retour est renseignée ; sinon « En retard » si la date de fin prévue est antérieure à la date de référence ; sinon « En cours ».
Feuille « Param »
| A | B | |
|---|---|---|
| 3 | Date de référence | 24/10/2026 |
| 5 | Barème de remise de durée | |
| 6 | Durée minimale (jours) | Taux de remise |
| 7 | 1 | 0 % |
| 8 | 7 | 10 % |
| 9 | 28 | 20 % |
| 11 | Taux d'assurance casse et vol | 8 % |
Feuille « Locations » (la cellule A1 contient le titre « Suivi des locations d'engins », les lignes 2 et 3 sont vides, la ligne 4 contient les en-têtes)
| A | B | C | D | E | F | G | H | I | J | K | L | M | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4 | numContrat | numEngin | codeCat | dateDebut | dateFinPrevue | dateRetour | tarifJourApplique | assurClient | Durée | Taux remise | Montant HT | Assurance | Statut |
| 5 | C26-0401 | E102 | NAC12 | 05/10/2026 | 16/10/2026 | 16/10/2026 | 150 | N | |||||
| 6 | C26-0401 | E103 | NAC18 | 05/10/2026 | 16/10/2026 | 200 | N | ||||||
| 7 | C26-0402 | E104 | MPE25 | 06/10/2026 | 09/10/2026 | 09/10/2026 | 120 | O | |||||
| 8 | C26-0403 | E105 | MPE25 | 12/10/2026 | 06/11/2026 | 108 | N | ||||||
| 9 | C26-0404 | E106 | GEN20 | 14/10/2026 | 21/10/2026 | 22/10/2026 | 60 | O | |||||
| 10 | C26-0404 | E101 | NAC12 | 14/10/2026 | 21/10/2026 | 135 | N | ||||||
| 11 | C26-0405 | E107 | GEN20 | 19/10/2026 | 30/10/2026 | 60 | N |
La colonne N, sans en-tête, est réservée à la procédure Relances (document 10).
Feuille « Synthèse »
| A | B | |
|---|---|---|
| 4 | Catégorie | CA HT des locations rendues |
| 5 | NAC12 | |
| 6 | NAC18 | |
| 7 | MPE25 | |
| 8 | GEN20 | |
| 9 | ECH08 | |
| 11 | Nombre d'engins en retard |
Extrait du gestionnaire des noms
| Nom | Fait référence à |
|---|---|
| Date_Ref | =Param!3 |
| Bareme_Remise | =Param!7:9 |
| Tx_Assurance | =Param!11 |
| Tab_Loc | =DECALER(Locations!4;1;0;NBVAL(Locations!A)-2;13) |
Aide : DECALER(réf;lignes;colonnes;hauteur;largeur) renvoie la plage décalée de « lignes » lignes et « colonnes » colonnes par rapport à réf, de « hauteur » lignes et « largeur » colonnes. NBVAL(plage) compte les cellules non vides de la plage.
Document 10 : procédure Relances (à compléter)
La procédure parcourt la feuille « Locations » à partir de la ligne 5 jusqu'à la première cellule vide de la colonne A. Une ligne est en retard si la date de retour (colonne F) est vide et si la date de fin prévue (colonne E) est antérieure à la date de référence. Pour chaque ligne en retard, la procédure compte la ligne, cumule la valorisation du retard (tarif journalier de la colonne G multiplié par le nombre de jours écoulés depuis la date de fin prévue) et écrit « À relancer » en colonne N ; pour les autres lignes, elle vide la colonne N. Elle affiche enfin un message de synthèse.
Sub Relances()
Dim ws As Worksheet
Dim i As Long
Dim nbRetards As Integer
Dim valoRetards As Double
Dim dateRef As Date
.....(1).....
dateRef = Worksheets("Param").Range("Date_Ref").Value
nbRetards = 0
valoRetards = 0
i = 5
Do While .....(2).....
If .....(3)..... Then
nbRetards = nbRetards + 1
.....(4).....
ws.Cells(i, 14).Value = "À relancer"
Else
ws.Cells(i, 14).Value = ""
End If
.....(5).....
Loop
MsgBox nbRetards & " engin(s) à relancer. Retards valorisés : " & valoRetards & " euros"
End Sub
Aide : DateDiff("d", date1, date2) renvoie le nombre de jours de date1 à date2 (date2 - date1). Cells(ligne, colonne) désigne une cellule par ses numéros de ligne et de colonne (colonne A = 1).
Document 11 : projet de note de service sur la géolocalisation des camions
« À compter du 1er décembre 2026, la position des 6 camions de livraison sera enregistrée en continu, y compris pendant les pauses et les trajets entre le domicile et l'agence pour les chauffeurs autorisés à rentrer chez eux avec leur camion. Le dispositif ne pourra pas être désactivé. Les données serviront à optimiser les tournées, à prouver l'heure de livraison aux clients et à retrouver un camion volé. Une alerte sera transmise au responsable d'agence à chaque dépassement de la vitesse autorisée, en vue d'éventuelles sanctions. Les données seront conservées trois ans. Le dispositif sera installé sans formalité particulière, les camions appartenant à l'entreprise. »
Document 12 : incidents de sécurité (octobre 2026)
- Incident A. Le 6 octobre, la comptable a reçu un courriel, à l'en-tête d'un fournisseur de pièces détachées habituel, annonçant un changement de coordonnées bancaires et demandant de régler les prochaines factures sur un nouveau compte. Elle a modifié l'IBAN du fournisseur dans le progiciel comptable et réglé deux factures pour 18 000 €. Le vrai fournisseur a réclamé son paiement le 20 octobre : il n'avait jamais envoyé ce courriel, dont l'adresse d'expédition différait d'une lettre de la sienne.
- Incident B. Le 21 octobre, l'ordinateur portable d'un commercial a été volé dans son véhicule. Le disque n'était pas chiffré ; la session s'ouvrait par un mot de passe simple. L'ordinateur contenait un export de la base clients : raisons sociales, noms, téléphones et courriels des interlocuteurs chez les clients, et IBAN des clients payant par prélèvement, dont 140 artisans entrepreneurs individuels. Le vol a été signalé au responsable du SI le jour même.
Le corrigé détaillé
Traite le sujet d'abord : chaque dossier se déplie quand tu es prêt.
CorrigéDossier 1 : Le SI d'Altimat et le projet de passage en mode SaaS
1.1 Qualité de l'information « disponibilité des engins »
Une information de qualité est notamment exacte, à jour (actualité), accessible, pertinente et exhaustive. Deux critères sont ici en défaut :
| Critère | Constat (document 2) | Conséquence |
|---|---|---|
| Actualité | Les fiches papier de retour sont saisies en fin de journée, parfois le lendemain : pendant ce délai, le progiciel affiche « en location » un engin rentré au parc | Location refusée à tort le 14 septembre : perte de chiffre d'affaires, client mécontent |
| Exactitude | La double saisie (fiche papier puis progiciel) provoque des erreurs de recopie : compteur de E102 saisi 18 400 au lieu de 1 840 heures | Alerte d'entretien injustifiée, coût et immobilisation inutiles |
L'accessibilité n'est pas en cause : grâce au VPN, toutes les agences consultent le même progiciel.
Apport des tablettes. La saisie se fait à la source, sur le parc, au moment du retour : le progiciel est mis à jour immédiatement (actualité) et la double saisie disparaît (exactitude, moins d'erreurs de recopie). Des contrôles de saisie sur la tablette (par exemple un compteur qui ne peut pas être inférieur au relevé précédent ni dépasser un écart plausible) renforcent encore l'exactitude. Les photos et la signature du client constituent en outre une preuve de l'état de l'engin.
1.2 Rôle du VPN et du serveur d'annuaire
- Réseau privé virtuel (VPN) : il relie les postes des agences au réseau du siège à travers internet, par une liaison sécurisée (chiffrée). Les agences accèdent au serveur du progiciel comme si elles étaient sur le réseau local du siège, sans que les données circulent en clair sur internet.
- Serveur d'annuaire : il centralise les comptes des utilisateurs (identifiants, mots de passe) et les groupes. Il authentifie chaque salarié à l'ouverture de session et permet d'attribuer les droits par groupe (agents de parc, commerciaux, comptabilité) depuis un point unique : création ou suppression d'un compte en une seule fois à l'arrivée ou au départ d'un salarié.
1.3 Avantages et risques du mode SaaS
| Avantages | Risques |
|---|---|
| Plus de serveur à acheter, à maintenir et à sauvegarder au siège ; mises à jour et sécurité de l'hébergement assurées par l'éditeur | Dépendance à l'éditeur (prix, évolutions, pérennité) et à la connexion internet : sans réseau, plus d'accès au progiciel |
| Accès depuis tout lieu connecté, sans VPN : indispensable pour les tablettes des agents de parc et l'ouverture éventuelle d'agences | Localisation et protection des données confiées à un tiers (données clients, dont des données personnelles) |
| Coût prévisible, sous forme d'abonnement, ajustable au nombre d'utilisateurs | Réversibilité : récupérer ses données dans un format exploitable en fin de contrat |
D'autres réponses sont acceptées : sauvegardes professionnelles chez l'éditeur, montée en charge facilitée (avantages) ; coût cumulé de l'abonnement sur la durée, paramétrage moins personnalisable (risques).
1.4 Analyse du projet de contrat
Indisponibilité admise (article 4). Un mois de 30 jours compte 30 × 24 = 720 heures. 0,5 % de 720 heures = 720 / 200 = 3,6 heures, soit 3 heures 36 minutes d'indisponibilité par mois sans pénalité.
| Article | Point défavorable à Altimat | Amélioration à négocier |
|---|---|---|
| 4. Niveau de service | Les maintenances programmées sont exclues sans plafond ni plage horaire : l'indisponibilité réelle peut dépasser largement 3 h 36. L'avoir est faible (5 % par demi-point, 30 % au plus) | Plafonner les maintenances et les imposer hors des heures d'ouverture des agences |
| 6. Hébergement | La localisation dans l'Union européenne est un point positif, mais le prestataire recourt librement à des sous-traitants. Or le RGPD impose qu'un sous-traitant ne recrute pas un autre sous-traitant sans l'autorisation écrite préalable, spécifique ou générale, du responsable du traitement (règlement (UE) 2016/679, art. 28, § 2) | Liste des sous-traitants, information préalable de tout changement, droit d'opposition |
| 8. Réversibilité | Export au format propriétaire : données difficilement exploitables par un autre progiciel ; délai de demande de 15 jours très court | Export dans un format ouvert et documenté (CSV, XML), assistance à la migration, délai suffisant, attestation de destruction |
| 9. Responsabilité | Obligation de moyens et plafond de trois mois d'abonnement : en cas de perte de données, la réparation serait dérisoire | Obligation de résultat sur la disponibilité et les sauvegardes, plafond relevé ou écarté en cas de perte ou de violation de données |
Clause manquante (une réponse argumentée suffit) :
- une clause sauvegardes et restauration : fréquence, durée de conservation, tests de restauration, délai de remise en service après incident ;
- une clause protection des données personnelles conforme à l'article 28 du RGPD : traitement sur instruction d'Altimat, confidentialité, mesures de sécurité, et notification des violations, le sous-traitant devant notifier au responsable du traitement toute violation de données personnelles dans les meilleurs délais après en avoir pris connaissance (art. 33, § 2) ;
- une clause sur la durée, la résiliation et l'évolution du prix.
CorrigéDossier 2 : La base de données des locations
2.1 Interprétation du schéma relationnel
a. Dans LIGNE_CONTRAT, la clé primaire est composée du couple (numContrat, numEngin). Un même engin peut donc figurer sur plusieurs lignes, avec des numéros de contrat différents : il est loué successivement par plusieurs contrats. En revanche, il ne peut pas figurer deux fois sur le même contrat : le couple (numContrat, numEngin) est unique.
b. Un contrat peut porter sur plusieurs engins, rendus à des dates différentes : le contrat C26-0401 comprend E102, rendu le 16/10/2026, et E103, non rendu. La date de retour dépend donc du couple (numContrat, numEngin) et non du seul numContrat. Placée dans CONTRAT, elle ne pourrait prendre qu'une valeur par contrat.
c. Le tarif de la catégorie est le tarif catalogue en vigueur. Le tarif appliqué est celui négocié avec le client pour ce contrat et cet engin (108 € au lieu de 120 € pour E105) et figé à la signature : une hausse ultérieure du catalogue (question 2.5) ne doit pas modifier les contrats signés. Il dépend du couple (numContrat, numEngin), et non de la catégorie : ce n'est pas une redondance.
d. Non. Les deux clés étrangères codeAgence (dans ENGIN et dans CONTRAT) sont indépendantes ; aucune règle n'impose leur égalité. Le contrat C26-0405, établi par l'agence TLS, porte sur l'engin E107, rattaché à l'agence CAS.
2.2 Refus de la suppression et fermeture de l'agence
Refus. codeAgence est clé étrangère dans ENGIN, TECHNICIEN et CONTRAT. La contrainte d'intégrité référentielle interdit de supprimer une ligne de AGENCE tant qu'elle est référencée : l'engin E107 est rattaché à CAS ; la suppression laisserait des clés étrangères pointant vers une agence inexistante. Le SGBDR refuse donc la requête.
Démarche.
- Réaffecter les engins et les techniciens de Castres à une autre agence, par exemple Albi :
UPDATE ENGIN SET codeAgence = 'ALB' WHERE codeAgence = 'CAS';
UPDATE TECHNICIEN SET codeAgence = 'ALB' WHERE codeAgence = 'CAS';
- Ne pas modifier les contrats passés : ils ont réellement été établis par l'agence de Castres ; changer leur codeAgence fausserait l'historique et les statistiques par agence.
- En conséquence, conserver la ligne CAS dans AGENCE. Pour signaler la fermeture, on peut proposer d'ajouter un attribut (par exemple dateFermeture) à la relation AGENCE, afin que le progiciel n'autorise plus de nouveau contrat pour cette agence.
2.3 Analyse d'une requête
Besoin d'information : la liste des engins disponibles (numéro, libellé de la catégorie, agence de rattachement), c'est-à-dire ceux qui ne figurent sur aucune ligne de contrat sans date de retour, triée par numéro d'engin. La sous-requête renvoie les engins en location : E103, E105, E101 et E107.
| numEngin | libelleCat | codeAgence |
|---|---|---|
| E102 | Nacelle articulée 12 m | TLS |
| E104 | Mini-pelle 2,5 t | MTB |
| E106 | Groupe électrogène 20 kVA | MTB |
| E108 | Échafaudage roulant 8 m | ALB |
NOT IN donne ici le bon résultat parce que la sous-requête ne renvoie jamais de valeur NULL (numEngin fait partie de la clé primaire de LIGNE_CONTRAT). Une écriture équivalente utilise NOT EXISTS avec une sous-requête corrélée.
2.4 Requêtes SQL
a. Nacelles mises en service avant 2022
SELECT E.numEngin, E.numSerie, C.libelleCat, E.dateMiseService
FROM ENGIN E
INNER JOIN CATEGORIE C ON E.codeCat = C.codeCat
WHERE E.codeCat LIKE 'NAC%'
AND E.dateMiseService < DATE '2022-01-01'
ORDER BY dateMiseService ASC;
Sur les extraits : E101 (2019) puis E102 (2021). La date de mise en service est ajoutée au SELECT car, en SQL-92 strict, la clé de tri est une colonne du résultat, désignée par son nom non qualifié (ou par son numéro) ; la plupart des SGBDR acceptent aussi ORDER BY E.dateMiseService et le tri sur une colonne non affichée. Une date s'écrit DATE 'AAAA-MM-JJ'.
b. Engins non rendus dont la date de fin prévue est dépassée
SELECT CO.numContrat, CL.raisonSociale, L.numEngin, CO.dateFinPrevue
FROM LIGNE_CONTRAT L
INNER JOIN CONTRAT CO ON L.numContrat = CO.numContrat
INNER JOIN CLIENT CL ON CO.numClient = CL.numClient
WHERE L.dateRetour IS NULL
AND CO.dateFinPrevue < CURRENT_DATE;
Au 24 octobre 2026 : C26-0401, Garonne Bâtiment, E103, 16/10/2026 ; C26-0404, Façades Occitanes, E101, 21/10/2026. La condition dateRetour IS NULL s'écrit avec IS NULL : la comparaison = NULL n'est jamais vraie.
c. Engins dont les interventions de 2026 dépassent 1 500 € HT
SELECT E.numEngin, C.libelleCat, COUNT(*) AS nbInterventions,
SUM(I.coutHT) AS coutTotal
FROM INTERVENTION I
INNER JOIN ENGIN E ON I.numEngin = E.numEngin
INNER JOIN CATEGORIE C ON E.codeCat = C.codeCat
WHERE EXTRACT(YEAR FROM I.dateInterv) = 2026
GROUP BY E.numEngin, C.libelleCat
HAVING SUM(I.coutHT) > 1500
ORDER BY coutTotal DESC;
La restriction sur l'année porte sur les lignes (WHERE), avant le regroupement ; la condition sur le coût total porte sur les groupes (HAVING). La condition I.dateInterv BETWEEN DATE '2026-01-01' AND DATE '2026-12-31' est équivalente. Les fonctions YEAR() ou DATEDIFF() ne font pas partie du SQL-92.
d. Engins sans intervention
SELECT E.numEngin, E.codeCat
FROM ENGIN E
LEFT JOIN INTERVENTION I ON E.numEngin = I.numEngin
WHERE I.numInterv IS NULL;
La jointure externe gauche conserve tous les engins ; ceux qui n'ont aucune intervention ont des colonnes de INTERVENTION à NULL. Variante acceptée : WHERE E.numEngin NOT IN (SELECT numEngin FROM INTERVENTION).
e. Contrôle des remises
SELECT L.numContrat, CL.raisonSociale, L.numEngin, C.tarifJour,
L.tarifJourApplique,
(C.tarifJour - L.tarifJourApplique) * 100.0 / C.tarifJour AS tauxRemise
FROM LIGNE_CONTRAT L
INNER JOIN CONTRAT CO ON L.numContrat = CO.numContrat
INNER JOIN CLIENT CL ON CO.numClient = CL.numClient
INNER JOIN ENGIN E ON L.numEngin = E.numEngin
INNER JOIN CATEGORIE C ON E.codeCat = C.codeCat
WHERE L.tarifJourApplique < C.tarifJour;
Le tarif de la catégorie n'est accessible qu'en passant par ENGIN : LIGNE_CONTRAT ne contient pas le code catégorie. Sur les extraits, trois lignes ressortent : E105 et E101 (remise de 10 %), E103 (remise d'environ 9,09 %). Écrire 100.0 plutôt que 100 garantit une division décimale : avec des colonnes entières, certains SGBDR effectueraient une division entière (9 au lieu de 9,09).
f. Nombre de contrats d'octobre 2026 par agence, y compris zéro
SELECT A.codeAgence, A.nomAgence, COUNT(CO.numContrat) AS nbContrats
FROM AGENCE A
LEFT JOIN CONTRAT CO
ON A.codeAgence = CO.codeAgence
AND CO.dateContrat BETWEEN DATE '2026-10-01' AND DATE '2026-10-31'
GROUP BY A.codeAgence, A.nomAgence;
Deux pièges :
- la condition de date est placée dans le
ONde la jointure externe : placée dans leWHERE, elle éliminerait les agences sans contrat (leur dateContrat est NULL), ce qui contredit la demande ; - on compte
COUNT(CO.numContrat)et nonCOUNT(*): pour une agence sans contrat,COUNT(*)compterait la ligne complétée par des NULL et renverrait 1 au lieu de 0.
Sur les extraits : MTB 2, TLS 2, ALB 1, CAS 0.
2.5 Hausse des tarifs des nacelles
UPDATE CATEGORIE
SET tarifJour = tarifJour * 1.05
WHERE codeCat LIKE 'NAC%';
Sur les extraits, NAC12 passe à 157,50 € et NAC18 à 231 € : la colonne tarifJour étant décimale (document 4), le résultat n'est pas tronqué. La requête ne modifie pas les contrats déjà signés : leur montant est calculé à partir de tarifJourApplique, enregistré dans LIGNE_CONTRAT au moment du contrat, et non à partir du tarif catalogue. Seuls les nouveaux contrats partiront du nouveau tarif. C'est l'intérêt d'avoir enregistré le tarif appliqué (question 2.1 c).
2.6 Normalisation de la relation CONTROLE
La relation n'est pas normalisée. Ses attributs dépendent bien de la clé numControle, mais il existe une dépendance fonctionnelle entre attributs non clés : codeOrganisme → nomOrganisme, telOrganisme. Le nom et le téléphone de l'organisme dépendent de numControle seulement par l'intermédiaire de codeOrganisme (dépendance non directe).
Conséquences : redondance (le nom et le téléphone de Contrôle Levage Sud sont répétés à chaque contrôle) et anomalies de mise à jour (un changement de téléphone doit être reporté sur toutes les lignes, sous peine d'incohérence ; un organisme sans contrôle ne peut pas être enregistré).
Relations à ajouter au schéma :
ORGANISME (codeOrganisme, nomOrganisme, telOrganisme)
CONTROLE (numControle, dateControle, resultat, #numEngin, #codeOrganisme)
numEngin devient clé étrangère vers ENGIN et codeOrganisme clé étrangère vers ORGANISME : un contrôle porte sur un seul engin et est réalisé par un seul organisme, qui peut réaliser de nombreux contrôles.
CorrigéDossier 3 : Le processus de retour des engins
3.1 Typologie des processus et processus clé
| Processus | Famille (AFNOR) | Justification |
|---|---|---|
| Louer et livrer les engins aux clients | Métier (réalisation) | Il produit directement la valeur attendue par le client : c'est la mission d'Altimat |
| Gérer les retours d'engins | Métier (réalisation) | Le client y participe (restitution, facture) ; il clôt la prestation de location |
| Recruter et former les agents de parc | Support (soutien) | Il fournit des ressources humaines aux autres processus, sans être perçu par le client |
| Maintenir le système d'information | Support (soutien) | Il fournit les outils et les données dont les autres processus ont besoin |
| Élaborer la stratégie d'implantation des agences et le budget | Pilotage (management) | Il fixe les orientations et les objectifs, et mesure la performance |
Processus clé. Le retour conditionne à la fois le chiffre d'affaires (un engin non enregistré comme rendu ne peut pas être reloué), la facturation (durée et dommages facturés), la satisfaction des clients (plaintes pour jours facturés à tort) et le coût du parc (dommages détectés et refacturés). Il est donc déterminant pour la performance d'Altimat.
3.2 Incohérences du diagramme
- Passerelle G1 : la question « Engin endommagé ? » appelle une réponse exclusive (oui ou non). Une passerelle parallèle déclencherait les deux chemins à la fois (photographier et enregistrer, quel que soit l'état de l'engin). Il faut une passerelle exclusive. Le diagramme associe d'ailleurs une divergence parallèle et une convergence exclusive (G2), ce qui est incohérent.
- Flux T1 vers E4 : la restitution de l'engin est un échange entre deux participants (deux piscines). Elle doit être représentée par un flux de message (T1 => E4), pas par un flux de séquence, qui ne peut relier que des éléments d'une même piscine. En outre, une fois ce flux remplacé, la piscine Client n'a plus de chemin continu : T1 n'a aucun flux de séquence sortant et E2 aucun flux entrant. Il faut ajouter le flux de séquence T1 -> E2 (E1 -> T1 -> E2 -> E3).
- Place de l'enregistrement du retour : d'après le document 7, le retour est enregistré dans tous les cas, avant le test sur l'état de l'engin. Dans le diagramme, T6 n'est atteinte que sur la branche « Non » : pour un engin endommagé, le chemin T5 vers T7 ne passe jamais par l'enregistrement du retour.
Explication des plaintes : c'est la troisième incohérence. Les libellés [Oui] et [Non] des flux sortant de G1 montrent que le concepteur a voulu un choix exclusif (le symbole de passerelle est simplement erroné). Dans cette lecture, lorsqu'un engin rendu est endommagé, le chemin passe par T5 et T7 sans jamais atteindre T6 : sa date de retour n'est pas enregistrée, la ligne de contrat reste sans date de retour, l'engin apparaît toujours « en location » et la durée facturée continue de courir. Le client est facturé de jours pendant lesquels il n'avait plus l'engin (et l'engin ne peut pas être reloué).
En lecture parallèle stricte du symbole, les deux branches s'exécuteraient toujours : T6 serait atteinte, mais la convergence exclusive G2 laisserait passer chacun des deux jetons, si bien que T8 serait exécutée deux fois (deux factures). Cette lecture ne correspond ni aux libellés du diagramme ni au fonctionnement décrit.
3.3 Processus corrigé et modifié
Piscine : Client
E1 (début) Chantier terminé
T1 (tâche envoi) Restituer l'engin
E2 (événement intermédiaire message réception) Facture reçue
E3 (fin) Location terminée
Piscine : Altimat
Couloir : Agent de parc
E4 (début message) Engin restitué
T2 (tâche) Rechercher le contrat
T3 (tâche) Relever le compteur horaire
T4 (tâche) Contrôler l'état de l'engin
T6 (tâche) Enregistrer le retour
G1 (passerelle exclusive) Engin endommagé ?
T5 (tâche) Photographier les dommages
Couloir : Technicien
T7 (tâche) Établir le devis de réparation
G3 (passerelle exclusive) Devis supérieur à 500 € HT ?
T10 (tâche) Réviser le devis
Couloir : Responsable d'agence
T9 (tâche) Valider le devis
G4 (passerelle exclusive) Devis validé ?
Couloir : Service facturation
G2 (passerelle exclusive, convergence)
T8 (tâche envoi) Émettre la facture
E5 (fin) Retour traité
Flux de séquence
E1 -> T1
T1 -> E2
E2 -> E3
E4 -> T2
T2 -> T3
T3 -> T4
T4 -> T6
T6 -> G1
G1 -> T5 [Oui]
G1 -> G2 [Non]
T5 -> T7
T7 -> G3
G3 -> T9 [Oui]
G3 -> G2 [Non]
T9 -> G4
G4 -> G2 [Oui]
G4 -> T10 [Non]
T10 -> G3
G2 -> T8
T8 -> E5
Flux de messages
T1 => E4
T8 => E2
Points attendus : passerelle G1 exclusive ; T6 placée avant le test, sur le chemin commun ; nouveau couloir « Responsable d'agence » ; passerelle exclusive sur le montant du devis ; en cas de refus, tâche « Réviser le devis » qui renvoie le devis révisé vers le test G3 (ainsi T7 n'a qu'un flux entrant ; une variante équivalente place une passerelle exclusive de convergence avant T7) ; convergence exclusive G2 avant la facturation ; flux de message pour la restitution. Dans la piscine Client, le flux de séquence T1 -> E2 est ajouté (E1 -> T1 -> E2 -> E3).
3.4 Recours à la base de données et droits de l'agent de parc
| Tâche | Table | Action élémentaire |
|---|---|---|
| Rechercher le contrat | CONTRAT, LIGNE_CONTRAT (et CLIENT pour vérifier le client) | Lecture |
| Relever le compteur horaire | Aucune (au plus ENGIN, pour comparer au relevé précédent) | Action physique de lecture du compteur sur l'engin ; au plus une lecture de compteurHeures pour contrôle |
| Enregistrer le retour | LIGNE_CONTRAT et ENGIN | Modification de LIGNE_CONTRAT (dateRetour) et d'ENGIN (compteurHeures) |
D'après le document 7, c'est l'enregistrement du retour qui saisit dans le progiciel la date de retour et le compteur. Ce n'est pas une création : la ligne de contrat existe depuis la signature ; seule sa date de retour, jusque-là vide, est renseignée, et le compteur de l'engin est mis à jour.
UPDATE LIGNE_CONTRAT
SET dateRetour = DATE '2026-10-26'
WHERE numContrat = 'C26-0401'
AND numEngin = 'E103';
UPDATE ENGIN
SET compteurHeures = 1012
WHERE numEngin = 'E103';
La clause WHERE de la première requête porte sur les deux attributs de la clé : sans la condition sur numEngin, la date de retour serait aussi écrite sur la ligne de E102.
Droits de l'agent de parc (principe du moindre privilège : uniquement ce qu'exigent ses tâches) :
| Table | Lecture | Création | Modification | Suppression |
|---|---|---|---|---|
| CLIENT | X | |||
| CONTRAT | X | |||
| LIGNE_CONTRAT | X | X (date de retour) | ||
| ENGIN | X | X (compteur) | ||
| INTERVENTION |
Aucune suppression : elle effacerait la trace des opérations. Les interventions relèvent des techniciens ; une lecture peut se justifier si l'agent doit connaître l'historique des réparations, à condition de l'argumenter.
CorrigéDossier 4 : Le classeur de suivi des locations
4.1 Feuille « Param » et noms définis
- Les paramètres (date de référence, barème, taux d'assurance) sont saisis une seule fois, hors des formules. Si le taux d'assurance passe de 8 % à 9 %, on modifie la seule cellule B11 : toutes les formules en tiennent compte, sans risque d'oublier une formule où la valeur aurait été écrite en dur.
- Les noms (Date_Ref, Bareme_Remise, Tx_Assurance) rendent les formules lisibles (
K5*Tx_Assurancese comprend mieux queK5*Param!$B$11) et se comportent comme des références absolues : la recopie vers le bas ne les décale pas. - La séparation des zones (paramètres, données importées, calculs) facilite le contrôle et la maintenance par une autre personne.
4.2 Formules de la feuille « Locations »
| Cellule | Formule |
|---|---|
| I5 | =SI(F5="";"";F5-D5+1) |
| J5 | =SI(I5="";"";RECHERCHEV(I5;Bareme_Remise;2;VRAI)) |
| K5 | =SI(I5="";"";ARRONDI(G5*I5*(1-J5);2)) |
| L5 | =SI(K5="";"";SI(H5="O";0;ARRONDI(K5*Tx_Assurance;2))) |
| M5 | =SI(F5<>"";"Rendu";SI(E5<Date_Ref;"En retard";"En cours")) |
Justifications :
- I5 : la différence de deux dates donne un nombre de jours ; on ajoute 1 car les deux dates sont incluses. Le test
F5=""est préféré àESTVIDE(F5): après un import CSV, une cellule apparemment vide peut contenir une chaîne vide, queESTVIDEne reconnaît pas comme vide. - J5 : recherche en valeur approchée (4e argument VRAI) dans un barème par tranches trié par ordre croissant : la fonction renvoie le taux de la plus grande durée minimale inférieure ou égale à la durée.
- K5 et L5 : arrondi au centime par
ARRONDI(...;2); L5 teste la cellule K5 pour rester vide tant que la location est en cours. - M5 : premier test sur la date de retour, puis comparaison de la date de fin prévue avec la date de référence.
Valeurs obtenues :
| Ligne | Durée (I) | Taux (J) | Montant HT (K) | Assurance (L) | Statut (M) |
|---|---|---|---|---|---|
| 5 | 16 - 5 + 1 = 12 | 10 % | 150 × 12 × 0,9 = 1 620,00 | 1 620 × 8 % = 129,60 | Rendu |
| 9 | 22 - 14 + 1 = 9 | 10 % | 60 × 9 × 0,9 = 486,00 | 0 (attestation fournie) | Rendu |
Pour mémoire, la ligne 7 donne 4 jours, 0 %, 480,00 € et une assurance nulle ; les lignes 6 et 10 sont « En retard », les lignes 8 et 11 « En cours ».
4.3 Jeu d'essai de la formule J5
On teste chaque tranche, et surtout les valeurs limites autour des seuils, là où se produisent les erreurs (signe < au lieu de <=, mauvaise tranche) :
| Durée testée (I) | Résultat attendu (J) | Ce que l'on vérifie |
|---|---|---|
| 1 | 0 % | Borne basse de la première tranche |
| 6 | 0 % | Dernière valeur avant le seuil de 7 jours |
| 7 | 10 % | Seuil exact : la tranche commence à 7 inclus |
| 27 | 10 % | Dernière valeur avant le seuil de 28 jours |
| 28 | 20 % | Seuil exact |
| 45 | 20 % | Valeur au-delà du dernier seuil |
| vide (location en cours) | cellule vide | Gestion des lignes non rendues |
| 0 ou négative (retour saisi avant le début) | #N/A | Cas d'erreur : la durée est inférieure à la première clé du barème ; à empêcher par la validation des données (question 4.6) |
4.4 Plage dynamique Tab_Loc
Calcul. NBVAL(Locations!A) compte les cellules non vides de la colonne A : le titre (A1), l'en-tête (A4) et les 1 250 numéros de contrat, soit 1 252. Hauteur : 1 252 - 2 = 1 250 lignes. Point de départ : A4 décalé d'une ligne et de zéro colonne, soit A5. Largeur : 13 colonnes, de A à M.
Plage renvoyée : Locations!5:1254.
Intérêt. Le nombre de lignes augmente à chaque import hebdomadaire. Une référence fixe (A5
) ignorerait les nouvelles lignes, et les formules ou les tableaux de synthèse qui l'utilisent seraient faux sans que personne ne s'en aperçoive. La plage nommée calculée par DECALER s'ajuste automatiquement au nombre de contrats : elle améliore la maintenabilité du classeur. La formule suppose qu'aucune cellule ne soit ajoutée dans les lignes 2 et 3 de la colonne A (sinon NBVAL fausserait la hauteur). Une alternative consiste à mettre la plage sous forme de tableau, qui s'étend lui aussi avec les données.4.5 Feuille « Synthèse »
| Cellule | Formule | Valeur sur l'extrait |
|---|---|---|
| B5 (recopiée jusqu'en B9) | =SOMME.SI(Locations!$C:$C;$A5;Locations!$K:$K) | NAC12 : 1 620 ; NAC18 : 0 ; MPE25 : 480 ; GEN20 : 486 ; ECH08 : 0 |
| B11 | =NB.SI(Locations!$M:$M;"En retard") | 2 |
SOMME.SI ignore les cellules vides ou contenant du texte de la colonne K : seules les locations rendues, qui ont un montant, sont additionnées. Le critère $A5 est en référence mixte pour que la recopie vers le bas passe à la catégorie suivante. Pour comparer des montants entre catégories, un histogramme (graphique en colonnes ou en barres) est adapté ; un graphique en secteurs est possible pour montrer la part de chaque catégorie dans le total.
4.6 Ergonomie et sécurité de la feuille
Validation des données :
- Colonne H : liste de choix limitée aux valeurs
O;N, avec un message d'erreur bloquant en cas d'autre saisie. - Colonne F : date supérieure ou égale à la date de début de la même ligne (type Date, « supérieure ou égale à »
=$D5, ou règle personnalisée=OU(F5="";F5>=D5)), avec un message explicite. Elle supprime le cas d'erreur de durée nulle ou négative relevé à la question 4.3. Comme les données sont importées, on complète la validation par un contrôle (par exemple la commande d'entourage des données non valides, ou une colonne de contrôle) car la validation ne vérifie que les saisies faites à la main.
Mise en forme conditionnelle : sélectionner la plage A5
(ou le tableau) et créer une règle utilisant la formule=$M5="En retard", avec un remplissage rouge. Le signe $ devant M fige la colonne : toute la ligne prend la couleur.
Protection :
- déverrouiller les seules cellules de saisie (paramètres modifiables de la feuille « Param », s'il y a lieu) et laisser verrouillées les colonnes de formules I à M ;
- protéger la feuille « Locations » par un mot de passe, en n'autorisant que la sélection et le filtrage ;
- protéger la structure du classeur pour empêcher la suppression ou le renommage des feuilles « Param » et « Locations », dont dépendent les formules et la procédure Relances.
4.7 Procédure Relances
| Ligne | Instruction |
|---|---|
| (1) | Set ws = Worksheets("Locations") |
| (2) | ws.Cells(i, 1).Value <> "" |
| (3) | ws.Cells(i, 6).Value = "" And ws.Cells(i, 5).Value < dateRef |
| (4) | valoRetards = valoRetards + ws.Cells(i, 7).Value * DateDiff("d", ws.Cells(i, 5).Value, dateRef) |
| (5) | i = i + 1 |
- (1) : ws est une variable objet : l'affectation se fait avec
Set. - (2) : la boucle
Do Whiletourne tant que la cellule de la colonne A n'est pas vide ; elle s'arrête à la première ligne vide. - (5) : sans incrémentation, la boucle traiterait indéfiniment la ligne 5.
Exécution sur l'extrait (date de référence : 24/10/2026) :
| Ligne | Date de retour | Fin prévue < 24/10 ? | En retard ? | Cumul |
|---|---|---|---|---|
| 5 | 16/10/2026 | Non | 0 | |
| 6 | vide | 16/10 : oui | Oui | 200 × 8 jours = 1 600 |
| 7 | 09/10/2026 | Non | 1 600 | |
| 8 | vide | 06/11 : non | Non | 1 600 |
| 9 | 22/10/2026 | Non | 1 600 | |
| 10 | vide | 21/10 : oui | Oui | 1 600 + 135 × 3 jours = 2 005 |
| 11 | vide | 30/10 : non | Non | 2 005 |
La boucle s'arrête à la ligne 12 (A12 vide). La procédure écrit « À relancer » en N6 et N10, vide les cellules N5, N7, N8, N9 et N11, et affiche : « 2 engin(s) à relancer. Retards valorisés : 2005 euros ».
4.8 Fonction personnalisée TAUX_REMISE
Function TAUX_REMISE(nbJours As Integer) As Double
If nbJours >= 28 Then
TAUX_REMISE = 0.2
ElseIf nbJours >= 7 Then
TAUX_REMISE = 0.1
Else
TAUX_REMISE = 0
End If
End Function
Les tests partent du seuil le plus élevé : dès qu'une condition est vraie, les suivantes ne sont pas évaluées. En VBA, le séparateur décimal est le point (0.2). Utilisation en J5 : =SI(I5="";"";TAUX_REMISE(I5)).
Inconvénient : les seuils et les taux sont écrits en dur dans le code. Une modification du barème oblige à modifier le programme, et la feuille « Param » pourrait afficher un barème différent de celui réellement appliqué : le classeur perd en maintenabilité, à l'opposé de la logique des cellules de paramètres. De plus, une fonction personnalisée n'est recalculée que lorsque ses arguments changent : après une modification du code, il faut forcer le recalcul.
CorrigéDossier 5 : Données personnelles, sécurité et durabilité
5.1 Données de localisation et données à caractère personnel
Règle. Une donnée à caractère personnel est toute information se rapportant à une personne physique identifiée ou identifiable, directement ou indirectement, notamment par référence à un identifiant ou à des données de localisation (RGPD, art. 4, point 1).
- Camions de livraison : chaque camion est conduit par un chauffeur connu (planning des tournées). Sa position renseigne sur les déplacements d'une personne identifiable : ce sont des données à caractère personnel, et le dispositif est un traitement soumis au RGPD.
- Boîtiers des engins loués : la position d'un engin loué à une société porte en principe sur un bien. Elle devient une donnée personnelle dès qu'elle peut être rattachée à une personne physique : client entrepreneur individuel (Toitures Delmas), conducteur identifié, ou croisement avec d'autres données. Altimat doit donc traiter ces données avec les mêmes précautions dès qu'un tel rattachement est possible.
5.2 Conformité du projet de géolocalisation
Référence : fiche CNIL « La géolocalisation des véhicules des salariés » (mise à jour du 30 mai 2023, consultée le 24 octobre 2026).
| Point du projet | Problème | Correction |
|---|---|---|
| Enregistrement pendant les pauses et les trajets domicile-agence ; dispositif impossible à désactiver | La collecte de la localisation en dehors du temps de travail est interdite ; le salarié doit pouvoir désactiver la collecte hors temps de travail | Possibilité de désactivation pendant les pauses et les trajets personnels ; l'employeur peut contrôler le nombre et la durée des désactivations |
| Alerte de dépassement de vitesse en vue de sanctions | Le contrôle du respect des limitations de vitesse fait partie des usages interdits | Supprimer cette finalité |
| Conservation trois ans | Durée excessive : la règle est deux mois (c'est le cas pour la lutte contre le vol). Un an n'est admis que pour l'optimisation des tournées, ou pour la preuve des interventions lorsqu'elle ne peut pas être rapportée par un autre moyen ; ici, la preuve de livraison peut être apportée autrement (signature du client sur tablette), elle ne justifie donc pas un an | Deux mois par défaut ; un an au plus pour les seules données utilisées à l'optimisation des tournées ; purge automatique |
| Installation « sans formalité » | Les représentants du personnel (CSE) doivent être informés ou consultés avant l'installation ; chaque chauffeur doit être informé individuellement (responsable, finalités, base légale, destinataires, durée de conservation, droits), le code du travail interdisant de collecter une information concernant personnellement un salarié par un dispositif qui n'a pas été porté préalablement à sa connaissance (art. L1222-4) ; le traitement est inscrit au registre des activités de traitement (RGPD, art. 30) | Consultation du CSE, note d'information ou avenant remis à chaque chauffeur, inscription au registre |
Les finalités « optimiser les tournées », « prouver l'heure de livraison » et « retrouver un camion volé » sont, elles, admises. Le fait que les camions appartiennent à l'entreprise ne la dispense pas de ces règles : ce sont les déplacements des salariés qui sont suivis.
5.3 Incident A : fraude au faux fournisseur
Qualification. Il s'agit d'une fraude au faux fournisseur (escroquerie au faux ordre de virement), reposant sur l'ingénierie sociale et l'hameçonnage : un courriel usurpant l'identité d'un fournisseur connu (adresse d'expédition presque identique) pousse la comptable à modifier un IBAN. Ce n'est pas une faille technique mais l'exploitation du facteur humain et d'une procédure insuffisante.
Critère de sécurité atteint : l'authenticité (l'émetteur du courriel n'est pas celui qu'il prétend être), avec pour conséquence une atteinte à l'intégrité des données du fichier fournisseurs (IBAN modifié à tort).
Mesures :
- organisationnelle : toute demande de changement de coordonnées bancaires est vérifiée par un contre-appel au numéro habituel du fournisseur (jamais celui figurant dans le courriel), et validée par une seconde personne ; sensibilisation des salariés aux signaux d'alerte (changement de RIB, urgence, adresse proche) ;
- technique : dans le progiciel comptable, circuit de validation (workflow) imposant une double validation de toute modification d'IBAN avant le premier paiement, et journal des modifications des tiers (traçabilité de qui a modifié quoi et quand).
Dans l'immédiat, Altimat alerte sa banque pour tenter de bloquer ou de récupérer les fonds et dépose plainte. Ces mesures rejoignent les recommandations du guide d'hygiène informatique de l'ANSSI (version de 2017, 42 mesures), notamment la sensibilisation des utilisateurs.
5.4 Incident B : obligations au titre du RGPD
Qualification. Le vol d'un ordinateur non chiffré contenant des données personnelles (noms, téléphones et courriels des interlocuteurs, IBAN des clients entrepreneurs individuels) est une violation de données à caractère personnel : atteinte à leur confidentialité (RGPD, art. 4, point 12). Les IBAN des sociétés ne sont pas des données personnelles, mais ceux des 140 entrepreneurs individuels et les coordonnées des interlocuteurs le sont.
Obligations d'Altimat, responsable du traitement :
- Documenter la violation dans son registre interne des violations (nature, personnes et données concernées, conséquences, mesures prises), même si elle n'était pas notifiée.
- Notifier la CNIL dans les meilleurs délais et au plus tard 72 heures après en avoir pris connaissance, sauf si la violation n'est pas susceptible d'engendrer un risque pour les droits et libertés des personnes (art. 33). Le vol a été signalé le 21 octobre : l'échéance des 72 heures tombe le 24 octobre, date de référence du sujet. Ici, le disque n'était pas chiffré : le risque existe (hameçonnage ciblé, usurpation, fraude au prélèvement), la notification s'impose sans attendre. Si toutes les informations ne sont pas encore connues, la notification peut être faite par étapes : une notification initiale dans le délai, complétée ensuite sans retard indu (art. 33, § 4).
- Informer les personnes concernées dans les meilleurs délais si le risque est élevé (art. 34). La divulgation d'IBAN associés à des noms et coordonnées expose les entrepreneurs individuels à des fraudes : le risque peut être jugé élevé, il faut les prévenir et leur recommander la vigilance.
Mesure qui aurait limité les conséquences : le chiffrement du disque de l'ordinateur. Des données chiffrées dont la clé n'est pas compromise sont incompréhensibles pour le voleur : l'information des personnes n'est alors pas exigée (art. 34, § 3), et le risque peut même disparaître. On peut ajouter l'interdiction des exports complets de la base sur les postes (minimisation, accès au progiciel en ligne seulement) et un mot de passe robuste, voire une authentification multifacteur.
5.5 Numérique responsable et projet de tablettes
Le cadre est celui de la loi n° 2021-1485 du 15 novembre 2021 visant à réduire l'empreinte environnementale du numérique en France (loi REEN), qui vise notamment à limiter le renouvellement des terminaux, lutter contre l'obsolescence et encourager le réemploi et le reconditionnement. La fabrication des terminaux pèse lourd dans l'empreinte du numérique. Trois bonnes pratiques parmi d'autres :
- Allonger la durée de vie des tablettes plutôt que de les renouveler tous les deux ans : modèles durcis adaptés au chantier, coques de protection, renouvellement seulement en cas de panne ou d'incompatibilité, réparation, choix de tablettes reconditionnées et réemploi ou don des anciennes.
- Limiter le volume des photos : résolution suffisante pour la preuve, compression, nombre de photos encadré (par exemple seulement pour les dommages constatés et des vues standard) ; moins de stockage et de transferts.
- Fixer une durée de conservation des photos et les purger automatiquement : par exemple jusqu'au règlement de la facture ou, en cas de litige, jusqu'à son issue. Cette pratique rejoint le principe de limitation de la conservation du RGPD (art. 5, § 1, e) dès que les photos permettent d'identifier une personne (client, plaque d'immatriculation sur un chantier).
Quiz UE 8 Systèmes d'information de gestion
21 questions sur les thèmes du sujet, tirées des chapitres du pack, avec la correction expliquée. Sans compte.
Les cours à revoir avant ce sujet
Les chapitres du programme mobilisés par le sujet, en accès libre.
- 07Les contrats de prestations informatiques : analyser les clauses courantesCours gratuit
- 08Données personnelles : RGPD, CNIL, droits, obligations et conservationCours gratuit
- 14Dépendances fonctionnelles et normalisation d'un schéma relationnelCours gratuit
- 18SQL : les sous-requêtes et le choix de la requête adaptée au besoinCours gratuit
- 21BPMN : passerelles, événements, artefacts et amélioration d'un processusCours gratuit
- 28Fonctions de recherche et gestion des erreurs du tableurCours gratuit
- 34Programmer dans le tableur : les boucles et les programmes de gestion completsCours gratuit
Le pack DCG UE 8 Systèmes d'information de gestion
340 questions, des textes à trous et 488 flashcards sur les 34 chapitres, avec un tuteur IA.
Voir les chapitres du pack29 €achat unique
Paiement sécurisé par Stripe, facture envoyée par email.
Les annales des autres UE
- Annales DCG UE 1 Fondamentaux du droit
- Annales DCG UE 2 Droit des affaires
- Annales DCG UE 3 Droit social
- Annales DCG UE 4 Droit fiscal
- Annales DCG UE 5 Économie contemporaine
- Annales DCG UE 6 Finance d'entreprise
- Annales DCG UE 7 Management
- Annales DCG UE 9 Comptabilité
- Annales DCG UE 10 Comptabilité approfondie
- Annales DCG UE 11 Contrôle de gestion