**Alle getallen en begrippen zijn fictief en representeren niet de werkelijkheid**
Beste Forumleden,
Ik ben momenteel bezig met het schrijven van een code en op een onderdeel loop ik vast. Ik zal proberen in het kort, aan de hand van een voorbeeld, vertellen wat ik aan het doen ben en waar ik tegenaan loop.
Ik heb een bestand waarin staat op welke dag, welke producten besteld worden gegeven in hoeveelheid liters. in de voorbeeld code wordt alleen gerekend met de producten op dinsdag en die behoren tot de groep X. Deze twee eisen zijn ook verwerkt in de code. Ieder product heeft zijn eigen unieke locatie.
Op een pallet past bijvoorbeeld 1000 liter aan producten. Wanneer de code start wordt de locatie van het eerste product op de pallet genoteerd in een cel in een nieuw tabblad. Daarna begint de code de volumes van de producten bij elkaar op te tellen. Wanneer het volume van 1000 liter wordt overschreden wordt de locatie van het laatste product dat op de pallet past genoteerd in een cel in een nieuw tabblad. Vervolgens wordt dit proces herhaald. Op een gegeven moment zijn alle producten geweest en bereikt de laatste pallet niet het maximale volume van 1000 liter, hierdoor wordt de locatie van het laatste product op de pallet niet genoteerd.
Het lastige is dat mijn For Loop bestaat uit bijvoorbeeld 30.000 producten maar dat het laatste product dat voldoet aan de eisen (Alleen op dinsdag en behoren tot groep X) al op plek 15.000 staat.
Mijn vraag luidt dan ook: Hoe noteer ik de locatie van een product wanneer het product de laatste in de rij is die voldoet aan mijn eisen maar niet het laatste product is in de For Loop?
Als er vragen zijn dan hoor ik het graag. Daarnaast zijn tips ook altijd welkom ook al wordt er geen antwoord gegeven op de vraag. Ik leer graag bij!
Beste Forumleden,
Ik ben momenteel bezig met het schrijven van een code en op een onderdeel loop ik vast. Ik zal proberen in het kort, aan de hand van een voorbeeld, vertellen wat ik aan het doen ben en waar ik tegenaan loop.
Ik heb een bestand waarin staat op welke dag, welke producten besteld worden gegeven in hoeveelheid liters. in de voorbeeld code wordt alleen gerekend met de producten op dinsdag en die behoren tot de groep X. Deze twee eisen zijn ook verwerkt in de code. Ieder product heeft zijn eigen unieke locatie.
Op een pallet past bijvoorbeeld 1000 liter aan producten. Wanneer de code start wordt de locatie van het eerste product op de pallet genoteerd in een cel in een nieuw tabblad. Daarna begint de code de volumes van de producten bij elkaar op te tellen. Wanneer het volume van 1000 liter wordt overschreden wordt de locatie van het laatste product dat op de pallet past genoteerd in een cel in een nieuw tabblad. Vervolgens wordt dit proces herhaald. Op een gegeven moment zijn alle producten geweest en bereikt de laatste pallet niet het maximale volume van 1000 liter, hierdoor wordt de locatie van het laatste product op de pallet niet genoteerd.
Het lastige is dat mijn For Loop bestaat uit bijvoorbeeld 30.000 producten maar dat het laatste product dat voldoet aan de eisen (Alleen op dinsdag en behoren tot groep X) al op plek 15.000 staat.
Mijn vraag luidt dan ook: Hoe noteer ik de locatie van een product wanneer het product de laatste in de rij is die voldoet aan mijn eisen maar niet het laatste product is in de For Loop?
Als er vragen zijn dan hoor ik het graag. Daarnaast zijn tips ook altijd welkom ook al wordt er geen antwoord gegeven op de vraag. Ik leer graag bij!
Code:
Sub PalletsMaken()
a = Worksheets("ZZZ").Cells(Rows.Count, 1).End(xlUp).Row
'###X-groep PALLETS###
'Alles verwijderen voor start
Worksheets("XXX").Rows("3:100").ClearContents
'Dinsdag
SOMdi = 0
UITGEVOERDdi = False
For Z = 4 To a
If Worksheets("ZZZ").Cells(Z, 2).Value = "X" And Worksheets("ZZZ").Cells(Z, 25).Value <> "" Then
SOMdi = SOMdi + Worksheets("ZZZ").Cells(Z, 25).Value
If Not UITGEVOERDdi Then
Worksheets("ZZZ").Cells(Z, 3).Copy
Worksheets("XXX").Activate
g = Worksheets("XXX").Cells(Rows.Count, 4).End(xlUp).Row
Worksheets("XXX").Cells(g + 1, 4).Select
ActiveSheet.Paste
Worksheets("ZZZ").Activate
UITGEVOERDdi = True
End If
If SOMdi >= 1000 Then
Worksheets("ZZZ").Cells(Z, 3).Copy
Worksheets("XXX").Activate
f = Worksheets("XXX").Cells(Rows.Count, 4).End(xlUp).Row
Worksheets("XXX").Cells(f + 1, 4).Select
ActiveSheet.Paste
Worksheets("ZZZ").Activate
Z = Z - 1
Worksheets("ZZZ").Cells(Z, 3).Copy
Worksheets("XXX").Activate
e = Worksheets("XXX").Cells(Rows.Count, 5).End(xlUp).Row
Worksheets("XXX").Cells(e + 1, 5).Select
ActiveSheet.Paste
Worksheets("ZZZ").Activate
SOMdi = SOMdi - SOMdi
End If
End If
Next Z
'Einde script
End Sub
Laatst bewerkt: