rapport oncf
DESCRIPTION
developement VB access et soild works , ingenieur master atie uhp francece projet est réalise par lahcen AIT ALI ? qui en détient les droits d'auteur , or c possible de me contacter pour avoir gratuitement ce document , [email protected] ; bon courage !!!TRANSCRIPT
2
3
Je tiens à remercier vivement les responsables d’Office National
des Chemins de Fer en la personne de Mr. BELKBIR le Directeur de l’établissement maintenance de voitures et wagons au site de casa voyageurs a Casablanca ,notamment la Responsable de ressources Humaines Mme NOUR,d'avoir bien voulu m'accorder ce stage au sein de leur honorable établissement ;
Je remercie aussi tous les membres des services de
L’établissement maintenance de voitures et wagons de Casa-voyageurs de l’office pour l’accueil, la sympathie et l’aide qu’ils m’ont offerts pendant ce stage. Particulièrement, Mr. ERRANI, pour ses efforts et pour son aide précieuse pendant la réalisation de ce projet.
Je vaudrais également remercier Mr. HAROUSSI pour ses idées
et ses astuces pendent la réalisation des dessins industriels sur le SolidWorks 2008. J’adresse aussi l’expression de mon respect pour, Mr. ALAYOUBI, Mr. TARRAQ, Mr. HIMDI pour leur sympathie qui m’était une source d’encouragement.
J’espère que ce projet atteindra ses objectifs et je souhaite vivement satisfaire les ambitions du service d’établissement maintenance de voitures et wagons de Casa voyageurs par un travail accompli.
4
Introduction générale .................................................................................4 Chapitre 1 : Présentation de l’office National de Chemins de Fer...…..6 Chapitre 2 : Analyse & conception..........................................................15 2.1) Définition du sujet................................................................................16 2.2) Approche technique…………………………………………………..18 2.3) Conception de la base de données……………………...…………….19 2.2.1) Règles de la gestion………………………………………………...19 2.2.2) Dictionnaire de données……………………………………………20 2.2.3) Schéma entité relationnelle ……………………………………………..20 Chapitre 3 : Réalisation……………………………………………….…22 3.1) Outils de développement……………………………………………..21 3.1.1) SGBD……………………………………………………………....20 3.1.2) Langage de programmation………………………………………...23 3.2) Logique d’enchaînement………………………………………….….24 3.3) Ecrans de l’application ………………………………………………25 3.4) Réalisation des Dessin industriels sur SolidWorks …………………. 31 Conclusion Annexe……………………………………………………………………33
5
Dans le but de développer mon esprit de modélisation et de conception et
en vue d’approfondir mes connaissances informatiques, et grâce à la coopération
qui réunie L’EMSI avec les établissements et les entreprises marocaines, j’ai été
amené à réaliser ce stage de fin de la quatrième année au sein de L’ONCF dans
l’établissement de préparation de train de ligne.
L’objectif de mon stage est constitué de deux projets à réaliser :
D’abord réaliser les dessins industriels d’un essieu et d’un joint de vitre sur le
SolidWorks 2008
En suite la conception et développement d’une application qui facilitera la
gestion des situations des voitures et fourgons de l’office en utilisant comme
langage de programmation le Visual Basic et comme système de gestion de
bases de données l’Access.
Ce rapport comporte trois chapitres. Le premier est consacré à la Présentation de
l’ONCF plus particulièrement L’EMVW et ses activités. Le deuxième entame
les parties théoriques des deux projets. Enfin le troisième chapitre sera consacré
à la réalisation et la programmation du deuxième projet.
6
PRESENTATION DE L’ONCF ET DE L’EMVW
7
Présentation de l’Office National des Chemins de Fer 1. Historique :
Historiquement, la construction du réseau des chemins de fer du Maroc
remonte au début du 20éme siècle. En effet, les premières lignes construites à
voies de 0.6m ont été établies à partir de 1916, et ce n’est qu’on 1923 que la
construction des voies à écartement normale a été confiée à trois compagnies
concessionnaires privées, ces derniers partagèrent le trafic ferroviaire en
exploitant chacune la partie du réseau qui lui était concédée.
En 1963, le Maroc a décidé le rachat des concessions et la création de
l’Office National des Chemins de Fer qui est un établissement public à caractère
industriel et commercial doté de la personnalité civile et de l’autonomie
financière. Placé sous la tutelle du ministère du transport et de la marine
marchande.
Sur la scène internationale, le Maroc est membre de l’Organisation
Internationale du Trafic Ferroviaire qu’il s’agisse de marchandises ou de
voyageurs. De même, l’ONCF est membre actif de l’Union International des
Chemins de Fer, de l’Union Arabe des Chemins de Fer et du Comité du
Transport Ferroviaire Maghrébin.
L’ONCF emploi actuellement environ 10000 agents, gère et exploite un
réseau de 1907 Km de ligne dont 1537 Km à voie unique (80%) et 370 Km à
double voie. Ce réseau comporte également 528 Km de voies de service et 201
Km de lignes d’embranchement particulier reliant diverses entreprises au réseau
ferré national. A noter que 53% de la longueur du réseau est électrifiée à 3000
voltes continues, alors que 904 Km sont exploités en traction diesel.
Depuis sa création, l’ONCF joue un rôle majeure dans le transport des
voyageurs, marchandises et phosphates vu le savoir faire et l’expérience qu’il a
8
dans le domaine et ce grâce à la capacité professionnelle requise. Cela signifie
que :
� L’ONCF possède des connaissances et de l’expérience qui lui permet
d’exercer le contrôle opérationnel et une surveillance sûre et efficace.
� Le personnel de l’ONCF chargé de la sécurité possède une qualification
adaptée à son domaine d’activité.
� Le personnel, le matériel roulant et l’organisation sont de nature à
permettre d’assurer un niveau de sécurité équivalent à celui des services
analogues en Europe.
9
2. Organigrammes des pôles de l’ONCF :
ORGANIGRAMME GENERAL DU POLE MAINTENANCE MATERIEL :
10
1. Services des AGEC
* Service technique
Groupe d’étude : a pour rôle :
Elaborer et suivre l’application des consignes rapportées par le conseil
d’étude ainsi que les règles d’entretien et de révision adopté par le service
technique. Elaboration des rapports trimestriels et annuels.
Service technique étude (STE) : a pour tâche :
Assurer les études techniques et les améliorations à apporter sur le
matériel. Elaborer des projets d’acquisition et de matériel de consommation.
Service technique approvisionnements : Il se charge de lancer les demandes
de matière auprès du magasin régional qui est en relation avec le magasin
général pour assurer le stock des pièces et matières nécessaires à l’entretien.
* Service gestion
La fonction gestion est d’une grande importance dans chaque entreprise
car elle permet de gérer et réguler le mouvement des produits tout le long du
cycle de fabrication, depuis la commande de la matière première jusqu'à la
livraison des produits finis.
* Service de production
Il a sous sa responsabilité le service programmation lancement et les quatre
ateliers d’entretiens.
Service programmation lancement : Son rôle consiste à :
Elaborer le programme des opérations de maintenance périodiques.
Lancement des bons de travail pour les ateliers.
Suivi du matériel à l’entrée et a la sortie.
Organiser les manœuvres au sein de l’établissement.
Expédition des pièces et organes envoyés par autres établissements
11
2. PRESENTATION DE L’E.M.V.W
L’établissement maintenance de voitures et wagon de Casablanca a été
crée le 01-07-2009 après la réorganisation des établissements de la ONCF.
Son site est situé au boulevard BAHMAD entre l’EX. Usine de carneau et
la gare de Casa Voyageurs
ORGANISATION
L’établissement est organisé comme suit :
Établissement mère se trouve à CASA BLANCA et gère les centres
suivants:
� Centre Maintenance de voitures et fourgon de Marrakech.
� Centre Maintenance de voitures et fourgon de Fès.
ORGANIGRAME DE L’ETABLISSEMENT MAINTENANCE V W CASABLANCA
12
MISSION DE L’EMVW CASA
L’Établissement maintenance voitures et wagon Casa a pour missions :
• Maintenance du parc:
⇒ Élaborer et mettre en œuvre le plan de maintenance en tenant compte
de la politique de maintenance définie au niveau du Département Matériel et
Exploitation Voyageurs.
⇒ Définir les besoins en pièces de rechange et gérer le stock.
• Gestion des ressources Humaines :
⇒ Assurer la gestion prévisionnelle des ressources humaines
⇒ Rationaliser l’affectation des ressources
⇒ Administrer les Ressources Humaines
⇒ Participer à l’élaboration du plan de formation
• Comptabilité et Gestion :
⇒ Élaborer le budget d’exploitation et suivre son exécution
⇒ Établir la comptabilité de l’établissement
⇒ Établir et analyser le tableau de bord de l’établissement
⇒ Assurer les achats locaux
Politique de la maintenance Définition: La maintenance est l’ensemble des actions qui permettent d’assurer un
entretien préventif pour maintenir sa fiabilité.
La maintenance se présente en deux niveaux:
• 1er niveau : VA.
• 2ème niveau : VL, VG, VF, ATS.
• 3ème niveau : GVG, RL, RG, GRG
13
OBJECTIFS DE L’ENTRETIEN PREVENTIF L’entretien préventif du matériel est réalisé pour atteindre
en service les objectifs fondamentaux :
� de sécurité
� de fiabilité
� de qualité
� d’économie
Parc du matériel remorqué à voyageurs Le parc du matériel remorqué à voyageurs est composé à ce jour de 322 Véhicules : 222 voitures climatisées: 162 Voitures 2ème classe 33 Voitures 1ére classe 16 Voitures buvettes 2ème classe 06 Voitures couchettes 05 Voitures Lits Voitures ordinaires SNCF: 34 fourgons générateurs : 12 FG 3ème série 16 FG 4ème série 06 FG 5ème série
Préventive
Systématique
Maintenance
Corrective
Conditionnelle
14
15
16
2.1 Définition du sujet Travail demandé
L'EMVW souhaite se doter des moyens informatiques pour gérer ses
différentes activités. Dans le cadre du stage d’été, on m’a confié dans un premier
temps la réalisation des dessins industrielle d’un essieu puis d’un joint de vitre
sur le logiciel SolidWorks 2008 , puis dans un deuxième temps la mission de la
mise au point d’une application informatique qui permettra la gestion moderne
et efficace des situations de voitures et fourgons de l’office, est donc les
procédures d’enregistrements des nouvelles situations effectuée aux services de
l’EMVW, les mises à jours sur les situation suite aux éventuels changements et
la gestion des trafics ,ainsi qu’effectuer des recherches pour des situations par le
billet de leurs dates et finalement exporter tout situation vers un classeur Excel.
1. Besoin
Le responsable des situations des voitures et fourgons du bureau
technique a proposé de crée un outil informatique pour facilité les tâches qu’il
effectue régulièrement sur son ordinateur. Ces tâches consistent en la saisie des
données, les modifier, la génération d’un rapport sur un document Microsoft
Excel. Le travail avec les documents Microsoft Excel ne permet pas d’effectuer
plusieurs tâches facilement et rapidement, tel que :
Le stockage des données
La recherche rapide des informations
Génération rapide de rapports
En effet l’idée consiste à la création d’une application liée à une base de données.
Cette application va automatiser toutes les tâches effectuées par l’agent
responsables.
17
18
2.2 Approche technique
A partir de l’analyse précédente, on constate qu’on est face à un problème
l’implémentation d’un logiciel de gestion, ce qui nécessite avant tout
l’implémentation d’une base de données pour pouvoir stocker toutes les
informations relatives aux éléments à gérer, et pour pouvoir représenter ces
informations sous une forme simple à manipuler, à rechercher et à mettre à jour
facilement.
Pour développer cette application j’ai décidé de procéder suivant les
processus schématisés dans la figure ci-dessous :
19
Identification des besoins : ce processus est déterministe dans l’ensemble
du projet, il représente la phase initiale qui détermine le niveau de succès ou
d’échec de l’application, donc il exige une grande précision et il doit être traité
d’une façon très attentive.
Elaboration de l’application : ce processus consiste principalement dans le
développement d’un modèle logique des données, puis à la détermination des
outils de développement de l’application.
Création de l’interface : le but de ce processus est de fournir une interface
cohérente de l’application.
2.3 Conception de la base de données
2.3.1 Règles de la gestion
Chaque situation comme vue précédemment se compose de quartes tables,
la première pour la composition de chaque train de ligne en matière de FG et
voitures d’où l’identifiant qui doit être le code du train a composé, deuxièmes
d’une table nommée Disponibles formée de trois champs : climatisées, FG et PV,
troisièmement d’une table dite Reformes dont les champs sont :N° Véhicule,
lieu, date, prévision de sortie et motif ;la dernière table de la base de donnée est
bien la table Répartition qui aura comme attributs : Expédiés , a-expédier, et
Reçues ,
20
2.3.2 Dictionnaire de données
Le tableau suivant récapitule l’ensemble des données qui seront
manipulées dans cette application, et contient leurs définitions et désignations
Champs Désignation Type Observation
TRAIN Train Texte alphanumérique
JOURNNEE journées Date/Heure
FG fourgon Numérique
COMPOSITION composition Texte
FG fourgon Numérique
CLIMATISEES climatisées Texte
PV pv Texte
NUMVH numéro de voiture Numérique
DATE date Date/Heure
LIEU lieu Texte
MOTIF motif Texte
PDS Prévision de sortie Date/Heure
RECUES reçues Texte
AEXPEDIER A expédier Texte
EXPEDIEES expédiées Texte
2.3.3 Schéma entité relation
La relation entre les entités définies dans le dictionnaire ci-dessus, en plus
des règles ont permis de construire le MCD (Modèle Conceptuel des Données).
En effet, le MCD représente la structure logique globale de la base de données,
indépendamment du logiciel ou de la structure de stockage des données. Il
21
contient toujours des données qui ne sont pas encore mises en œuvre dans la
base de données physique et il constitue une représentation formelle des données
nécessaires au fonctionnement de l’application.de la gestion,
Ce modèle permettra de générer le modèle physique de données, et donc
de créer la base de données sur le SGBD convenable.
Le modèle physique généré respectant les contraintes de dépendance de données (Dépendance fonctionnelle) est le suivant:
22
23
3.1 Outils de développement 3.1.1 Système de gestion de base de données :
Pour créer la base de données j’ai utilisé le système de gestion de bases de
données Microsoft Access qui est un SGBD relationnel sous Windows. Il est
caractérisé par sa capacité de pouvoir combiner l’interface graphique avec les
fonctionnalités d’un SGBDR. Il permet toutefois d’afficher des informations sur
les dépendances entre les objets d'une base de données et de vérifier
automatiquement les erreurs courantes dans les formulaires et les états.
3.1.2 Langage de programmation :
Cette application a été développée l’aide du langage Visual Basic c’est un
langage très performant, doté d’une interface graphique simple à utiliser et à
programmer. Visual Basic représente aujourd’hui un outil de développement
extrêmement puissant, tout en étant d’une grande simplicité d’utilisation, il n’a
plus à régresser devant des langages bien structurés comme Visual C ou Visual
C++. Il permet même d’effectuer des opérations facilement et rapidement que
ces derniers. C’est en fait le seul vrai langage de programmation que les
amateurs de la programmation peuvent apprendre rapidement.
Visual Basic offre une excellente plate forme de développement rapide
des applications. Il permet également de créer très vite des solutions adaptées
aux besoins en matière de gestion.
24
3.2 Logique d’enchaînement : L’application démarre avec un premier écran de Menu. A partir de ce
dernier, on peut basculer vers les écrans des mises à jour sur les tables,
Composition, Reformées, Répartition et, ou faire des éditions (liste de la
situation sous forma de Microsoft Excel) a partir de menu on peu évidement
faire une recherche d’une situation donnée selon la date de sa création . La
fermeture d’un écran passe la main à l’écran Menu. La fermeture de l’écran
Menu met fin à l’application.
Le schéma suivant explique l’ordre entre les différents écrans de l’application :
25
3.3 Ecrans de l’application :
Le Menu :
Cette forme est le point de départ de l’application, elle permet grâce au
menu d’accéder aux autres fenêtres de l’application mais également l’impression
des états relatifs aux données de l’application.
Ecran sur la table Composition :
Cette fenêtre permet la consultation de la base pour s’informer sur les
données de la composition d’un train ou de la modifier en la sélectionnant
26
depuis la List en tète de l’écran, d’ajouter des nouvelles situations dans la base
et enfin de les supprimer si c’est nécessaire.
Sur la même écran je propose a l’utilisateur le choix de la date a partir
d’un calendrier qui s’affiche une fois il click sur le bouton de choix, la même
méthode est aussi appliquée pour les choix du train et du fourgons.
27
L’écran de la table Disponibles :
28
A partir de cette fenêtre, on peut consulter les voitures et fourgon
disponibles d’ajouter un enregistrement à la table Disponibles, de le modifier ou
de le supprimer de la table des Disponibles.
L’écran de la table Reformés:
A partir de cette fenêtre, on peut consulter les voitures reformés, d’ajouter
un enregistrement à la table Reformés, de le modifier ou de le supprimer de la
table des Reformés.
L’écran de la table Répartition:
A partir de cette fenêtre, on peut consulter les voitures et selon leurs
répartition, d’ajouter un enregistrement à la table Répartition, de le modifier ou
de le supprimer de la table Répartition si nécessaire.
29
L’écran de la table Recherche:
A partir de cette fenêtre, on peut consulter a la fois la situation de la
voiture et FG a partir de la date de création de cette situation, et dans un temps
future l’importation de cette situation vers un fichier Excel afin de pouvoir
l’imprimer.
L’écran a propos de l’application (?) :
30
3.4) Réalisation des Dessins industriels sur SolidWorks
Essieu
31
Joint de vitre
32
Au terme de ce stage, j’ai pu réaliser une application permettant la gestion
moderne des Situations de voiture et fourgons effectuée au sein du site de
l’EPTLC de l’ONCF situé a la gare de casa voyageurs, j’ai aussi pratiqué mes
connaissances informatique et mécaniques au niveau du dessin industriel sous
SolidWorks 2008.
Certes, cette application n’est pas complète à cent pour cent. Toutefois ce
stage de la fin de ma quatrième année en cycle ingénieur de l’EMSI que j’ai
entrepris au sein de EPTLC, qui deviendra dés aout 2009 EMVW comme
abréviation de l’Etablissement de Maintenance de Voitures et Wagons, ma
permis :
La découverte de l’environnement professionnel dans une direction de
haut niveau.
La participation active dans la réalisation et l’exécution des plusieurs
taches reliées a l’informatique que sa soit hardware ou software.
L’aide dans la motivation et l’encadrement de quelques stagiaires.
Le perfectionnement de mes connaissances en matière d'usage combiné
d'un gestionnaire de bases de données comme Microsoft Access, et le
Visual Basic 6.0 en tant qu'interface conviviale à manipuler.
L’approfondissement et mise en cause de mes compétences mécanique
plus particulièrement en matière de dessin industriel sur calque et sur
SolidWorks 2008.
L’apprentissage de quelques techniques de maintenance corrective et
préventive dans le domaine électronique avec Mr. Hrakate
33
Finalement, on doit s’interroger sur la fiabilité à moyen et à long terme, et
aux éventuelles mises à jours sur l’application par l’usage d’autres
technologies, SGBD et plates formes plus performantes qu’aux précédentes.
34
Voici dans ce qui suit une partie du programme utilisé pour une mise à
jour sur les tables Composition et Reformés, ainsi que le Menu.
Option Explicit Dim dbAdo As New Connection Dim cmAdo As New Command Dim rsAdo As New Recordset Private Sub Command1_Click() Form2.Show Unload Dialog End Sub Private Sub Command2_Click() Form1.Show Unload Dialog End Sub Private Sub Command3_Click() End End Sub Private Sub Command4_Click() Form3.Show Unload Dialog End Sub Private Sub Command5_Click() Form4.Show Unload Dialog End Sub Private Sub Command6_Click() frmAbout.Show Unload Dialog
35
End Sub Private Sub Command7_Click() Form5.Show Unload Dialog End Sub ************************************************** *********** Option Explicit Dim dbAdo As New Connection Dim cmAdo As New Command Dim rsPrm As New Parameter Dim rsAdo As New Recordset Dim chgt As Boolean Private Sub cboNom1_Click() ' Si l'ajout d'une personne, efface les zones de texte If cboNom1.ListIndex = 0 Then Dim ctr As Control For Each ctr In Me.Controls If TypeOf ctr Is TextBox Then ctr.Text = "" Next Exit Sub End If ' Si la table est vide, sort de la sub If rsAdo.EOF And rsAdo.BOF Then Exit Sub ' Recherche le nom selectionné ' Recharge le recordset rsAdo.Requery ' recherche rsAdo.Find ("FG = " & cboNom1.ItemData(cboNom1.ListIndex)) ' Controle que l'enregistrement existe toujours If rsAdo.EOF Xor rsAdo.BOF Then MsgBox "l'enregistrement selectionné n'existe plus dans la base" chargeListe Exit Sub End If Combo1 = rsAdo!FG Text1 = rsAdo!CLIMATISEES Text3 = rsAdo!PV chgt = False End Sub Private Sub cboNom1_GotFocus()
36
subChange "Changement de FG" End Sub Private Sub cboNom1_Validate(Cancel As Boolean) If chgt Then Stop End Sub Private Sub cmdEnregistrer_Click() If cboNom1.ListIndex = 0 Then rsAdo.AddNew rsAdo!FG = IIf(Combo1 = "", "?", Combo1) rsAdo!CLIMATISEES = IIf(Text1.Text = "", "?", Text1.Text) rsAdo!PV = IIf(Text3.Text = "", "?", Text3.Text) rsAdo.Update End Sub Private Sub cmdSupprimer_Click() ' Recherche si l'enregistrement est toujours valide ' Cas d'une base multi-utilisateur rsAdo.Requery rsAdo.Find ("FG= " & cboNom1.ItemData(cboNom1.ListIndex)) If rsAdo.EOF = rsAdo.BOF Then rsAdo.Delete Else MsgBox "Enregistrement déja supprimé" End If chargeListe End Sub private Sub Command1_Click() Dialog.Show Unload Form1 dbAdo.Close End Sub Private Sub Form_Load() Combo1.AddItem "994" Combo1.AddItem "981" Combo1.AddItem "983" Combo1.AddItem "986" Combo1.AddItem "956" ' Ouverture connexion With dbAdo
37
.Provider = "Microsoft.Jet.OLEDB.4.0" ' Fournisseur d'accès .Mode = adModeReadWrite ' Mode lecture écriture .CursorLocation = adUseClient ' Type de curseur ( .Open App.Path & "\testado.mdb" End With ' Création recordset With rsAdo .CursorType = adOpenKeyset .LockType = adLockOptimistic .ActiveConnection = dbAdo .Open "DISPONIBLES" End With chargeListe End Sub Public Sub chargeListe() ' Remplissage de la liste rsAdo.Requery ' recharge le recordset cboNom1.Clear ' Efface la combo cboNom1.AddItem "... Ajouter un Enregistrement", 0 Do Until rsAdo.EOF ' Parcour du recordset pour charger la combo cboNom1.AddItem rsAdo!FG & " , " & rsAdo!CLIMATISEES & " , " & rsAdo!PV cboNom1.ItemData(cboNom1.NewIndex) = rsAdo!FG ' Intègre la clé primaire rsAdo.MoveNext Loop cboNom1.ListIndex = 0 ' Positionne la combo sur le 1er item chgt = False End Sub Private Sub Form_Unload(Cancel As Integer) subChange "Fermeture" End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) chgt = True End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) chgt = True End Sub
38
Private Sub Text3_KeyPress(KeyAscii As Integer) chgt = True End Sub Public Sub subChange(Optional origine As String) If chgt Then If MsgBox("Données changées." & vbCrLf & "Enregistrer ?", vbYesNo, origine) = vbNo Then Exit Sub cmdEnregistrer_Click End If End Sub *************************************************** ***** Option Explicit Dim dbAdo As New Connection Dim cmAdo As New Command Dim rsPrm As New Parameter Dim rsAdo As New Recordset Dim chgt As Boolean Private Sub cboNom2_Click() ' Si l'ajout d'une personne, efface les zones de texte If cboNom2.ListIndex = 0 Then Dim ctr As Control For Each ctr In Me.Controls If TypeOf ctr Is TextBox Then ctr.Text = "" Next Exit Sub End If ' Si la table est vide, sort de la sub If rsAdo.EOF And rsAdo.BOF Then Exit Sub ' Recherche le nom selectionné ' Recharge le recordset rsAdo.Requery ' recherche rsAdo.Find ("NUMVH = " & cboNom2.ItemData(cboNom2.ListIndex)) ' Controle que l'enregistrement existe toujours If rsAdo.EOF Xor rsAdo.BOF Then MsgBox "l'enregistrement selectionné n'existe plus dans la base" chargeListe Exit Sub End If Text1 = rsAdo!NUMVH
39
DateP = rsAdo!Date Text3 = rsAdo!LIEU Text4 = rsAdo!MOTIF DateP1 = rsAdo!PDS chgt = False End Sub Private Sub cboNom2_GotFocus() subChange "Changement de nom" End Sub Private Sub cboNom2_Validate(Cancel As Boolean) If chgt Then Stop End Sub Private Sub cmdEnregistrer_Click() If cboNom2.ListIndex = 0 Then rsAdo.MoveFirst rsAdo.Find ("NUMVH = " & cboNom2.ItemData(cboNom2.ListIndex)) If rsAdo.EOF <> rsAdo.BOF Then Exit Sub rsAdo("NUMVH") = IIf(Text1.Text = "", "?", Text1.Text) rsAdo("DATE") = IIf(DateP = "", "?", DateP) rsAdo("LIEU") = IIf(Text3.Text = "", "?", Text3.Text) rsAdo("MOTIF") = IIf(Text4.Text = "", "?", Text4.Text) rsAdo("PDS") = IIf(DateP1 = "", "?", DateP1) rsAdo.Update End If chargeListe End Sub Private Sub cmdSupprimer_Click() ' Recherche si l'enregistrement est toujours valide ' Cas d'une base multi-utilisateur rsAdo.Requery rsAdo.Find ("NUMVH= " & cboNom2.ItemData(cboNom2.ListIndex)) If rsAdo.EOF = rsAdo.BOF Then rsAdo.Delete Else MsgBox "Enregistrement déja supprimé" End If chargeListe End Sub
40
Private Sub Command1_Click() Dialog.Show Unload Form3 dbAdo.Close End Sub Private Sub Form_Load() ' Création recordset With rsAdo .CursorType = adOpenKeyset .LockType = adLockOptimistic .ActiveConnection = dbAdo .Open "REFORMES" End With chargeListe End Sub Public Sub chargeListe() ' Remplissage de la liste rsAdo.Requery ' recharge le recordset cboNom2.Clear ' Efface la combo cboNom2.AddItem "... Ajouter un Enregistrement", 0 Do Until rsAdo.EOF ' Parcour du recordset pour charger la combo cboNom2.AddItem rsAdo!NUMVH & " , " & rsAdo!Date & " , " & rsAdo!LIEU & " , " & rsAdo!MOTIF & " , " & rsAdo!PDS cboNom2.ItemData(cboNom2.NewIndex) = rsAdo!NUMVH ' Intègre la clé primaire rsAdo.MoveNext Loop cboNom2.ListIndex = 0 ' Positionne la combo sur le 1er item chgt = False End Sub Private Sub Form_Unload(Cancel As Integer) subChange "Fermeture" End Sub Private Sub DateP_KeyPress(KeyAscii As Integer) chgt = True End Sub
41
Private Sub Text1_KeyPress(KeyAscii As Integer) chgt = True End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) chgt = True End Sub Private Sub DateP1_KeyPress(KeyAscii As Integer) chgt = True End Sub Private Sub Text3_Change() End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) chgt = True End Sub Public Sub subChange(Optional origine As String) If chgt Then If MsgBox("Données changées." & vbCrLf & "Enregistrer ?", vbYesNo, origine) = vbNo Then Exit Sub cmdEnregistrer_Click End If End Sub Icône utilisée pour le logiciel : j’ai réalisé cette icône a l’aide du logiciel XARA3DX6