• 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.

Rij naar ander tablad plaatsen

Status
Niet open voor verdere reacties.

Siard123

Gebruiker
Lid geworden
6 nov 2012
Berichten
27
Hallo,
Ik zit met het volgende probleem. Ik wil graag een 'archief blad' maken zodat voltooide opdrachten daarnaar toe verplaatst worden.
Ik heb het een en ander opgezocht en voor zover ik weet kan dit alleen via een macro op basis van een VBA code.
Hier heb ik zelf weinig ervaring mee en kwam er ook niet uit. Had namelijk voorgeprogrammeerde codes gevonden maar deze werkten niet of ik kreeg ze niet werkend.

De bedoeling is dat zodra 'aantal in' gelijk is aan 'aantal afgeleverd' dat de lijn verplaatst wordt naar het tablad 'archief'. Automatisch of met een druk op de knop dat de geselecteerde lijn gekopieerd wordt en dat alles onder de geselecteerde lijn omhoog schuift. Zodat er geen ruimte tussen de opdrachten komt.

Hoop hiermee het probleem voldoende te hebben omschreven.

Siard
 

Bijlagen

Ik heb op het forum iets vergelijkbaars gevonden maar als ik dit toepas op mijn document klopt het nog niet helemaal.

Option Explicit

Sub Afgerond()
Application.ScreenUpdating = False
Dim c As Range
Dim rw As Long

For Each c In [N2:N100]
If c = "Afgerond" Then
c.Rows.EntireRow.Copy

['Afgerond'!A65536].End(xlUp).Offset(1, 0).Insert Shift:=xlDown


End If
Next
For rw = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Cells(rw, "N") = "Afgerond" Then Rows(rw).Delete
Next
With Application

.CutCopyMode = False
.ScreenUpdating = True
End With

End Sub
Sub Niet_Afgerond()
Application.ScreenUpdating = False
Dim c As Range
Dim rw As Long
For Each c In [N2:N100]
If c = "Open" Then
c.Rows.EntireRow.Copy
['Actielijst'!A65536].End(xlUp).Offset(1, 0).Insert Shift:=xlDown


End If

Next


For rw = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Cells(rw, "N") = "Open" Then Rows(rw).Delete
Next



With Application
.CutCopyMode = False
.ScreenUpdating = True
End With

End Sub

Zodra ik deze macro uitvoer verwijderd hij de titels die staan op het 1e blad, deze moeten blijven staan.
En het zou fijn zijn als hij puur en alleen de tekst kopieert en niet de opmaak en dergelijke.

Bekijk bijlage Doorstroom opdrachten spuiterij TEST.xls
 
Mag ik vragen hoe je dit gedaan hebt? En waar ik dat kan vinden? Welke macro het is?!

Het werkt wel handig namelijk ;)
 
Rmuisknop op tabbladnaam => programmacode weergeven => nu zie je de macro.

Niels
 
Laatst bewerkt:
Is deze macro ook afhankelijk van andere macro's of specifieke cellen? Want wil het bestand wat aanpassen qua indeling moet ik dan ook ergens rekening mee houden dat het aangepast moet worden? En er zitten macro's in het bestand die niet worden gebruikt, deze wil ik graag weg hebben.
 
De macro is niet afhankelijk van andere macros dus je mag ze allemaal weggooien.
Hij is wel afhankelijk van de tabbladnaam archief en van de kolomindeling zoals je hem nu hebt

.if target.column = 10 refereert naar kolom J , dus als je dit verandert dan moet je de 10 ook aanpassen.
De offset(,-5) gaat er vanuit dat je vergelijkings waarde 5 kolommen naar links staat (dus kolom E in jouw geval.)



Niels
 
Laatst bewerkt:
Het werkt perfect! Zit alleen nog met 1 ding. De lijst moet in principe oneindig kunnen op het 1e tabblad.
Hoe kan ik de formule voor het verschil van 'aantal in' en 'aantal afgeleverd' oneindig op 1 kolom zetten behalve op de 1e rij; omdat daar de titels staan?
 
Ik snap niet helemaal wat je bedoelt.
De macro reageert op alle cellen in kolom j,
Die formule heeft de macro niet nodig.

Ik zou van je gegevens een tabel maken.
Gooi je legen rijen weg.
selecteer de het gegevensbereik en kies => invoegen => tabel.
Als je nu gegevens erbij plaatst worden de formules automatisch aangevuld.



Bekijk bijlage Doorstroom opdrachten spuiterij TEST(2).xls

Niels
 
Geweldig! Dan nog 1 laatste vraag; kunnen de gegevens dan ook in een tabel worden geplakt op het tabblad 'archief'?
 
Maak op het andere tabblad ook een tabel en als het goed is wordt deze ook aangevuld.

Niels
 
Wat heb je nu precies veranderd? Want moet het in het laatste document toepassen; daar heb ik de indeling wat anders namelijk.

Ik zag dat je de code wat had aangepast maar heb je nog meer gedaan? Want als ik de code kopieer dan zet hij hem er nog steeds onder.

EDIT: En volgens mij werkt het in jouw document ook niet helemaal. Als ik het archief leeg maak begint hij niet bij de 1e plek in het archief als een opdracht invul.
 
Laatst bewerkt:
In mijn document werkt het zoals bedoelt.
Hoe maak je het archief leeg? verwijder je de gegevens of verwijder je de rijen.
Ja er zit 1 restrictie aan en dat is dat je de kolomtitels en 1 rij ingevult moet laten staan.


Ik heb alleen de code verandert en een tabel op het archiefblad gemaakt.

Niels
 
verander de macro in:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 10 Then
If Target <> "" And Target.Value = Target.Offset(, -5).Value Then
Set r = Sheets("Archief").Cells(Rows.Count, 1).End(xlUp)
If r.Value = "" Then
r.Resize(1, 14).Value = Range("A" & Target.Row).Resize(1, 14).Value
Else
r.Offset(1).Resize(1, 14).Value = Range("A" & Target.Row).Resize(1, 14).Value
End If
Rows(Target.Row).Delete shift:=xlUp
End If
End If

End Sub

en je hebt daar ook geen last meer van, er moet dan wel altijd een projectnummer ingevuld zijn.

Niels
 
Ik had al gereageerd terwijl ik je laatste bericht niet had gelezen. Ik heb het nu helemaal voor elkaar!

Hartstikke bedankt! Werkt echt perfect!
 
Ondervind net weer een euvel(tje). Zodra ik 1 opdracht heb ingevuld en deze is voltooid, aantal in = aantal afgeleverd, en er staan verder geen opdrachten in, dan verliest 'nog te doen' zijn formule om het verschil te berekenen. Dit gaat om het tabblad 'opdrachten'.

Nieuwste versie:
Bekijk bijlage Opdrachten spuiterij.xls
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan