• 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 copieren naar nieuw werkblad

Status
Niet open voor verdere reacties.

Jos vogelaar

Gebruiker
Lid geworden
19 mrt 2009
Berichten
18
Zie bijgevoegd bestand.

ik heb een excel formulier waarin ik alle uitgebrachte offertes registreer
Een offerte kan 4 statussen hebben: Openstaand; Opdracht; Voltooid; Afgwijzing
Wanneer de status opdracht wordt aangevinktin het tabblad "TOTAALSTAAT", zou ik de kolommen B t/m G van de betreffende regels (nu in lichtgroen) willen copieren naar tabblad "IN_PORTEFEUILLE". In dit blad ga ik vervolgens de kolommen G en verder invullen.

Ik wil iedere nieuwe regel onder de laatste copieren (dus niet overschrijven)
Tabblad "IN PORTEFEUILLE" wordt steeds uitgebreid met nieuwe regels, waarover ik later wel een filter gooi, zodat afgeronde (voltooide) projecten uit beeld verdwijnen.

Kan iemand mij hiermee helpen?
Dank,

Jos
 

Bijlagen

Laatst bewerkt:
Beste Jos,

niet dat ik er iets mee te maken heb, maar deze gegevens lijken met niet fictief.

in dat geval is je baas er misschien niet zo blij mee.

in dat geval is het beter een fictief voorbeeld te maken (ontdaan van gevoelige info).

je kunt dan (indien gewenst) je eigen bijlage verwijderen.

met vriendelijke groeten,

Oeldere
 
Hallo Jos,

Ik heb een drukknop in je werkblad gemaakt met daarachter de code .
Veel succes!

Met vr gr
Jack
 

Bijlagen

Zonder knop
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 And Target.Value = "Opdracht" Then
        Target.Offset(, -1).Resize(, 6).Copy Sheets("IN_PORTEFEUILLE").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End If
End Sub
 
Beste Oeldere,

Bedankt voor je reactie, heel attent van je!
uiteraard heb ik de gevoelige informatie verwijderd. Alle beschreven data is fictief.
 
Hallo Jack,

Geweldig, die knop erbij.
Nog één puntje, hoop dat dat ook op te lossen valt..
Als ik eenmaal de rijen met status "opdracht" heb gecopieerd naar blad "IN_PORTEFEUILLE" doormiddel van jouw drukknop, gaan ze bij een tweede druk op de knop weer over naar blad "IN_PORTEFEUILLE". Is er een mogelijkheid dubbelingen te voorkomen in het blad "IN_PORTEFEUILLE"? (dus dat een opdracht die eenmaal in blad "IN_PORTEFEUILLE" staat geregistreerd er niet nogmaals naartoe gecopieerd wordt?

Hoop dat ik mezelf duidelijk heb uitgedrukt...


Zonder knop
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 3 And Target.Value = "Opdracht" Then
        Target.Offset(, -1).Resize(, 6).Copy Sheets("IN_PORTEFEUILLE").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    End If
End Sub

Hallo Jos,

Ik heb een drukknop in je werkblad gemaakt met daarachter de code .
Veel succes!

Met vr gr
Jack
 
Daarom mijn oplossing waarbij de kopieërfunctie pas wordt geactiveerd bij het wijzigen v/d status. Dus eens de status gewijzigd in opdracht ga je hem daaarna niet terug op opdracht zetten nietwaar? Wil je toch een controle kan je er een Find opdracht aan vooraf laten gaan(op opdrachtnummer) zodat eerst gezocht wordt naar een gelijkaardige record en waarbij de macro onderbroken wordt als een duplicaat gevonden wordt
 
Rudi,

ik wil wel de records wel behouden in het eerste blad. Dit om andere adminstratieve redenen. Er moet dus zoals jij aangeeft een controle plaatsvinden (met Find) en dan unieke records aan het blad "IN_PORTEFEUILLE" worden toegevoegd.
Hoe maak ik deze find opdracht, in combinatie met de knop functie van Jack?

thanks,
Jos

Daarom mijn oplossing waarbij de kopieërfunctie pas wordt geactiveerd bij het wijzigen v/d status. Dus eens de status gewijzigd in opdracht ga je hem daaarna niet terug op opdracht zetten nietwaar? Wil je toch een controle kan je er een Find opdracht aan vooraf laten gaan(op opdrachtnummer) zodat eerst gezocht wordt naar een gelijkaardige record en waarbij de macro onderbroken wordt als een duplicaat gevonden wordt
 
Hallo Jack,

Geweldig, die knop erbij.
Nog één puntje, hoop dat dat ook op te lossen valt..
Als ik eenmaal de rijen met status "opdracht" heb gecopieerd naar blad "IN_PORTEFEUILLE" doormiddel van jouw drukknop, gaan ze bij een tweede druk op de knop weer over naar blad "IN_PORTEFEUILLE". Is er een mogelijkheid dubbelingen te voorkomen in het blad "IN_PORTEFEUILLE"? (dus dat een opdracht die eenmaal in blad "IN_PORTEFEUILLE" staat geregistreerd er niet nogmaals naartoe gecopieerd wordt?

Hoop dat ik mezelf duidelijk heb uitgedrukt...

Hallo Jos,

Als je de code even wilt aanpassen dan doet die volgens mij wat jij wilt.
Ik heb gebruik gemaakt van kolom P. Als er een opdracht nog niet gekopieerd is dan is deze cel leeg. Als je eenmaal op de knop drukt komt er een "x" te staan. En als je voor de 2e maal op de knop drukt, dan ziet vba dat de cel niet leeg is en wordt er niet gekopieerd.
Code:
Sub Kopie()
  Application.ScreenUpdating = False
    For Each c In ['TOTAALSTAAT'!C7:C100]
      If c = "Opdracht" Then
        If c.Offset(, 13) = "" Then
          c.Offset(, -1).Resize(, 6).Copy Sheets("IN_PORTEFEUILLE").Cells(Rows.Count, 1).End(xlUp).Offset(1)
          c.Offset(, 13) = "x"
        End If
      End If
    Next
  Application.ScreenUpdating = True
End Sub
Met vr gr
Jack
 
Jack,
Geweldig, het werkt volgens mij nu zoals ik had bedoeld.

Ik ga er even mee aan de slag en zal de vraag daarna afmelden!
Hardstikke bedankt

Hallo Jos,

Als je de code even wilt aanpassen dan doet die volgens mij wat jij wilt.
Ik heb gebruik gemaakt van kolom P. Als er een opdracht nog niet gekopieerd is dan is deze cel leeg. Als je eenmaal op de knop drukt komt er een "x" te staan. En als je voor de 2e maal op de knop drukt, dan ziet vba dat de cel niet leeg is en wordt er niet gekopieerd.
Code:
Sub Kopie()
  Application.ScreenUpdating = False
    For Each c In ['TOTAALSTAAT'!C7:C100]
      If c = "Opdracht" Then
        If c.Offset(, 13) = "" Then
          c.Offset(, -1).Resize(, 6).Copy Sheets("IN_PORTEFEUILLE").Cells(Rows.Count, 1).End(xlUp).Offset(1)
          c.Offset(, 13) = "x"
        End If
      End If
    Next
  Application.ScreenUpdating = True
End Sub
Met vr gr
Jack
 
Jos, telkenmale je op de knop drukt worden alle regels in de kolom doorlopen om naar 'Opdracht' te zoeken. Met enkele lijnen is dit geen probleem maar als we spreken over enkele honderden lijnen wordt dit puur tijdverlies. Bekijk de bijlage waar de kopieërfunctie enkel in werking treed bij een wijziging van de status en dit ook maar voor 1 regel.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan