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

Kopiëren naar 1e vrije regel op ander tabblad

Status
Niet open voor verdere reacties.

gvanwijk

Gebruiker
Lid geworden
3 mei 2018
Berichten
182
Met welke VBA code kan ik in bijgaand bestand de regels van tabblad 2 kopiëren naar tabblad 1 (opvullen vanaf de eerste vrije regel op tabblad 1)
Tabblad 2 wordt steeds geleegd en met nieuwe gegevens gevuld: die moeten dus vanaf de 1e vrije regel op tabblad 1 toegevoegd worden :confused:

Bekijk bijlage Voorbeeld.xlsm
 
Of
Code:
Sub VenA()
  Sheets("CSV_import_ING").Cells(10, 2).CurrentRegion.Resize(, 6).Copy Sheets("Bankboek").Cells(Rows.Count, 2).End(xlUp).Offset(1)
End Sub
 
Bedankt Willem,

Bijna :d:
1. zoals je ziet wordt in het bankboek de opmaak overschreven, kan het ook een kopie van alleen de waarden worden, zodat opmaak behouden blijft
2. na de kopieeractie zou het mooi zijn als er een messagebox verschijnt ("Mutaties zijn verwerkt in bankboek" + OK knop) - dan zie je dat actie uitgevoerd is
 
tav VenA

@ VenA: net niet helemaal:
1. de opmaak wordt verwijderd bij het plakken
2. tabblad "CSV_import" wordt - nadat de kopieeractie klaar is- steeds geleegd: bij de volgende kopieeractie moeten dan de rijen 10 t/m 100 (met nieuwe gegevens dus) onderaan geplakt worden in het bankboek
 
Zo beter?
Code:
Sub VenA()
  With Sheets("CSV_import_ING").Cells(10, 2).CurrentRegion.Resize(, 6)
    Sheets("Bankboek").Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(.Rows.Count, 6) = .Value
  End With
End Sub
 
tav VenA

@VenA Ik heb je code in <voorbeeld 2> verwerkt maar de opmaak verandert toch nog

Hoewel in beide tabbladen (bron en doel) de kolom op "financieel" staat, wordt de opmaak door het uitvoeren van je macro in de doelmap ineens "valuta", zie afbeelding.
Kan in de VBA code verankerd worden dat de opmaak hetzelfde blijft van die kolom G in de doelmap (=opmaak: financieel)?
 

Bijlagen

  • valuta ipv financieel.jpg
    valuta ipv financieel.jpg
    7,1 KB · Weergaven: 20
Laatst bewerkt:
Met .Value2 blijft je opmaak wel het zelfde, alleen ken ik de eigenschappen hier niet zo goed van.
Code:
[FONT=Verdana,Arial,Tahoma,Calibri,Geneva,sans-serif]    Sheets("Bankboek").Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(.Rows.Count, 6) = [COLOR=#ff0000].Value2[/COLOR][/FONT]
 
uw opmaak in niet financieel maar aangepast, stel in alle twee de bladen dezelfde opmaak in.
 
@Emields: met de code van VenA (zie hieronder) kan ik inderdaad de data van de ene naar de andere sheet kopiëren en laten aansluiten bij de laatst ingevoerde rij.
Maar: door het uitvoeren van de code verandert de opmaak in kolom G van het Bankboek in "valuta". Dus ook als ik deze van aangepast naar financieel terugzet, dan nog verandert dat de opmaak weer in "valuta".
Ik heb het nu opgelost door een unprotect regel toe te voegen en in de VBA code op te nemen dat kolom G weer op financieel komt te staan. Opgelost dus.
Dank allemaal voor het meedenken!


Code:
Sub VenA()
  Sheets("CSV_import_ING").Cells(10, 2).CurrentRegion.Resize(, 6).Copy Sheets("Bankboek").Cells(Rows.Count, 2).End(xlUp).Offset(1)
End Sub
 
Waarom staan er 33 modules in het voorbeeld bestand? Waarom staan er niet werkende validatielijsten in? Maak er een tabel van.

Code:
Sub VenA()
  With Sheets("CSV_import_ING").Cells(10, 2).CurrentRegion.Resize(, 6)
    Sheets("Bankboek").ListObjects(1).ListRows.Add.Range.Resize(.Rows.Count, 6) = .Value2
  End With
End Sub
 

Bijlagen

@VenA: omdat dit voorbeeld een uittreksel
is van een veel groter bestand, er zijn een 10 tal tabbladen verwijderd, vandaar. De validatielijsten moet ik nog opschonen (maar verder niet relevant voor mijn vraag toch?)
 
Alles wat niet relevant is voor een vraag moet je niet plaatsen. Werkt het met een tabel wel? Dat is namelijk relevant maar geef je geen antwoord op.
 
@VenA Hierbij antwoord op de beide vragen/opmerkingen:
1. Ik had de vraag al op opgelost gezet (zie mijn bericht 19.43) voordat jij met het voorstel voor de tabel kwam, dus nee: niet meer geprobeerd (opgelost is opgelost, linksom of rechtsom)
2. Verder had ik me niet gerealiseerd bij het plaatsen van het bestand dat alle oude validatielijsten nog zichtbaar waren (als je er naar zoekt), die heb ik dus niet bewust toegevoegd, maar onbewust er per ongeluk in gelaten.
:thumb:

Met deze code werkt het nu in ieder geval:
Code:
Sub Bankboek_via_ING()
Worksheets("Bankboek").Unprotect
  With Sheets("CSV_import_ING").Cells(10, 2).CurrentRegion.Resize(, 6)
    Sheets("Bankboek").Cells(Rows.Count, 2).End(xlUp).Offset(1).Resize(.Rows.Count, 6) = .Value
        MsgBox "Alle mutaties zijn verwerkt in het bankboek." & vbLf & "Ga naar het bankboek en codeer de mutaties (grootboekcode).", , ""
        Sheets("CSV_import_ING").Select
    Range("B10:G5000").Select
    Selection.ClearContents
    Range("B10").Select
        Sheets("Bankboek").Select
    Columns("G:G").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Range("G5").Select
    Selection.NumberFormat = "General"
    Range("B6").Select
        Sheets("Bankboek").Select
        Dim ws As Worksheet
    Set ws = ActiveSheet
    Range("B" & Cells.Rows.Count).End(xlUp).Select
        
        Worksheets("Bankboek").Protect
        
  End With
End Sub
 
Laatst bewerkt:
Ik zou nog vaker select gebruiken. Fijn dat je wat opsteekt van de geplaatste suggesties.:shocked:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan