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

Rijen kopieren naar ander werkblad

Status
Niet open voor verdere reacties.

gpiket7

Gebruiker
Lid geworden
25 jul 2008
Berichten
169
Ik heb in mijn document een tabel gemaakt.

Naam | Regio | Datum | etc

Werkblad:
Landelijk | Zuid | West

Nu zou ik graag willen dat een rij gekopieerd wordt naar een ander werkblad als deze is ingevult.

Bijvoorbeeld op rij 12 wordt ingevult:
Guido | Zuid | 2-12-2009
En op rij 13 wordt ingevult:
Piket | West | 2-12-2009

Dan wil ik dat rij 12 gekopieerd wordt naar het werkblad Zuid en rij 13 naar het werkblad West, maar dat ze ook blijven staan op het werkblad Landelijk.

Kan iemand mij hier mee helpen?
 
Ik neem aam dat je dit in excel bedoelt maar 2007. of een andere editie?
Want in 2007 doe je gewoon het volgende:
Je klikt op de rij zodat deze volledige geselecteerd is.
Dan rechtermuisknop en kopiëren.

Dan ga je naar het gewenste werkblad en op de gewenste rij en rechtermuisknop en plakken speciaal.
Nu kan je kiezen wat je wil plakken.

In excel 2003 weet ik het niet maar volgens mij zal het niet heel verschillend zijn.

laat me iets weten als het gelukt is.

succes,

Thijs
 
Dat klopt, dat werkt zo inderdaad.
Maar het moet eigenlijk automatisch gebeuren en niet handmatig.
 
voorbeeldbestandje

dan nodig ik je uit om een voorbeeldbestandje te plaatsen, ontdaan van gevoelige info.

met vriendelijke groeten,

Oeldere
 
Beste gpiket7 ;)

Zie bestandje

Groetjes Danny. :thumb:
 

Bijlagen

  • Wegschrijven Zuid en West.xls
    35,5 KB · Weergaven: 246
Beste Gotty ;)

Dit is niet het gewenste resultaat voor gpiket7 :D
De opgave moet in rij 12 en 13 staan en het resultaat bovenaan in tabblad West en Zuid.
Bij U blijft het gewenste resultaat op dezelfde rij staan. :eek:

Groetjes Danny. :thumb:
 
Hoi Danny,

Dat van jou ziet er erg goed uit.
Je hebt dus een knop gemaakt en daar een macro aan gehangen?

Zou je me misschien wel kunnen uitleggen wat [A65536] precies inhoud.

Gotty ook bedankt, maar dat is idd niet wat ik zoek.

Groeten
 
Hoi Danny,

Dat van jou ziet er erg goed uit.
Je hebt dus een knop gemaakt en daar een macro aan gehangen?

Zou je me misschien wel kunnen uitleggen wat [A65536] precies inhoud.

Gotty ook bedankt, maar dat is idd niet wat ik zoek.

Groeten

A65536 is de laatste cel in de A-kolom.
Excel 2003 heeft 65536 rijen (256 * 256)

Met vriendelijke groet,


Roncancio
 
ooh oke, dank je wel.

Heb de formule wat aangepast:
Code:
Sub Wegschrijven()
Dim c As Range
Application.ScreenUpdating = False
   
    For Each c In Sheets(1).[D12:D100]
    On Error Resume Next
        If c = "Zuid West" Then
            c.Rows.EntireRow.Copy Sheets(2).[A65536].End(xlUp).Offset(1, 0)
        End If
        
        If c = "Zuid Oost" Then
            c.Rows.EntireRow.Copy Sheets(3).[A65536].End(xlUp).Offset(1, 0)
        End If
        
        If c = "West" Then
            c.Rows.EntireRow.Copy Sheets(4).[A65536].End(xlUp).Offset(1, 0)
        End If

        If c = "Noord Oost" Then
            c.Rows.EntireRow.Copy Sheets(5).[A65536].End(xlUp).Offset(1, 0)
        End If
    Next
'Sheets(1).[A4:U10].Sort [A4]

Application.ScreenUpdating = True
End Sub

Alleen als ik nu op de knop druk kopieerd hij de eerste rij in het andere werkblad in rij 7.
Kun je ook instellen dat hij begint vanaf rij 12.
En niet de gehele rij kopieerd maar alleen de kolommen A t/m Z
 
Ik heb de code ook wat aangepast.

Code:
Sub Wegschrijven()
Dim lRij As Long
Dim c As Range
    Application.ScreenUpdating = False
   
    For Each c In Sheets(1).[B12:B100]
        On Error Resume Next
        lRij = Sheets(c.Value).[A65536].End(xlUp).Row
        If lRij < 12 Then lRij = 12
        Range("A" & c.Row & ":Z" & c.Row).Copy Sheets(c.Value).Range("A" & lRij)
    Next
'Sheets(1).[A4:U10].Sort [A4]

Application.ScreenUpdating = True
End Sub

De code kijkt naar de waarde van c in de B-kolom.
De code vult de gegevens in op het betreffende werkblad vanaf rij 12.

Met vriendelijke groet,


Roncancio
 
En hoe moet ik hier in nu aangeven wat ik in de vorige code deed met:
Code:
 If c = "Zuid West" Then
            c.Rows.EntireRow.Copy Sheets(2).[A65536].End(xlUp).Offset(1, 0)
        End If
 
En hoe moet ik hier in nu aangeven wat ik in de vorige code deed met:
Code:
 If c = "Zuid West" Then
            c.Rows.EntireRow.Copy Sheets(2).[A65536].End(xlUp).Offset(1, 0)
        End If

De code zoekt naar het werkblad met de naam van c.
Dus ipv de onderscheidt in de betreffende werkbladen, kijkt de code naar de waarde van c, kopieert vervolgens het bereik A t/m Z van dezelfde regel naar het werkblad met de naam van c.
Er is dus veel minder code nodig en bij een uitbreiding van de mogelijkheden van c, hoeft de code niet aangepast te worden (zolang de werkbladen met die naam al bestaan).

Met vriendelijke groet,


Roncancio
 
Beste Gotty ;)

Dit is niet het gewenste resultaat voor gpiket7 :D
De opgave moet in rij 12 en 13 staan en het resultaat bovenaan in tabblad West en Zuid.
Bij U blijft het gewenste resultaat op dezelfde rij staan. :eek:

Groetjes Danny. :thumb:

Oh zo.

Hoi Danny,

Dat van jou ziet er erg goed uit.
Je hebt dus een knop gemaakt en daar een macro aan gehangen?

Zou je me misschien wel kunnen uitleggen wat [A65536] precies inhoud.

Gotty ook bedankt, maar dat is idd niet wat ik zoek.

Groeten

In ieder geval graag gedaan.
 
Oke, dat werkt idd. Maar als er nu 2 rijen zijn met Zuid West dan kopieert hij er maar 1.
 
Oke, dat werkt idd. Maar als er nu 2 rijen zijn met Zuid West dan kopieert hij er maar 1.

In onderstaande code is dat probleem opgelost.

Code:
Sub Wegschrijven()
Dim lRij As Long
Dim c As Range
    Application.ScreenUpdating = False
   
    For Each c In Sheets(1).[B12:B100]
        On Error Resume Next
        lRij = Sheets(c.Value).[A65536].End(xlUp).Row + 1
        If lRij < 12 Then lRij = 12
        Range("A" & c.Row & ":Z" & c.Row).Copy Sheets(c.Value).Range("A" & lRij)
    Next
'Sheets(1).[A4:U10].Sort [A4]

Application.ScreenUpdating = True
End Sub

Met vriendelijke groet,


Roncancio
 
Oke hartstikke mooi. Dan heb ik nu nog 1 "klein" ding.

Als er 2x op de knop wordt gedrukt wordt alles er dubbel ingezet.
Kan dat ook op een manier worden voorkomen of bijvoorbeeld voor het kopieren eerst de werkbladen "cleanen" vanaf rij 7.
 
Oke hartstikke mooi. Dan heb ik nu nog 1 "klein" ding.

Als er 2x op de knop wordt gedrukt wordt alles er dubbel ingezet.
Kan dat ook op een manier worden voorkomen of bijvoorbeeld voor het kopieren eerst de werkbladen "cleanen" vanaf rij 7.

Met onderstaande code worden de rijen vanaf rij 7 t/m de laatste rij gewist voor alle werkbladen behalve de 1e.

Code:
Sub Wegschrijven()
Dim lRij As Long
Dim c As Range
Dim iWS As Integer
    Application.ScreenUpdating = False
    For iWS = 2 To Worksheets.Count
        Worksheets(iWS).Range("7:" & Rows.Count).ClearContents
    Next
    For Each c In Sheets(1).[B12:B100]
        On Error Resume Next
        lRij = Sheets(c.Value).[A65536].End(xlUp).Row + 1
        If lRij < 12 Then lRij = 12
        Range("A" & c.Row & ":Z" & c.Row).Copy Sheets(c.Value).Range("A" & lRij)
    Next
'Sheets(1).[A4:U10].Sort [A4]

Application.ScreenUpdating = True
End Sub

Met vriendelijke groet,


Roncancio
 
Toch nog een kleine vraag is het ook mogelijk om naar 2 dingen te kijken en dan te kopieren, plakken.

Bijvoorbeeld Regio = Zuid West en het 2 ding is Auto (kolom G)
dan dit te kopieren naar Tabblad Zuid West vanaf regel 7 t.m regel 15
Regio = Zuid West en het 2 ding is Motor (kolom G)
kopieren naar Tabblad Zuid West plakken vanaf regel 17

Is dat mogelijk?
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan