Actie na voldoen aan waarde

Status
Niet open voor verdere reacties.
Plaats svp - een deel van - het importbestand.
Hoe kaler hoe beter.
 
Plaats svp - een deel van - het importbestand.
Hoe kaler hoe beter.

Hierbij.

Kolom C is aantal punten
Zodra som kolom C de 1000 haalt moeten alle kolommen van deze en voorgaande rijen verplaatst worden naar een nieuwe sheet.
(werkelijke sheet heeft meer kolommen en meer rijen)
 

Bijlagen

Ik heb het werkblad met importgegevens import genoemd:

Code:
Sub tst()
  j = 1
  With Sheets("import")
    Do
      For jj = 1 To .UsedRange.Rows.Count - j
        If WorksheetFunction.Sum(.Cells(j, 3).Resize(jj)) > 990 Then Exit For
      Next
      sq = .Cells(j, 3).Offset(, -2).Resize(jj, 5)
      Sheets.Add
      Sheets(1).Cells(1, 1).Resize(UBound(sq), UBound(sq, 2)) = sq
       j = j + jj
      Loop Until j > .UsedRange.Rows.Count
  End With
End Sub
 
Ik zal maandag een poging wagen. Ik kan hier geen macro' s gebruiken aangezien office for mac deze niet ondersteund.
 
Hee, geweldig! Werkt als een zonnetje!
Bedankt voor alle moeite!

Ik zal nu even een poging wagen uit te vogelen hoe het script werkt.
 
Ik heb het script nu een tijdje in gebruik en het werkt goed.
Ik zou echter graag nog een voorwaarde willen toevoegen.

Ik heb het volgende gedaan:
Code:
       g = (ldatum - pdatum)
     If WorksheetFunction.Sum(.Cells(j, 5).Resize(jj)) > 990 Or g > 6 Then Exit For
     Next
        sq = .Cells(j, 4).Offset(, -3).Resize(jj, 5)
[code] 

Dit gaat niet goed. zodra ik "or g > 6" weghaal werkt het goed.
Wat ik zou willen is dat de nieuwe sheet wordt aangemaakt wanneer het puntenaantal boven de 990 komt OF wanneer g de waarde van 6 haalt. 
Ik verwacht dat er iets met .Resize(jj) gedaan moet worden, maar ik kom er niet uit. 

Tips?
 
Waar staat
Code:
g = (ldatum - pdatum)
voor ? Wat is de inhoud van deze variabelen ?
 
Waar staat
Code:
g = (ldatum - pdatum)
voor ? Wat is de inhoud van deze variabelen ?

Dim g as integer
Dim ldatum as date
Dim pdatum as date

dus datum1 wordt van datum2 afgetrokken. Dan komt er een getal uit.
Ik heb de werking gecontroleerd door na g = (ldatum - pdatum)
msgbox (g) te zetten. Deze gaf de goede waarde aan.
 
Waar komt datum1 vandaag en waar komt datum2 vandaan ?
 
Waar komt datum1 vandaag en waar komt datum2 vandaan ?

Excuses voor dit late antwoord. Met datum1 en datum2 bedoelde ik ldatum en pdatum.
Sorry voor deze onduidelijkheid.

Hier een betere en meer complete uitleg:
Ik heb per rij 2 data die ik wil vergelijken, ldatum en pdatum. Deze staan voor leverdatum en productiedatum.
de Productiedatum mag niet meer dan 6 dagen voor de leverdatum liggen.
Daarom wil ik graag dat zodra het verschil tussen deze data te groot wordt, een volgende sheet wordt aangemaakt. elke sheet is namelijk een nieuwe dag in de productie.

Maar zoals eerder voorgelegd heeft zijn er ook punten die een rol spelen. zodra het puntenaantal >990 is, moet ook een nieuwe sheet aangemaakt worden. Meer dan ±1000 punten kunnen er namelijk niet geproduceerd worden op een dag.

Dus kort samengevat:
Elke rij is een product met een aantal punten
Er kunnen meerdere producten op een dag geproduceerd worden, het maximum ligt bij 1000 punten.
De productiedatum mag niet meer dan 6 dagen voor de leverdatum liggen.

If WorksheetFunction.Sum(.Cells(j, 5).Resize(jj)) > 990 or ldatum-pdatum > 6 then
new sheet (met de rijen tot dan toe)

Graag zou ik dus de eerder gemaakte formule uitbreiden met de "6dagen-regel".
Ik kom hier echter niet uit.

Hopelijk heeft u nog tijd en zin om mij hiermee te helpen.
 
Laatst bewerkt:
Goed, ik ben er nog even mee aan de slag gegaan en heb een en ander veranderd om het duidelijker te maken.

Code:
 Dim f as date
f = InputBox("Met welke datum moet de blokindeling beginnen? Typ de notatie als d-mm-jjjj", "Datum")
ook heb ik
Code:
j = 4
omdat j moet beginnen bij regel 4

Vervolgens heb ik het voglende:
Code:
For jj = 1 To .UsedRange.Rows.Count - j
        If WorksheetFunction.Sum(.Cells(j, 8).Resize(jj)) > 990 Or ((Sheets("Productielijst").Cells(j, 4).Value) - f) > 6 Then Exit For
      Next
'Maak selectie
        sq = .Cells(j, 8).Offset(, -7).Resize(jj, 8)
Wat ik graag zou willen dat het script doet, is dat zodra kolom 8 de 990 punten behaald OF wanneer de door de gebruiker ingevoerde datum f meer dan 6 dagen van de datum in kolom 4 ligt, een selectie wordt gemaakt van het voorgaande en dat dit naar een nieuwe sheet wordt geplaatst.

Dit werkt niet met het door mij aangepaste script. Heeft u een idee?

Alvast bedankt
 

Bijlagen

Laatst bewerkt:
Om mijn wens nog duidelijker te laten zijn heb ik mijn bijgevoegde bestand nogmaals aangepast.

Ik heb een voorbeeld gemaakt van hoe ik het zou willen zien. dit voorbeeld is handmatig gemaakt, en ik ben dus op zoek naar de juiste code.

In het voorbeeld begin ik met f = 13-8-2009 en ga vanuit daar verder.
Door middel van markering heb ik in het voorbeeld aangegeven wat wanneer moet gebeuren.

Ik hoop dat het nu duidelijk is en dan ieman mij kan helpen!

Alvast bedankt
 

Bijlagen

Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan