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

Rijen verwijderen vanaf gegeven datum - macro

Status
Niet open voor verdere reacties.

anton44

Verenigingslid
Lid geworden
20 mei 2005
Berichten
1.780
Graag zag ik een oplossing met macro om:
Iedere rij vanaf rij 8 te verwijderen als de datum in kolom D van die rij lager is dan die vermeld in cel $D$5
De dtums in kolom D staan in oplopende volgorde.
Zie voorbeeldbestand
Bekijk bijlage Voorbeeld.xlsm
 
Laatst bewerkt:
Bv.

Code:
Sub VenA()
  With Sheets("Blad1").Cells(7, 1).CurrentRegion
    .AutoFilter 4, "<" & Format(.Parent.Cells(5, 4), "m-d-yyyy")
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With
End Sub
 
probeer deze eens:

Code:
Sub anton()

With Sheets("Blad1")
    Lrij = .Range("A" & Rows.Count).End(xlUp).Row

        For i = Lrij To 8 Step -1
            If Cells(i, 4) < .Cells(5, 4).Value Then Cells(i, 1).EntireRow.Delete
        Next i

End With
End Sub

Edit: VenA was sneller en zijn code werkt sneller :)
 
Laatst bewerkt:
@ VenA en SjonR,
Beide bedankt. Ze werken beide prima en ga ze testen in mijn echte bestand.
Wat moet er aan jullie script aangepast worden als de datum in een cel op een ander tabblad staat, bv. Cel $A$1 van blad 2 ?
 
die van VenA:

Code:
Sub VenA()
  With Sheets("Blad1").Cells(7, 1).CurrentRegion
    .AutoFilter 4, "<" & Format([COLOR="#FF0000"]Sheets("Blad2").Parent.Cells(1, 1),[/COLOR] "m-d-yyyy")
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With
End Sub

en die van mij:

Code:
Sub anton()

With Sheets("Blad1")
    Lrij = .Range("A" & Rows.Count).End(xlUp).Row

        For i = Lrij To 8 Step -1
            If Cells(i, 4) < [COLOR="#FF0000"]Sheets("Blad2").Cells(1, 1).[/COLOR]Value Then Cells(i, 1).EntireRow.Delete
        Next i

End With
End Sub
 
Wederom bedankt.
Die aanpassing van script van SjonR werkt prima, maar de aanpassing op dat van VenA geeft een foutmelding.
FS-2018-01-24_135336.jpg
 
Mijn fout,:

Code:
Sub VenA()
  With Sheets("Blad1").Cells(7, 1).CurrentRegion
    .AutoFilter 4, "<" & Format(Sheets("Blad2").Cells(1, 1), "m-d-yyyy")
    .Offset(1).EntireRow.Delete
    .AutoFilter
  End With
End Sub
 
Helemaal goed ! :thumb:
Met hartelijke dank voor de snelle services.
 
In mijn werkbestand kan ik geen verschil in bewerkingstijd constateren tussen de 2 aangeboden oplossing = prima :D
 
Dan heb je maar weinig regels die verwijderd moeten worden.
 
Weinig is relatief ;)
Gemiddeld 30 à 40
Welke variant heeft jouw voorkeur ?
 
Wat denk je zelf? Rij voor rij controleren en verwijderen is de meest langzame variant. De te verwijderen rijen in een Union zetten zal bij dit beperkte aantal rijen waarschijnlijk de snelste methode zijn. Gebruik Google maar eens over wat er allemaal over geschreven is.
 
Wat denk je zelf? Rij voor rij controleren en verwijderen is de meest langzame variant. De te verwijderen rijen in een Union zetten zal bij dit beperkte aantal rijen waarschijnlijk de snelste methode zijn. Gebruik Google maar eens over wat er allemaal over geschreven is.

Je advies heb ik niet in de wind geslagen. Op het forum van exhelp.be staat e.e.a. helder vergeleken.
https://www.exhelp.be/vba/rijen-verwijderen-op-basis-van-een-celwaarde/

Met dank :thumb::thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan