SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
1
Ville de LiĂšge
Ecole de Commerce et d'Informatique
Enseignement de Promotion sociale
Rue Hazinelle 2 - 4000 LIEGE
Matricule : 6.188.038
04/221 37 86
Gestion de la production
de la société
« Gascoigne Melotte »
Travail de fin d'études présenté par
Vitali UDALOV
en vue de l'obtention du diplĂŽme de
Gradué en Informatique
Année académique 2004-2005
2
REMERCIEMENTS
Je tiens à remercier tout d’abord monsieur Jan DERLUYN pour m’avoir permis de
réaliser ce stage au sein de sa société , monsieur Jean-Claude LAHAYE, mon parrain
entreprise, pour le temps et les conseils.
Je tiens Ă©galement Ă  remercier monsieur Alain BAWIN, mon parrain Ă©cole, pour sa
disponibilité et son aide de la rédaction de ce travail.
Je remercie aussi tous mes professeurs pour ces trois années de mes études, ainsi pour
m’avoir permis de rĂ©aliser avec succĂšs les Ă©tudes dont je rĂȘvais.
3
TABLE DE MATIERE
INTRODUCTION























...


...p.5
Etude préalable




























...p.6
1. Domaine et objectif de l’étude


















..


p.6
1.1. Champ de l’étude






















....

..p.6
1.1.1 Contexte du projet


















..



..p.6
1.1.2 Domaine du projet 


















.



..p.9
1.1.3 Description du projet
















..




.p.10
1.2 Contraintes organiques























.p.10
1.3 Modalité de déroulement



















.


.p.12
1.3.1 Ressources humaines

















..



.p.12
1.3.2 Contraintes de planning




















...p.12
1.3.3 Contraintes de budget





















..p.12
1.3.4 Contrîle et suivi





















..

.p.12
2. Rapport sur l’existant
























...p.13
2.1 Analyse de flux d’information




















...p.13
2.2 Modùle conceptuel des traitements



















p.15
2.3 ModÚles de données actuelles





















p.16
2.4 Rapport critique de la situation actuelle

















p.17
Etude détaillée




























....p.18
3. Solution proposée


























...p.18
3.1 Orientations du futur systùme d’information















.p.18
3.2 ModÚle conceptuel des données











..







..p.18
3.2.1 Sous modùle de fabrication



















.p.18
3.2.2 Sous modùle des travaux divers

















..p.19
3.2.3 Sous modùle des travaux divers autres












.

..p.20
3.3 Modùle organisationnel des traitements















..
..p.21
3.3.1 Postes de travail























..p.21
3.3.2 Examen des tñches






















..p.22
3.4 ModÚle organisationnel des données


















.p.22
3.4.1 Choix des données à mémoriser
















.
p.22
3.4.2 Répartition des données



















.
.p.22
3.4.3 SĂ©curité                           ...p.22
3.5 ModÚle logique des données





















..p.23
3.5.1 Base de données























..p.24
3.5.2 Description des tables





















.p.24
3.6 ModÚle orienté objet




















.



.p.29
3.6.1 Diagrammes de cas d’utilisation

















.p.29
3.6.2 Diagrammes de séquence



















...p.31
4
4. Fonctionnalités du logiciel























.p.32
4.1 FenĂȘtre principale « Suivi de production » 














..
p.32
4.2 Ecran « Gestion des opĂ©rateurs » 



















.p.34
4.3 Ecran « Gestion des postes de charge » 










...





p.35
4.4 Ecran « ContrĂŽle de Production » 



















p.36
4.5 Ecran « ContrĂŽle de Montage » 



















...p.37
4.6 Ecran « ContrĂŽle des travaux divers » 

















.p.38
4.7 Barre de navigation
























...p.39
Liste des applications utilisées














.

...




..p.39
CONCLUSIONS





















..




..
p.40
BIBLIOGRAPHIE

..























.
.p.41
ANNEXE 





..






















.

p.42
5
INTRODUCTION
Ce travail de mémoire de gradué en informatique a pour but de fournir une application
permettant d’amĂ©liorer de la gestion de la production.
La gestion de la production repose essentiellement sur l'utilisation de l'information Ă 
toutes les Ă©tapes de la fabrication : prĂ©vision, dĂ©cision, l’exĂ©cution et du contrĂŽle. Cette
information est Ă©laborĂ©e, traitĂ©e, diffusĂ©e et stockĂ©e au sein du systĂšme d’information et de
son infrastructure, le systùme informatique. Les systùmes d'information occupent aujourd’hui
une place centrale dans la gestion de la production.
Ce projet a comme objectif premier de développer les outils du contrÎle qui donnent la
flexibilitĂ© quotidienne nĂ©cessaire pour rĂ©agir aux demandes requis d’atelier de Melotte SA. Il
s’agit de rĂ©aliser un programme qui permet de connaĂźtre en dĂ©tail le pointage d’une journĂ©e
complÚte de chaque opérateur pour toutes les opérations.
Cette application doit ĂȘtre dĂ©veloppĂ©e Ă  l’aide du langage de programmation C#.
De plus cette application doit de se connecter à une base de données MS Access et à en
extraire les donnĂ©es et de les afficher dans un format que l’application peut traiter.
Bonne lecture et merci pour l’attention que vous avez accordĂ© Ă  mon mĂ©moire.
6
ETUDE PREALABLE
1. Domaine et objectif de l’étude
1.1. Champ de l’étude
1.1.1 Contexte du projet
Groupe Gascoigne Melotte
Gascoigne Melotte est un groupe international moderne, avec une forte capacité
d’innovation, un rĂ©seau de distribution mondial et une expĂ©rience de plus d’un siĂšcle.
Il propose des solutions complĂštes Ă  des problĂšmes compliquĂ©s dans l’agriculture et dans
l’industrie. Les problĂšmes sont de nature technique, Ă©conomique et opĂ©rationnelle.
Gascoigne Melotte est le leader en ce qui concerne la conception et le développement des
machines Ă  traire, et dispose d'installations dans plus de 60 pays du monde entier.
A l'origine du développement de Gascoigne Melotte, on trouve deux entreprises familiales :
La "Maison Melotte" d'origine, fondée en 1852, s'est engagée dans l'industrie laitiÚre en
1888, aprÚs l'invention de l'écrémeuse Melotte par Jules Melotte, le fils du fondateur de la
compagnie. L'accueil enthousiaste que ce produit reçut dans le monde entier assura le futur de
Melotte dans l'industrie laitiĂšre.
La société Gascoigne fut fondée à Reading, en Angleterre, en 1927, par George H.
Gascoigne, et obtint rapidement une bonne réputation dans le domaine de l'équipement de traite
pratique et de qualité. .
Quand Gascoigne et Melotte fusionnÚrent, il résulta de l'étendue de l'expérience et des
capacités d'innovation des deux compagnies une ligne de produits sans rivale. .
Aujourd'hui, au dĂ©but du 21Ăšme siĂšcle, Gascoigne Melotte est toujours en tĂȘte, en dĂ©veloppant des
méthodes pratiques utilisant la technologie des microprocesseurs pour la ferme, y compris le
systÚme de traite robotisé Zenith entiÚrement automatisé. .
Avec des usines de fabrication en Belgique et en Allemagne, et des sociétés de distribution en
Hollande, en France, en Belgique, en Allemagne, en Irlande et au Royaume-Uni, Gascoigne
Melotte est le fournisseur idéal d'équipement de traite dans le monde entier. .
Et ceci concerne non seulement les zones traditionnelles d'Ă©levage laitier en Europe, mais aussi
l'Afrique, le Moyen-Orient et l'ExtrĂȘme-Orient. Gascoigne Melotte participe aux projets de
production alimentaire dans des zones qui, jusqu'à une époque récente, étaient des déserts arides.
L'Ă©quipement produit par Gascoigne Melotte permet de traire des vaches, des brebis, des chĂšvres et
des chameaux. .
Les systĂšmes de traite Gascoigne Melotte conviennent Ă  toutes les fermes, que le troupeau soit
constitué de deux, ou de deux mille animaux. Les sociétés associées peuvent fournir tout autre
Ă©quipement de ferme, des pompes Ă  purin aux citernes, des convoyeurs d'alimentation aux racloirs.
7
Diagramme des activités
Groupe GM
Agriculture Industrie
Production
laitiĂšre
Electronique
Manutention
lourde
Sous
traitance
Conseil
Agro
alimentaire
Projet
clé en main
Froid
industriel
Production laitiĂšre :
- Ă©quipements traite
- des tanks Ă  lait
- des piÚces détachées
- silos ;
Electronique :
- gestion du troupeau
- identification automatique
- alimentation
- enregistrement de la production laitiĂšre
Conseil :
- Ă©tude de projet
- conduite de projet
- planning, service ;
Projet clé en main :
- projets agricoles
- infrastructure et développement rural ;
Manutention lourde :
- bandes transporteuses sur coussins d’ai
- bandes transporteuses traditionnelles
Agro-alimentaire :
- tunnels de cuisson
- industries laitiĂšres
Froid industriel :
- systÚmes de refroidissement à eau glacé
8
Les différents services opérationnels
Direction de la
production
Direction du
commerce
Direction
administrative et
financiĂšre
Directeur
général
Achats et
approvisionnem
ent
Gestion de
production
Fabrication
Comptabilité
Secrétariat
général
Personnel
Service clientĂšle
commande
Ventes et
commerciaux
Magasin et
expédition
Ordonnancement
Lancement
Montage et
transport
Outillage
Electricité et
Ă©lectronique
STR
Bureau d' Ă©tudes
des méthodes
Président-Directeur général
Direction de
l'ingénierie
Direction régionale
du commerce
extérieur
Equipements en
aciers inoxydables
Fig. 1.1.1- Organigramme de Gascoigne Melotte
9
Le siÚge du Groupe GM est situé à Remicourt à Belgique. GM est divisée en cinq
départements supervisés par le directeur général :
- Ingénierie ;
- Commerce extérieur ;
- Administrative et Finances ;
- Production ;
- Commerce.
Les différents services opérationnels sont en organigramme (Fig.1.1.1).
1.1.2 Domaine du projet
Le domaine du projet concerne le Service de production. Il s’occupe de :
Planification
- gestion de la production horaire des opĂ©rateurs, gĂ©nĂ©ration d’ordres de fabrication,
lancement des ordres de fabrication (vérification de la disponibilité des composants),
analyse des charges par poste et par des ordres de fabrication.
Ordonnancement
- ordonnancement par rÚgles de priorité des ordres de fabrication.
Suivi de production
- sortie des composants, enregistrement des quantités fabriquées (piÚces bonnes et rebutées)
et des temps passés, clÎture des ordres.
Valorisations
- calcul du coût réel des ordres de fabrication terminés.
Le domaine présente en diagramme (fig.1.1.2).
Mat.prem. Produits
Res.humaines
Equipements
Production
Gestion de fabrication Information
Planification, ordonnancement, suivi de production
Fig. 1.1.2-Diagramme du domaine du projet
10
La gestion de production – c’est la recherche d’une organisation efficace de la production
par la gestion des ressources :
Ressources humaines;
- des opérateurs
Informations
- données statistiques
Équipements
- postes de travail
MatiĂšres
- MatiĂšres premiĂšres, Composants, Stocks
1.1.3 Description du projet
Il faut Ă©crire un programme qui compose de plusieurs outils :
- Outil de contrÎle de la production horaire de chaque opérateur pour toutes les
opĂ©rations rĂ©alisĂ©es dans l’atelier afin de comparer leur production Ă  la production
théorique. Ceci permettra de prévenir les dérives et de faire les corrections nécessaires
aussi de mettre en Ă©vidence les problĂšmes d’outillage et donc d’y remĂ©dier;
- Outil permettent de connaĂźtre en dĂ©tail le pointage d’une journĂ©e complĂšte d’un
opĂ©rateur afin de contrĂŽler l’utilisation des diffĂ©rents codes Ă  barres Ă  leur disposition.
(Temps pour le rangement, pour aller chercher le matériel, pour la réalisation des
travaux divers etc.) ;
- Outil de lancement des commandes atelier par ajout d’un point de
réapprovisionnement et ce uniquement pour les piÚces du premier niveau
(Transformation de la matiĂšre premiĂšre en piĂšce) afin d’éviter les ruptures de stock
pour ces piÚces mais aussi de commander au bon moment les matiÚres nécessaires. (Si
on a ces piĂšces en stock, les assemblages peuvent ĂȘtre effectuĂ© rapidement et il n’est
donc pas nécessaire de stocker des sous-ensembles.) ;
- Outil de gestion « Charge machine ». Ce permet de connaßtre les commandes à réaliser
pour chaque poste de travail (ou machine). Ceci indispensable pour une bonne gestion
des commandes atelier. Des informations supplémentaires sont nécessaires : Ajouter le
mois pour lequel doit ĂȘtre fabriquer l’article afin d’éviter de produire une article qui
n’est pas nĂ©cessaire tout de suite.
1.2 Contraintes organiques
Actuellement l’environnement de Groupe GM relie deux rĂ©seaux Novell et Windows
NT. Ils sont utilisĂ©s dans six sites principaux. L’entreprise dispose d’un parc de 176
ordinateurs personnels et 5 serveurs (Fig.1.2.1).
11
AT&T
INTERNET
Denmark Sweden
Germany
Swiss
Ireland
Belgium
Belgium
Netherlands
Netherlands
France
United Kingdom
FIREWALL
Router
Router
Router
Router
Router
Router
Fig.1.2.1 Environnement de Groupe GM
Dans le cas de ce projet, il faut de tenir compte un site – l’atelier de Remicourt
(Fig.1.2.2). L’atelier utilise :
- 6 terminaux de traitement de code barres,
- 17 ordinateurs personnels sous Windows 2000 ; Applications de bureautique (Word,
Excel, Access) ;
- 1 serveur AS/400 sous OS/400 ; Base de données DB/2 ;
- 1 serveur sous Windows 2000 Server; Base de données Access.
Les PC et les terminaux fonctionnent en réseau Ethernet TCP/IP.
Le programme doit ĂȘtre installer au PC du responsable d’atelier, sur plateforme
Windows 2000, Service Pack 4, Framework 1.1.4. Il doit utiliser comme base de données MS
Access 2000.
12
1.3 Modalité de déroulement
1.3.1 Ressources humaines
Le programme a été commandé par la direction de la société « Gascoigne Melotte ».
Comité directeur : Mr. J.DERLUYN, présidant de GM ; Mr. J.BEAUFORT,
informaticien de GM et Mr. V.UDALOV, Ă©tudiant en informatique et
responsable de l'étude et du développement du projet.
ComitĂ© utilisateurs : Mr. J-C.LAHAYE, responsable d’atelier, Mr. G.FERON, ingĂ©nieur.
Groupe du projet : Mr. V.UDALOV, pour l'analyse et la programmation.
1.3.2 Contraintes de planning
- Remise de l'étude préalable : 26 février 2005
- Remise de l'étude détaillée : 15 avril 2005
- Remise de l’étude technique : 30 avril 2005
- Approbation finale du projet : 01 juin 2005
- Version bĂȘta et essais par les utilisateurs : 08 juin 2005
- Remise du mémoire : 15 juin 2005
- Livraison du programme : 22 juin 2005.
1.3.3 Contraintes de budget
Il n'y a aucune contrainte de budget car cette Ă©tude est le rĂ©sultat d’un mĂ©moire et donc
ne peut ĂȘtre subsidiĂ© par des personnes ou des entreprises.
1.3.4 ContrĂŽle et suivi
Le projet est réalisé sous la guidance de deux parrains : interne - Mr. A.BAWIN et
externe -Mr. J-C.LAHAYE.
13
2. Rapport sur l’existant
2.1 Analyse de flux d’information
Le domaine entre en relation avec les autres. Les relations entre les domaines présenter en
diagramme (Fig.2.1.1). Dans le diagramme, on a ajouté quelques flux, qui ne concernent pas
directement le domaine du projet, mais permettent de comprendre la structure du systĂšme de
production et de gestion.
Direction Sa rÎle est détermination des charges sur les ressources globales par
d’information statistique.
Plan de Production Programme de production à moyen terme (6 – 12 mois) qui fixe les
quantitĂ©s qui devraient ĂȘtre produites. Le plan inclut des moyens de
production, des ressources et des périodes de fabrication.
Poste de travail Les moyens de production de l'entreprise. Un poste de travail peut
représenter :
- Machine particuliĂšre
- Ligne de fabrication
- Groupe de machines
On distingue deux types de postes de charge :
- Postes de charge qui se compose d'une ou plusieurs machines pour
lesquels le calcul du temps presté peux effectuer
- Postes de charge pour lesquels le calcul du temps presté ne peux pas
effectuer et doit ĂȘtre calculĂ© manuellement.
Ordonnancement Opération qui consiste à définir la priorité des ordres de fabrication ou
des commandes sur les différents postes de travail d'un atelier.
Ordre Document donnant instruction Ă  la fabrication de produire.
Fabrication Processus de fabrication des articles, c'est-Ă -dire la succession des
opérations ou phases à réaliser pour fabriquer un article. Une phase se
déroule sur un poste de charge. Ils incluent des cycles de fabrication.
Le cycle, c’est l'intervalle de temps nĂ©cessaire entre la date de
lancement et la date d'entrée en stock de produits finis ou la date de
livraison. C'est la somme des temps de préparation et réglage, des
temps opératoires, des temps d'attente etc.
Article Terme générique qui permet de définir tous les éléments achetés (matiÚre,
fourniture,
), transformés (semi-ouvré, sous-ensemble, produit fini),
vendus (produit fini, négoce,
).
VĂ©rification Il doit se faire en cohĂ©rence avec l'ordonnancement et aprĂšs s'ĂȘtre assurĂ©
que les matiĂšres, composants et outillages sont disponibles.
14
Direction
Atelier
Ordre
File Opérateur
VĂ©rification
des stocks
Rapport
statistique
Plan de
production
Stock
Emission
Fabrication
Sortie
Article
VĂ©rification
des composants
Entrée
Ordonnancement
Poste de
travail
Charger
Fig.2.1.1 Diagramme des flux
15
2.2 ModĂšle conceptuel des traitements
Au dĂ©but d’une pĂ©riode de travail (Exemple : une semaine), un responsable d’atelier
reçoit des ordres de fabrication (Mode opératoire de fabrication). Les dates limites des
périodes sont entrées dans un plan de production (RÎle de direction).
Le service de Commerce vérifie les statuts de composants (Exemple : DISP -disponible,
REFA - réservé à la fabrication, ENC - en cours de fabrication). La vérification permet
d’éviter les ruptures de stock par l’ordonnancement des opĂ©rations de fabrication qui doivent
permettre de satisfaire les ventes. Une fois que les ordres sont ordonnancés, il est possible de
passer Ă  la phase de lancement de certains ordres en fabrication (Ă  condition que les matiĂšres
et composants nécessaires soient disponibles).
Apres la vĂ©rification (Ă  condition – positive, si nĂ©gatif – passer OF Ă  la file d'attente) le
responsable donne un ordre de fabrication au opĂ©rateur. L’opĂ©rateur doit pointer le dĂ©but de
travail.
Le responsable d’atelier doit contrĂŽler de la production de chaque opĂ©rateur pour toutes
les opĂ©rations (Fabrication). A la fin d’une pĂ©riode de travail, le responsable d’atelier doit
envoyer un rapport à la direction (OF lancé/clÎturé, quantité, productivité).
OF – Ordre de fabrication
A et B
Composants disponibles Composants indisponible
Verification
PasserFile
LancerOF
EmisisonOF
Direction
D et C
OK Rebut
Fabrication
PointeDebut
D C
ClĂŽrureOF Retouche
A B
Atelier
Service
Commerce
Service
Commerce
Ordonnancer
Fig.2.2 MCT
16
2.3 ModÚles de données actuelles
Une base de données existante compose de deux tables. Ces tables sont récupérées de
l’AS/400 et injectĂ©es dans MS Access via ODBC.
Cette base est placĂ©e sur le PC du responsable d’atelier. Le traitement sur le PC se limite
essentiellement Ă  la validation les informations.
17
2.4 Rapport critique de la situation actuelle
La gestion de la production se déroule sur quatre horizons :
- Horizon à long terme, c'est un horizon de 12 à 18 mois. A ce niveau, on détermine les
grands Ă©quilibres de charge.
- Horizon Ă  moyen terme, de quelques mois, sur lequel on effectue le calcul des besoins
pour passer les commandes aux fournisseurs ; on vérifie également que la charge est
compatible avec la capacité.
- Horizon de court terme, de quelques semaines, sur lequel on effectue un planning
précis des fabrications prévues ; on peut encore ajuster la capacité main-d'oeuvre.
- Horizon de trÚs court terme, une semaine en général, sur lequel on lance les
fabrications
Deux derniers horizons, ce sont les décisions opérationnelles pour des ordres de fabrication,
l’activitĂ© opĂ©rateurs et l’état de stock.
Actuellement, la direction dĂ©termine un programme de production Ă  moyen terme (6 –
12 mois). Ce programme inclut des moyens de production, des ressources et des périodes de
fabrication. Mais, il n’y a pas les outils qui donnent la flexibilitĂ© quotidienne nĂ©cessaire pour
rĂ©agir aux demandes : pannes, absence, urgence, problĂšmes d’outillage, rĂ©alisation des
travaux divers etc.
La situation actuelle ne permet pas de connaßtre l'état de l'ordre de fabrication lancé à
tout moment.
De maniĂšre Ă©vidente, la crĂ©ation d’un programme de contrĂŽle de production permettrait
le responsable d’atelier de faire les corrections nĂ©cessaires, reprenant les derniĂšres donnĂ©es
connues.
18
ETUDE DETAILLEE
3. Solution proposée
3.1 Orientations du futur systùme d’information
Le projet va tenter de résoudre des problÚmes dans la gestion de production quotidienne :
- gestion des opérateurs
- gestion des postes de charge
- contrĂŽle l’utilisation des diffĂ©rents codes Ă  barres
- contrÎle de la production horaire et la correction nécessaire
- gestion des ordres de fabrication de court terme (quelques semaines) et de trĂšs court
terme (une semaine en général)
3.2 ModÚle conceptuel des données
Le modÚle de production étant relativement complexe, je présente les entités et les
associations utilisées dans des sous modÚles
Il y a trois différents situations :
- fabriquer des articles (Production, Montage)
- réaliser des travaux divers
- faire des travaux divers autres
3.2.1 Sous modĂšle de fabrication
Commande - Document donnant instruction à la fabrication de produire dans un délai fixé,
une quantité donnée d'un article (Mode opératoire de fabrication).
Ordre - Opération de la production ou de la réglage de la machine.
Opérateur - Personne qui doit faire des travaux. Pour suivre l'activité de la main-d'oeuvre,
on doit indiquer le code de l'opérateur dans les déclarations de production.
Retouche - Lorsque l'on déclare des piÚces rebutées lors des déclarations de production, on
doit indiquer un code de cause de rebut. Cela permet d'Ă©tablir des statistiques
de causes de rebut.
Article - Produits finis,
ClassPrior - Le code classe ABC permet de classer les commandes par leur priorité (Définir
dans le plan production)
Client - Promoteur de la commande
Comporter - Commande porte sur une ou plusieurs opérations.
Fabriquer - C'est l'intervalle de temps d’occupation pour chaque opĂ©ration (temps de
préparation et réglage - Setup ou temps opératoires - Production).
19
Un code Setup/Production doit ĂȘtre indiquĂ© pour toutes les dĂ©clarations de
production.
Ordre
NoOrd
Descr
ProHor
TpMont
QntAprod
Commande
NoCmd
DateEms
Opérateur
NoMatr
Nom
Statut
Effectuer
DateTR
Comporter
NbrOper
Fabriquer
DĂ©but
Fin
Temps
SetProd
ClĂŽt
Qnt
1,N
1,N
1,N 1,1
1,1
1,N
Article
NoArt
Libellé
Lg
La
Ht
PBrut
PNet
Composer
Qunté
0,N
1,N
Client
IdClient
Libellé
Appartenir1,N
1,1
Retouche
IdRet
Libellé
Faire
DĂ©but
Fin
Temps
0,N
0,1
ClassPrior
IdPrior
Libellé
Lier
1,N1,1
Fig.3.2.1 MCD - fabrication
3.2.2 Sous modĂšle des travaux divers
TravDiv - Travaux divers, on peut dire les ordres de travail non ordonnancés.
Réaliser - Temps de la réalisation de travail
Responsable - Le gestionnaire est la personne responsable de la gestion des travaux divers.
A chaque opération de travail divers est associé un code Responsable qui
doit figurer dans cette table.
20
TravDiv
NoTD
Descr
Opérateur
NoMatr
Nom
Statut
RĂ©aliser
Debut
Fin
Temps
Responsable
IdRes
Nom
Article
NoArt
Libellé
Lg
La
Ht
PBrut
PNet
Produire
Qunté
Demander
0,N
0,1
1,N
1,1
1,N
1,1
Fig.3.2.2 MCD - travaux divers
3.2.3 Sous modĂšle des travaux divers autres
TDA - Travaux divers autres (balayer, réparation, essai etc.). Il y a deux parties : Entretiens
et Pannes.
Inclure - Pour calculer de temps de travail.
Commande
NoCmd
DateEms
Opérateur
NoMatr
Nom
Statut
Effectuer
DateTR
1,N 1,1
TDA
IdRet
Libellé
Inclure
DĂ©but
Fin
Temps
0,1
0,N
Fig.3.2.3 MCD – travaux divers autres
21
3.3 ModĂšle Organisationnel des Traitements
PĂ©riode Direction Service Commerce Atelier Type
Manuel
Manuel
A et B
Dispon Indispon
Verification
Emission
OF
Passer
Fille
Lancer
OF
D et C
OK Rebut
Fabrication
Pointer
Debut
ClĂŽture
OF
Retouche
Ordonnancer
Fig.3.2.3 MOT
3.3.1 Postes de travail
Il existe un seul poste de travail situĂ© dans le bureau d’un responsable d’atelier, ce poste
permettra de réaliser toutes les tùches.
22
3.3.2 Examen des tĂąches
La tĂąche est connaĂźtre en dĂ©tail le pointage d’une journĂ©e complĂšte pour chaque
opérateur.
On peut diviser cette tĂąche globale par :
1. ContrĂŽle de Production
2. ContrĂŽle de Montage
3. ContrĂŽle des travaux divers
3.4 ModÚle Organisationnel des Données
3.4.1 Choix des données à mémoriser
Le MCD prĂ©sente toutes les entitĂ©s nĂ©cessaires et aucune d’elles ne semble susceptible
de devoir ĂȘtre Ă©cartĂ©e.
3.4.2 Répartition des données
Car que le programme sera installé sur une seule machine, il n'y aura pas de répartition
des données sur d'autres machines.
3.4.3 Sécurité
Car le programme sera installĂ© sur le PC du responsable d’atelier, il est la seule personne
qui a l'accĂšs Ă  la gestion de production. Afin de manipuler des donnĂ©es l’utilisateur doit
autoriser.
23
3.5 ModÚle logique des données
ORDRE_COMMANDE
ORDRE_FABRIQUE
FABRIQUE_MATRICUL
COMMANDE_EFFECTUE
EFFECTUE_MATRICUL
REALISER_MATRICUL
TRAVDIV_REALISER
COMMANDE_INCLURE
INCLURE_TDA
ORDRE_POSTETRA
COMPOSER_ARTICLE
COMMANDE_COMPOSER
ARTICLE_MODELE
UTILISER_OUTILLAG
ORDRE_UTILISER
RESPONSA_TRAVDIV
RETOUCHE_FAIRE
FAIRE_COMMANDE
Commande
NoCmd
DateEms
INT
DATE
<pk>
Ordre
NoOrd
NoCmd
NoMach
Mutat
NuSer
Libellé
PodHor
TpMont
QntAprod
INT
INT
TEXT
TEXT
INT
TEXT
DOUBLE
DOUBLE
DOUBLE
<pk>
<fk1>
<fk2>
Matricule
NoMatric
Nom
Statut
INT
TEXT
TEXT
<pk>
Fabriquer
NoOrd
NoMatric
Debut
Fin
Temps
Qunté
SP
Clot
INT
INT
DATETIME
DATETIME
DOUBLE
INT
TEXT
TEXT
<fk1>
<fk2>
Effectuer
NoCmd
NoMatric
DateTrv
INT
INT
DATE
<fk1>
<fk2>
Realiser
NoMatric
NoTD
Debut
Fin
Temps
INT
INT
DATETIME
DATETIME
DOUBLE
TravDiv
NoTD
IdRes
Libellé
INT
TEXT
TEXT
<pk>
<fk>
Inclure
NoCmd
NoTDA
Debut
Fin
T
INT
INT
DATETIME
DATETIME
DOUBLE
TDA
NoTDA
Libellé
INT
TEXT
<pk>
PosteTrav
NoMach
Libellé
Section
TEXT
TEXT
TEXT
<pk>
Composer
NoArt
NoCmd
Quanté
TEXT
INT
DOUBLE
<fk1>
<fk2>
Article
NoArt
NoMod
Libellé
LG
LA
HT
PBrut
PNet
TEXT
INT
TEXT
DOUBLE
DOUBLE
DOUBLE
DOUBLE
DOUBLE
<pk>
<fk>
Modele
NoMod
Libellé
INT
TEXT
<pk>
Outillage
NoOutls
Libellé
TEXT
TEXT
<pk>
Utiliser
NoOutls
NoOrd
TEXT
INT
<fk1>
<fk2>
Retouche
NoRet
Libellé
INT
TEXT
<pk>
Faire
NoRet
NoCmd
Debut
Fin
Temps
INT
INT
DATETIME
DATETIME
DOUBLE
<fk1>
<fk2>
Responsable
IdRes
Nom
TEXT
TEXT
<pk>
24
3.5.1 Base de données
Pour crĂ©er la base de donnĂ©es j’ai utilisĂ© le script VBA (Voir Annexe).
Fig.7.1 Base de données
3.9.2. Description des tables
La base des données a créée en Microsoft Access 2000.
Table : Matricule
Elle regroupe les donnĂ©es des opĂ©rateurs qui travaillent dans l’atelier
Champ Donnée Clé Type Taille
NOMATR Numéro de badge Primary Numérique
NOM Nom et prénom Texte 30
STATUT Type de contrat Texte 16
25
Table : Commande
Elle regroupe les informations des commandes de fabrication. La référence client est reprise
ici comme clé étrangÚre.
Champ Donnée Clé Type Taille
NOCMD N° de commande Primary Numérique
IDCLIENT Identif. du client Foreign Numérique
IDPRIOR Priorité Foreign Texte 1
DATEEMISS Date document Date
Table : Jobordre
Qui regroupe les caractĂ©ristiques de l’opĂ©ration
Champ Donnée Clé Type Taille
NORDRE N° opération Primary Numérique
NOCMD N° commande Foreign Numérique
NOMACH N° machine Foreign Texte 6
MUTAT Mutation machines Texte 6
NUSER Nbr opérations Numérique
DESCROPER Description Texte 30
PROHOR Production horaire Numérique
TPMONT Temps montage Numérique
QNTEAPROD Quantité à produire Numérique
Table : Article
Qui regroupe les informations sur les articles.
Champ Donnée Clé Type Taille
NOART N° d’article Primary Texte 7
IDSITE N° de place Foreign Texte 8
IDMOD N° de modÚle Foreign Numérique
LIBELLE Description Texte 30
LG Long Numérique
LA Large Numérique
HT Haut Numérique
PBRUT Poids brut Numérique
PNET Poids net Numérique
Table : PosteCharge
Qui regroupe les informations sur les machines. Touts les postes rattachĂ©s Ă  la mĂȘme section
auront donc les mĂȘmes taux horaires.
Champ Donnée Clé Type Taille
NOMACH N° de machine Primary Texte 6
LIBELLE Description Texte 30
SECTION Nom section Texte 16
Table : TDA
Qui regroupe les informations sur les travaux divers autres
Champ Donnée Clé Type Taille
NOTDA N° opération Primary Numérique
DESCR Description Texte 30
26
Table : TravDiv
Qui regroupe les caractéristiques des ordres de travail non ordonnancés
Champ Donnée Clé Type Taille
NOTD N° opération Primary Numérique
IDRES Responsable Foreign Texte 3
DESCR Description Texte 30
Table : Retouche
Elle regroupe les informations sur les retouches
Champ Donnée Clé Type Taille
CODERET Code retouche Primary Numérique
DESCR Description Texte 30
Table : Responsable
Table des gestionnaires qui sont des responsables de la gestion des travaux divers.
Champ Donnée Clé Type Taille
IDRES Texte 3
NOM Texte 30
Table : Pointage
Qui regroupe les informations sur Entrée/Sortie pour chaque opérateur
Champ Donnée Clé Type Taille
NOMATRIC N° badge Foreign Numérique
DEBUT Entrée Date/Heure
FIN Sortie Date/Heure
TEMPS Temps total, avec
les pauses
Numérique
Table : Client
Champ Donnée Clé Type Taille
IDCLIENT Identif. promoteur Primary Numérique
LIBELLE Nom Texte 30
Table : ClassPrior
Les informations sur la priorité de commande
Champ Donnée Clé Type Taille
IDPRIOR Identif. priorité Primary Texte 1
LIBELLE Description Texte 20
Table : Modele
Elle regroupe les informations sur les modĂšles (Ensemble des articles).
Champ Donnée Clé Type Taille
IDMOD Identif. modÚle Primary Numérique
DESIGN Description Texte 30
27
Table : Outillage
Elle regroupe les caractĂ©ristiques d’outil
Champ Donnée Clé Type Taille
IDOUTIL Identif. outil Primary Texte 6
LIBELLE Description Texte 30
Table : Radar
Lieu de stockage d’article
Champ Donnée Clé Type Taille
IDSITE Id place Primary Texte 8
LIBELLE Description Texte 30
Table : Composer
Qui permet de faire le lien entre la commande et les articles Ă  produire
Champ Donnée Clé Type Taille
NOART N° article Foreign Texte 7
NOCMD N° commande Foreign Numérique
QNTE Quantité à produire Numérique
Table : Effectuer
Qui permet de faire le lien entre l’opĂ©rateur et les commandes de production
Champ Donnée Clé Type Taille
NOCMD N° commande Foreign Numérique
NOMATRIC N° badge Foreign Numérique
DATETR Date travail Date
Table : Fabriquer
Qui permet de faire le lien entre l’opĂ©rateur et les ordres de fabrication. Savoir le temps
chaque opĂ©ration et la quantitĂ© a produire. Indiquer l’opĂ©ration de production ou de rĂ©glage
aussi clîturer l’ordre de fabrication.
Champ Donnée Clé Type Taille
NOMATRIC N° badge Foreign Numérique
NORDRE N° ordre Foreign Numérique
DEBUT Début opération Date/Heure
FIN Fin opération Date/Heure
TEMPS Durée opération Numérique
QNTPROD Quantité produite Numérique
CODESP Setup/Production Texte 1
CODECLOT ClĂŽture Texte 1
28
Table : Faire
Qui permet de faire le lien entre la commande et la retouche.
Champ Donnée Clé Type Taille
CODERET Code retouche Foreign Numérique
NOCMD N° commande Foreign Numérique
DEBUT DĂ©but retouche Date/Heure
FIN Fin retouche Date/Heure
TEMPS Durée retouche Numérique
Table : Inclure
Qui permet de faire le lien entre la commande et les travaux divers spécieux. Calculer la durée
de travail.
Champ Donnée Clé Type Taille
NOTDA N° opération Foreign Numérique
NOCMD N° commande Foreign Numérique
DEBUT Début opération Date/Heure
FIN Fin opération Date/Heure
TEMPS Temps presté Numérique
Table : Produire
Qui permet de faire le lien entre l’opĂ©ration et la quantitĂ© produite chaque article
Champ Donnée Clé Type Taille
NOART N° article Foreign Texte 7
NOTD N° opération Foreign Numérique
QNTE Quantité produite Numérique
Table : Realiser
Qui permet de faire le lien entre l’opĂ©ration de travail divers et l’opĂ©rateur et savoir le temps
de travail
Champ Donnée Clé Type Taille
NOTD N° opération Foreign Numérique
NOMATRIC N° badge Foreign Numérique
DEBUT Début opération Date/Heure
FIN Fin opération Date/Heure
TEMPS Temps presté Numérique
Table : Utiliser
Qui permet de faire le lien entre l’ordre de fabrication et les outils de travail
Champ Donnée Clé Type Taille
NORDRE N° opération Foreign Numérique
IDOUTIL Id outil Foreign Texte 6
29
3.6 ModÚle orienté objet
3.6.1 Diagrammes de cas d’utilisation
Responsable
Ajouter opérateur
Modifier opérateur
Supprimer opérateur
Verifier matricule
Fig.3.6.1 Use case – Gestion des opĂ©rateurs
L’utilisateur veut ajouter, modifier ou supprimer des donnĂ©es de l’opĂ©rateur. Il doit
choisir le nom de l’opĂ©rateur.
Responsable
Modifier charge machine
Calculer charge
Verifier numéro
Donner période
Fig.3.6.2 Use case – Gestion des postes de travail
Si l’utilisateur veut modifier ou fichier Charge machine, il doit choisir le numĂ©ro d’une
machine. Il peut de calculer le temps de travail pour chaque machine.
30
Responsable
ContrĂŽler production
ContrĂŽler montage
ContrĂŽler TD
Calculer temps presté
Calculer productivité
RĂ©partir temps
Classer par numéro
Fig.3.6.3 Use case – Suivi de production
L’utilisateur peut connaĂźtre toutes les opĂ©rations de production et de montage lancĂ© dans
l’atelier, comparer la productivitĂ© rĂ©elle par la productivitĂ© thĂ©orique, savoir le temps pour
réalisation des travaux divers.
31
3.6.2 Diagrammes de séquence
Lancer programme
Demande données
Envoi données
Afficher renseignements
Traiter données
Demande liste opérateurs
Ajouter données
Sauvegarder données
Enregistrer données
Quitter
Demande liste opérateurs
Affiche liste opérateurs
Verification données requis
Affiche message
Suivi production
Utilisateur
Base Données Gestion opérateur
Fig.3.6.2 Consulter le pointage global et ajouter des opérateurs
L’utilisateur lance le programme, le programme envoie des requĂȘtes vers la base de
donnĂ©es et aprĂšs la rĂ©ception les informations, on les traite et affiche le rĂ©sultat dans l’écran.
Si l’utilisateur veut ajouter des donnĂ©es d’un opĂ©rateur, il demande une liste des
opĂ©rateurs, il ajoute des donnĂ©es, il valide l’enregistrement. Le programme doit vĂ©rifier des
donnĂ©es introduites et l’affiche un message (ok ou erreur) et aprĂšs la confirmation
d’utilisateur, on envoie ces donnĂ©es vers la base de donnĂ©es.
32
4. Fonctionnalités du logiciel
4.1 FenĂȘtre principale « Suivi de production »
Suivi de production, il s’agit de contrîle quotidien :
- Calculer le temps total pour toute l’atelier
- Calculer le temps total et le pourcentage pour toutes les opérations de production
- Calculer le temps total et le pourcentage pour toutes les opérations de montage
- Calculer le temps total et le pourcentage pour touts les travaux divers
- Répartir le temps des travaux divers par : TDS (Travaux divers spécieux), TDA
(Travaux divers autres), Retouche
- Trier ces données par la date de travail
ProblĂšmes :
1. Les données sont envoyées vers le serveur par les différents types de transaction:
- Temps presté sans le décompte des pauses
- Temps presté avec décompte des pauses
Il faut calculer le temps total sans pauses.
2. Il y a les situations : Job multiple et Montage commun, quand l’opĂ©rateur utilise deux
machine au mĂȘme temps. On doit de faire la rĂ©partition du temps, si un des jobs
33
multiples n'est pas complet (temps presté=0), aucun calcul de répartition n'est pas
possible
3. Pour plusieurs postes de charge, le temps presté est calculé sur base de la quantité
introduite multipliée par la production horaire. C'est-à-dire il y a des situations quand
l’opĂ©rateur n'a pas Ă©tĂ© pointĂ© le dĂ©but du travail.
Pour Ă©liminer les temps des pauses et gĂ©rer des erreurs d’enregistrements, j’ai fait deux
fonctions en Visual Basic (contrÎle dans une base de données) :
Option Compare Database
'==================================================================
' Fonction permettant Ă©liminer des temps de pause
' Author Vitali UDALOV
'==================================================================
Public Function EliminerPauses(DEBUT As Variant, FIN As Variant, Temp As Double) As
Double
Dim TimeVar As Double
Const Debut1Pause = #9:00:00 AM#
Const Fin1Pause = #9:12:00 AM#
Const Debut2Pause = #12:00:00 PM#
Const Fin2Pause = #12:30:00 PM#
Const p1 = 0.2
Const p2 = 0.5
If IsNull(FIN) Then
EliminerPauses = 0
Exit Function
End If
If IsEmpty(FIN) Then
EliminerPauses = 0
Exit Function
End If
If (Format(DEBUT, "hh:nn:ss") < Debut1Pause And Format(FIN, "hh:nn:ss") >
Fin2Pause) Then
TimeVar = Temp - p1 - p2
ElseIf ((Format(DEBUT, "hh:nn:ss") < Debut1Pause) And (Format(FIN, "hh:nn:ss") >
Fin1Pause And _
Format(FIN, "hh:nn:ss") < Debut2Pause)) Then
TimeVar = Temp - p1
ElseIf ((Format(DEBUT, "hh:nn:ss") > Debut1Pause And Format(DEBUT, "hh:nn:ss") <
Debut2Pause) And _
Format(FIN, "hh:nn:ss") > Fin2Pause) Then
TimeVar = Temp - p2
Else
TimeVar = Temp
End If
EliminerPauses = TimeVar
End Function
34
RequĂȘte pour avoir le temps total de production :
SELECT Sum(Fabriquer.TEMPS) AS SommeDeTEMPS
FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD)
INNER JOIN Fabriquer ON Jobordre.NORDRE = Fabriquer.NORDRE
WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND
((Fabriquer.FIN) Is Not Null) AND ((Fabriquer.CODESP)<>"S") AND
((Commande.NOCMD)<>95007000));
RequĂȘte pour avoir le temps total de montage :
SELECT Sum(Fabriquer.TEMPS) AS SommeDeTEMPS
FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD)
INNER JOIN Fabriquer ON Jobordre.NORDRE = Fabriquer.NORDRE
WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND
((Fabriquer.FIN) Is Not Null) AND ((Fabriquer.CODESP)<>"P") AND
((Commande.NOCMD)<>95007000));
RequĂȘte pour avoir le temps total des travaux divers :
SELECT Sum(Realiser.TEMPS) AS TempsDeTD
FROM Realiser WHERE (((Realiser.DEBUT)>Date()-1 AND (Realiser.DEBUT)<Date())
AND ((Realiser.FIN) Is Not Null));
RequĂȘte pour avoir le temps total des travaux divers autres:
SELECT Sum(Inclure.TEMPS) AS TempsDeTDA
FROM Inclure
WHERE (((Inclure.DEBUT)>Date()-1 AND (Inclure.DEBUT)<Date()) AND ((Inclure.FIN)
Is Not Null));
RequĂȘte pour avoir le temps total des travaux divers spĂ©cieux:
SELECT Sum(Fabriquer.TEMPS) AS TempsDeTDS
FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD)
INNER JOIN (Matricule INNER JOIN Fabriquer ON Matricule.NOMATRIC =
Fabriquer.NOMATRIC) ON Jobordre.NORDRE = Fabriquer.NORDRE
WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND
((Fabriquer.FIN)<> Is Not Null) AND ((Commande.NOCMD) = 95007000));
4.2 Ecran « Gestion des opérateurs »
Tous les champs d’éditions ont Ă©tĂ© remplis par des donnĂ©es de l’opĂ©rateur reprises de la base
de donnĂ©es. Certains champs peuvent ĂȘtre vides.
Gestion des opérateurs
- ajouter, modifier et supprimer l’opĂ©rateur, la validation n’est faite que si les champs
Matricule et Nom ont été remplis.
35
4.3 Ecran « Gestion des postes de charge »
36
Gestion des machines
- ajouter, modifier et supprimer la poste de travail, la validation n’est faite que si le
champ Code Poste a été rempli
- calculer les frais pour chaque poste de travail, il faut choisir la période de travail, et
les enregistre dans un fichier.
4.4 Ecran « ContrÎle de Production »
ContrÎle de production, suivi des ordres de fabrication lancés
- Calculer la durĂ©e de l’opĂ©ration
- Si l’ordre de fabrication clĂŽturĂ©, calculer le pourcentage
- Si la quantité n'a pas été pointée, corriger la quantité en consultant le fichier résultat de
travail
- Trier par la date
ProblĂšmes :
1. La durĂ©e d’une opĂ©ration est variĂ© de ‘minute’ Ă  ‘mois’. Il faut chercher les donnĂ©es :
temps et quantitĂ©, pour une mĂȘme opĂ©ration
2. Il faut Ă©liminer le temps des pauses
37
RequĂȘte pour afficher des opĂ©rations de production:
SELECT Matricule.NOMATRIC, Matricule.NOM, Commande.NOCMD,
Jobordre.NORDRE, Jobordre.DESCROPER, Article.NOART, Article.LIBELLE,
Fabriquer.DEBUT, Fabriquer.FIN, Fabriquer.TEMPS, Jobordre.PROHOR,
Jobordre.QNTEAPROD, Fabriquer.QNTPROD, Fabriquer.CODECLOT
FROM Article INNER JOIN (((Commande INNER JOIN Jobordre ON Commande.NOCMD
= Jobordre.NOCMD) INNER JOIN (Matricule INNER JOIN Fabriquer ON
Matricule.NOMATRIC = Fabriquer.NOMATRIC) ON Jobordre.NORDRE =
Fabriquer.NORDRE) INNER JOIN Composer ON Commande.NOCMD =
Composer.NOCMD) ON Article.NOART = Composer.NOART
WHERE (((Commande.NOCMD)<>95007000) AND ((Fabriquer.CODESP)<>"S") AND
((Fabriquer.CODECLOT)="C"))
ORDER BY Matricule.NOM, Fabriquer.DEBUT DESC;
4.4 Ecran « ContrÎle de Montage »
ContrÎle de montage, suivi des ordres de réglage machine lancés
- Calculer la durĂ©e de l’opĂ©ration
- Si l’ordre de fabrication clĂŽturĂ©, calculer le pourcentage
- Trier par la date
38
RequĂȘte pour afficher des opĂ©rations de montage:
SELECT Matricule.NOMATRIC, Matricule.NOM, Commande.NOCMD, Jobordre.NORDRE,
Jobordre.DESCROPER, Article.NOART, Article.LIBELLE, Fabriquer.DEBUT, Fabriquer.FIN,
Fabriquer.TEMPS, Jobordre.TPMONT, Fabriquer.CODECLOT
FROM Article INNER JOIN (((Commande INNER JOIN Jobordre ON Commande.NOCMD =
Jobordre.NOCMD) INNER JOIN (Matricule INNER JOIN Fabriquer ON Matricule.NOMATRIC
= Fabriquer.NOMATRIC) ON Jobordre.NORDRE = Fabriquer.NORDRE) INNER JOIN
Composer ON Commande.NOCMD = Composer.NOCMD) ON Article.NOART =
Composer.NOART
WHERE (((Commande.NOCMD)<>95007000) AND ((Fabriquer.CODESP)<>"P") AND
((Fabriquer.CODECLOT)="C"))
ORDER BY Matricule.NOM, Fabriquer.DEBUT DESC;
4.5 Ecran « ContrÎle des travaux divers »
ContrĂŽle des travaux divers
- Calculer la durĂ©e de l’opĂ©ration
- Trier par la date
RequĂȘte pour afficher des informations des travaux divers:
SELECT Matricule.NOMATRIC, Matricule.NOM, TravDiv.NOTD, TravDiv.DESCR,
Realiser.DEBUT, Realiser.FIN, Realiser.TEMPS
FROM TravDiv INNER JOIN (Matricule INNER JOIN Realiser ON Matricule.NOMATRIC =
Realiser.NOMATRIC) ON TravDiv.NOTD = Realiser.NOTD
WHERE (((Realiser.FIN) Is Not Null))
ORDER BY Matricule.NOM, Realiser.DEBUT DESC;
39
4.7 Barre de navigation
Il s’agit d’un composant utilisateur qui implĂ©mente l’ensemble des techniques de
navigation. Il m’évitera de rĂ©Ă©crire systĂ©matiquement les mĂȘmes mĂ©thodes.
Que fait ce composant :
- Il encapsule les problĂšmes de navigation et d’édition des donnĂ©es.
- Il permet d’appeler automatiquement une fonction lors de l’ajout d’un enregistrement
ou du dĂ©placement dans le jeu d’enregistrements
- Il fournit un accùs à l’enregistrement en cours
- Il facilite la mise à jour de la base de données en fournissant une méthode statique
- Il met en place la gestion des éventuelles erreurs lors de la modification des données.
Si on clique sur le premier bouton en partant de la gauche
- On se positionne sur le premier élément de la table
Si on clique sur le deuxiĂšme bouton en partant de la gauche
- On se positionne sur l’élĂ©ment prĂ©cĂšdent de la table
Si on clique sur le troisiĂšme bouton en partant de la gauche
- On se positionne sur l’élĂ©ment suivant de la table
Si on clique sur le quatriĂšme bouton en partant de la gauche
- On se positionne sur l’élĂ©ment dernier de la table
Si on clique sur Valider :
- VĂ©rification si les champs requis ont bien Ă©tĂ© remplis. Si non, un message d’erreur s’affiche
- Si OK, le systĂšme vĂ©rifie que l’id n’existe pas encore. Si existe un message d’erreur
s’affiche, sinon il y a sauvegarde des donnĂ©es
- On rafraßchit la table pour que le nouvel élément soit repris dans la liste
Si on clique sur Annuler :
- Annuler toutes les modifications
Liste des applications utilisées
- SmartDraw 7.01 - Logiciel graphique pour la création des diagrammes
- PowerAMC 9.0 - Outil de modélisation graphique
- CASE Studio 2 - Outil de modélisation de base de données
- Microsoft Word 2000 – Editeur de texte
- PDFEdit v7.1 - Editeur pdf
- Microsoft Visual Studio .NET 2003 - Outils de développement
- Dacris NetXP - Outil pour améliorer l'interface utilisateur de leurs applications
- Microsoft Access 2000 - Gestionnaire de bases de données
40
CONCLUSIONS
L’objectif de ce travail a Ă©tĂ© atteint. Le programme de suivi de production embarquĂ©
fonctionne. Ça donne les avantages pour d’organiser la production efficace.
Il n’a pas encore Ă©tĂ© testĂ© dans une situation rĂ©elle, ce qui demanderait probablement
quelques modifications mineures spĂ©cifiques au type d’utilisation.
Ce programme est un module d’ensemble d’outils de gestion de l’entreprise. Mais elle
peut ĂȘtre utilisĂ© de façon individuelle et de plus pourrait ĂȘtre intĂ©grĂ©, sans trop de problĂšmes,
dans un logiciel GPAO.
Lors de cette Ă©tude, de nombreux problĂšmes, de ce domaine, n’ont pas Ă©tudiĂ©s, il s’agit de :
- gestion des stocks, réservation dans les stocks les composants du produit à fabriquer
- gestion de calendrier d’activitĂ© opĂ©rateurs
- ordonnancement de production par la capacité de machine
L’analyse de ces problùmes, c’est le travail de long temps.
La planification future?
Développer un programme qui permet de réaliser la gestion pour toutes les étapes de la
prĂ©vision, de la dĂ©cision, de l’exĂ©cution et du contrĂŽle.
Ce travail de fin d’études m’a, Ă©videmment, permis d’appliquer toutes les connaissances
acquises lors de ces annĂ©es d’études. Je me suis rendu compte de la difficultĂ© de mettre en
pratique les matiĂšres vues dans les diffĂ©rents cours thĂ©oriques. Mais j’ai cependant appris Ă 
gĂ©rer les contraintes humaines, mes choix et mon temps de travail
 Toutes choses que l’on ne
trouve pas dans les manuels scolaires mais qui sont pourtant, fondamentales dans le monde
professionnel.
De plus ce travail m’a donnĂ© la connaissance d’avantage d’utilisation le systĂšme informatique
dans le domaine de la gestion des entreprises et j’envisage des formations ou des Ă©tudes dans
cette direction.
41
BIBLIOGRAPHIE
Ouvrages
- Joseph Gabay Merise et UML pour la modélisation des systÚmes d'information
Edition Dunod – ISBN: 2-10-005575-5
- Martin Fowler Le tout en poche UML
Edition CampusPress - ISBN: 2-7440-1336-6
- Jay Hilyard, Stephen Teilhet C# Cookbook
Edition O'Reilly – ISBN: 0-596-00339-0
- Simon Robinson, K. Scott Allen C# Professionnel
Edition Wiley – ISBN: 0-7645-5759-9
- Brian Johnson, Craig Skibo Inside Microsoft Visual Studio.NET 2003
Edition Microsoft Press – ISBN: 0-7356-1874-7
- Alain Courtois, Maurice Pillet, Chantal Martin-Bonnefous Gestion de production
Edition Organisation Eds D' – ISBN: 2-7081-2986-4
Support Ă©lectronique
http://www.developpez.com/
http://www.csharpfr.com/
http://www.csharphelp.com/
www.codeproject.com/
www.uml.org
http://uml.free.fr/
http://www.sybase.fr
http://www.commentcamarche.net
FAQ Merise
http://uml.developpez.com/faq/merise/
FAQ UML
http://uml.developpez.com/faq/
42
ANNEXE
Fichier de création de la base de données sous format MS Access :
' Created 25/01/2005
' Modified 04/03/2005
' Project Suivi de production
' Company Melotte SA
' Author Vitali UDALOV
' Version 1.0.3
' Database Access 2000
'=======================================================
'=== MS Access 2000 database
'===
'=== 1. Create a new database in the MS Access 2000
'=== 2. Create a new module
'=== 3. Copy the SQL script into the new MS Access 2000 module
'=== 4. Select from main menu "Tools" item "References..." and check the "Microsoft DAO
'=== 3.6 Object Library."
'=== 5. Place your mouse cursor somewhere in the main procedure Main()
'=== 6. Run the module code (Click the "Run Sub/UserForm" button or press F5)
'=======================================================
Public dbs As DAO.Database
Public tdf As DAO.TableDef
Public idx As DAO.Index
Public rel As DAO.Relation
Sub Main()
Set dbs = CurrentDb()
On Error GoTo ErrorHandler
Call CreateTables
Call CreatePrimaryKeys
Call CreateIndexes
MsgBox "Script successfully processed.", vbInformation
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 3010
MsgBox "Table " & tdf.Name & " allready exist!", vbInformation
Err.Clear
Case 3284
MsgBox "Index " & idx.Name & " for table " & tdf.Name & " allready exist!",
vbInformation
Err.Clear
Case Else
MsgBox Err.Description, vbCritical
End Select
43
End Sub
' Create tables
'===============
Sub CreateTables()
Call CreateTable1 'Commande
Call CreateTable2 'Article
Call CreateTable3 'Composer
Call CreateTable4 'Jobordre
Call CreateTable5 'Matricule
Call CreateTable6 'Fabriquer
Call CreateTable7 'TravDiv
Call CreateTable8 'Realiser
Call CreateTable9 'Pointage
Call CreateTable10 'Retouche
Call CreateTable11 'TDA
Call CreateTable12 'PosteCharge
Call CreateTable13 'Outillage
Call CreateTable14 'Utiliser
Call CreateTable15 'Client
Call CreateTable16 'Radar
Call CreateTable18 'ClassPrior
Call CreateTable20 'Modele
Call CreateTable21 'Resposable
Call CreateTable22 'Produir
Call CreateTable23 'Faire
Call CreateTable24 'Inclure
Call CreateTable26 'Effectuer
End Sub
'=== Create table Commande ======
Sub CreateTable1()
Set tdf = dbs.CreateTableDef( "Commande" )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("IDCLIENT", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("IDPRIOR", dbText, 1, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DATEEMISS", dbDate, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Article ======
Sub CreateTable2()
44
Set tdf = dbs.CreateTableDef( "Article" )
Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("IDSITE", dbText, 8, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("LG", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("LA", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("HT", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("PBRUT", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("PNET", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("IDMOD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Composer ======
Sub CreateTable3()
Set tdf = dbs.CreateTableDef( "Composer" )
Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("Qnte", dbLong, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Jobordre ======
Sub CreateTable4()
Set tdf = dbs.CreateTableDef( "Jobordre" )
Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOMACH", dbText, 6, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("MUTAT", dbText, 6, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("NUSER", dbInteger, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("DESCROPER", dbText, 30, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("PROHOR", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TPMONT", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("QNTEAPROD", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
45
'=== Create table Matricule ======
Sub CreateTable5()
Set tdf = dbs.CreateTableDef( "Matricule" )
Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOM", dbText, 30, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("STATUT", dbText, 16, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Fabriquer ======
Sub CreateTable6()
Set tdf = dbs.CreateTableDef( "Fabriquer" )
Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("QNTPROD", dbLong, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("CODESP", dbText, 1, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("CODECLOT", dbText, 1, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table TravDiv ======
Sub CreateTable7()
Set tdf = dbs.CreateTableDef( "TravDiv" )
Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("IDRES", dbText, 3, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPSTD", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
46
'=== Create table Realiser ======
Sub CreateTable8()
Set tdf = dbs.CreateTableDef( "Realiser" )
Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Pointage ======
Sub CreateTable9()
Set tdf = dbs.CreateTableDef( "Pointage" )
Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Retouche ======
Sub CreateTable10()
Set tdf = dbs.CreateTableDef( "Retouche" )
Call AddFieldToTable("CODERET", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table TDA ======
Sub CreateTable11()
Set tdf = dbs.CreateTableDef( "TDA" )
47
Call AddFieldToTable("NOTDS", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table PosteCharge ======
Sub CreateTable12()
Set tdf = dbs.CreateTableDef( "PosteCharge" )
Call AddFieldToTable("NOMACH", dbText, 6, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("SECTION", dbText, 16, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Outillage ======
Sub CreateTable13()
Set tdf = dbs.CreateTableDef( "Outillage" )
Call AddFieldToTable("IDOUTIL", dbText, 6, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Utiliser ======
Sub CreateTable14()
Set tdf = dbs.CreateTableDef( "Utiliser" )
Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("IDOUTIL", dbText, 6, 0, "", "", "", TRUE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Client ======
Sub CreateTable15()
48
Set tdf = dbs.CreateTableDef( "Client" )
Call AddFieldToTable("IDCLIENT", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Radar ======
Sub CreateTable16()
Set tdf = dbs.CreateTableDef( "Radar" )
Call AddFieldToTable("IDSITE", dbText, 8, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table ClassPrior ======
Sub CreateTable18()
Set tdf = dbs.CreateTableDef( "ClassPrior" )
Call AddFieldToTable("IDPRIOR", dbText, 1, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("LIBELLE", dbText, 20, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Modele ======
Sub CreateTable20()
Set tdf = dbs.CreateTableDef( "Modele" )
Call AddFieldToTable("IDMOD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DESIGN", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Resposable ======
49
Sub CreateTable21()
Set tdf = dbs.CreateTableDef( "Resposable" )
Call AddFieldToTable("IDRES", dbText, 3, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOM", dbText, 30, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Produir ======
Sub CreateTable22()
Set tdf = dbs.CreateTableDef( "Produir" )
Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("QNTE", dbLong, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Faire ======
Sub CreateTable23()
Set tdf = dbs.CreateTableDef( "Faire" )
Call AddFieldToTable("CODERET", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Inclure ======
Sub CreateTable24()
Set tdf = dbs.CreateTableDef( "Inclure" )
Call AddFieldToTable("NOTDS", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
50
Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE )
Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
'=== Create table Effectuer ======
Sub CreateTable26()
Set tdf = dbs.CreateTableDef( "Effectuer" )
Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE )
Call AddFieldToTable("DATETR", dbDate, 0, 0, "", "", "", FALSE, FALSE )
dbs.TableDefs.Append tdf
End Sub
' Create primary keys
'=====================
Sub CreatePrimaryKeys()
'=== Create primary key for table Commande ======
Set tdf = dbs.TableDefs( "Commande" )
Set idx = tdf.CreateIndex( "pk_Commande" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOCMD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Article ======
Set tdf = dbs.TableDefs( "Article" )
Set idx = tdf.CreateIndex( "pk_Article" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
51
Call AddFieldToIndex( "NOART", False )
tdf.Indexes.Append idx
'=== Create primary key for table Composer ======
Set tdf = dbs.TableDefs( "Composer" )
Set idx = tdf.CreateIndex( "pk_Composer" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOART", False )
Call AddFieldToIndex( "NOCMD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Jobordre ======
Set tdf = dbs.TableDefs( "Jobordre" )
Set idx = tdf.CreateIndex( "pk_Jobordre" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NORDRE", False )
tdf.Indexes.Append idx
'=== Create primary key for table Matricule ======
Set tdf = dbs.TableDefs( "Matricule" )
Set idx = tdf.CreateIndex( "pk_Matricule" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOMATRIC", False )
tdf.Indexes.Append idx
'=== Create primary key for table Fabriquer ======
Set tdf = dbs.TableDefs( "Fabriquer" )
Set idx = tdf.CreateIndex( "pk_Fabriquer" )
52
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NORDRE", False )
Call AddFieldToIndex( "NOMATRIC", False )
tdf.Indexes.Append idx
'=== Create primary key for table TravDiv ======
Set tdf = dbs.TableDefs( "TravDiv" )
Set idx = tdf.CreateIndex( "pk_TravDiv" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOTD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Realiser ======
Set tdf = dbs.TableDefs( "Realiser" )
Set idx = tdf.CreateIndex( "pk_Realiser" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOTD", False )
Call AddFieldToIndex( "NOMATRIC", False )
tdf.Indexes.Append idx
'=== Create primary key for table Pointage ======
Set tdf = dbs.TableDefs( "Pointage" )
Set idx = tdf.CreateIndex( "pk_Pointage" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOMATRIC", False )
tdf.Indexes.Append idx
'=== Create primary key for table Retouche ======
53
Set tdf = dbs.TableDefs( "Retouche" )
Set idx = tdf.CreateIndex( "pk_Retouche" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "CODERET", False )
tdf.Indexes.Append idx
'=== Create primary key for table TDA ======
Set tdf = dbs.TableDefs( "TDA" )
Set idx = tdf.CreateIndex( "pk_TDA" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOTDS", False )
tdf.Indexes.Append idx
'=== Create primary key for table PosteCharge ======
Set tdf = dbs.TableDefs( "PosteCharge" )
Set idx = tdf.CreateIndex( "pk_PosteCharge" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOMACH", False )
tdf.Indexes.Append idx
'=== Create primary key for table Outillage ======
Set tdf = dbs.TableDefs( "Outillage" )
Set idx = tdf.CreateIndex( "pk_Outillage" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "IDOUTIL", False )
tdf.Indexes.Append idx
54
'=== Create primary key for table Utiliser ======
Set tdf = dbs.TableDefs( "Utiliser" )
Set idx = tdf.CreateIndex( "pk_Utiliser" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NORDRE", False )
Call AddFieldToIndex( "IDOUTIL", False )
tdf.Indexes.Append idx
'=== Create primary key for table Client ======
Set tdf = dbs.TableDefs( "Client" )
Set idx = tdf.CreateIndex( "pk_Client" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "IDCLIENT", False )
tdf.Indexes.Append idx
'=== Create primary key for table Radar ======
Set tdf = dbs.TableDefs( "Radar" )
Set idx = tdf.CreateIndex( "pk_Radar" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "IDSITE", False )
tdf.Indexes.Append idx
'=== Create primary key for table ClassPrior ======
Set tdf = dbs.TableDefs( "ClassPrior" )
Set idx = tdf.CreateIndex( "pk_ClassPrior" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
55
Call AddFieldToIndex( "IDPRIOR", False )
tdf.Indexes.Append idx
'=== Create primary key for table Modele ======
Set tdf = dbs.TableDefs( "Modele" )
Set idx = tdf.CreateIndex( "pk_Modele" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "IDMOD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Resposable ======
Set tdf = dbs.TableDefs( "Resposable" )
Set idx = tdf.CreateIndex( "pk_Resposable" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "IDRES", False )
tdf.Indexes.Append idx
'=== Create primary key for table Faire ======
Set tdf = dbs.TableDefs( "Faire" )
Set idx = tdf.CreateIndex( "pk_Faire" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "CODERET", False )
Call AddFieldToIndex( "NOCMD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Inclure ======
Set tdf = dbs.TableDefs( "Inclure" )
Set idx = tdf.CreateIndex( "pk_Inclure" )
idx.Primary = True
56
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOTDS", False )
Call AddFieldToIndex( "NOCMD", False )
tdf.Indexes.Append idx
'=== Create primary key for table Effectuer ======
Set tdf = dbs.TableDefs( "Effectuer" )
Set idx = tdf.CreateIndex( "pk_Effectuer" )
idx.Primary = True
idx.Unique = True
idx.IgnoreNulls = False
Call AddFieldToIndex( "NOCMD", False )
Call AddFieldToIndex( "NOMATRIC", False )
tdf.Indexes.Append idx
End Sub
' Create indexes
'================
Sub CreateIndexes()
End Sub
' Add fields to table
'=====================
Sub AddFieldToTable(FieldName As String, DataType As String, SizeCol As Integer,
Attributes As Long, DefaultValue As Variant, ValText As String, ValRule As String, NotN
As Boolean, ZeroLength As Boolean)
Dim fld As DAO.Field
Set fld = tdf.CreateField( FieldName, DataType )
If SizeCol <> 0 Then fld.Size = SizeCol
If Attributes <> 0 Then fld.Attributes = Attributes
fld.Required = NotN
If DataType = dbText or DataType = dbMemo Then fld.AllowZeroLength = ZeroLength
fld.DefaultValue = DefaultValue
fld.ValidationRule = ValRule
57
fld.ValidationText = ValText
tdf.Fields.Append fld
End Sub
' Add properties to table
'=========================
Sub AddPropertyToTable( PropertyName As String, Value As Variant, DataType As String)
Dim prp As DAO.Property
Set prp = tdf.CreateProperty(PropertyName, DataType, Value)
tdf.Properties.Append prp
End Sub
' Add properties to field
'=========================
Sub AddPropertyToField( FieldName As String, PropertyName As String, Value As Variant,
DataType As String)
Dim prp As DAO.Property
Dim fld As DAO.Field
Set fld = tdf.Fields( FieldName )
Set prp = fld.CreateProperty(PropertyName, DataType, Value)
fld.Properties.Append prp
End Sub
' Add fields to index
'=====================
Sub AddFieldToIndex( FieldName As String, Descending As Boolean )
Dim fld As DAO.Field
Set fld = idx.CreateField( FieldName )
If Descending = True Then fld.Attributes = dbDescending
idx.Fields.Append fld
End Sub

Weitere Àhnliche Inhalte

Was ist angesagt?

Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Riadh K.
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
Lina Meddeb
 

Was ist angesagt? (20)

CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
CONCEPTION ET REALISATION D ’ UNE APPLICATION WEB POUR GESTION DE P ROJETS DE...
 
MEMOIRE DE STAGE
MEMOIRE DE STAGEMEMOIRE DE STAGE
MEMOIRE DE STAGE
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Rapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelRapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilel
 
Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...Conception et développement d'une application de gestion de production et de ...
Conception et développement d'une application de gestion de production et de ...
 
Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2Rapport Pfe Application Web e-commerce Symfony2
Rapport Pfe Application Web e-commerce Symfony2
 
Rapport de stage
Rapport de stageRapport de stage
Rapport de stage
 
Conception et dĂ©veloppement d’une plateforme d'import-export avec paiement en...
Conception et dĂ©veloppement d’une plateforme d'import-export avec paiement en...Conception et dĂ©veloppement d’une plateforme d'import-export avec paiement en...
Conception et dĂ©veloppement d’une plateforme d'import-export avec paiement en...
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
 
Rapport de stage du fin d'Ă©tude
Rapport de stage du fin d'Ă©tudeRapport de stage du fin d'Ă©tude
Rapport de stage du fin d'Ă©tude
 
réalisation une application web de gestion des informations météorologiques
réalisation une application web de gestion des informations météorologiquesréalisation une application web de gestion des informations météorologiques
réalisation une application web de gestion des informations météorologiques
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 
Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...Conception et developpement d'un site web pour la suggestion et notification ...
Conception et developpement d'un site web pour la suggestion et notification ...
 
Diapo PFE
Diapo PFEDiapo PFE
Diapo PFE
 
Conception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIRConception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIR
 
Rapport de stage
Rapport de stageRapport de stage
Rapport de stage
 
Presentation d'un logiciel de GRH
Presentation d'un logiciel de GRHPresentation d'un logiciel de GRH
Presentation d'un logiciel de GRH
 
Presentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help deskPresentation pfe gestion parc informatique et help desk
Presentation pfe gestion parc informatique et help desk
 
RapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRITRapportPFE_IngenieurInformatique_ESPRIT
RapportPFE_IngenieurInformatique_ESPRIT
 

Andere mochten auch

INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE
HINDOUSSATI
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
Majid CHADAD
 
Rapport se stage LEONI BSK
Rapport se stage LEONI BSKRapport se stage LEONI BSK
Rapport se stage LEONI BSK
ChĂ imaĂ  Mhjr
 
Moaccess7 2
Moaccess7 2Moaccess7 2
Moaccess7 2
formateur
 
2.presentation merise
2.presentation merise2.presentation merise
2.presentation merise
shaheenyaar
 
Merise exercices-mcd_corriges
Merise  exercices-mcd_corrigesMerise  exercices-mcd_corriges
Merise exercices-mcd_corriges
Mehdi El
 

Andere mochten auch (18)

Rapport de stage de fin d'etude l3 angelito & hasina
Rapport de stage de fin d'etude l3 angelito & hasinaRapport de stage de fin d'etude l3 angelito & hasina
Rapport de stage de fin d'etude l3 angelito & hasina
 
Modelisation conception SI
Modelisation conception SIModelisation conception SI
Modelisation conception SI
 
INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeEcole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
 
exercices base de données - sql
exercices  base de données - sql exercices  base de données - sql
exercices base de données - sql
 
exercices Corrigées du merise
exercices Corrigées du  meriseexercices Corrigées du  merise
exercices Corrigées du merise
 
Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
 
PROJET JAVA BD MySQL
PROJET JAVA BD MySQLPROJET JAVA BD MySQL
PROJET JAVA BD MySQL
 
Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...Conception et réalisation d'une application de gestion intégrée au sein de la...
Conception et réalisation d'une application de gestion intégrée au sein de la...
 
Economie et-organisation-des-entreprises
Economie et-organisation-des-entreprisesEconomie et-organisation-des-entreprises
Economie et-organisation-des-entreprises
 
Uml classes Par les exemples
Uml classes Par les exemplesUml classes Par les exemples
Uml classes Par les exemples
 
Rapport se stage LEONI BSK
Rapport se stage LEONI BSKRapport se stage LEONI BSK
Rapport se stage LEONI BSK
 
Moaccess7 2
Moaccess7 2Moaccess7 2
Moaccess7 2
 
Moaccess7 1
Moaccess7 1Moaccess7 1
Moaccess7 1
 
2.presentation merise
2.presentation merise2.presentation merise
2.presentation merise
 
Merise
MeriseMerise
Merise
 
Merise exercices-mcd_corriges
Merise  exercices-mcd_corrigesMerise  exercices-mcd_corriges
Merise exercices-mcd_corriges
 

Ähnlich wie gestion production

Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Alexis Legrand
 

Ähnlich wie gestion production (20)

Offre en france symop machines bois (expobois 2014)
Offre en france symop machines bois (expobois 2014)Offre en france symop machines bois (expobois 2014)
Offre en france symop machines bois (expobois 2014)
 
Rapport de stage societe commerciale
Rapport de stage societe commercialeRapport de stage societe commerciale
Rapport de stage societe commerciale
 
Guide routard intelligence Ă©conomique 2014
Guide routard intelligence Ă©conomique 2014Guide routard intelligence Ă©conomique 2014
Guide routard intelligence Ă©conomique 2014
 
Guide du routard de l'intelligence Ă©conomique - Ă©dition 2014
Guide du routard de l'intelligence Ă©conomique - Ă©dition 2014 Guide du routard de l'intelligence Ă©conomique - Ă©dition 2014
Guide du routard de l'intelligence Ă©conomique - Ă©dition 2014
 
La Bretagne Ă  Alger pour le SIPSA 2016
La Bretagne Ă  Alger pour le SIPSA 2016La Bretagne Ă  Alger pour le SIPSA 2016
La Bretagne Ă  Alger pour le SIPSA 2016
 
Revue des ENIL 354
Revue des ENIL 354Revue des ENIL 354
Revue des ENIL 354
 
Catalogue Forum Icam Entreprises 2014
Catalogue Forum Icam Entreprises 2014Catalogue Forum Icam Entreprises 2014
Catalogue Forum Icam Entreprises 2014
 
La Bretagne au Sima sipsa 2017
La Bretagne au Sima sipsa 2017La Bretagne au Sima sipsa 2017
La Bretagne au Sima sipsa 2017
 
Documentation computime
Documentation computimeDocumentation computime
Documentation computime
 
Diaporama présentation janvier DP3
Diaporama présentation janvier DP3Diaporama présentation janvier DP3
Diaporama présentation janvier DP3
 
Asr
Asr Asr
Asr
 
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
Mémoire_SciencesPo_Alexis-Legrand_L’INTERNET-DES-OBJETS,-UN-PAS-VERS-LA-TRAN...
 
Carnet de l'innovateur 2007
Carnet de l'innovateur 2007Carnet de l'innovateur 2007
Carnet de l'innovateur 2007
 
Rapport d'activité SoFAB 2022
Rapport d'activité SoFAB 2022Rapport d'activité SoFAB 2022
Rapport d'activité SoFAB 2022
 
L'agriculture bretonne Ă  ALGER
L'agriculture bretonne Ă  ALGER L'agriculture bretonne Ă  ALGER
L'agriculture bretonne Ă  ALGER
 
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
TFC_KATSHINDA_MBEMBA_GRACE_2017_2018
 
rapport MobiResto
rapport MobiResto rapport MobiResto
rapport MobiResto
 
Présentation bvs maj mars 2016 [mode de compatibilité]
Présentation bvs  maj mars 2016 [mode de compatibilité]Présentation bvs  maj mars 2016 [mode de compatibilité]
Présentation bvs maj mars 2016 [mode de compatibilité]
 
La Bretagne au DAWAJINE 2018
La Bretagne au DAWAJINE 2018 La Bretagne au DAWAJINE 2018
La Bretagne au DAWAJINE 2018
 
Rapport
RapportRapport
Rapport
 

gestion production

  • 1. 1 Ville de LiĂšge Ecole de Commerce et d'Informatique Enseignement de Promotion sociale Rue Hazinelle 2 - 4000 LIEGE Matricule : 6.188.038 04/221 37 86 Gestion de la production de la sociĂ©tĂ© « Gascoigne Melotte » Travail de fin d'Ă©tudes prĂ©sentĂ© par Vitali UDALOV en vue de l'obtention du diplĂŽme de GraduĂ© en Informatique AnnĂ©e acadĂ©mique 2004-2005
  • 2. 2 REMERCIEMENTS Je tiens Ă  remercier tout d’abord monsieur Jan DERLUYN pour m’avoir permis de rĂ©aliser ce stage au sein de sa sociĂ©tĂ© , monsieur Jean-Claude LAHAYE, mon parrain entreprise, pour le temps et les conseils. Je tiens Ă©galement Ă  remercier monsieur Alain BAWIN, mon parrain Ă©cole, pour sa disponibilitĂ© et son aide de la rĂ©daction de ce travail. Je remercie aussi tous mes professeurs pour ces trois annĂ©es de mes Ă©tudes, ainsi pour m’avoir permis de rĂ©aliser avec succĂšs les Ă©tudes dont je rĂȘvais.
  • 3. 3 TABLE DE MATIERE INTRODUCTION























...


...p.5 Etude prĂ©alable




























...p.6 1. Domaine et objectif de l’étude


















..


p.6 1.1. Champ de l’étude






















....

..p.6 1.1.1 Contexte du projet


















..



..p.6 1.1.2 Domaine du projet 


















.



..p.9 1.1.3 Description du projet
















..




.p.10 1.2 Contraintes organiques























.p.10 1.3 ModalitĂ© de dĂ©roulement



















.


.p.12 1.3.1 Ressources humaines

















..



.p.12 1.3.2 Contraintes de planning




















...p.12 1.3.3 Contraintes de budget





















..p.12 1.3.4 ContrĂŽle et suivi





















..

.p.12 2. Rapport sur l’existant
























...p.13 2.1 Analyse de flux d’information




















...p.13 2.2 ModĂšle conceptuel des traitements



















p.15 2.3 ModĂšles de donnĂ©es actuelles





















p.16 2.4 Rapport critique de la situation actuelle

















p.17 Etude dĂ©taillĂ©e




























....p.18 3. Solution proposĂ©e


























...p.18 3.1 Orientations du futur systĂšme d’information















.p.18 3.2 ModĂšle conceptuel des donnĂ©es











..







..p.18 3.2.1 Sous modĂšle de fabrication



















.p.18 3.2.2 Sous modĂšle des travaux divers

















..p.19 3.2.3 Sous modĂšle des travaux divers autres












.

..p.20 3.3 ModĂšle organisationnel des traitements















..
..p.21 3.3.1 Postes de travail























..p.21 3.3.2 Examen des tĂąches






















..p.22 3.4 ModĂšle organisationnel des donnĂ©es


















.p.22 3.4.1 Choix des donnĂ©es Ă  mĂ©moriser
















.
p.22 3.4.2 RĂ©partition des donnĂ©es



















.
.p.22 3.4.3 SĂ©curité                           ...p.22 3.5 ModĂšle logique des donnĂ©es





















..p.23 3.5.1 Base de donnĂ©es























..p.24 3.5.2 Description des tables





















.p.24 3.6 ModĂšle orientĂ© objet




















.



.p.29 3.6.1 Diagrammes de cas d’utilisation

















.p.29 3.6.2 Diagrammes de sĂ©quence



















...p.31
  • 4. 4 4. FonctionnalitĂ©s du logiciel























.p.32 4.1 FenĂȘtre principale « Suivi de production » 














..
p.32 4.2 Ecran « Gestion des opĂ©rateurs » 



















.p.34 4.3 Ecran « Gestion des postes de charge » 










...





p.35 4.4 Ecran « ContrĂŽle de Production » 



















p.36 4.5 Ecran « ContrĂŽle de Montage » 



















...p.37 4.6 Ecran « ContrĂŽle des travaux divers » 

















.p.38 4.7 Barre de navigation
























...p.39 Liste des applications utilisĂ©es














.

...




..p.39 CONCLUSIONS





















..




..
p.40 BIBLIOGRAPHIE

..























.
.p.41 ANNEXE 





..






















.

p.42
  • 5. 5 INTRODUCTION Ce travail de mĂ©moire de graduĂ© en informatique a pour but de fournir une application permettant d’amĂ©liorer de la gestion de la production. La gestion de la production repose essentiellement sur l'utilisation de l'information Ă  toutes les Ă©tapes de la fabrication : prĂ©vision, dĂ©cision, l’exĂ©cution et du contrĂŽle. Cette information est Ă©laborĂ©e, traitĂ©e, diffusĂ©e et stockĂ©e au sein du systĂšme d’information et de son infrastructure, le systĂšme informatique. Les systĂšmes d'information occupent aujourd’hui une place centrale dans la gestion de la production. Ce projet a comme objectif premier de dĂ©velopper les outils du contrĂŽle qui donnent la flexibilitĂ© quotidienne nĂ©cessaire pour rĂ©agir aux demandes requis d’atelier de Melotte SA. Il s’agit de rĂ©aliser un programme qui permet de connaĂźtre en dĂ©tail le pointage d’une journĂ©e complĂšte de chaque opĂ©rateur pour toutes les opĂ©rations. Cette application doit ĂȘtre dĂ©veloppĂ©e Ă  l’aide du langage de programmation C#. De plus cette application doit de se connecter Ă  une base de donnĂ©es MS Access et Ă  en extraire les donnĂ©es et de les afficher dans un format que l’application peut traiter. Bonne lecture et merci pour l’attention que vous avez accordĂ© Ă  mon mĂ©moire.
  • 6. 6 ETUDE PREALABLE 1. Domaine et objectif de l’étude 1.1. Champ de l’étude 1.1.1 Contexte du projet Groupe Gascoigne Melotte Gascoigne Melotte est un groupe international moderne, avec une forte capacitĂ© d’innovation, un rĂ©seau de distribution mondial et une expĂ©rience de plus d’un siĂšcle. Il propose des solutions complĂštes Ă  des problĂšmes compliquĂ©s dans l’agriculture et dans l’industrie. Les problĂšmes sont de nature technique, Ă©conomique et opĂ©rationnelle. Gascoigne Melotte est le leader en ce qui concerne la conception et le dĂ©veloppement des machines Ă  traire, et dispose d'installations dans plus de 60 pays du monde entier. A l'origine du dĂ©veloppement de Gascoigne Melotte, on trouve deux entreprises familiales : La "Maison Melotte" d'origine, fondĂ©e en 1852, s'est engagĂ©e dans l'industrie laitiĂšre en 1888, aprĂšs l'invention de l'Ă©crĂ©meuse Melotte par Jules Melotte, le fils du fondateur de la compagnie. L'accueil enthousiaste que ce produit reçut dans le monde entier assura le futur de Melotte dans l'industrie laitiĂšre. La sociĂ©tĂ© Gascoigne fut fondĂ©e Ă  Reading, en Angleterre, en 1927, par George H. Gascoigne, et obtint rapidement une bonne rĂ©putation dans le domaine de l'Ă©quipement de traite pratique et de qualitĂ©. . Quand Gascoigne et Melotte fusionnĂšrent, il rĂ©sulta de l'Ă©tendue de l'expĂ©rience et des capacitĂ©s d'innovation des deux compagnies une ligne de produits sans rivale. . Aujourd'hui, au dĂ©but du 21Ăšme siĂšcle, Gascoigne Melotte est toujours en tĂȘte, en dĂ©veloppant des mĂ©thodes pratiques utilisant la technologie des microprocesseurs pour la ferme, y compris le systĂšme de traite robotisĂ© Zenith entiĂšrement automatisĂ©. . Avec des usines de fabrication en Belgique et en Allemagne, et des sociĂ©tĂ©s de distribution en Hollande, en France, en Belgique, en Allemagne, en Irlande et au Royaume-Uni, Gascoigne Melotte est le fournisseur idĂ©al d'Ă©quipement de traite dans le monde entier. . Et ceci concerne non seulement les zones traditionnelles d'Ă©levage laitier en Europe, mais aussi l'Afrique, le Moyen-Orient et l'ExtrĂȘme-Orient. Gascoigne Melotte participe aux projets de production alimentaire dans des zones qui, jusqu'Ă  une Ă©poque rĂ©cente, Ă©taient des dĂ©serts arides. L'Ă©quipement produit par Gascoigne Melotte permet de traire des vaches, des brebis, des chĂšvres et des chameaux. . Les systĂšmes de traite Gascoigne Melotte conviennent Ă  toutes les fermes, que le troupeau soit constituĂ© de deux, ou de deux mille animaux. Les sociĂ©tĂ©s associĂ©es peuvent fournir tout autre Ă©quipement de ferme, des pompes Ă  purin aux citernes, des convoyeurs d'alimentation aux racloirs.
  • 7. 7 Diagramme des activitĂ©s Groupe GM Agriculture Industrie Production laitiĂšre Electronique Manutention lourde Sous traitance Conseil Agro alimentaire Projet clĂ© en main Froid industriel Production laitiĂšre : - Ă©quipements traite - des tanks Ă  lait - des piĂšces dĂ©tachĂ©es - silos ; Electronique : - gestion du troupeau - identification automatique - alimentation - enregistrement de la production laitiĂšre Conseil : - Ă©tude de projet - conduite de projet - planning, service ; Projet clĂ© en main : - projets agricoles - infrastructure et dĂ©veloppement rural ; Manutention lourde : - bandes transporteuses sur coussins d’ai - bandes transporteuses traditionnelles Agro-alimentaire : - tunnels de cuisson - industries laitiĂšres Froid industriel : - systĂšmes de refroidissement Ă  eau glacĂ©
  • 8. 8 Les diffĂ©rents services opĂ©rationnels Direction de la production Direction du commerce Direction administrative et financiĂšre Directeur gĂ©nĂ©ral Achats et approvisionnem ent Gestion de production Fabrication ComptabilitĂ© SecrĂ©tariat gĂ©nĂ©ral Personnel Service clientĂšle commande Ventes et commerciaux Magasin et expĂ©dition Ordonnancement Lancement Montage et transport Outillage ElectricitĂ© et Ă©lectronique STR Bureau d' Ă©tudes des mĂ©thodes PrĂ©sident-Directeur gĂ©nĂ©ral Direction de l'ingĂ©nierie Direction rĂ©gionale du commerce extĂ©rieur Equipements en aciers inoxydables Fig. 1.1.1- Organigramme de Gascoigne Melotte
  • 9. 9 Le siĂšge du Groupe GM est situĂ© Ă  Remicourt Ă  Belgique. GM est divisĂ©e en cinq dĂ©partements supervisĂ©s par le directeur gĂ©nĂ©ral : - IngĂ©nierie ; - Commerce extĂ©rieur ; - Administrative et Finances ; - Production ; - Commerce. Les diffĂ©rents services opĂ©rationnels sont en organigramme (Fig.1.1.1). 1.1.2 Domaine du projet Le domaine du projet concerne le Service de production. Il s’occupe de : Planification - gestion de la production horaire des opĂ©rateurs, gĂ©nĂ©ration d’ordres de fabrication, lancement des ordres de fabrication (vĂ©rification de la disponibilitĂ© des composants), analyse des charges par poste et par des ordres de fabrication. Ordonnancement - ordonnancement par rĂšgles de prioritĂ© des ordres de fabrication. Suivi de production - sortie des composants, enregistrement des quantitĂ©s fabriquĂ©es (piĂšces bonnes et rebutĂ©es) et des temps passĂ©s, clĂŽture des ordres. Valorisations - calcul du coĂ»t rĂ©el des ordres de fabrication terminĂ©s. Le domaine prĂ©sente en diagramme (fig.1.1.2). Mat.prem. Produits Res.humaines Equipements Production Gestion de fabrication Information Planification, ordonnancement, suivi de production Fig. 1.1.2-Diagramme du domaine du projet
  • 10. 10 La gestion de production – c’est la recherche d’une organisation efficace de la production par la gestion des ressources : Ressources humaines; - des opĂ©rateurs Informations - donnĂ©es statistiques Équipements - postes de travail MatiĂšres - MatiĂšres premiĂšres, Composants, Stocks 1.1.3 Description du projet Il faut Ă©crire un programme qui compose de plusieurs outils : - Outil de contrĂŽle de la production horaire de chaque opĂ©rateur pour toutes les opĂ©rations rĂ©alisĂ©es dans l’atelier afin de comparer leur production Ă  la production thĂ©orique. Ceci permettra de prĂ©venir les dĂ©rives et de faire les corrections nĂ©cessaires aussi de mettre en Ă©vidence les problĂšmes d’outillage et donc d’y remĂ©dier; - Outil permettent de connaĂźtre en dĂ©tail le pointage d’une journĂ©e complĂšte d’un opĂ©rateur afin de contrĂŽler l’utilisation des diffĂ©rents codes Ă  barres Ă  leur disposition. (Temps pour le rangement, pour aller chercher le matĂ©riel, pour la rĂ©alisation des travaux divers etc.) ; - Outil de lancement des commandes atelier par ajout d’un point de rĂ©approvisionnement et ce uniquement pour les piĂšces du premier niveau (Transformation de la matiĂšre premiĂšre en piĂšce) afin d’éviter les ruptures de stock pour ces piĂšces mais aussi de commander au bon moment les matiĂšres nĂ©cessaires. (Si on a ces piĂšces en stock, les assemblages peuvent ĂȘtre effectuĂ© rapidement et il n’est donc pas nĂ©cessaire de stocker des sous-ensembles.) ; - Outil de gestion « Charge machine ». Ce permet de connaĂźtre les commandes Ă  rĂ©aliser pour chaque poste de travail (ou machine). Ceci indispensable pour une bonne gestion des commandes atelier. Des informations supplĂ©mentaires sont nĂ©cessaires : Ajouter le mois pour lequel doit ĂȘtre fabriquer l’article afin d’éviter de produire une article qui n’est pas nĂ©cessaire tout de suite. 1.2 Contraintes organiques Actuellement l’environnement de Groupe GM relie deux rĂ©seaux Novell et Windows NT. Ils sont utilisĂ©s dans six sites principaux. L’entreprise dispose d’un parc de 176 ordinateurs personnels et 5 serveurs (Fig.1.2.1).
  • 11. 11 AT&T INTERNET Denmark Sweden Germany Swiss Ireland Belgium Belgium Netherlands Netherlands France United Kingdom FIREWALL Router Router Router Router Router Router Fig.1.2.1 Environnement de Groupe GM Dans le cas de ce projet, il faut de tenir compte un site – l’atelier de Remicourt (Fig.1.2.2). L’atelier utilise : - 6 terminaux de traitement de code barres, - 17 ordinateurs personnels sous Windows 2000 ; Applications de bureautique (Word, Excel, Access) ; - 1 serveur AS/400 sous OS/400 ; Base de donnĂ©es DB/2 ; - 1 serveur sous Windows 2000 Server; Base de donnĂ©es Access. Les PC et les terminaux fonctionnent en rĂ©seau Ethernet TCP/IP. Le programme doit ĂȘtre installer au PC du responsable d’atelier, sur plateforme Windows 2000, Service Pack 4, Framework 1.1.4. Il doit utiliser comme base de donnĂ©es MS Access 2000.
  • 12. 12 1.3 ModalitĂ© de dĂ©roulement 1.3.1 Ressources humaines Le programme a Ă©tĂ© commandĂ© par la direction de la sociĂ©tĂ© « Gascoigne Melotte ». ComitĂ© directeur : Mr. J.DERLUYN, prĂ©sidant de GM ; Mr. J.BEAUFORT, informaticien de GM et Mr. V.UDALOV, Ă©tudiant en informatique et responsable de l'Ă©tude et du dĂ©veloppement du projet. ComitĂ© utilisateurs : Mr. J-C.LAHAYE, responsable d’atelier, Mr. G.FERON, ingĂ©nieur. Groupe du projet : Mr. V.UDALOV, pour l'analyse et la programmation. 1.3.2 Contraintes de planning - Remise de l'Ă©tude prĂ©alable : 26 fĂ©vrier 2005 - Remise de l'Ă©tude dĂ©taillĂ©e : 15 avril 2005 - Remise de l’étude technique : 30 avril 2005 - Approbation finale du projet : 01 juin 2005 - Version bĂȘta et essais par les utilisateurs : 08 juin 2005 - Remise du mĂ©moire : 15 juin 2005 - Livraison du programme : 22 juin 2005. 1.3.3 Contraintes de budget Il n'y a aucune contrainte de budget car cette Ă©tude est le rĂ©sultat d’un mĂ©moire et donc ne peut ĂȘtre subsidiĂ© par des personnes ou des entreprises. 1.3.4 ContrĂŽle et suivi Le projet est rĂ©alisĂ© sous la guidance de deux parrains : interne - Mr. A.BAWIN et externe -Mr. J-C.LAHAYE.
  • 13. 13 2. Rapport sur l’existant 2.1 Analyse de flux d’information Le domaine entre en relation avec les autres. Les relations entre les domaines prĂ©senter en diagramme (Fig.2.1.1). Dans le diagramme, on a ajoutĂ© quelques flux, qui ne concernent pas directement le domaine du projet, mais permettent de comprendre la structure du systĂšme de production et de gestion. Direction Sa rĂŽle est dĂ©termination des charges sur les ressources globales par d’information statistique. Plan de Production Programme de production Ă  moyen terme (6 – 12 mois) qui fixe les quantitĂ©s qui devraient ĂȘtre produites. Le plan inclut des moyens de production, des ressources et des pĂ©riodes de fabrication. Poste de travail Les moyens de production de l'entreprise. Un poste de travail peut reprĂ©senter : - Machine particuliĂšre - Ligne de fabrication - Groupe de machines On distingue deux types de postes de charge : - Postes de charge qui se compose d'une ou plusieurs machines pour lesquels le calcul du temps prestĂ© peux effectuer - Postes de charge pour lesquels le calcul du temps prestĂ© ne peux pas effectuer et doit ĂȘtre calculĂ© manuellement. Ordonnancement OpĂ©ration qui consiste Ă  dĂ©finir la prioritĂ© des ordres de fabrication ou des commandes sur les diffĂ©rents postes de travail d'un atelier. Ordre Document donnant instruction Ă  la fabrication de produire. Fabrication Processus de fabrication des articles, c'est-Ă -dire la succession des opĂ©rations ou phases Ă  rĂ©aliser pour fabriquer un article. Une phase se dĂ©roule sur un poste de charge. Ils incluent des cycles de fabrication. Le cycle, c’est l'intervalle de temps nĂ©cessaire entre la date de lancement et la date d'entrĂ©e en stock de produits finis ou la date de livraison. C'est la somme des temps de prĂ©paration et rĂ©glage, des temps opĂ©ratoires, des temps d'attente etc. Article Terme gĂ©nĂ©rique qui permet de dĂ©finir tous les Ă©lĂ©ments achetĂ©s (matiĂšre, fourniture,
), transformĂ©s (semi-ouvrĂ©, sous-ensemble, produit fini), vendus (produit fini, nĂ©goce,
). VĂ©rification Il doit se faire en cohĂ©rence avec l'ordonnancement et aprĂšs s'ĂȘtre assurĂ© que les matiĂšres, composants et outillages sont disponibles.
  • 14. 14 Direction Atelier Ordre File OpĂ©rateur VĂ©rification des stocks Rapport statistique Plan de production Stock Emission Fabrication Sortie Article VĂ©rification des composants EntrĂ©e Ordonnancement Poste de travail Charger Fig.2.1.1 Diagramme des flux
  • 15. 15 2.2 ModĂšle conceptuel des traitements Au dĂ©but d’une pĂ©riode de travail (Exemple : une semaine), un responsable d’atelier reçoit des ordres de fabrication (Mode opĂ©ratoire de fabrication). Les dates limites des pĂ©riodes sont entrĂ©es dans un plan de production (RĂŽle de direction). Le service de Commerce vĂ©rifie les statuts de composants (Exemple : DISP -disponible, REFA - rĂ©servĂ© Ă  la fabrication, ENC - en cours de fabrication). La vĂ©rification permet d’éviter les ruptures de stock par l’ordonnancement des opĂ©rations de fabrication qui doivent permettre de satisfaire les ventes. Une fois que les ordres sont ordonnancĂ©s, il est possible de passer Ă  la phase de lancement de certains ordres en fabrication (Ă  condition que les matiĂšres et composants nĂ©cessaires soient disponibles). Apres la vĂ©rification (Ă  condition – positive, si nĂ©gatif – passer OF Ă  la file d'attente) le responsable donne un ordre de fabrication au opĂ©rateur. L’opĂ©rateur doit pointer le dĂ©but de travail. Le responsable d’atelier doit contrĂŽler de la production de chaque opĂ©rateur pour toutes les opĂ©rations (Fabrication). A la fin d’une pĂ©riode de travail, le responsable d’atelier doit envoyer un rapport Ă  la direction (OF lancĂ©/clĂŽturĂ©, quantitĂ©, productivitĂ©). OF – Ordre de fabrication A et B Composants disponibles Composants indisponible Verification PasserFile LancerOF EmisisonOF Direction D et C OK Rebut Fabrication PointeDebut D C ClĂŽrureOF Retouche A B Atelier Service Commerce Service Commerce Ordonnancer Fig.2.2 MCT
  • 16. 16 2.3 ModĂšles de donnĂ©es actuelles Une base de donnĂ©es existante compose de deux tables. Ces tables sont rĂ©cupĂ©rĂ©es de l’AS/400 et injectĂ©es dans MS Access via ODBC. Cette base est placĂ©e sur le PC du responsable d’atelier. Le traitement sur le PC se limite essentiellement Ă  la validation les informations.
  • 17. 17 2.4 Rapport critique de la situation actuelle La gestion de la production se dĂ©roule sur quatre horizons : - Horizon Ă  long terme, c'est un horizon de 12 Ă  18 mois. A ce niveau, on dĂ©termine les grands Ă©quilibres de charge. - Horizon Ă  moyen terme, de quelques mois, sur lequel on effectue le calcul des besoins pour passer les commandes aux fournisseurs ; on vĂ©rifie Ă©galement que la charge est compatible avec la capacitĂ©. - Horizon de court terme, de quelques semaines, sur lequel on effectue un planning prĂ©cis des fabrications prĂ©vues ; on peut encore ajuster la capacitĂ© main-d'oeuvre. - Horizon de trĂšs court terme, une semaine en gĂ©nĂ©ral, sur lequel on lance les fabrications Deux derniers horizons, ce sont les dĂ©cisions opĂ©rationnelles pour des ordres de fabrication, l’activitĂ© opĂ©rateurs et l’état de stock. Actuellement, la direction dĂ©termine un programme de production Ă  moyen terme (6 – 12 mois). Ce programme inclut des moyens de production, des ressources et des pĂ©riodes de fabrication. Mais, il n’y a pas les outils qui donnent la flexibilitĂ© quotidienne nĂ©cessaire pour rĂ©agir aux demandes : pannes, absence, urgence, problĂšmes d’outillage, rĂ©alisation des travaux divers etc. La situation actuelle ne permet pas de connaĂźtre l'Ă©tat de l'ordre de fabrication lancĂ© Ă  tout moment. De maniĂšre Ă©vidente, la crĂ©ation d’un programme de contrĂŽle de production permettrait le responsable d’atelier de faire les corrections nĂ©cessaires, reprenant les derniĂšres donnĂ©es connues.
  • 18. 18 ETUDE DETAILLEE 3. Solution proposĂ©e 3.1 Orientations du futur systĂšme d’information Le projet va tenter de rĂ©soudre des problĂšmes dans la gestion de production quotidienne : - gestion des opĂ©rateurs - gestion des postes de charge - contrĂŽle l’utilisation des diffĂ©rents codes Ă  barres - contrĂŽle de la production horaire et la correction nĂ©cessaire - gestion des ordres de fabrication de court terme (quelques semaines) et de trĂšs court terme (une semaine en gĂ©nĂ©ral) 3.2 ModĂšle conceptuel des donnĂ©es Le modĂšle de production Ă©tant relativement complexe, je prĂ©sente les entitĂ©s et les associations utilisĂ©es dans des sous modĂšles Il y a trois diffĂ©rents situations : - fabriquer des articles (Production, Montage) - rĂ©aliser des travaux divers - faire des travaux divers autres 3.2.1 Sous modĂšle de fabrication Commande - Document donnant instruction Ă  la fabrication de produire dans un dĂ©lai fixĂ©, une quantitĂ© donnĂ©e d'un article (Mode opĂ©ratoire de fabrication). Ordre - OpĂ©ration de la production ou de la rĂ©glage de la machine. OpĂ©rateur - Personne qui doit faire des travaux. Pour suivre l'activitĂ© de la main-d'oeuvre, on doit indiquer le code de l'opĂ©rateur dans les dĂ©clarations de production. Retouche - Lorsque l'on dĂ©clare des piĂšces rebutĂ©es lors des dĂ©clarations de production, on doit indiquer un code de cause de rebut. Cela permet d'Ă©tablir des statistiques de causes de rebut. Article - Produits finis, ClassPrior - Le code classe ABC permet de classer les commandes par leur prioritĂ© (DĂ©finir dans le plan production) Client - Promoteur de la commande Comporter - Commande porte sur une ou plusieurs opĂ©rations. Fabriquer - C'est l'intervalle de temps d’occupation pour chaque opĂ©ration (temps de prĂ©paration et rĂ©glage - Setup ou temps opĂ©ratoires - Production).
  • 19. 19 Un code Setup/Production doit ĂȘtre indiquĂ© pour toutes les dĂ©clarations de production. Ordre NoOrd Descr ProHor TpMont QntAprod Commande NoCmd DateEms OpĂ©rateur NoMatr Nom Statut Effectuer DateTR Comporter NbrOper Fabriquer DĂ©but Fin Temps SetProd ClĂŽt Qnt 1,N 1,N 1,N 1,1 1,1 1,N Article NoArt LibellĂ© Lg La Ht PBrut PNet Composer QuntĂ© 0,N 1,N Client IdClient LibellĂ© Appartenir1,N 1,1 Retouche IdRet LibellĂ© Faire DĂ©but Fin Temps 0,N 0,1 ClassPrior IdPrior LibellĂ© Lier 1,N1,1 Fig.3.2.1 MCD - fabrication 3.2.2 Sous modĂšle des travaux divers TravDiv - Travaux divers, on peut dire les ordres de travail non ordonnancĂ©s. RĂ©aliser - Temps de la rĂ©alisation de travail Responsable - Le gestionnaire est la personne responsable de la gestion des travaux divers. A chaque opĂ©ration de travail divers est associĂ© un code Responsable qui doit figurer dans cette table.
  • 20. 20 TravDiv NoTD Descr OpĂ©rateur NoMatr Nom Statut RĂ©aliser Debut Fin Temps Responsable IdRes Nom Article NoArt LibellĂ© Lg La Ht PBrut PNet Produire QuntĂ© Demander 0,N 0,1 1,N 1,1 1,N 1,1 Fig.3.2.2 MCD - travaux divers 3.2.3 Sous modĂšle des travaux divers autres TDA - Travaux divers autres (balayer, rĂ©paration, essai etc.). Il y a deux parties : Entretiens et Pannes. Inclure - Pour calculer de temps de travail. Commande NoCmd DateEms OpĂ©rateur NoMatr Nom Statut Effectuer DateTR 1,N 1,1 TDA IdRet LibellĂ© Inclure DĂ©but Fin Temps 0,1 0,N Fig.3.2.3 MCD – travaux divers autres
  • 21. 21 3.3 ModĂšle Organisationnel des Traitements PĂ©riode Direction Service Commerce Atelier Type Manuel Manuel A et B Dispon Indispon Verification Emission OF Passer Fille Lancer OF D et C OK Rebut Fabrication Pointer Debut ClĂŽture OF Retouche Ordonnancer Fig.3.2.3 MOT 3.3.1 Postes de travail Il existe un seul poste de travail situĂ© dans le bureau d’un responsable d’atelier, ce poste permettra de rĂ©aliser toutes les tĂąches.
  • 22. 22 3.3.2 Examen des tĂąches La tĂąche est connaĂźtre en dĂ©tail le pointage d’une journĂ©e complĂšte pour chaque opĂ©rateur. On peut diviser cette tĂąche globale par : 1. ContrĂŽle de Production 2. ContrĂŽle de Montage 3. ContrĂŽle des travaux divers 3.4 ModĂšle Organisationnel des DonnĂ©es 3.4.1 Choix des donnĂ©es Ă  mĂ©moriser Le MCD prĂ©sente toutes les entitĂ©s nĂ©cessaires et aucune d’elles ne semble susceptible de devoir ĂȘtre Ă©cartĂ©e. 3.4.2 RĂ©partition des donnĂ©es Car que le programme sera installĂ© sur une seule machine, il n'y aura pas de rĂ©partition des donnĂ©es sur d'autres machines. 3.4.3 SĂ©curitĂ© Car le programme sera installĂ© sur le PC du responsable d’atelier, il est la seule personne qui a l'accĂšs Ă  la gestion de production. Afin de manipuler des donnĂ©es l’utilisateur doit autoriser.
  • 23. 23 3.5 ModĂšle logique des donnĂ©es ORDRE_COMMANDE ORDRE_FABRIQUE FABRIQUE_MATRICUL COMMANDE_EFFECTUE EFFECTUE_MATRICUL REALISER_MATRICUL TRAVDIV_REALISER COMMANDE_INCLURE INCLURE_TDA ORDRE_POSTETRA COMPOSER_ARTICLE COMMANDE_COMPOSER ARTICLE_MODELE UTILISER_OUTILLAG ORDRE_UTILISER RESPONSA_TRAVDIV RETOUCHE_FAIRE FAIRE_COMMANDE Commande NoCmd DateEms INT DATE <pk> Ordre NoOrd NoCmd NoMach Mutat NuSer LibellĂ© PodHor TpMont QntAprod INT INT TEXT TEXT INT TEXT DOUBLE DOUBLE DOUBLE <pk> <fk1> <fk2> Matricule NoMatric Nom Statut INT TEXT TEXT <pk> Fabriquer NoOrd NoMatric Debut Fin Temps QuntĂ© SP Clot INT INT DATETIME DATETIME DOUBLE INT TEXT TEXT <fk1> <fk2> Effectuer NoCmd NoMatric DateTrv INT INT DATE <fk1> <fk2> Realiser NoMatric NoTD Debut Fin Temps INT INT DATETIME DATETIME DOUBLE TravDiv NoTD IdRes LibellĂ© INT TEXT TEXT <pk> <fk> Inclure NoCmd NoTDA Debut Fin T INT INT DATETIME DATETIME DOUBLE TDA NoTDA LibellĂ© INT TEXT <pk> PosteTrav NoMach LibellĂ© Section TEXT TEXT TEXT <pk> Composer NoArt NoCmd QuantĂ© TEXT INT DOUBLE <fk1> <fk2> Article NoArt NoMod LibellĂ© LG LA HT PBrut PNet TEXT INT TEXT DOUBLE DOUBLE DOUBLE DOUBLE DOUBLE <pk> <fk> Modele NoMod LibellĂ© INT TEXT <pk> Outillage NoOutls LibellĂ© TEXT TEXT <pk> Utiliser NoOutls NoOrd TEXT INT <fk1> <fk2> Retouche NoRet LibellĂ© INT TEXT <pk> Faire NoRet NoCmd Debut Fin Temps INT INT DATETIME DATETIME DOUBLE <fk1> <fk2> Responsable IdRes Nom TEXT TEXT <pk>
  • 24. 24 3.5.1 Base de donnĂ©es Pour crĂ©er la base de donnĂ©es j’ai utilisĂ© le script VBA (Voir Annexe). Fig.7.1 Base de donnĂ©es 3.9.2. Description des tables La base des donnĂ©es a crĂ©Ă©e en Microsoft Access 2000. Table : Matricule Elle regroupe les donnĂ©es des opĂ©rateurs qui travaillent dans l’atelier Champ DonnĂ©e ClĂ© Type Taille NOMATR NumĂ©ro de badge Primary NumĂ©rique NOM Nom et prĂ©nom Texte 30 STATUT Type de contrat Texte 16
  • 25. 25 Table : Commande Elle regroupe les informations des commandes de fabrication. La rĂ©fĂ©rence client est reprise ici comme clĂ© Ă©trangĂšre. Champ DonnĂ©e ClĂ© Type Taille NOCMD N° de commande Primary NumĂ©rique IDCLIENT Identif. du client Foreign NumĂ©rique IDPRIOR PrioritĂ© Foreign Texte 1 DATEEMISS Date document Date Table : Jobordre Qui regroupe les caractĂ©ristiques de l’opĂ©ration Champ DonnĂ©e ClĂ© Type Taille NORDRE N° opĂ©ration Primary NumĂ©rique NOCMD N° commande Foreign NumĂ©rique NOMACH N° machine Foreign Texte 6 MUTAT Mutation machines Texte 6 NUSER Nbr opĂ©rations NumĂ©rique DESCROPER Description Texte 30 PROHOR Production horaire NumĂ©rique TPMONT Temps montage NumĂ©rique QNTEAPROD QuantitĂ© Ă  produire NumĂ©rique Table : Article Qui regroupe les informations sur les articles. Champ DonnĂ©e ClĂ© Type Taille NOART N° d’article Primary Texte 7 IDSITE N° de place Foreign Texte 8 IDMOD N° de modĂšle Foreign NumĂ©rique LIBELLE Description Texte 30 LG Long NumĂ©rique LA Large NumĂ©rique HT Haut NumĂ©rique PBRUT Poids brut NumĂ©rique PNET Poids net NumĂ©rique Table : PosteCharge Qui regroupe les informations sur les machines. Touts les postes rattachĂ©s Ă  la mĂȘme section auront donc les mĂȘmes taux horaires. Champ DonnĂ©e ClĂ© Type Taille NOMACH N° de machine Primary Texte 6 LIBELLE Description Texte 30 SECTION Nom section Texte 16 Table : TDA Qui regroupe les informations sur les travaux divers autres Champ DonnĂ©e ClĂ© Type Taille NOTDA N° opĂ©ration Primary NumĂ©rique DESCR Description Texte 30
  • 26. 26 Table : TravDiv Qui regroupe les caractĂ©ristiques des ordres de travail non ordonnancĂ©s Champ DonnĂ©e ClĂ© Type Taille NOTD N° opĂ©ration Primary NumĂ©rique IDRES Responsable Foreign Texte 3 DESCR Description Texte 30 Table : Retouche Elle regroupe les informations sur les retouches Champ DonnĂ©e ClĂ© Type Taille CODERET Code retouche Primary NumĂ©rique DESCR Description Texte 30 Table : Responsable Table des gestionnaires qui sont des responsables de la gestion des travaux divers. Champ DonnĂ©e ClĂ© Type Taille IDRES Texte 3 NOM Texte 30 Table : Pointage Qui regroupe les informations sur EntrĂ©e/Sortie pour chaque opĂ©rateur Champ DonnĂ©e ClĂ© Type Taille NOMATRIC N° badge Foreign NumĂ©rique DEBUT EntrĂ©e Date/Heure FIN Sortie Date/Heure TEMPS Temps total, avec les pauses NumĂ©rique Table : Client Champ DonnĂ©e ClĂ© Type Taille IDCLIENT Identif. promoteur Primary NumĂ©rique LIBELLE Nom Texte 30 Table : ClassPrior Les informations sur la prioritĂ© de commande Champ DonnĂ©e ClĂ© Type Taille IDPRIOR Identif. prioritĂ© Primary Texte 1 LIBELLE Description Texte 20 Table : Modele Elle regroupe les informations sur les modĂšles (Ensemble des articles). Champ DonnĂ©e ClĂ© Type Taille IDMOD Identif. modĂšle Primary NumĂ©rique DESIGN Description Texte 30
  • 27. 27 Table : Outillage Elle regroupe les caractĂ©ristiques d’outil Champ DonnĂ©e ClĂ© Type Taille IDOUTIL Identif. outil Primary Texte 6 LIBELLE Description Texte 30 Table : Radar Lieu de stockage d’article Champ DonnĂ©e ClĂ© Type Taille IDSITE Id place Primary Texte 8 LIBELLE Description Texte 30 Table : Composer Qui permet de faire le lien entre la commande et les articles Ă  produire Champ DonnĂ©e ClĂ© Type Taille NOART N° article Foreign Texte 7 NOCMD N° commande Foreign NumĂ©rique QNTE QuantitĂ© Ă  produire NumĂ©rique Table : Effectuer Qui permet de faire le lien entre l’opĂ©rateur et les commandes de production Champ DonnĂ©e ClĂ© Type Taille NOCMD N° commande Foreign NumĂ©rique NOMATRIC N° badge Foreign NumĂ©rique DATETR Date travail Date Table : Fabriquer Qui permet de faire le lien entre l’opĂ©rateur et les ordres de fabrication. Savoir le temps chaque opĂ©ration et la quantitĂ© a produire. Indiquer l’opĂ©ration de production ou de rĂ©glage aussi clĂŽturer l’ordre de fabrication. Champ DonnĂ©e ClĂ© Type Taille NOMATRIC N° badge Foreign NumĂ©rique NORDRE N° ordre Foreign NumĂ©rique DEBUT DĂ©but opĂ©ration Date/Heure FIN Fin opĂ©ration Date/Heure TEMPS DurĂ©e opĂ©ration NumĂ©rique QNTPROD QuantitĂ© produite NumĂ©rique CODESP Setup/Production Texte 1 CODECLOT ClĂŽture Texte 1
  • 28. 28 Table : Faire Qui permet de faire le lien entre la commande et la retouche. Champ DonnĂ©e ClĂ© Type Taille CODERET Code retouche Foreign NumĂ©rique NOCMD N° commande Foreign NumĂ©rique DEBUT DĂ©but retouche Date/Heure FIN Fin retouche Date/Heure TEMPS DurĂ©e retouche NumĂ©rique Table : Inclure Qui permet de faire le lien entre la commande et les travaux divers spĂ©cieux. Calculer la durĂ©e de travail. Champ DonnĂ©e ClĂ© Type Taille NOTDA N° opĂ©ration Foreign NumĂ©rique NOCMD N° commande Foreign NumĂ©rique DEBUT DĂ©but opĂ©ration Date/Heure FIN Fin opĂ©ration Date/Heure TEMPS Temps prestĂ© NumĂ©rique Table : Produire Qui permet de faire le lien entre l’opĂ©ration et la quantitĂ© produite chaque article Champ DonnĂ©e ClĂ© Type Taille NOART N° article Foreign Texte 7 NOTD N° opĂ©ration Foreign NumĂ©rique QNTE QuantitĂ© produite NumĂ©rique Table : Realiser Qui permet de faire le lien entre l’opĂ©ration de travail divers et l’opĂ©rateur et savoir le temps de travail Champ DonnĂ©e ClĂ© Type Taille NOTD N° opĂ©ration Foreign NumĂ©rique NOMATRIC N° badge Foreign NumĂ©rique DEBUT DĂ©but opĂ©ration Date/Heure FIN Fin opĂ©ration Date/Heure TEMPS Temps prestĂ© NumĂ©rique Table : Utiliser Qui permet de faire le lien entre l’ordre de fabrication et les outils de travail Champ DonnĂ©e ClĂ© Type Taille NORDRE N° opĂ©ration Foreign NumĂ©rique IDOUTIL Id outil Foreign Texte 6
  • 29. 29 3.6 ModĂšle orientĂ© objet 3.6.1 Diagrammes de cas d’utilisation Responsable Ajouter opĂ©rateur Modifier opĂ©rateur Supprimer opĂ©rateur Verifier matricule Fig.3.6.1 Use case – Gestion des opĂ©rateurs L’utilisateur veut ajouter, modifier ou supprimer des donnĂ©es de l’opĂ©rateur. Il doit choisir le nom de l’opĂ©rateur. Responsable Modifier charge machine Calculer charge Verifier numĂ©ro Donner pĂ©riode Fig.3.6.2 Use case – Gestion des postes de travail Si l’utilisateur veut modifier ou fichier Charge machine, il doit choisir le numĂ©ro d’une machine. Il peut de calculer le temps de travail pour chaque machine.
  • 30. 30 Responsable ContrĂŽler production ContrĂŽler montage ContrĂŽler TD Calculer temps prestĂ© Calculer productivitĂ© RĂ©partir temps Classer par numĂ©ro Fig.3.6.3 Use case – Suivi de production L’utilisateur peut connaĂźtre toutes les opĂ©rations de production et de montage lancĂ© dans l’atelier, comparer la productivitĂ© rĂ©elle par la productivitĂ© thĂ©orique, savoir le temps pour rĂ©alisation des travaux divers.
  • 31. 31 3.6.2 Diagrammes de sĂ©quence Lancer programme Demande donnĂ©es Envoi donnĂ©es Afficher renseignements Traiter donnĂ©es Demande liste opĂ©rateurs Ajouter donnĂ©es Sauvegarder donnĂ©es Enregistrer donnĂ©es Quitter Demande liste opĂ©rateurs Affiche liste opĂ©rateurs Verification donnĂ©es requis Affiche message Suivi production Utilisateur Base DonnĂ©es Gestion opĂ©rateur Fig.3.6.2 Consulter le pointage global et ajouter des opĂ©rateurs L’utilisateur lance le programme, le programme envoie des requĂȘtes vers la base de donnĂ©es et aprĂšs la rĂ©ception les informations, on les traite et affiche le rĂ©sultat dans l’écran. Si l’utilisateur veut ajouter des donnĂ©es d’un opĂ©rateur, il demande une liste des opĂ©rateurs, il ajoute des donnĂ©es, il valide l’enregistrement. Le programme doit vĂ©rifier des donnĂ©es introduites et l’affiche un message (ok ou erreur) et aprĂšs la confirmation d’utilisateur, on envoie ces donnĂ©es vers la base de donnĂ©es.
  • 32. 32 4. FonctionnalitĂ©s du logiciel 4.1 FenĂȘtre principale « Suivi de production » Suivi de production, il s’agit de contrĂŽle quotidien : - Calculer le temps total pour toute l’atelier - Calculer le temps total et le pourcentage pour toutes les opĂ©rations de production - Calculer le temps total et le pourcentage pour toutes les opĂ©rations de montage - Calculer le temps total et le pourcentage pour touts les travaux divers - RĂ©partir le temps des travaux divers par : TDS (Travaux divers spĂ©cieux), TDA (Travaux divers autres), Retouche - Trier ces donnĂ©es par la date de travail ProblĂšmes : 1. Les donnĂ©es sont envoyĂ©es vers le serveur par les diffĂ©rents types de transaction: - Temps prestĂ© sans le dĂ©compte des pauses - Temps prestĂ© avec dĂ©compte des pauses Il faut calculer le temps total sans pauses. 2. Il y a les situations : Job multiple et Montage commun, quand l’opĂ©rateur utilise deux machine au mĂȘme temps. On doit de faire la rĂ©partition du temps, si un des jobs
  • 33. 33 multiples n'est pas complet (temps prestĂ©=0), aucun calcul de rĂ©partition n'est pas possible 3. Pour plusieurs postes de charge, le temps prestĂ© est calculĂ© sur base de la quantitĂ© introduite multipliĂ©e par la production horaire. C'est-Ă -dire il y a des situations quand l’opĂ©rateur n'a pas Ă©tĂ© pointĂ© le dĂ©but du travail. Pour Ă©liminer les temps des pauses et gĂ©rer des erreurs d’enregistrements, j’ai fait deux fonctions en Visual Basic (contrĂŽle dans une base de donnĂ©es) : Option Compare Database '================================================================== ' Fonction permettant Ă©liminer des temps de pause ' Author Vitali UDALOV '================================================================== Public Function EliminerPauses(DEBUT As Variant, FIN As Variant, Temp As Double) As Double Dim TimeVar As Double Const Debut1Pause = #9:00:00 AM# Const Fin1Pause = #9:12:00 AM# Const Debut2Pause = #12:00:00 PM# Const Fin2Pause = #12:30:00 PM# Const p1 = 0.2 Const p2 = 0.5 If IsNull(FIN) Then EliminerPauses = 0 Exit Function End If If IsEmpty(FIN) Then EliminerPauses = 0 Exit Function End If If (Format(DEBUT, "hh:nn:ss") < Debut1Pause And Format(FIN, "hh:nn:ss") > Fin2Pause) Then TimeVar = Temp - p1 - p2 ElseIf ((Format(DEBUT, "hh:nn:ss") < Debut1Pause) And (Format(FIN, "hh:nn:ss") > Fin1Pause And _ Format(FIN, "hh:nn:ss") < Debut2Pause)) Then TimeVar = Temp - p1 ElseIf ((Format(DEBUT, "hh:nn:ss") > Debut1Pause And Format(DEBUT, "hh:nn:ss") < Debut2Pause) And _ Format(FIN, "hh:nn:ss") > Fin2Pause) Then TimeVar = Temp - p2 Else TimeVar = Temp End If EliminerPauses = TimeVar End Function
  • 34. 34 RequĂȘte pour avoir le temps total de production : SELECT Sum(Fabriquer.TEMPS) AS SommeDeTEMPS FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD) INNER JOIN Fabriquer ON Jobordre.NORDRE = Fabriquer.NORDRE WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND ((Fabriquer.FIN) Is Not Null) AND ((Fabriquer.CODESP)<>"S") AND ((Commande.NOCMD)<>95007000)); RequĂȘte pour avoir le temps total de montage : SELECT Sum(Fabriquer.TEMPS) AS SommeDeTEMPS FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD) INNER JOIN Fabriquer ON Jobordre.NORDRE = Fabriquer.NORDRE WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND ((Fabriquer.FIN) Is Not Null) AND ((Fabriquer.CODESP)<>"P") AND ((Commande.NOCMD)<>95007000)); RequĂȘte pour avoir le temps total des travaux divers : SELECT Sum(Realiser.TEMPS) AS TempsDeTD FROM Realiser WHERE (((Realiser.DEBUT)>Date()-1 AND (Realiser.DEBUT)<Date()) AND ((Realiser.FIN) Is Not Null)); RequĂȘte pour avoir le temps total des travaux divers autres: SELECT Sum(Inclure.TEMPS) AS TempsDeTDA FROM Inclure WHERE (((Inclure.DEBUT)>Date()-1 AND (Inclure.DEBUT)<Date()) AND ((Inclure.FIN) Is Not Null)); RequĂȘte pour avoir le temps total des travaux divers spĂ©cieux: SELECT Sum(Fabriquer.TEMPS) AS TempsDeTDS FROM (Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD) INNER JOIN (Matricule INNER JOIN Fabriquer ON Matricule.NOMATRIC = Fabriquer.NOMATRIC) ON Jobordre.NORDRE = Fabriquer.NORDRE WHERE (((Fabriquer.DEBUT)>Date()-1 AND (Fabriquer.DEBUT)<Date()) AND ((Fabriquer.FIN)<> Is Not Null) AND ((Commande.NOCMD) = 95007000)); 4.2 Ecran « Gestion des opĂ©rateurs » Tous les champs d’éditions ont Ă©tĂ© remplis par des donnĂ©es de l’opĂ©rateur reprises de la base de donnĂ©es. Certains champs peuvent ĂȘtre vides. Gestion des opĂ©rateurs - ajouter, modifier et supprimer l’opĂ©rateur, la validation n’est faite que si les champs Matricule et Nom ont Ă©tĂ© remplis.
  • 35. 35 4.3 Ecran « Gestion des postes de charge »
  • 36. 36 Gestion des machines - ajouter, modifier et supprimer la poste de travail, la validation n’est faite que si le champ Code Poste a Ă©tĂ© rempli - calculer les frais pour chaque poste de travail, il faut choisir la pĂ©riode de travail, et les enregistre dans un fichier. 4.4 Ecran « ContrĂŽle de Production » ContrĂŽle de production, suivi des ordres de fabrication lancĂ©s - Calculer la durĂ©e de l’opĂ©ration - Si l’ordre de fabrication clĂŽturĂ©, calculer le pourcentage - Si la quantitĂ© n'a pas Ă©tĂ© pointĂ©e, corriger la quantitĂ© en consultant le fichier rĂ©sultat de travail - Trier par la date ProblĂšmes : 1. La durĂ©e d’une opĂ©ration est variĂ© de ‘minute’ Ă  ‘mois’. Il faut chercher les donnĂ©es : temps et quantitĂ©, pour une mĂȘme opĂ©ration 2. Il faut Ă©liminer le temps des pauses
  • 37. 37 RequĂȘte pour afficher des opĂ©rations de production: SELECT Matricule.NOMATRIC, Matricule.NOM, Commande.NOCMD, Jobordre.NORDRE, Jobordre.DESCROPER, Article.NOART, Article.LIBELLE, Fabriquer.DEBUT, Fabriquer.FIN, Fabriquer.TEMPS, Jobordre.PROHOR, Jobordre.QNTEAPROD, Fabriquer.QNTPROD, Fabriquer.CODECLOT FROM Article INNER JOIN (((Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD) INNER JOIN (Matricule INNER JOIN Fabriquer ON Matricule.NOMATRIC = Fabriquer.NOMATRIC) ON Jobordre.NORDRE = Fabriquer.NORDRE) INNER JOIN Composer ON Commande.NOCMD = Composer.NOCMD) ON Article.NOART = Composer.NOART WHERE (((Commande.NOCMD)<>95007000) AND ((Fabriquer.CODESP)<>"S") AND ((Fabriquer.CODECLOT)="C")) ORDER BY Matricule.NOM, Fabriquer.DEBUT DESC; 4.4 Ecran « ContrĂŽle de Montage » ContrĂŽle de montage, suivi des ordres de rĂ©glage machine lancĂ©s - Calculer la durĂ©e de l’opĂ©ration - Si l’ordre de fabrication clĂŽturĂ©, calculer le pourcentage - Trier par la date
  • 38. 38 RequĂȘte pour afficher des opĂ©rations de montage: SELECT Matricule.NOMATRIC, Matricule.NOM, Commande.NOCMD, Jobordre.NORDRE, Jobordre.DESCROPER, Article.NOART, Article.LIBELLE, Fabriquer.DEBUT, Fabriquer.FIN, Fabriquer.TEMPS, Jobordre.TPMONT, Fabriquer.CODECLOT FROM Article INNER JOIN (((Commande INNER JOIN Jobordre ON Commande.NOCMD = Jobordre.NOCMD) INNER JOIN (Matricule INNER JOIN Fabriquer ON Matricule.NOMATRIC = Fabriquer.NOMATRIC) ON Jobordre.NORDRE = Fabriquer.NORDRE) INNER JOIN Composer ON Commande.NOCMD = Composer.NOCMD) ON Article.NOART = Composer.NOART WHERE (((Commande.NOCMD)<>95007000) AND ((Fabriquer.CODESP)<>"P") AND ((Fabriquer.CODECLOT)="C")) ORDER BY Matricule.NOM, Fabriquer.DEBUT DESC; 4.5 Ecran « ContrĂŽle des travaux divers » ContrĂŽle des travaux divers - Calculer la durĂ©e de l’opĂ©ration - Trier par la date RequĂȘte pour afficher des informations des travaux divers: SELECT Matricule.NOMATRIC, Matricule.NOM, TravDiv.NOTD, TravDiv.DESCR, Realiser.DEBUT, Realiser.FIN, Realiser.TEMPS FROM TravDiv INNER JOIN (Matricule INNER JOIN Realiser ON Matricule.NOMATRIC = Realiser.NOMATRIC) ON TravDiv.NOTD = Realiser.NOTD WHERE (((Realiser.FIN) Is Not Null)) ORDER BY Matricule.NOM, Realiser.DEBUT DESC;
  • 39. 39 4.7 Barre de navigation Il s’agit d’un composant utilisateur qui implĂ©mente l’ensemble des techniques de navigation. Il m’évitera de rĂ©Ă©crire systĂ©matiquement les mĂȘmes mĂ©thodes. Que fait ce composant : - Il encapsule les problĂšmes de navigation et d’édition des donnĂ©es. - Il permet d’appeler automatiquement une fonction lors de l’ajout d’un enregistrement ou du dĂ©placement dans le jeu d’enregistrements - Il fournit un accĂšs Ă  l’enregistrement en cours - Il facilite la mise Ă  jour de la base de donnĂ©es en fournissant une mĂ©thode statique - Il met en place la gestion des Ă©ventuelles erreurs lors de la modification des donnĂ©es. Si on clique sur le premier bouton en partant de la gauche - On se positionne sur le premier Ă©lĂ©ment de la table Si on clique sur le deuxiĂšme bouton en partant de la gauche - On se positionne sur l’élĂ©ment prĂ©cĂšdent de la table Si on clique sur le troisiĂšme bouton en partant de la gauche - On se positionne sur l’élĂ©ment suivant de la table Si on clique sur le quatriĂšme bouton en partant de la gauche - On se positionne sur l’élĂ©ment dernier de la table Si on clique sur Valider : - VĂ©rification si les champs requis ont bien Ă©tĂ© remplis. Si non, un message d’erreur s’affiche - Si OK, le systĂšme vĂ©rifie que l’id n’existe pas encore. Si existe un message d’erreur s’affiche, sinon il y a sauvegarde des donnĂ©es - On rafraĂźchit la table pour que le nouvel Ă©lĂ©ment soit repris dans la liste Si on clique sur Annuler : - Annuler toutes les modifications Liste des applications utilisĂ©es - SmartDraw 7.01 - Logiciel graphique pour la crĂ©ation des diagrammes - PowerAMC 9.0 - Outil de modĂ©lisation graphique - CASE Studio 2 - Outil de modĂ©lisation de base de donnĂ©es - Microsoft Word 2000 – Editeur de texte - PDFEdit v7.1 - Editeur pdf - Microsoft Visual Studio .NET 2003 - Outils de dĂ©veloppement - Dacris NetXP - Outil pour amĂ©liorer l'interface utilisateur de leurs applications - Microsoft Access 2000 - Gestionnaire de bases de donnĂ©es
  • 40. 40 CONCLUSIONS L’objectif de ce travail a Ă©tĂ© atteint. Le programme de suivi de production embarquĂ© fonctionne. Ça donne les avantages pour d’organiser la production efficace. Il n’a pas encore Ă©tĂ© testĂ© dans une situation rĂ©elle, ce qui demanderait probablement quelques modifications mineures spĂ©cifiques au type d’utilisation. Ce programme est un module d’ensemble d’outils de gestion de l’entreprise. Mais elle peut ĂȘtre utilisĂ© de façon individuelle et de plus pourrait ĂȘtre intĂ©grĂ©, sans trop de problĂšmes, dans un logiciel GPAO. Lors de cette Ă©tude, de nombreux problĂšmes, de ce domaine, n’ont pas Ă©tudiĂ©s, il s’agit de : - gestion des stocks, rĂ©servation dans les stocks les composants du produit Ă  fabriquer - gestion de calendrier d’activitĂ© opĂ©rateurs - ordonnancement de production par la capacitĂ© de machine L’analyse de ces problĂšmes, c’est le travail de long temps. La planification future? DĂ©velopper un programme qui permet de rĂ©aliser la gestion pour toutes les Ă©tapes de la prĂ©vision, de la dĂ©cision, de l’exĂ©cution et du contrĂŽle. Ce travail de fin d’études m’a, Ă©videmment, permis d’appliquer toutes les connaissances acquises lors de ces annĂ©es d’études. Je me suis rendu compte de la difficultĂ© de mettre en pratique les matiĂšres vues dans les diffĂ©rents cours thĂ©oriques. Mais j’ai cependant appris Ă  gĂ©rer les contraintes humaines, mes choix et mon temps de travail
 Toutes choses que l’on ne trouve pas dans les manuels scolaires mais qui sont pourtant, fondamentales dans le monde professionnel. De plus ce travail m’a donnĂ© la connaissance d’avantage d’utilisation le systĂšme informatique dans le domaine de la gestion des entreprises et j’envisage des formations ou des Ă©tudes dans cette direction.
  • 41. 41 BIBLIOGRAPHIE Ouvrages - Joseph Gabay Merise et UML pour la modĂ©lisation des systĂšmes d'information Edition Dunod – ISBN: 2-10-005575-5 - Martin Fowler Le tout en poche UML Edition CampusPress - ISBN: 2-7440-1336-6 - Jay Hilyard, Stephen Teilhet C# Cookbook Edition O'Reilly – ISBN: 0-596-00339-0 - Simon Robinson, K. Scott Allen C# Professionnel Edition Wiley – ISBN: 0-7645-5759-9 - Brian Johnson, Craig Skibo Inside Microsoft Visual Studio.NET 2003 Edition Microsoft Press – ISBN: 0-7356-1874-7 - Alain Courtois, Maurice Pillet, Chantal Martin-Bonnefous Gestion de production Edition Organisation Eds D' – ISBN: 2-7081-2986-4 Support Ă©lectronique http://www.developpez.com/ http://www.csharpfr.com/ http://www.csharphelp.com/ www.codeproject.com/ www.uml.org http://uml.free.fr/ http://www.sybase.fr http://www.commentcamarche.net FAQ Merise http://uml.developpez.com/faq/merise/ FAQ UML http://uml.developpez.com/faq/
  • 42. 42 ANNEXE Fichier de crĂ©ation de la base de donnĂ©es sous format MS Access : ' Created 25/01/2005 ' Modified 04/03/2005 ' Project Suivi de production ' Company Melotte SA ' Author Vitali UDALOV ' Version 1.0.3 ' Database Access 2000 '======================================================= '=== MS Access 2000 database '=== '=== 1. Create a new database in the MS Access 2000 '=== 2. Create a new module '=== 3. Copy the SQL script into the new MS Access 2000 module '=== 4. Select from main menu "Tools" item "References..." and check the "Microsoft DAO '=== 3.6 Object Library." '=== 5. Place your mouse cursor somewhere in the main procedure Main() '=== 6. Run the module code (Click the "Run Sub/UserForm" button or press F5) '======================================================= Public dbs As DAO.Database Public tdf As DAO.TableDef Public idx As DAO.Index Public rel As DAO.Relation Sub Main() Set dbs = CurrentDb() On Error GoTo ErrorHandler Call CreateTables Call CreatePrimaryKeys Call CreateIndexes MsgBox "Script successfully processed.", vbInformation Exit Sub ErrorHandler: Select Case Err.Number Case 3010 MsgBox "Table " & tdf.Name & " allready exist!", vbInformation Err.Clear Case 3284 MsgBox "Index " & idx.Name & " for table " & tdf.Name & " allready exist!", vbInformation Err.Clear Case Else MsgBox Err.Description, vbCritical End Select
  • 43. 43 End Sub ' Create tables '=============== Sub CreateTables() Call CreateTable1 'Commande Call CreateTable2 'Article Call CreateTable3 'Composer Call CreateTable4 'Jobordre Call CreateTable5 'Matricule Call CreateTable6 'Fabriquer Call CreateTable7 'TravDiv Call CreateTable8 'Realiser Call CreateTable9 'Pointage Call CreateTable10 'Retouche Call CreateTable11 'TDA Call CreateTable12 'PosteCharge Call CreateTable13 'Outillage Call CreateTable14 'Utiliser Call CreateTable15 'Client Call CreateTable16 'Radar Call CreateTable18 'ClassPrior Call CreateTable20 'Modele Call CreateTable21 'Resposable Call CreateTable22 'Produir Call CreateTable23 'Faire Call CreateTable24 'Inclure Call CreateTable26 'Effectuer End Sub '=== Create table Commande ====== Sub CreateTable1() Set tdf = dbs.CreateTableDef( "Commande" ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("IDCLIENT", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("IDPRIOR", dbText, 1, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DATEEMISS", dbDate, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Article ====== Sub CreateTable2()
  • 44. 44 Set tdf = dbs.CreateTableDef( "Article" ) Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("IDSITE", dbText, 8, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("LG", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("LA", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("HT", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("PBRUT", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("PNET", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("IDMOD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Composer ====== Sub CreateTable3() Set tdf = dbs.CreateTableDef( "Composer" ) Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("Qnte", dbLong, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Jobordre ====== Sub CreateTable4() Set tdf = dbs.CreateTableDef( "Jobordre" ) Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOMACH", dbText, 6, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("MUTAT", dbText, 6, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("NUSER", dbInteger, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("DESCROPER", dbText, 30, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("PROHOR", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TPMONT", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("QNTEAPROD", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub
  • 45. 45 '=== Create table Matricule ====== Sub CreateTable5() Set tdf = dbs.CreateTableDef( "Matricule" ) Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOM", dbText, 30, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("STATUT", dbText, 16, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Fabriquer ====== Sub CreateTable6() Set tdf = dbs.CreateTableDef( "Fabriquer" ) Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("QNTPROD", dbLong, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("CODESP", dbText, 1, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("CODECLOT", dbText, 1, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table TravDiv ====== Sub CreateTable7() Set tdf = dbs.CreateTableDef( "TravDiv" ) Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("IDRES", dbText, 3, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPSTD", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub
  • 46. 46 '=== Create table Realiser ====== Sub CreateTable8() Set tdf = dbs.CreateTableDef( "Realiser" ) Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Pointage ====== Sub CreateTable9() Set tdf = dbs.CreateTableDef( "Pointage" ) Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Retouche ====== Sub CreateTable10() Set tdf = dbs.CreateTableDef( "Retouche" ) Call AddFieldToTable("CODERET", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table TDA ====== Sub CreateTable11() Set tdf = dbs.CreateTableDef( "TDA" )
  • 47. 47 Call AddFieldToTable("NOTDS", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DESCR", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table PosteCharge ====== Sub CreateTable12() Set tdf = dbs.CreateTableDef( "PosteCharge" ) Call AddFieldToTable("NOMACH", dbText, 6, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("SECTION", dbText, 16, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Outillage ====== Sub CreateTable13() Set tdf = dbs.CreateTableDef( "Outillage" ) Call AddFieldToTable("IDOUTIL", dbText, 6, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Utiliser ====== Sub CreateTable14() Set tdf = dbs.CreateTableDef( "Utiliser" ) Call AddFieldToTable("NORDRE", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("IDOUTIL", dbText, 6, 0, "", "", "", TRUE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Client ====== Sub CreateTable15()
  • 48. 48 Set tdf = dbs.CreateTableDef( "Client" ) Call AddFieldToTable("IDCLIENT", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Radar ====== Sub CreateTable16() Set tdf = dbs.CreateTableDef( "Radar" ) Call AddFieldToTable("IDSITE", dbText, 8, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table ClassPrior ====== Sub CreateTable18() Set tdf = dbs.CreateTableDef( "ClassPrior" ) Call AddFieldToTable("IDPRIOR", dbText, 1, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("LIBELLE", dbText, 20, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Modele ====== Sub CreateTable20() Set tdf = dbs.CreateTableDef( "Modele" ) Call AddFieldToTable("IDMOD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DESIGN", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Resposable ======
  • 49. 49 Sub CreateTable21() Set tdf = dbs.CreateTableDef( "Resposable" ) Call AddFieldToTable("IDRES", dbText, 3, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOM", dbText, 30, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Produir ====== Sub CreateTable22() Set tdf = dbs.CreateTableDef( "Produir" ) Call AddFieldToTable("NOART", dbText, 7, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOTD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("QNTE", dbLong, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Faire ====== Sub CreateTable23() Set tdf = dbs.CreateTableDef( "Faire" ) Call AddFieldToTable("CODERET", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Inclure ====== Sub CreateTable24() Set tdf = dbs.CreateTableDef( "Inclure" ) Call AddFieldToTable("NOTDS", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE )
  • 50. 50 Call AddFieldToTable("DEBUT", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("FIN", dbDate, 0, 0, "", "", "", FALSE, FALSE ) Call AddFieldToTable("TEMPS", dbDouble, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub '=== Create table Effectuer ====== Sub CreateTable26() Set tdf = dbs.CreateTableDef( "Effectuer" ) Call AddFieldToTable("NOCMD", dbLong, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("NOMATRIC", dbInteger, 0, 0, "", "", "", TRUE, FALSE ) Call AddFieldToTable("DATETR", dbDate, 0, 0, "", "", "", FALSE, FALSE ) dbs.TableDefs.Append tdf End Sub ' Create primary keys '===================== Sub CreatePrimaryKeys() '=== Create primary key for table Commande ====== Set tdf = dbs.TableDefs( "Commande" ) Set idx = tdf.CreateIndex( "pk_Commande" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOCMD", False ) tdf.Indexes.Append idx '=== Create primary key for table Article ====== Set tdf = dbs.TableDefs( "Article" ) Set idx = tdf.CreateIndex( "pk_Article" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False
  • 51. 51 Call AddFieldToIndex( "NOART", False ) tdf.Indexes.Append idx '=== Create primary key for table Composer ====== Set tdf = dbs.TableDefs( "Composer" ) Set idx = tdf.CreateIndex( "pk_Composer" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOART", False ) Call AddFieldToIndex( "NOCMD", False ) tdf.Indexes.Append idx '=== Create primary key for table Jobordre ====== Set tdf = dbs.TableDefs( "Jobordre" ) Set idx = tdf.CreateIndex( "pk_Jobordre" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NORDRE", False ) tdf.Indexes.Append idx '=== Create primary key for table Matricule ====== Set tdf = dbs.TableDefs( "Matricule" ) Set idx = tdf.CreateIndex( "pk_Matricule" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOMATRIC", False ) tdf.Indexes.Append idx '=== Create primary key for table Fabriquer ====== Set tdf = dbs.TableDefs( "Fabriquer" ) Set idx = tdf.CreateIndex( "pk_Fabriquer" )
  • 52. 52 idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NORDRE", False ) Call AddFieldToIndex( "NOMATRIC", False ) tdf.Indexes.Append idx '=== Create primary key for table TravDiv ====== Set tdf = dbs.TableDefs( "TravDiv" ) Set idx = tdf.CreateIndex( "pk_TravDiv" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOTD", False ) tdf.Indexes.Append idx '=== Create primary key for table Realiser ====== Set tdf = dbs.TableDefs( "Realiser" ) Set idx = tdf.CreateIndex( "pk_Realiser" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOTD", False ) Call AddFieldToIndex( "NOMATRIC", False ) tdf.Indexes.Append idx '=== Create primary key for table Pointage ====== Set tdf = dbs.TableDefs( "Pointage" ) Set idx = tdf.CreateIndex( "pk_Pointage" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOMATRIC", False ) tdf.Indexes.Append idx '=== Create primary key for table Retouche ======
  • 53. 53 Set tdf = dbs.TableDefs( "Retouche" ) Set idx = tdf.CreateIndex( "pk_Retouche" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "CODERET", False ) tdf.Indexes.Append idx '=== Create primary key for table TDA ====== Set tdf = dbs.TableDefs( "TDA" ) Set idx = tdf.CreateIndex( "pk_TDA" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOTDS", False ) tdf.Indexes.Append idx '=== Create primary key for table PosteCharge ====== Set tdf = dbs.TableDefs( "PosteCharge" ) Set idx = tdf.CreateIndex( "pk_PosteCharge" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOMACH", False ) tdf.Indexes.Append idx '=== Create primary key for table Outillage ====== Set tdf = dbs.TableDefs( "Outillage" ) Set idx = tdf.CreateIndex( "pk_Outillage" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "IDOUTIL", False ) tdf.Indexes.Append idx
  • 54. 54 '=== Create primary key for table Utiliser ====== Set tdf = dbs.TableDefs( "Utiliser" ) Set idx = tdf.CreateIndex( "pk_Utiliser" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NORDRE", False ) Call AddFieldToIndex( "IDOUTIL", False ) tdf.Indexes.Append idx '=== Create primary key for table Client ====== Set tdf = dbs.TableDefs( "Client" ) Set idx = tdf.CreateIndex( "pk_Client" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "IDCLIENT", False ) tdf.Indexes.Append idx '=== Create primary key for table Radar ====== Set tdf = dbs.TableDefs( "Radar" ) Set idx = tdf.CreateIndex( "pk_Radar" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "IDSITE", False ) tdf.Indexes.Append idx '=== Create primary key for table ClassPrior ====== Set tdf = dbs.TableDefs( "ClassPrior" ) Set idx = tdf.CreateIndex( "pk_ClassPrior" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False
  • 55. 55 Call AddFieldToIndex( "IDPRIOR", False ) tdf.Indexes.Append idx '=== Create primary key for table Modele ====== Set tdf = dbs.TableDefs( "Modele" ) Set idx = tdf.CreateIndex( "pk_Modele" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "IDMOD", False ) tdf.Indexes.Append idx '=== Create primary key for table Resposable ====== Set tdf = dbs.TableDefs( "Resposable" ) Set idx = tdf.CreateIndex( "pk_Resposable" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "IDRES", False ) tdf.Indexes.Append idx '=== Create primary key for table Faire ====== Set tdf = dbs.TableDefs( "Faire" ) Set idx = tdf.CreateIndex( "pk_Faire" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "CODERET", False ) Call AddFieldToIndex( "NOCMD", False ) tdf.Indexes.Append idx '=== Create primary key for table Inclure ====== Set tdf = dbs.TableDefs( "Inclure" ) Set idx = tdf.CreateIndex( "pk_Inclure" ) idx.Primary = True
  • 56. 56 idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOTDS", False ) Call AddFieldToIndex( "NOCMD", False ) tdf.Indexes.Append idx '=== Create primary key for table Effectuer ====== Set tdf = dbs.TableDefs( "Effectuer" ) Set idx = tdf.CreateIndex( "pk_Effectuer" ) idx.Primary = True idx.Unique = True idx.IgnoreNulls = False Call AddFieldToIndex( "NOCMD", False ) Call AddFieldToIndex( "NOMATRIC", False ) tdf.Indexes.Append idx End Sub ' Create indexes '================ Sub CreateIndexes() End Sub ' Add fields to table '===================== Sub AddFieldToTable(FieldName As String, DataType As String, SizeCol As Integer, Attributes As Long, DefaultValue As Variant, ValText As String, ValRule As String, NotN As Boolean, ZeroLength As Boolean) Dim fld As DAO.Field Set fld = tdf.CreateField( FieldName, DataType ) If SizeCol <> 0 Then fld.Size = SizeCol If Attributes <> 0 Then fld.Attributes = Attributes fld.Required = NotN If DataType = dbText or DataType = dbMemo Then fld.AllowZeroLength = ZeroLength fld.DefaultValue = DefaultValue fld.ValidationRule = ValRule
  • 57. 57 fld.ValidationText = ValText tdf.Fields.Append fld End Sub ' Add properties to table '========================= Sub AddPropertyToTable( PropertyName As String, Value As Variant, DataType As String) Dim prp As DAO.Property Set prp = tdf.CreateProperty(PropertyName, DataType, Value) tdf.Properties.Append prp End Sub ' Add properties to field '========================= Sub AddPropertyToField( FieldName As String, PropertyName As String, Value As Variant, DataType As String) Dim prp As DAO.Property Dim fld As DAO.Field Set fld = tdf.Fields( FieldName ) Set prp = fld.CreateProperty(PropertyName, DataType, Value) fld.Properties.Append prp End Sub ' Add fields to index '===================== Sub AddFieldToIndex( FieldName As String, Descending As Boolean ) Dim fld As DAO.Field Set fld = idx.CreateField( FieldName ) If Descending = True Then fld.Attributes = dbDescending idx.Fields.Append fld End Sub