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

excel lijst verversen

Status
Niet open voor verdere reacties.

petervdijk

Gebruiker
Lid geworden
17 dec 2015
Berichten
176
hallo,

Ik heb een nieuwe uitdaging, waar ik niet uit kom.

Ik heb een lijst met een adressen, datums, kosten en info. Nu draai vanuit de database dagelijks een nieuwe lijst. Die ik over de oude lijst wil overschrijven. Ik zou graag voor elkaar krijgen, dat als er nieuwe adressen zijn, dat deze onder de oude adressen geplakt worden, maar als er vanuit de nieuwe lijst oude adressen zijn waarvan datum is aangepast deze ook aangepast word achter de oude adressen. Alleen de kolommen a en b worden vernieuwt of aangevuld.

Hopelijk leg ik het zo duidelijke uit.

Bekijk bijlage Voorbeeld kosten.xlsx
 
En wat is de relatie tussen Blad1 en Blad2 ?
 
Hallo Philiep,

Bedankt. Komt al aardig in de buurt, wat ik mis is dat als ik alleen straat 20 t/m 30 toevoeg uit de nieuwe lijst dan word straat 1 t/m 20 overschreven, kan dat voorkomen worden? Ik wil de adressen die eerder ingevuld zijn behouden.

Ik wil graag de historische gegevens behouden.

gr, peter
 
Laatst bewerkt:
Kan je dan niet beter die "database" aanpassen? En wel zo dat die gegevens dáár gemuteerd, toegevoegd en opgeslagen worden? Lijkt mij toch beter dan dit in Excel bij te gaan houden?
 
Goedemorgen,

@Philliep, hoe kan kan ik het juist uitleggen......:)

Zodra er in ons systeem een straat gereed is, komt hij niet meer voor op de nieuwe lijst. Ik wil de straten (1 t/m 20 )in de oude lijst wil bewaren, als ik dus een nieuwe lijst draai uit ons systeem straat 20 t/m 30 dan overschrijft hij de oude straten omdat de oude straten niet voorkomen in de nieuwe lijst.

Maar.... als een oude straat bijvoorbeeld straat 5 over een nieuwe datum beschikt, dan wil ik dat alleen die specifiek die datum aangepast word.

hopelijk leg ik het zo duidelijk uit. :confused:

@Ginger, helaas is dat niet mogelijk. Ik heb "helaas" geen toegang tot de database!
 
Ik weet niet goed wat naar waar moet geschreven worden, ik heb nu van oud naar nieuw:
De afwijkende datum wordt aangepast en de nog niet voorkomende straat wordt met datum onderaan toegevoegd:

Code:
Sub cobbe()
For Each cl In Sheets("oud").Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
 With Sheets("Nieuw")
  Set rij = .Range("A:A").Find(cl)
   If Not rij Is Nothing Then
    If .Cells(rij.Row, 2) <> cl.Offset(, 1) Then
     .Cells(rij.Row, 2) = cl.Offset(, 1)
    End If
    End If
    
     If rij Is Nothing Then
      .Cells(.Range("A" & .Rows.Count).End(xlUp).Row + 1, 1) = cl
      .Cells(.Range("A" & .Rows.Count).End(xlUp).Row + 1, 2) = cl.Offset(, 1)
     End If
    
 End With
Next
End Sub
 
@ Cobbe

Ik peins dat het andersom is nl. van nieuw naar oud.

Code:
Sub tst()
    sn = Sheets("nieuw").Cells(1).CurrentRegion.Value
    sn2 = Sheets("oud").Cells(1).CurrentRegion.Resize(, 2).Value
    For i = 2 To UBound(sn)
        For ii = 2 To UBound(sn2)
            If sn(i, 1) = sn2(ii, 1) Then sn2(ii, 2) = sn(i, 2): Exit For
        Next
    Next
    With Sheets("oud")
        .Cells(1).Resize(UBound(sn2), 2) = sn2
        For i = 2 To UBound(sn)
            If IsError(Application.Match(sn(i, 1), .Columns(1), 0)) Then
                .Range("A" & .Rows.Count).End(xlUp).Offset(1).Resize(, 2) = Array(sn(i, 1), sn(i, 2))
            End If
        Next
    End With
End Sub
 
Het gaat inderdaad om nieuw naar oud. Nieuw "blad2" is de uitdraai vanaf de database. In oud word gewerkt.

Ik ben hier erg blij mee, super bedankt.

ps: is het mogelijk als er een datum van een oude straat word aangepast, deze in een bepaalde kleur weer te geven?
 
Oud en nieuw is wel erg verwarrend in het voorbeeld. In de tab nieuw staan oudere datums dan in de tab nieuw:shocked:

Hoewel het aan jou is om ook wel wat zelf te doen een aanvulling op de code van Warme bakkertje.

Code:
Sub VenA()
sn = Sheets("nieuw").Cells(1).CurrentRegion.Value
sn2 = Sheets("oud").Cells(1).CurrentRegion.Resize(, 2).Value
For i = 2 To UBound(sn)
    For ii = 2 To UBound(sn2)
        If sn(i, 1) = sn2(ii, 1) Then
            If sn2(ii, 2) <> sn(i, 2) Then c00 = c00 & "|" & ii
            sn2(ii, 2) = sn(i, 2)
            Exit For
        End If
    Next
Next
    
With Sheets("oud")
    .Columns(2).Clear
    .Cells(1).Resize(UBound(sn2), 2) = sn2
    For i = 2 To UBound(sn)
        If IsError(Application.Match(sn(i, 1), .Columns(1), 0)) Then .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 2) = Array(sn(i, 1), sn(i, 2))
    Next
    For j = 1 To UBound(Split(c00, "|"))
        .Cells(Split(c00, "|")(j), 2).Interior.Color = vbYellow
    Next j
End With
End Sub
 
Laatst bewerkt:
bedankt voor de hulp. Dit is een klein onderdeel van het geheel, waar ik niet uit kwam.

Ben er erg content mee.
 
Als ik nu bijvoorbeeld rij c ook mee wil kopiëren, hoe kan ik dat dan aanpassen in de code.

Ik heb helaas nog weinig kennis van VBA, ik zou dan ook graag willen weten wat er in de code is aangepast. zodat ik daar van kan leren. :d

Excuus voor mijn onwetendheid
 
Code:
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 3) = Array(sn(i, 1), sn(i, 2), sn(i, 3))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan