• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Globale weekplanning maken

Status
Niet open voor verdere reacties.

Paradoxx

Gebruiker
Lid geworden
2 nov 2007
Berichten
135
Goedemiddag,

Zit al enkele dagen te stoeien met een blad om op basis van benodigde productietijd een planning te maken voor een week.
De week planning wordt nu helemaal handmatig uitgerekend en dat moet makkelijker kunnen.

Ik heb een werkblad waarop alle partijen staan die gedaan moeten worden, met daarop op basis van gestelde normen, de productietijd per partij.
Men kan in 1, 2 of 3 ploegen werken, het aantal effectieve werkuren kan dus verschillen. Boven de planning van de machine kan men bepalen hoeveel shifts men gebruikt per dag, wat de startdag is, en het start tijdstip. Ik heb de tijden van de shifts in het tabblad shiftoverzicht gezet. Al zodanig dat men wellicht iets kan doen met verticaal zoeken. Het voorbeeld bestand is ontdaan van wat onnodige informatie voor hier, en nu voor 1 machine. Dit kan ik zelf wel verder uitbreiden.

Kan iemand mij op weg helpen om de eindtijd voor een partij te berekenen, zodat dat weer de begintijd is voor de volgende partij? Dit dus afhankelijk van de beschikbare uren in die dag/week.

Heb een voorbeeld bestand bijgevoegd, ik ga er van uit dat het dan wat duidelijker is.

Bekijk bijlage voorbeeld weekplanning.xlsx
 
Laatst bewerkt:
Ik weet niet of het geoorloofd is om een bericht te bumpen, maar ik vroeg me toch af of er niemand is die me enigszins in de goede richting kan duwen met bovenstaand probleem.
Zijn er onduidelijkheden in wat ik vraag?
 
Is er dan werkelijk niemand van de excel goeroe's die me op weg helpen kan?

Als het met formules op te lossen is, is dit natuurlijk perfect,... als het met macro's moet, dan is dat ook goed.
 
zie bijlage, druk op de groene knop
 

Bijlagen

  • voorbeeld%20weekplanning(1).xlsm
    60,7 KB · Weergaven: 99
cow18, bedankt voor de input.

Ik heb de code bekeken, en dat gaat mijn VBA kennis nog te boven. Het werkt inderdaad voor 1 shift. Wat kan ik aan de code toevoegen/veranderen om het te doen voor 2 of 3 diensten? Ik kan in de code namelijk niet ontdekken waar ik die variabele kan wijzigen. Tevens de variabele voor de starttijd kan ik niet plaatsen.

Aanvulling: Ik zie dat je voor Uren, de range van "machine1" gebruikt. Wat dat eigenlijk zijn, zijn de tijden die gewerkt worden in 1 shift. Als er 2 shifts zijn zal het de tabel eronder zijn, en bij 3 shifts, de tabel daaronder.

Kan ik die range zodanig dynamisch maken obv aantallen shifts dat hij de juiste tabel aanroept?
 
Laatst bewerkt:
aanroepen celwaarde, hoe te declareren?

Ik ben zelf even aan de slag gegaan om de werktijden afhankelijk te maken van de keuze van het aantal shifts. Alleen hoe moet ik nu die waarde declareren om hem in de If...Then structuur aan te roepen dat hij een bepaalde range moet pakken?

Hieronder de code: met dank aan Cow18

Code:
Sub Machine1()
  Dim sn, Uren, i, r, k, bStart As Boolean, arr(), dUren As Double, nrshift As Integer
  
  
  If nrshift = "1" Then                                      'lees alles van shift1 uit
    Uren = Range("shift1")
  ElseIf nrshift = "2" Then
    Uren = Range("shift2")
  ElseIf nrshift = "3" Then
    Uren = Range("shift3")
  Else
    Exit Sub
  End If
  
                                   
  With Range("Tabel1").ListObject.DataBodyRange            'je tabel met gegevens
    sn = .Columns(7)                                       'lees de machineuren
    ReDim arr(1 To UBound(sn), 1 To 2)                     'uitvoerarray dimensioneren
    r = 3: k = 3                                           'startcellen in "Uren" = 2e rij, 3e kolom
    For i = 1 To UBound(sn)                                'loop alle productiegegevens 1 na 1 af
      dUren = sn(i, 1)                                     'het aantal machineuren
      Do While dUren > 0 And r <= UBound(Uren)             'loopje zolang alle machineuren niet toegekend zijn of tot het einde van de week
        If IsNumeric(Uren(r, k)) And Not (IsEmpty(Uren(r, k))) Then  'je element in "uren" is numeriek en niet leeg
          If IsEmpty(arr(i, 1)) Then arr(i, 1) = Uren(r, 1) & "-" & Format(Uren(1, k), "hh:mm")  'je productie heeft nu een startuur
          dUren = dUren - 0.25                             'telkens een kwarier aftrekken
          If dUren <= 0 Then arr(i, 2) = Uren(r, 1) & "-" & Format(Uren(1, k), "hh:mm")  'zijn alle tijden toegekend, dan is het einduur ook gekend
        End If
        k = k + 1: If k > UBound(Uren, 2) Then k = 3: r = r + 1  'ga naar het volgend kwartier, is het middernacht, ga dan terug naar kolom 3 van de volgende rij
      Loop
    Next
    .Columns("H:I").Value = arr                            'schrijf je resultaat terug naar de tabel
  End With
End Sub

Bedoeling is dus dat wanneer de waarde van nrshift 1 is, dat hij dan dus voor "Uren" de tabel shift1 gaat gebruiken. Bij waarde 2 de tabel shift2...
 
Het is al gelukt,... met een beetje logisch nadenken kom je er natuurlijk ook...

Code:
 If Range("nrshift") = "1" Then                                      'lees alles van shift1 uit
    Uren = Range("shift1")
  ElseIf Range("nrshift") = "2" Then
    Uren = Range("shift2")
  ElseIf Range("nrshift") = "3" Then
    Uren = Range("shift3")
  Else
    Exit Sub
  End If

Cow18, bedankt voor code. Ik pas hem naar wens aan. Voor nu zet ik de vraag op opgelost... als iemand nog de oplossing weet om het ook afhankelijk te maken van startdag en starttijd,.. dan is het helemaal perfect...

Ondertussen puzzel ik ook even door
 
Ook de variabele startdag en starttijd heb ik in de code kunnen verwerken.
Cow18, nogmaals bedankt voor de opzet. Dit gaat weer bakken met tijd schelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan