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

VBA copieren van gefilterde waarden naar nieuw werkblad

Status
Niet open voor verdere reacties.

oeldere

Terugkerende gebruiker
Lid geworden
26 dec 2008
Berichten
2.741
Beste forumleden,

ik ben op zoek naar een goede VBA code om gefilterde waarden te kunnen copieren.

zelf heb ik een macro opgenomen, die deze gegevens doet.

ik heb echter veel betere oplossingen voorbij zien komen.

wie wil me hier bij helpen.

onderstaande de opgenomen code.
criteria1=2 is een handmatig invoer.
uiteraard wil ik deze ook graag automatiseren.

hebben jullie vragen, laat het gewoon even weten.

Code:
Sub filtercopieren()
'
' filtercopieren Macro

    ActiveCell.FormulaR1C1 = "2"
    Range("C2").Select
    Sheets("data").Select
    ActiveSheet.Range("$A$5:$P$25").AutoFilter Field:=16, Criteria1:="2"
    Rows("14:56").Select
    Selection.Copy
    Sheets("uitvoer").Select
    Range("A6").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Sheets("data").Select
    Range("A1").Select
    ActiveSheet.Range("$A$5:$P$25").AutoFilter Field:=16
    Sheets("uitvoer").Select
    Range("A1").Select
End Sub
 

Bijlagen

  • VBAcopierenopbasisvanfilter.xls
    47 KB · Weergaven: 67
Test deze eens Oeldere.

Code:
Sub tst()
Application.DisplayAlerts = False
With Sheets("data")
    Set rng = Intersect(.AutoFilter.Range.EntireRow, Columns(1))
    Set rng1 = rng.Offset(1).Resize(rng.Rows.Count - 1, 16).SpecialCells(xlVisible)
    rng1.Copy Sheets("uitvoer").[A65536].End(xlUp).Offset(1).Resize(, 16)
    .ShowAllData
End With
Application.DisplayAlerts = True
End Sub
 
Oeldere,

Progje een beetje aangepast.
Je kunt de macro nu starten vanaf het tabblad "Uitvoer" met een knop.
Je programma flikkert niet meer en het resultaat wordt gekopieerd en daarna wordt het autofilter weer uitgezet.

Is dit wat je zoekt en wil?
 

Bijlagen

  • Kopie van VBAcopierenopbasisvanfilter.xls
    49 KB · Weergaven: 106
Oeldere, de macro van Harry wat verder uitgewerkt met nu een variabel te filteren weeknr in uitvoer!D1 .

@Superzeeuw
Ik verkies de macro van Harry(die mij bekend voorkomt :D) omdat deze werkt met een variabel (lees zichtbaar) aantal te kopieëren rijen, terwijl jouw macro statisch is.
 

Bijlagen

  • Filteren_Oeldere.xls
    56,5 KB · Weergaven: 138
VBA filteren op basis van meerdere criteria

Beste heren,

fantastische oplossingen.

ik wil dit toch beter gaan beheersen, en vragen is leren, dus

in rood heb ik de kernbegrippen van de vragen aangegeven.

1)in zie in de codes ieder keer het getal 16 terugkomen.
autofilter 16. Rows.Count -1,16. Resize(,16)

Wat betekent dit getal?

=> zelf opgelost, dit is kolom 16 (P) :p


2) nu wordt opgevraagd op basis van 1 criteria.

graag zou ik ook de mogelijkheid willen hebben om te kunnen selecteren op 2 criteria.
op basis van naam (kolom 7) met het criteria in uitvoer!d2

dit zal gaan met de code
Code:
With Sheets("data")
    .[A5:P25].AutoFilter 7, [uitvoer!D2]
dit even getest maar er wordt een foutmelding gegeven.

a) Hoe koppel ik deze codes aan elkaar?
b) Of dient hier een geheel nieuwe code voor geschreven te worden?

3) in kolom P zou is ook nog graag een selectie van perioden opgeven.
nu wordt alleen gezocht op de waarde in D1 (is nummer 2).
graag zou ik zien dat ook een aansluitende periode (b.v. nummer 2 t/m nummer 3) kan worden opgevraagd. zie bijlage (kan nu niet worden geupload)
op basis van periode (kolom 16) met het criteria in uitvoer!f1

a) hoe maak ik deze code?

Hebben jullie hier vragen over, laat het gewoon even weten.

@warme bakker
de reeks is (uiteraard) uitbreidbaar.
jij gaat in je code uit van
Code:
a5:p25
(gehele huidige bereik).
indien de reeks uitgebreid wordt, dien ik:
1) of het bereik aan te passen
2) of de oplossing van HSV [A65536] te gebruiken (in mijn geval [a2500]

Ik kan het bestand nu niet uploaoden.
Indien jullie toch graag het toch ontvangen, zal ik dit vanmiddag uploaden.
 
Laatst bewerkt:
het bestandje zoals vermeld uit #5 bijgevoegd.
 

Bijlagen

  • Filteren_Oeldere (versie2).xls
    52 KB · Weergaven: 71
voor dit soort vragen neig ik meer naar uitgebreid filteren ipv gewoon filteren, omdat je meer en/of constructies kan maken. Loop daarom eens in de help te zooeken naar uitgebreid filteren en daar vind je een mooie waslijst van mogelijkheden.
Hier toegepast zit in uitvoer!H1:J2 het criteriumbereik, dus als je meer/min voorwaarden nodig hebt moet je die bereik aanpassen en dan ben je vertrokken. Probleem is dat de koprij ook altijd meegekopieerd wordt, dus moet je die ook even wissen.
 

Bijlagen

  • Filteren_Oeldere%20(versie2)(1).xls
    53,5 KB · Weergaven: 111
Ik verkies de macro van Harry(die mij bekend voorkomt :D).

Dat dacht ik wel Rudi. :d:d,

Ik had al wel een uur een code getest met iets van 'VisibleRange of Not Hidden' er in.
Nadat niets voldeed ben ik op zoek gegaan op andere fora, en zag daar deze code die jou zo bekend voor komt. :d:d

Beter goed gejat dan slecht gemaakt; en Oeldere ermee van dienst te zijn.

Ik bekijk straks alles even verder.
 
Beste forumleden,

ik ben zeer content met de aangedragen oplossingen.

uiteindelijk heb ik de code van cow 18 gebruikt omdat ik voor meerdere criteria wil kiezen.

heb inmiddels ook gevonden (en toepasbaar gekregen) dat je met deze code eerst het bereik leegmaakt.

Code:
[uitvoer!A11].CurrentRegion.ClearContents

blijft vooral veel oefenen om (uiteraard samen met jullie) te komen tot een goede oplossing.

allen zeer hartelijk bedankt voor de inbreng. :thumb::thumb::thumb:

ik zet hem nu op opgelost.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan