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

Vanuit standaard invulsheet een ander sheet vullen

Status
Niet open voor verdere reacties.

ray1979

Gebruiker
Lid geworden
18 okt 2006
Berichten
58
Hallo allemaal,

Voor de input van mijn access database ga ik gebruik maken van een excel file.

De bedoeling is dat de gebruiker in een standaard sheet de volgende waardes in gaat geven:

Datum van productie
Product
Merk
Productielijn
Shift
Voorman
Medewerker 1 op lijn
medewerker 2 op lijn (etc)
Aantal units geproduceerd
Aantal palletten geproduceerd
Aantal liters geproduceerd
Verpakking
Problemen tijdens productie

(de meeste waarden zullen vanuit een drop down te kiezen zijn)

Het is mijn bedoeling dat ze na elke shift deze gegevens in hetzelfde sheet invullen en dat het van daaruit gekopieerd word (bijvoorbeeld door het klikken op een knop) naar een achterliggend sheet, van waaruit de data gelinkt gaat worden naar Access.

Werk met Office 2007 (sinds vandaag, en vind het tot nu toe maar niks :p )

Iemand een idee hoe dit voor elkaar te krijgen?

Alvast bedankt:thumb:

Groeten vanuit een aangenaam Tsjechie,

Ray
 
Misschien een simpele oplossing om mee te beginnen staat in de bijlage.
Hier maak ik gebruik van "Transponeren" omdat ik aanneem dat de rijen van het invulsheet omgezet moeten worden in kolmmen voor het gebruik in Access.

Als je de historie van de wijzigingen bij wilt houden dan kan je voordat je de PastSpecial toepast eerst naar de laatste rij in "Export" gaan en dan pas inserten.
 

Bijlagen

Hoi,

Dit is idd waar ik naartoe wil, echter nu overschrijft hij altijd de eerste regel. Is het niet mogelijk dat, indien ik een nieuwe ingave geef in het invul sheet dat dit in het export sheet onder de laatste rij komt? dus dat de data als het ware wordt opgebouwd?

Groet,

Ray
 
Hoi,

Dit is idd waar ik naartoe wil, echter nu overschrijft hij altijd de eerste regel. Is het niet mogelijk dat, indien ik een nieuwe ingave geef in het invul sheet dat dit in het export sheet onder de laatste rij komt? dus dat de data als het ware wordt opgebouwd?

Groet,

Ray

Zie de nieuwe bijlage

Succes

Wim
 

Bijlagen

Hoi,

dit is m idd helemaal.

heb het ook in mn excel gezet, opmaak is vrijwel gelijk jou voorbeeld, maar als ik op mijn knop druk krijg ik de volgende melding

Run time error 1004

Application defined or object-defined error

Als ik dan op debug druk zie ik dat het Range("A1").End(xlDown).Offset(1).Select
daar fout gaat, maar ik zie echt niet wat....

Is er een verschil tussen excel 2003 en 2007 wat dat betreft? Lijkt me niet, toch?

Groet,

Ray
 
Hoi,

dit is m idd helemaal.

heb het ook in mn excel gezet, opmaak is vrijwel gelijk jou voorbeeld, maar als ik op mijn knop druk krijg ik de volgende melding

Run time error 1004

Application defined or object-defined error

Als ik dan op debug druk zie ik dat het Range("A1").End(xlDown).Offset(1).Select
daar fout gaat, maar ik zie echt niet wat....

Is er een verschil tussen excel 2003 en 2007 wat dat betreft? Lijkt me niet, toch?

Groet,

Ray

Dat komt omdat je alleen rij 1 gevuld hebt. Via bovenstaande coderegel wordt de laatste rij +1 geelecteerd en dat kan dus niet.
Als je het omdraait, werkt het wel. Hetwordt afgeraden om .Select te gebruiken.
Ik heb de macro iets korter gemaakt.

Code:
Sub Macro1()
    Range("B1:B6").Copy
    Sheets("Export").Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

End Sub

Met vriendelijke groet,


Roncancio
 
Roncancio,

bedankt, werkt perfect!

kun je me ook uitleggen waarom .Select wordt afgeraden?

ben met VBA nog een redelijke kneus, maar zie zeker wel het nut ervan in, dus wil er graag meer van leren.....

Thanks

Ray
 
Even ter lering en vermaak?

Wat is het verschil tussen
Code:
Sub Macro1()
    Range("B1:B6").Copy
    Sheets("Export").[COLOR="red"]Range("A65536").End(xlUp).[/COLOR]Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

End Sub
en
Code:
Sub Macro1()
    Range("B1:B6").Copy
    Sheets("Export").[COLOR="red"]Range("A1").End(xlDown)[/COLOR].Offset(1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

End Sub

Verder begrijp ik versnelling wel maar ik vraag me af waarom je van eneden af omhoog zoekt. Buiten dat, Excel 2007 kent veel meer rijen n.l. (1048576).

Graag uitleg

Wim
 
@ray1979.
Het werkt vertragend, is (relatief) moeilijker leesbaar en vaak niet nodig.

@WimenBeer.
Een wereld van verschil. Met de End-Functie bepaal je het einde van de reeks.
Als cellen A1 t/m A10 zijn ingevuld en je gebruikt Range("A1").End(xlDown) dan gaat de cursor naar cel A10.
Als uitsluitend cel A1 is ingevuld en je doet Range("A1").End(xlDown) dan is de cursor bij cel A65536.
Gebruik je een + erbij dan krijg je dus een foutmelding omdat Excel2003 maar 65536 (256 * 256) regels heeft. Als je van onderen werkt heb je daar geen last van.

Het klopt dat Excel 2007 1048576 (256 * 256 * 16) rijen heeft.
Het zou mij niet verbazen als de volgende versie van Excel 16.777.216 (256 * 256 * 256) rijen heeft.

Met vriendelijke groet,


Roncancio
 
Bijkomend probleem is dat als je om een of andere reden lege cellen hebt in kolom A en je zoekt van boven naar beneden er gestopt wordt bij de eerste lege cel en reeds bestaande data overschreven wordt. Bij het zoeken van beneden naar boven wordt de nieuwe data steeds onderaan toegevoegd.

Mvg

Rudi
 
Heel erg bedankt voor de uitleg. Snap de achterliggende gedachte nu beter, waardoor ik misschien het leven voor mezelf wat makkelijker kan maken in de toekomst....

Nogmaals bedankt!!

Groeten,

Ray :thumb:
 
@ray1979.
Het werkt vertragend, is (relatief) moeilijker leesbaar en vaak niet nodig.

@WimenBeer.
Een wereld van verschil. Met de End-Functie bepaal je het einde van de reeks.
Als cellen A1 t/m A10 zijn ingevuld en je gebruikt Range("A1").End(xlDown) dan gaat de cursor naar cel A10.
Als uitsluitend cel A1 is ingevuld en je doet Range("A1").End(xlDown) dan is de cursor bij cel A65536.
Gebruik je een + erbij dan krijg je dus een foutmelding omdat Excel2003 maar 65536 (256 * 256) regels heeft. Als je van onderen werkt heb je daar geen last van.

Het klopt dat Excel 2007 1048576 (256 * 256 * 16) rijen heeft.
Het zou mij niet verbazen als de volgende versie van Excel 16.777.216 (256 * 256 * 256) rijen heeft.

Met vriendelijke groet,


Roncancio

Weer wat geleerd, dank voor de toelichting

WIm
 
Bijkomend probleem is dat als je om een of andere reden lege cellen hebt in kolom A en je zoekt van boven naar beneden er gestopt wordt bij de eerste lege cel en reeds bestaande data overschreven wordt. Bij het zoeken van beneden naar boven wordt de nieuwe data steeds onderaan toegevoegd.

Mvg

Rudi

Bedankt voor de aanvulling

Wim
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan