Mon Stage à la SNCF

L’entreprise :

Nom de l’entreprise : SNCF

Date de création : 1er janvier 1938

Président : Guillaume Pepy

Forme juridique : EPIC (Établissement public à caractère industriel et commercial)

Effectif : 149500 employés

La Société Nationale des Chemins de Fer français (SNCF) est l’entreprise ferroviaire publique française, officiellement créée le 1er janvier 1938 en application du décret-loi du 31 août 1937. Elle est notamment présente dans les domaines du transport de voyageurs, du transport de marchandises et réalise la gestion, l’exploitation et la maintenance du réseau ferré national dont elle est propriétaire.

La SNCF est composée de trois EPIC, mais elle possède de nombreuses filiales aussi bien de droit public que de droit privé qui forment le groupe SNCF.


Le Service :

Nom du service : C2MI

Rattachement à la filiale : SNCF Réseau

Directeur de la filiale : Patrick Jeantet

Effectif : 20 employés (C2MI Strasbourg)

Rôle du service : Le C2MI de Strasbourg a pour rôle de programmer et d’exécuter les entretiens, maintenances et dépannages sur les engins légers (tronçonneuses, débroussailleuses et autres engins plus ou moins spécifiques aux rails pouvant être utilisés à la main) et lourds (engins de chantiers sur rail et route allant de l’entretien/remplacement du rail à l’entretien/remplacement des caténaires) d’entretien de la voirie.


Projet de stage :

Les bureaux C2MI de Strasbourg travaillent depuis plusieurs années avec différentes feuilles Excel éditées chaque année manuellement permettant de gérer l’ensemble de l’activité du service avec la gestion plannings d’entretien des engins ainsi que les données RH tels que les congés des employés, maladies et répartition des engins par employé. Ces données sont dispersées dans 3 fichiers tous liés, oû les informations sont répétées pour des usages différents. Afin de rendre leur travail plus facile la SNCF m’a pris en stage afin de concevoir un logiciel permettant l’automatisation de certaines données, d’éviter d’entrer manuellement la même information dans plusieurs fichiers différents et rendre ces fichiers plus accessible pour les personnes ne maîtrisant pas ceux-ci. Les trois documents d’origine sont disponibles ici.

Le C2MI n’étant pas un service informatique je serai encadré par le directeur de service ainsi que son adjoint qui me guideront sur leurs besoins. Je pourrais en revanche à tout moment demander de l’aide auprès du service informatique de la SNCF Réseau, l’ASTI. J’ai à ma disposition un ordinateur relié à l’intranet du réseau SNCF ainsi qu’un accès à Excel pour développer une feuille de programmation en VBA.


Déroulement du stage :

semaine  1 :

Lundi : Férié

Mardi : Découverte des locaux et rencontre avec le personnel du service. Une réunion l’après-midi a été organisée pour me présenter plus en détail l’utilisation des fichiers que je serai amené à modifier.

Mercredi : N’ayant pas encore mes identifiants pour me connecter au réseau SNCF, cette journée m’a permis de mettre en place un cahier des charges disponible en pièce jointe au bas de cette page.

Jeudi : Découverte du langage VBA, création d’une page d’accueil (capture d’écran à droite)

Vendredi : Mise en place d’un tri permettant de récupérer, du fichier de maintenance, le nom des engins nécessitant une maintenance dans les 4 prochaines semaines, suivi d’une série de test afin de prendre en compte tout les paramètres. (Ajout de lignes, suppression de lignes…). Les données récupérées en fin de journée sont toutes justes.

 

Semaine 2 :

Lundi : Utilisation des données extraites le vendredi pour implémenter le fichier « TAP » avec les noms d’engins par programmation.

Mardi : Corrections de bugs rencontrés le lundi, ajout du type de maintenance à la suite du nom de l’engin dans le « TAP » et mise en plage d’une mise à jours du « TAP » pour la semaine en cours et les 4 semaines à venir à chaque enregistrement du fichier de maintenance.

Mercredi : Poursuite du travail du mardi

Jeudi : Mise en place d’une récupération de données dans le fichier « TAP » pour les exporter vers le fichier « Programme de production » de la semaine S0 à la semaine S+4. Les données n’ont pas été récupérées directement du programme de maintenance car celui-ci ne prend en compte que les maintenances prévues de longue date. Les maintenances prévues à date plus courte sont ajoutés manuellement dans le « TAP » et doivent figurer dans le programme de production. Je débute également la partie gestion RH en créant la page « Gestion du personnel » (Voir capture d’écran).

Vendredi : Poursuite du codage de la partie RH. En fin de matinée toutes les fonctions sont opérationnelles dans le classeur principal. La partie ajout de congés est opérationnelle et ajoute des congés aux employés dans le TAP directement depuis le classeur principal. Les autres fonctions marchent dans le classeur principal mais n’ont pas encore été programmées pour modifier les autres classeurs. L’après-midi une réunion est organisée afin de lancer officiellement sur le réseau de la SNCF une version « test » de mon programme afin que celui-ci puisse être utilisé durant la réunion de planification de la semaine prochaine. Cela m’a permis de noter les différents points à modifier/ajouter afin de m’adapter au mieux aux besoins des utilisateurs. Plusieurs bugs ont été relevés pendant la réunion.

Semaine 3 :

Lundi : Réunion de début de semaine. Nous avons parlé de l’avancement du projet ainsi que des possibilités d’améliorations d’un autre programme si j’ai le temps. L’interface graphique de la partie « Gestion des engins » du « TAP » a été faite, ainsi qu’une nouvelle feuille sur laquelle est stockée la liste des engins par type. Les bugs rencontrés pendant la réunion de vendredi ont été corrigés

Mardi : Codage de la partie « Ajout d’engins » permettant d’ajouter des engins à la liste crée précédemment par l’intermédiaire d’une fenêtre (userform) ainsi que la partie suppression d’engins et suppression de type d’engins.

Mercredi :  Codage de l’intégration de la liste d’engins dans le programme de maintenance. Quand un engin est supprimé la ligne correspondant à celui-ci est supprimée de ce classeur. Les différentes feuilles devant être imprimées pour affichage et un document devant être exporté en PDF, les boutons gérant les impressions sont crées.

Jeudi : Codage des différentes impressions.Le « TAP » doit être imprimé sur une période de 1 semaine et de 4 semaines. La contrainte pour ce document est qu’il ne doit pas être imprimé avec la répartition des engins par personne mais doit imprimer les données RH (Congés, repos, syndicat…). deux nouvelles feuilles sont crées et sont parcourues par programmation pour copier coller les bonnes périodes et vider les cases ne devant pas être imprimées. Le programme est de nouveau testé en réunion.

Vendredi : Le codage des boutons d’impression continue avec une recherche sur les codes à utiliser pour gérer l’imprimante, certains documents devant être mis à l’échelle pour tenir sur une feuille A4 ou A3. Ayant trouvé ces informations, le TAP s’imprime sur feuille A4 pour la semaine et sur feuille A3 pour les 4 semaines. Le programme de maintenance est quant à lui imprimé sur l’année et doit tenir sur feuille A3 et le programme de production doit être imprimé sur 4 semaines avec une feuille A4 par semaine. Le programme de production est aussi exporté en PDF sous le même format. Enfin trois boutons sont rajoutés : le premier permettant d’imprimer la liste des employés, le second l’impression de la liste des engins et le dernier permettant de sélectionner plusieurs types d’impression simultanément (voir capture d’écran).

 

Semaine 4 :

Lundi : Réunion pour faire le point sur le programme. Il ne reste plus qu’à coder la partie « Création de nouveaux classeurs » pour les années suivantes. Mes premiers essais ne sont pas concluants, le serveur de la SNCF étant protégé contre les copier-collé venant de macro. La solution retenue est de créer des fichiers vierges qui seront ouverts, édités pour l’année en cours et enregistrés sous le bon dossier (Les fichiers vierges sont disponibles ici). Codage de la création d’un nouveau « TAP ». Excel récupère les dates du système ce qui m’évite d’avoir à gérer les années bissextiles. le nom des employés est récupéré dans la feuille du programme de gestion ou ceux-ci sont stockés.

Mardi : Codage de la création du « TAP » : les numéros de semaines sont ajoutés par programmation, les repos et les jours fériés fixes le sont aussi. Les bordures de cellules sont adaptées à la taille des semaines. Le programme de production est une simple copie du fichier vierge et est renommé avec l’année visée. Codage de la création du nouveau programme de production. Celui-ci n’ayant pas de date affichée mais seulement des numéros de semaines la programmation des numéros de semaines est un peu plus longue que sur le « TAP ». La liste des engins est mise à jour avec la feuille ou ils sont stockés. Le code est relu, raccourci grâce à l’utilisation de fonctions pour éviter les répétitions. Il mis sur le serveur de la SNCF.

Mercredi : Le magasinier souhaite informatiser son classeur de commandes. Celui-ci est rempli à la main pas l’employé souhaitant commander une pièce. J’ai donc crée une feuille Excel protégé pour éviter que les employés ne modifient les commandes après validation. Ce tableau doit être complété avec la date d’inscription dans le registre, le demandeur, le type et ne n° d’outillage, le fournisseur, la désignation de la pièce, la référence ainsi que la quantité. Une fois la ligne complétée, le fond de celle-ci passe en rouge, signalant que la commande n’est pas traitée par le magasinier. Quand le magasinier commande la pièce, il renseigne une date de commande et la ligne passe en orange pour signaler que la pièce est commandée. Une fois la pièce réceptionnée, le magasinier renseigne la date d’arrivée et la ligne passe en vert. Quand un employé vient chercher des pièces commandées, le magasinier renseigne le nom de la personne à qui il fournit ces pièces. La ligne disparaît alors du tableau des commandes en cours pour s’archiver sur une feuille qui est archivée annuellement. De plus un bon de réception est imprimé ou sont renseignés la date, le nom de l’employé et le listing des pièces qu’il récupère. (le bon est disponible ici)

Jeudi : Le chef de l’équipe « engins mécaniques » me présente un de leurs classeurs Excel programmé par un ancien stagiaire qui ne fonctionne plus correctement. Ce document prend une liste de clés dynamométriques et devait remplir la colonne de dessous automatiquement avec la date de vérification de la clé. Le problème venait du fait que le concepteur de ce code effaçait à chaque ouverture du document les cellules pour permettre une nouvelle saisie et effaçait par conséquence la formule dans la case voulue. Il me présente aussi un autre classeur Excel programmé par la même personne qui ne fonctionne pas correctement. Cette feuille permet la gestion des avertisseurs sonores en cas d’arrivée de train sur les chantiers. Un tableau principal référence toutes les trompes et un lien avec le numéro de celle-ci donne accès à la fiche individuelle. Pour une raison inexpliquée, le classeur perd régulièrement des lignes, mais les trompes ayant encore une fiche personnelle, la ligne effacée ne peut pas être refaite par l’intermédiaire du menu « ajouter » présent dans l’application.

Vendredi : Après plusieurs tests et relectures du code pour trouver le problème je finis par le trouver. La personne ayant programmé ce classeur a mis une colonne avec la valeur « 1 » à chaque ajout de ligne. Une cellule fait la somme des « 1 » et la valeur de cette cellule indiquait au code la première ligne vierge. Le classeur n’ayant pas été rempli correctement par les employés, cette colonne n’a pas été rempli systématiquement de 1, allant de aucune valeur à la valeur en dB mesurée à la vérification de la machine. Tout cela a conduit le code à prendre une ligne qui n’est en réalité pas vierge et à écraser la ligne d’une trompe existante pour en créer une nouvelle. Pour résoudre ce problème j’ai enlevé la formule présente dans la cellule concernée et j’y mets la position de la première ligne vierge par programmation. A chaque démarrage du programme le code parcourt la colonne des numéros de trompes (seule information indispensable et que les employés qui rempliront ce tableau ne pourront pas laisser vide) jusqu’à avoir une cellule vide et ajoute donc cette position dans la cellule utilisée par le code d’ajout de ligne.

 

Semaine 5 :

Lundi : Lundi matin plusieurs employés sont venus poser des congés et j’ai constaté que pour vérifier si les employés ont encore des congés disponibles, les personnes des bureaux ouvrent le TAP et comptent manuellement. Pour leur faciliter ce travail je leur ai proposé de faire un tableau automatisé calculant les différents repos non posés de chaque employé. Ce tableau a été intégré dans une nouvelle feuille du « TAP » (voir capture d’écran). Le code couleur permet en un clin d’œil de vérifier quels sont les employés ayant posé tous leurs congés et ceux qui en ont posés de trop.

Mardi : Rédaction d’un guide utilisateur (disponible ici) pour présenter toutes les fonctionnalités du programme, ce qui change par rapport a ce qu’ils utilisaient avant, les valeurs obligatoires pour un bon fonctionnement du programme… Ce guide me permet de découvrir quelques points à améliorer dans mon programme tel que des fenêtres portant encore le nom « UserForm1 », des fautes d’orthographe, des boutons de test non supprimés… Après concertation avec l’équipe des bureaux, chaque personne ayant un accès à ce programme se verra remettre ce guide qui devra, en plus de contenir les informations sur le fonctionnement du programme, expliquer les différents types de messages d’erreurs mis en place et comment les éviter.

Mercredi : Fin de rédaction du guide utilisateur, mise en page et impression en plusieurs exemplaires sous forme de livret.

Jeudi : Pour permettre à une autre personne de comprendre et modifier mon code facilement, l’équipe me demande de rédiger un rapport détaillant les différentes lignes de code me paraissant les moins évidentes à comprendre. Je commence donc à rédiger ce rapport.

Vendredi : Dernière journée de stage. Une grande réunion est organisée avec les dirigeants de plusieurs pôles de la SNCF pour expliquer le nouveau fonctionnement de mon programme car certaines personnes que je ne connaissais pas encore auront accès celui-ci. Je présente donc mon projet et après plusieurs démonstrations de son fonctionnement je leur remets le guide utilisateur. Une seconde réunion est faite avec l’équipe des petits engins ainsi que le magasinier pour faire le point sur les 2 applications que je leur ai déboguées ainsi que sur l’utilisation du nouveau classeur de gestion des commandes. Nous retrouvons Mr Knaub en fin de matinée pour faire le point sur mon stage et remplir certains papiers. L’après midi m’a permis de faire une dernière sauvegarde de tous mes projets et de ranger mon bureau.