macro voor updaten lijst op tabblad

Status
Niet open voor verdere reacties.

bertuzzz

Nieuwe gebruiker
Lid geworden
8 dec 2010
Berichten
3
Bekijk bijlage testbook.zipHoi allen,

Ik ben net nieuw op dit forum; dus hoi allemaal!

Ik zit met het de volgende situatie.

Ik heb een excellijst met 3 tabbladen. Er is één tabblad die alle data (= tabblad data) verzameld vanuit de andere 2 (input) tabbladen.
Alle primary key's zijn aanwezig op het tabblad data en er zal nooit een nieuwe regel worden aangemaakt.

Verder zijn er 2 input tabbladen die telkens worden vernieuwd.
Voorheen werkte het tabblad 'data' met vlookups, maar door de grootte van het excel bestand is dit nu geen optie meer.
Nu wil ik graag een macro maken die de data in het tabblad 'data' update vanuit de input tabbladen.
Ik heb er een voorbeeldje bijgedaan.

wie kan mij helpen met het schrijven van deze macro. Ik ben erg nieuw mbt vba.

Greets,
Bert
 
Laatst bewerkt:
Bert,

Welkom op dit forum.

Ik heb een kopie van jouw progje bijgevoegd.

Ik ben er wel vanuit gegaan dat input 1 en 2 altijd in de linker kolom beginnen.
Op welke regel je start maakt niet uit.

Klik op de tekst linksboven van sheet data en kijk wat er gebeurd.
 

Bijlagen

Hoi Supermeeuw,

ziet er in eerste instantie goed uit. Ik moet nu weg, ik kijk er straks beter naar.
Alvast bedankt :).

Update:
Ik zie dat als een van de input sheets geen data bevat de data wordt weggehaald uit het tabblad 'data'.
Het is de bedoeling dat er enkel wordt geüpdated als een keynr voorkomt op de sheet input.
De geüpdate data kan vervolgens worden verwijderd van het tabblad input.
Hoe kan ik dit realiseren?


Groeten,
Bert
 
Laatst bewerkt:
Bert,

Als je mij maar aanspreekt met Superzeeuw ipv supermeeuw komt alles goed.
 
Hoi SuperZeeuw :D

Bedankt voor je reactie.
Ik heb inmiddels een oplossing voor het probleem; ik heb de volgende macro gehanteerd:


Sub import_voorbereiden()

'1. identify number of rows in brondata sheet
i = 24
Do
If Sheet6.Cells(i, 3).Value = "" Or i > 1048575 Then
Exit Do
End If

i = i + 1
Loop

rowsBrondata = i

'2. identify number of rows in import voorbereiden sheet
rowsImpVoorbereiden = rowsBrondata
For i = rowsBrondata To 25 Step -1
If Sheet7.Cells(i, 2).Value = "" And Sheet7.Cells(i, 3).Value = "" And _
Sheet7.Cells(i, 4).Value = "" And Sheet7.Cells(i, 5).Value = "" Then
rowsImpVoorbereiden = i - 1
Else
Exit For
End If
Next

'3. sort Import Voorbereiden sheet (we assume sheet Brondata is already sorted)
Sheet7.Range(Sheet7.Cells(24, 2), Sheet7.Cells(rowsImpVoorbereiden, 11)).Sort key1:=Sheet7.Cells(24, 3), order1:=xlAscending

'4. execute data import
i = 24
j = 24
Do
If i > rowsImpVoorbereiden Or j > rowsBrondata Then
Exit Do
End If

If Sheet7.Cells(i, 3).Value > Sheet6.Cells(j, 3).Value Then
j = j + 1
ElseIf Sheet7.Cells(i, 3).Value < Sheet6.Cells(j, 3).Value Then
i = i + 1
ElseIf Sheet7.Cells(i, 3).Value = Sheet6.Cells(j, 3).Value Then
Sheet6.Cells(j, 8).Value = Sheet7.Cells(i, 6).Value
Sheet6.Cells(j, 9).Value = Sheet7.Cells(i, 7).Value
Sheet6.Cells(j, 11).Value = Sheet7.Cells(i, 9).Value
Sheet6.Cells(j, 12).Value = Sheet7.Cells(i, 10).Value
Sheet6.Cells(j, 13).Value = Sheet7.Cells(i, 11).Value
i = i + 1
End If

Loop


'5. clear import sheet
'un-comment the next to lines to clear the input sheet
Sheet7.Range(Sheet7.Cells(24, 2), Sheet7.Cells(rowsImpVoorbereiden, 7)).ClearContents

End Sub

Mvg,

Bertuz
 
Bertuz,

Bedankt voor je reactie terug, altijd leuk om te horen dat men een oplossing heeft gevonden.

Zou je de volgende keer de code in een box willen plaatsen.
Selecteer de code en klik dan op het #-button.

Zie voorbeeld:

Code:
Sub import_voorbereiden()

'1. identify number of rows in brondata sheet
i = 24
Do
If Sheet6.Cells(i, 3).Value = "" Or i > 1048575 Then
Exit Do
End If

i = i + 1
Loop

rowsBrondata = i

'2. identify number of rows in import voorbereiden sheet
rowsImpVoorbereiden = rowsBrondata
For i = rowsBrondata To 25 Step -1
If Sheet7.Cells(i, 2).Value = "" And Sheet7.Cells(i, 3).Value = "" And _
Sheet7.Cells(i, 4).Value = "" And Sheet7.Cells(i, 5).Value = "" Then
rowsImpVoorbereiden = i - 1
Else
Exit For
End If
Next

'3. sort Import Voorbereiden sheet (we assume sheet Brondata is already sorted)
Sheet7.Range(Sheet7.Cells(24, 2), Sheet7.Cells(rowsImpVoorbereiden, 11)).Sort key1:=Sheet7.Cells(24, 3), order1:=xlAscending

'4. execute data import
i = 24
j = 24
Do
If i > rowsImpVoorbereiden Or j > rowsBrondata Then
Exit Do
End If

If Sheet7.Cells(i, 3).Value > Sheet6.Cells(j, 3).Value Then
j = j + 1
ElseIf Sheet7.Cells(i, 3).Value < Sheet6.Cells(j, 3).Value Then
i = i + 1
ElseIf Sheet7.Cells(i, 3).Value = Sheet6.Cells(j, 3).Value Then
Sheet6.Cells(j, 8).Value = Sheet7.Cells(i, 6).Value
Sheet6.Cells(j, 9).Value = Sheet7.Cells(i, 7).Value
Sheet6.Cells(j, 11).Value = Sheet7.Cells(i, 9).Value
Sheet6.Cells(j, 12).Value = Sheet7.Cells(i, 10).Value
Sheet6.Cells(j, 13).Value = Sheet7.Cells(i, 11).Value
i = i + 1
End If

Loop


'5. clear import sheet
'un-comment the next to lines to clear the input sheet
Sheet7.Range(Sheet7.Cells(24, 2), Sheet7.Cells(rowsImpVoorbereiden, 7)).ClearContents

End Sub

P.S.: Wil je de vraag nog op opgelost zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan