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

Datum meeschuiven in filter

Status
Niet open voor verdere reacties.

jelle87

Gebruiker
Lid geworden
13 nov 2013
Berichten
278
Hallo,

op mijn werk maken we gebruik van queries, om bepaalde gegevens uit te lezen uit onze database. Op basis van deze gegevens worden vervolgens facturen verstuurd, etc.

Een van die bestanden geeft een overzicht weer van verzamelde pakbonnen in het magazijn, met daarbij de status en datum van die order. In deze tabel zou ik graag iets inbouwen, waarmee hij automatisch gefilterd wordt op waarden van gisteren en nieuwer. Dit kan natuurlijk handmatig, maar automatisch is mooier. De oudere resultaten moeten echter niet verdwijnen uit de tabel, ze moeten gewoon verborgen worden.

In de bijlage zit een voorbeeld bestand. Hierin heb ik 2 stappen:
1. Filteren op magazijnstatus 5
2. Filteren op order datum, en dan op gisteren en vandaag. In dit voorbeeld is dat dan 21 en 22 augustus. Morgen is dat dan 22 en 23, etc., dus dat zou per dag doorschuiven.

In Excel zou je zoiets kunnen filteren op =VANDAAG()-1, maar dat werkt in een filter helaas niet.

In het voorbeeldbestand heb ik een knop aangemaakt, om daar onder water de filter te activeren (VBA). Ik heb daar deze code voor gemaakt (door simpelweg een macro op te nemen):
ActiveSheet.ListObjects("Tabel2").Range.AutoFilter Field:=3, Criteria1:="5"
ActiveSheet.ListObjects("Tabel2").Range.AutoFilter Field:=4, Operator:= _
xlFilterValues, Criteria2:=Array(2, "9/21/2021", 2, "9/22/2021")

Echter krijg ik een foutmelding nadat hij gefilterd heeft. En de datum staat hier statisch in, dat zou dus iets als '>VANDAAG()-1' moeten worden (maar ik weet niet wat daar de juiste code voor VBA voor is).

Ik hoop dat mijn bedoeling duidelijk is en dat iemand me verder kan helpen, alvast bedankt!
 

Bijlagen

  • Voorbeeld bestand Helpmij.xlsm
    22,6 KB · Weergaven: 21
Met een advance filter
 

Bijlagen

  • Kopie van (JP)Voorbeeld bestand Helpmij.xlsm
    29,4 KB · Weergaven: 41
Dankjewel! Dat werkt inderdaad prima op die manier, dus is zeker een optie.

Echter heeft mijn absolute voorkeur om het in dezelfde tabel toe te passen (en dat filter dan dus ook gewoon weer te kunnen wissen). De tabel zal namelijk ook gebruikt worden om af en toe oudere gegevens terug te halen. En ik wil het graag zo simpel mogelijk maken, zonder nog een extra tabel toe te moeten voegen. Kan dat ook?
 
Dat zal er aan liggen wat je wil ophalen, de gewone filter heeft ook zijn beperkingen
 
Je kan ook xlFilterInPlace gebruiken in het bestandje in #2

Code:
 Private Sub CommandButton1_Click()
  ListObjects(1).Range.AdvancedFilter xlFilterInPlace, Cells(1, 27).CurrentRegion
End Sub
 
Dat lijkt ook wel mooi inderdaad, ik zie dat de regels dan verborgen worden. Hoe krijg ik ze dan weer tevoorschijn, met een extra knop er in bijvoorbeeld?
 
Die knop staat al in het lint, Menu Gegevens → wissen.
 
Bedankt voor het meedenken Albert :)

Dat is zeker een optie, maar ik loop tegen 2 dingen aan;
1. Er komt een aparte popup waar de gewenste status ingevuld moet worden. Het lijkt wel fancy, maar ik zou dan liever 1 knop hebben die filtert en 1 die de hem weer verwijderd zeg maar.
2. Door die pop up kan er niet meer gewerkt worden in het Excel bestand zelf. Er kan dan bijvoorbeeld geen ordernummer gekopieerd worden.
 
Zelf ook een beetje meedenken.:D
Code:
Private Sub CommandButton1_Click() 'FILTEREN
With ActiveSheet.ListObjects("Tabel2").Range
    .AutoFilter
    .AutoFilter 3, 5
    .AutoFilter 4, ">=" & 1 * Date - 1
End With
End Sub
Code:
Private Sub CommandButton2_Click() 'RESET
ActiveSheet.ListObjects("Tabel2").Range.AutoFilter
End Sub
 
Het quoten van volledige berichten is niet nodig. Waarom gebruik je geen ToggleButton? Kan je het met 1 knop regelen zonder een Userform.
 

Bijlagen

  • Voorbeeld bestand Helpmij (1).xlsb
    20,7 KB · Weergaven: 12
Dat is zeker een goede optie! Echter is mijn basiskennis van VBA nog niet goed genoeg om dat er in te krijgen.

Is deze toggle button ook te gebruiken met het stukje code dat AD1957 had gemaakt? Dan zit het filter namelijk in die code en is er ook geen risico dat collega's die per ongeluk overschrijven bijvoorbeeld.

Private Sub CommandButton1_Click() 'FILTEREN
With ActiveSheet.ListObjects("Tabel2").Range
.AutoFilter
.AutoFilter 3, 5
.AutoFilter 4, ">=" & 1 * Date - 1
End With
End Sub
en
Private Sub CommandButton2_Click() 'RESET
ActiveSheet.ListObjects("Tabel2").Range.AutoFilter
End Sub

Wederom dank voor de hulp :)
 
Zo? eigenlijk had je dit zelf wel kunnen bedenken.
Code:
Private Sub ToggleButton1_Click()
 With ToggleButton1
  If .Value Then
    ListObjects(1).Range.AutoFilter 3, 5
    ListObjects(1).Range.AutoFilter 4, ">=" & 1 * Date - 1
    .Caption = "Filter uitzetten"
  Else
    ListObjects(1).Range.AutoFilter
    .Caption = "Klik hier om te filteren"
  End If
  .BackColor = IIf(.Value, vbRed, vbGreen)
 End With
End Sub
 
Laatst bewerkt:
ja, dat bedoel ik inderdaad. Bedankt!

Nog 1 verzoek haha: de knop verwijderd nu de filter van de tabel (en zet hem weer terug zodra de knop weer ingedrukt wordt). Is het ook mogelijk om het filter te wissen in plaats van verwijderen? Daarmee kan de tabel dan handmatig gefilterd worden (op andere resultaten), maar ook automatisch via die knop.
 
Dan zet je de filtervoorwaarden toch op een (verborgen) ander blad?
 

Bijlagen

  • Voorbeeld bestand Helpmij (1).xlsb
    22,4 KB · Weergaven: 11
Daarmee kan de tabel dan handmatig gefilterd worden (op andere resultaten)
Dus waarschijnlijk beter een Userform gebruiken (of zoals jij het noemt een Pop-up)
 
Nee, met zo'n Userform is het niet meer mogelijk om de ordernummers te kopiëren en te plakken (in ons boekhoudprogramma bijvoorbeeld). Vandaar dat het mooier zou zijn om de filter alleen te resetten, maar dus niet te verwijderen. Ik weet niet of dat überhaupt mogelijk is?
 
Dan zet je toch gewoon in eigenschappen van de USerform Showmodal op False
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan