Gegevens werkblad 1 doorvoeren in werkblad 2

Status
Niet open voor verdere reacties.

Veldenvdt

Gebruiker
Lid geworden
4 mei 2012
Berichten
23
Hallo Allemaal!!

Ik zoek naar een oplossing voor de volgende methodiek:

In werkblad 1 staan bijvoorbeeld de volgende kolomteksten: Faktuurnummer, Faktuurdatum, Naam,
Adres,Postcode, Woonplaats etc... Dagelijks worden circa 20 regels gevuld met gegevens. Het is de bedoeling
dat deze gegevens verwerkt worden in een factuur. Werkblad 2 is gevuld met de layout van een factuur, waarbij factuur 1 begint op regel 1, factuur 2 op regel 51, factuur 3 op regel 101 etc. Het is nu de bedoeling
dat bijvoorbeeld het factuurnummer staande in werkblad1 in cel a2 wordt gecopieerd naar werkblad 2 cel b13 en factuurnummer staande in werkblad 1 cel a3 naar werkblad 2 cel b 63 etc. Dit moet natuurlijk ook gebeuren voor de faktuurdatum, Naam etc. Werkblad 2 wordt dus gevuld vanuit werkblad 1.
Kunnen jullie me op weg helpen met een vba code?
Alvast bedankt
 
Wat is de achterliggende gedachte maw waarom zoveel malen dezelfde layout van een factuur op een werkblad ?
Je kan toch 1 layout van je factuur maken en dan met een loop de factuur invullen naargelang het aantal regels op blad1 en dan afdrukken of opslaan of beide.
 
Hallo warm bakkertje,

Bedankt voor je reactie. Ik ben pas een beginnend VBA gebruiker. De achterliggende gedacht is dat ik dan de facturen (soms wel 40 op een dag in een keer kan printen. Verder wil ik de facturen (digitaal) bewaren en een bestand per dag aanmaken. Jouw methode kan best beter zijn. Wil je me de vba code opschrijven zodat ik jouw methode kan proberen? Alvast bedankt
 
Post je bestand eens hier zodat we kunnen zien hoe je alles opgebouwd hebt en we dan ook gerichter kunnen helpen.
 
Hallo warm bakkertje

Bijgevoegd het testbestand. De invoer staat in werkblad 1 en de in te vullen factuur in werkblad 2.
In de factuur moet ingevuld worden:
de factuurdatum
het factuurnummer
de naam
het adres
de postcode en woonplaats
het land
een omschrijving van het produkt
de netto prijs ( de btw en de te betalen prijs worden vanzelf berekend.

Ik ben benieuwd naar de reacties!
 

Bijlagen

Zet onderstaande in een standaardmodule.
Pas het pad naar de opslagdir aan.
Code:
Const OverdrachtDir = "G:\Mijn documenten\Helpmij\" 'Te wijzigen in juiste opslagdirectory
Sub Overdracht()
    For Each cl In Sheets("Invoer").Range("B5:B" & Sheets("Invoer").Cells(Rows.Count, 2).End(xlUp).Row)
        With Sheets("Factuur")
            .Range("B12").Value = cl.Value 'factuurdatum
            .Range("B13").Value = cl.Offset(, 2).Value 'factuurnummer
            .Range("B15").Value = cl.Offset(, 4).Value 'klantnaam
            .Range("B16").Value = cl.Offset(, 5).Value 'klantadres
            .Range("B17").Value = cl.Offset(, 6).Value & " " & cl.Offset(, 7).Value 'postcode en woonplaats
            .Range("B18").Value = cl.Offset(, 8).Value 'land
            .Range("B22").Value = cl.Offset(, 9).Value 'omschrijving
            .Range("D22").Value = cl.Offset(, 10).Value 'nettoprijs
            .PrintOut Copies:=1 'Printen van factuur
            .Copy 'kopieëren factuur naar nieuw workbook
                With ActiveWorkbook
                    [A1].Select
                    .SaveAs OverdrachtDir & .Sheets("factuur").Range("B15").Value & .Sheets("factuur").Range("B13").Value & ".xlsx"
                    .Close
                End With
        End With
    Next
End Sub
Elke factuur wordt nu opgeslagen met de klantnaam en factuurnummer als naam.
Je zal nog wel onderstaande formules op je factuurblad moeten aanpassen om een juiste berekening te krijgen.
Code:
D31 =Som(D22:D30)
D33 =D31*D32
D34 =D31+D33
 
Laatst bewerkt:
Hallo warm bakkertje,

Het werkt prima. Hardstikke bedankt.
Ik heb nog een aanvullende vraag?

Ik wil graag in het werkblad Invoer alle factuurgegevens laten staan van een hele maand en dan vervolgens die maand afsluiten. Ook wil ik dagelijks alleen de facturen printen van die dag. Is het mogelijk dat ik in het werkblad kan aangeven dat hij alleen de facturen print van vandaag en morgen alleen die van morgen etc..? De invoerdatum zou dan leidend moeten zijn. Ik ben zelf aan het denken aan een oplossing waarbij de macro na het opstarten stopt en mij vraagt welke dag hij moet uitvoeren. Ik ben benieuwd of dat mogelijk is!!
 
Code:
Const OverdrachtDir = "G:\Mijn documenten\Helpmij\" 'Te wijzigen in juiste opslagdirectory
Sub Overdracht()
    For Each cl In Sheets("Invoer").Range("B5:B" & Sheets("Invoer").Cells(Rows.Count, 2).End(xlUp).Row)
        If DateValue(cl.Offset(, -1)) = Date Then
            With Sheets("Factuur")
                .Range("B12").Value = cl.Value 'factuurdatum
                .Range("B13").Value = cl.Offset(, 2).Value 'factuurnummer
                .Range("B15").Value = cl.Offset(, 4).Value 'klantnaam
                .Range("B16").Value = cl.Offset(, 5).Value 'klantadres
                .Range("B17").Value = cl.Offset(, 6).Value & " " & cl.Offset(, 7).Value 'postcode en woonplaats
                .Range("B18").Value = cl.Offset(, 8).Value 'land
                .Range("B22").Value = cl.Offset(, 9).Value 'omschrijving
                .Range("D22").Value = cl.Offset(, 10).Value 'nettoprijs
                .PrintOut Copies:=1 'Printen van factuur
                .Copy 'kopieëren factuur naar nieuw workbook
                    With ActiveWorkbook
                        [A1].Select
                        .SaveAs OverdrachtDir & .Sheets("factuur").Range("B15").Value & .Sheets("factuur").Range("B13").Value & ".xlsx"
                        .Close
                    End With
            End With
        End If
    Next
End Sub

Op deze manier werkt de macro enkel de facturen v/d huidige dag af. Heb je het liever met een vraag kunnen we de macro uiteraard anders aanpassen.
 
Hallo Warme Bakkertje,

Ook deze macro werkt weer fantatisch. Bedankt. Mag ik de macro ook nog eens zien met een vraagstelling?
 
Code:
Const OverdrachtDir = "G:\Mijn documenten\Helpmij\" 'Te wijzigen in juiste opslagdirectory
Sub Overdracht()
    fDate = Application.InputBox("Geef datum op.", "Datumopgave", Format(Date, "dd/mm/yyyy"), , , , , 1)
    For Each cl In Sheets("Invoer").Range("B5:B" & Sheets("Invoer").Cells(Rows.Count, 2).End(xlUp).Row)
        If DateValue(cl.Offset(, -1)) = fDate Then
            With Sheets("Factuur")
                .Range("B12").Value = cl.Value 'factuurdatum
                .Range("B13").Value = cl.Offset(, 2).Value 'factuurnummer
                .Range("B15").Value = cl.Offset(, 4).Value 'klantnaam
                .Range("B16").Value = cl.Offset(, 5).Value 'klantadres
                .Range("B17").Value = cl.Offset(, 6).Value & " " & cl.Offset(, 7).Value 'postcode en woonplaats
                .Range("B18").Value = cl.Offset(, 8).Value 'land
                .Range("B22").Value = cl.Offset(, 9).Value 'omschrijving
                .Range("D22").Value = cl.Offset(, 10).Value 'nettoprijs
                .PrintOut Copies:=1 'Printen van factuur
                .Copy 'kopieëren factuur naar nieuw workbook
                    With ActiveWorkbook
                        [A1].Select
                        .SaveAs OverdrachtDir & .Sheets("factuur").Range("B15").Value & .Sheets("factuur").Range("B13").Value & ".xlsx"
                        .Close
                    End With
            End With
        End If
    Next
End Sub
 
Hallo Warme Bakkertje,

De macro werkt fantastisch. Je hebt me heel goed geholpen. De macro is al vollop in gebruik.
Dank je wel!!

Met vriendelijke groet

Theo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan