Gestion de la planification

Bonjour

Je souhaite mettre par machine un planning de fabrication. Chaque semaine je ferai l'extraction d'un fichier Excel de la GPAO avec tous les ordres de fabrication et leur état d'avancement. Je vous met un exemple pour vous montrer à quoi cela pourrait ressembler.

Vous avez en colonne A les numéros d'opérations, en colonne B le nom de l'opération, en colonne C la machine , en colonne D le numéro d'ordre de fabrication et en colonne E le délai final de livraison au client. Dans les colonnes K et L, vous avez les temps standards par opération.

Dans un premier temps, avant de mettre en place un planning par machine, j'aimerais pour chaque opération, et par rapport au délai final du client, avoir une date de début et une date de fin objectives.

Je mets manuellement pour un ordre de fabrication en colonne H et I ce que j'aimerais obtenir.

Merci pour votre aide

Bonjour SupplyChain.

Je n'arrive pas à comprendre qu'elle est ta méthode de calcul pour ta date de début et ta date de fin si tu peux m'expliquer parce que là rideau complet

Cdlt.

On va dire que la date de début d'une opération correspond à la date de fin de l'opé précédente.

Par exemple si ma dernière opération dure 3 jours (tableau dans les colonnes KL) et que mon délai client est le vendredi 21 mars

alors je dois commencer ma dernière opération le 18/03 et la terminer le 21/03 pour livrer mon client à cette date.

Hello SupplyChain.

Dis moi si celà te conviens.

Cdlt.

Oh my god, tu es mieux que la MAAF, tu asssures ) Merci

Mais pour que je comprenne et adapte à d'autres formats de données, peux tu m'expliquer comment tu as défini tes variables et ta programmation dis toi que j'ai 7 ans pour m'expliquer

Sub planning()

derligne = Cells(Rows.Count, 1).End(xlUp).Row

numof = Cells(derligne, 4)

For l = derligne To 3 Step -1

If numof = Cells(l, 4) Then

If l = derligne Then

Range("G" & l) = Range("E" & l)

Else

Range("G" & l) = Range("F" & l + 1)

End If

Else

numof = Cells(l, 4)

Range("G" & l) = Range("E" & l)

End If

Next l

End Sub

Coucou

Sub planning()

derligne = Cells(Rows.Count, 1).End(xlUp).Row 'Me permet de savoir cb y a de ligne dans la feuille et j'affecte le nb à la variable derligne
numof = Cells(derligne, 4) 'j'affecte le numof de la derniere ligne à la variable numof

For l = derligne To 3 Step -1 'je boucle de la derniere ligne jusqu'a la 3eme avec la variable l
If numof = Cells(l, 4) Then 'Je test si la cellule de la ligne l et de la colonne 4 est égale à la valeur de la variable numof
If l = derligne Then 'Je test si l est égale à la derniere ligne de la feuille
Range("G" & l) = Range("E" & l) 'Si le test de l est égale à la derniere ligne alors la cellule de ligne l et de la colonne G est égale à la cellule de la ligne l et de la colonne E
Else
Range("G" & l) = Range("F" & l + 1) 'Si le test de l n'est pas égale à la derniere ligne alors la cellule de ligne l et de la colonne G est égale à la cellule de ligne l + 1 de la colonne F
End If
Else 'Si le test de la cellule de ligne l et de la colonne 4 n'est pas égale à la valeur de la variable numof alors
numof = Cells(l, 4) 'la valeur de la cellule de la ligne l et de la colonne 4 est affectée à la variable numof
Range("G" & l) = Range("E" & l) 'la cellule de la ligne l et de la colonne G est égale à la cellule de la ligne l de la colonne E
End If
Next l 'Fin de la boucle

'En espérant que ca t'aide :-D
End Sub

Cdlt

Merci c'est clair, j'ai bien compris. Je travaille sur l'étape suivante et reviens vers toi si tu le souhaites.

Bonjour

Voici la suite que j'aimerais obtenir, j'appelle cela le chemin de fer ou le flux opérationnel.

J'aimerais que pour chaque OF (ordre de fabrication), il me liste en auto les opé restantes

Bonjour SupplyChain.

Dis moi si ça te conviens faut tester car je n'ai pas eu trop le tps il subsiste peut etre des erreurs.

Cdlt.

Super MERCIIIIIIIIIIIIIII ca fonctionne

de la même manière que la macro précédente, tu peux m'expliquer le codage ?

Merci

Private Sub CommandButton1_Click()

Set ws1 = Sheets("Liste OF")

Set ws2 = Sheets("Chemin de fer")

dlws1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1

dlws2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1

OF = ws1.Cells(2, 5)

For l = 2 To dlws1

If OF <> ws1.Cells(l, 5) Then

ws1.Range("D" & l - 1, "F" & l - 1).Copy Destination:=ws2.Range("A" & dlws2)

OF = ws1.Cells(l, 5)

dlws2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1

If ws2.Cells(dlws2, 5) = "" Then

ws2.Cells(dlws2, 5) = ws1.Range("B" & l)

Else

dcws2 = Cells(dlws2, Columns.Count).End(xlToLeft).Column + 1

ws2.Cells(dlws2, dcws2) = ws1.Range("B" & l)

End If

Else

If ws2.Cells(dlws2, 5) = "" Then

ws2.Cells(dlws2, 5) = ws1.Range("B" & l)

Else

dcws2 = Cells(dlws2, Columns.Count).End(xlToLeft).Column + 1

ws2.Cells(dlws2, dcws2) = ws1.Range("B" & l)

End If

End If

Next

Columns("B:X").AutoFit

End Sub

Ok voici mes 'tits commentaires

Private Sub CommandButton1_Click()
Set ws1 = Sheets("Liste OF") 'J'affecte le feuillet Liste OF à la variable ws1
Set ws2 = Sheets("Chemin de fer") 'J'affecte le feuillet Chemin de fer à la variable ws2

dlws1 = ws1.Cells(Rows.Count, 1).End(xlUp).Row + 1 'J'affecte le nombre de lignes utilisées dans le feuillet Liste OF auquel j'ajoute 1 à la variable dlws1
dlws2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1 'J'affecte le nombre de lignes utilisées dans le feuillet Chemin de fer auquel j'ajoute 1 à la variable dlws2

OF = ws1.Cells(2, 5) 'J'affecte la valeur de la cellule E2 à la variable OF

For l = 2 To dlws1 'Je boucle de 2 à dlws1
    If OF <> ws1.Cells(l, 5) Then 'Je teste (test1) si la valeur de la variable OF est différente de la valeur de de la cellule E et le numéro de la variable l sont différentes
        ws1.Range("D" & l - 1, "F" & l - 1).Copy Destination:=ws2.Range("A" & dlws2)'Si le test1 est vrai je copie les cellules de D à F de la ligne l du feuillet List OF vers la cellule A de la ligne dlws2 du feuillet chemin de fer
        OF = ws1.Cells(l, 5) 'J'affecte la valeur de la cellule E ligne l du feuillet List OF à la variable OF
        dlws2 = ws2.Cells(Rows.Count, 1).End(xlUp).Row + 1 'J'affecte le nombre de lignes utilisées auquel j'ajoute 1 à la variable dlws2
        If ws2.Cells(dlws2, 5) = "" Then 'Je teste (test2) si la cellule E de la ligne dlws2 du feuillet chemin de fer est vide
            ws2.Cells(dlws2, 5) = ws1.Range("B" & l) 'Si le test2 est vrai la cellule E de ligne dlws2 est égale à la valeur de la cellule B de ligne l du feuillet List OF
        Else
            dcws2 = Cells(dlws2, Columns.Count).End(xlToLeft).Column + 1 'Si le test2 est faux j'affecte le nombre de colonnes utilisées de la ligne dlws2 auquel j'ajoute +1 à la variable dcws2
            ws2.Cells(dlws2, dcws2) = ws1.Range("B" & l) 'La cellule de la ligne dlws2 colonne dcws2  est égale à la cellule B de la ligne l du feuillet List OF
        End If

    Else
        If ws2.Cells(dlws2, 5) = "" Then 'Si le test1 est faux alors je teste (test3) si la valeur de la cellule E de la ligne dlws2 est vide
            ws2.Cells(dlws2, 5) = ws1.Range("B" & l) 'Si test3 est vrai alors j'indique que la valeur de la cellule E de la ligne dlws2 du feuillet Chemin de fer est égale à la cellule B de la ligne l du feuillet List OF
        Else
            dcws2 = Cells(dlws2, Columns.Count).End(xlToLeft).Column + 1 'Si le test3 est faux alors j'affecte le nombre de colonnes utilisées de la ligne dlws2 à la variable dcws2
            ws2.Cells(dlws2, dcws2) = ws1.Range("B" & l) 'J'indique que la cellule de la ligne dlws2 et de la colonne dcws2 du feuillet Chemin de fer est égale à la valeur de la cellule B de la ligne l du feuillet Liste OF
        End If
    End If
Next
Columns("B:X").AutoFit 'J'élargis les colonnes de B à X du feuillet Chemin de fer pour que ça soit plus beau :-D
End Sub

Voilà en espérant que ça soit à peu près clair.

Cdlt.

Ok merci je vais prendre le temps de comprendre. Merci en tout cas !!! Je reviens vers toi

Petite question. Dans la feuile Liste OF, colonne G "date début". Peut-on mettre la formule sous une macro.

Car comme le nombre de lignes peut varier, j'aimerais l'adapté à celui-ci

Bonjour.

Voilà la nouvelle version avec la formule inscrite en VBA qui s'adaptera à ton nombre de ligne.

Cdlt.

Merci énormément pour ta réactivité. Bon je vais réfléchir à l'étape suivante.

='Aujourd''hui'!$A$1+NB.SI(E2:X2;'Liste OF'!$L$3)*'Liste OF'!$M$3+NB.SI(E2:X2;'Liste OF'!$L$4)*'Liste OF'!$M$4+NB.SI(E2:X2;'Liste OF'!$L$5)*'Liste OF'!$M$5+NB.SI(E2:X2;'Liste OF'!$L$6)*'Liste OF'!$M$6+NB.SI(E2:X2;'Liste OF'!$L$7)*'Liste OF'!$M$7+NB.SI(E2:X2;'Liste OF'!$L$8)*'Liste OF'!$M$8+NB.SI(E2:X2;'Liste OF'!$L$9)*'Liste OF'!$M$9+NB.SI(E2:X2;'Liste OF'!$L$10)*'Liste OF'!$M$10+NB.SI(E2:X2;'Liste OF'!$L$10)*'Liste OF'!$M$10+NB.SI(E2:X2;'Liste OF'!$L$11)*'Liste OF'!$M$11+NB.SI(E2:X2;'Liste OF'!$L$12)*'Liste OF'!$M$12+NB.SI(E2:X2;'Liste OF'!$L$13)*'Liste OF'!$M$13+NB.SI(E2:X2;'Liste OF'!$L$14)*'Liste OF'!$M$14

Voila la formule que j'ai mis dans la colonne D de la feuille chemin de fer.

Mon coté novice me dit qu'il y a certainement une fonction qui synthétise celle longue formule. Si tu as je suis preneur pour ma culture excel

Quel est le resultat que tu attends exactement dans cette colonne Délai magasin tu le calcule comment ?

Cdlt.

En fait par rapport à la date d'aujourd'hui et par rapport aux opérations restantes, je calcule une date théorique de mise en magasin.

A tester j'ai fait un truc à l'arrache avant de partir.

Cdlt.

Ok ca marche. Merci

si tu peux me commenter ce que tu fais ca me sera d'une grande utilité plus tard je pense.

Rechercher des sujets similaires à "gestion planification"