IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Planification et charges


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Planification et charges
    Bonjour a tous,

    Je cherche une solution pour faire un petit programme me permettant de planifier une production.

    Exemple :

    Le produit A est constitué de 3 opératoires (OP1 = 4h / OP2 = 1h / OP3 = 5h).
    Le produit B est constitué de 2 opérations (OP1 = 1h / OP3 = 1h).
    Le produit C est constitué d'une opération (OP2 = 6h)


    L'ensemble des opérations pour chaque produit est enregistré dans une gamme opératoire.
    La gamme opératoire a un début, soit une date de mise en production.
    L'ensemble des opérations que dicte la gamme doit être exécuté dans l’ordre.

    Je voudrai connaître la date de fin de réalisation malgré les en cours déjà planifier et lancer.


    OP1 : 4h (produit A) + 1h (produit B) = 5h d'activité
    OP2 : 1h (produit A) + 6h (produit C) = 7h d'activité
    OP3 : 5h (produit A) + 1h (produit B) = 6h d'activité


    Nous pouvons donc en déduire ; si les produit sont mise en production en même temps, mais dans l'ordre soit produit A, produit B, produit C, leurs temps de réalisation sont les suivant :

    Produit A = 12h
    Produit B = 6h
    Produit C = 6h

    OP1: /A/A/A/A/B
    OP2: /C/C/C/C/C/C/A
    OP3: /*/*/*/*/*/B/*/A/A/A/A/A

    Faire cette planification pour trois articles est relativement facile, mais quand le nombre augmente cela devient très compliqué .... :-(

    Merci d'avance pour votre aide et vos idées ! :-)

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 605
    Points
    5 605
    Par défaut
    Bonjour,

    Une façon de faire utilisant Excel. L'idée est de "pousser" les opérations qui ne peuvent se faire tant que l'opération est en cours pour un autre produit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub Plan()
        Dim nOp As Long, nPr As Long, kOp As Long, kPr As Long
        Dim kR As Long, kC As Long, kRfin As Long, d As Long, kRop As Long
        nOp = 3     '--- nb opérations
        nPr = 3     '--- nb Produits
        ThisWorkbook.Activate
        Worksheets("Plan").Select
        kRfin = WorksheetFunction.CountA(Rows("1:" & nOp * nPr)) - nOp * nPr
        For kC = 3 To kRfin
            For kOp = 1 To nOp
                d = 0
                kRop = 0
                '--- détermine nouvelle production à lancer possible
                For kR = kOp To kRfin Step nOp
                    If Cells(kR, kC) <> "" Then
                        If Val(Cells(kR, kC - 1)) > 0 Then
                            d = Val(Cells(kR, kC))
                            kRop = kR
                        ElseIf Val(Cells(kR, kC)) > d Then
                            d = Val(Cells(kR, kC))
                            kRop = kR
                        End If
                    End If
                Next kR
                '--- si production à lancer,
                '--- pousser celles qui auraient également pu démarrer au même moment
                If kRop > 0 Then
                    For kR = kOp To kRfin Step nOp
                        If kR <> kRop And Cells(kR, kC) <> "" Then
                            Range(Cells(kR, kC), Cells(kR + nOp - kOp, kC + d - 1)).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
                        End If
                    Next kR
                End If
            Next kOp
        Next kC
    End Sub
    A adapter!
    Cordialement.

    P.S. Ligne 8 corrigée.
    Fichiers attachés Fichiers attachés

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut Possibilité avec Access
    Bonjour,

    C'est possible de le faire avec Access, après avoir créé les bonnes tables.

    Une table pour enregistrer les opérations sur les différents produits.

    Une table pour ensuite planifier ces opérations

    Le code, peut-être un peu trop long, utilise des findfirst, findlast,..., sur des recordset. ça évite de faire trop de requêtes pour filtrer les données.

    Je n'ai pas commenté le code, ni testé sur d'autres données que les vôtres, ni simplifié, je regarderai ce week-end,

    Ajout des commentaires + correction d'un bug..

    Cdlt,
    Fichiers attachés Fichiers attachés

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Monsieur;

    Tout d'abord je tenais à vous remercier pour vos réponses.
    Effectivement je cherche une solution sur access car l'ensemble du reste de ma base décisionnelle est sur Access.

    LW

  5. #5
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    J'ai commenté le code VBA Access.

    Si vous avez des difficultés n'hésitez pas à demander de l'aide

    Cdlt,

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    La suite de la conversation, avec l'autre problème est ici.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Idéalement, dans la requête R_Detail_OF, il faudrait classer les données suivant les champs IdOperation, IdOF ou IdOperation, DateDebut.
    DateDebut étant un champ de la table T_Planification.

    L'ordre des IOperation est aussi important.

    Cdlt,

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour Monsieur,

    J'ai eu le temps de corriger un certain nombre de bugs sur le fichier exemple.

    Désormais, il n'y a plus l'obligation de respecter l'ordre des identifiants pour les opérations.

    J'ai corrigé un bug concernant la mise à jour des dates de début et de fin des OF.

    On copie les nouveaux OF du planning dans la table T_Planification.

    On parcourt la liste des opérations des OF.

    Pour chaque opération, on ordonne les produits devant passer sur cette opération (produit associé à un OF), et on calcule pour chaque produit la date de passage sur cette opération en fonction des produits précédent sur cette opération.
    Puis on enregistre ces infos (IdOF, DateDebutOperation, DuréeOperation) dans la table T_Detail_Planification (planning des en cours). L'IDOF permettant d'identifier le produit.

    les dates de début des opérations de l'OF, plus la durée de ces opérations pour une quantité de produit, va nous permettre de calculer la date de début et de fin de l'OF.

    Note : Comme je l'ai imaginé, une opération doit être identifiée par un numéro unique, cette opération peut faire partie de plusieurs gammes opératoires.

    J'ai mis à jour la pièce jointe.

    Cdlt,

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Voici les derniers résultats obtenus après planification sur le dernier exemple.

    J'ai imaginé des chiffres, donc ils sont peut-être pas très réalistes, mais le but c'est vraiment de vous donner des résultats pour que vous puissiez mieux comprendre le fonctionnement de la base.

    Planification de la production par opération :

    Nom : planification_par_operation.png
Affichages : 277
Taille : 44,9 Ko

    Planification de la production par OF :

    Nom : planification_par_of.png
Affichages : 231
Taille : 46,7 Ko

    J'ai mis à jour le fichier.

    Cdlt,

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Concernant le code, ça peut paraître compliqué,
    mais en fait ça ne l'est pas tant que ça :

    On parcourt dans l'ordre les OF à planifier.
    Pour chaque OF, on parcourt ses opérations.
    Pour chaque opération, on sélectionne les OF devant passer sur l'opération dans l'ordre de priorité (cf. table temporaire pour les sélections).

    Cdlt,

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Monsieur,

    Merci infiniment pour votre travail !

    Je n'ai pas eu le temps de tout regarder, mais je pense avoir plus ou moins compris le fonctionnement.

    Serait-il possible de définir une plage horaire de travail, exemple 6h45 - 9h / 9h15 - 12h30 / 13h15 - 16h30 ?

    Merci encore !

    Excellente journée.

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Cette plage horaire définirai donc la période durant laquelle les gammes opératoires fonctionnent ?

    Cdlt,

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonsoir,

    Les plages horaires contenues dans la table T_Plages_Heures, sont parcourues au moment de l'ajout d'une opération planifiée dans la table T_Detail_Planification, avec découpage de la durée de l'opération sur plusieurs lignes (plusieurs lignes avec dureeOperation, DateDebutOperation, DateFinOperation pour une même opération).

    J'ai contrôlés les résultats sur le formulaire F_Planification_Production, ça me semble jouer..

    Cdlt,

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mai 2020
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour Monsieur;

    Merci Infiniment pour votre aide et votre patience !
    Le problème est résolu !

    Excellente journée
    LW

  15. #15
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Merci !

    Pas mal de détours, pour ensuite simplifier par ajustements.

    Cdlt,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/03/2013, 19h31
  2. Réponses: 8
    Dernier message: 19/03/2008, 19h08
  3. [SQL Serveur] prise en charge de l'arabe
    Par lamiae18 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/03/2004, 12h33
  4. DLL Borland chargée par Windows: crash
    Par bocher dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/01/2004, 12h09
  5. Charge de la machine
    Par Gogoye dans le forum C
    Réponses: 4
    Dernier message: 06/10/2003, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo