Dropdownlist met voornamen beperkt na keuze achternaam

littlepete

Well-known Member
Joined
Mar 26, 2015
Messages
503
Office Version
  1. 365
Platform
  1. Windows
hallo :)

ik heb een userform waarin de gegevens van klanten filter of toevoeg.

hoe kan ik de dropdown list beperken van de voornamen tot die voornamen
van de mensen met de achternaam die ik er net voor heb gekozen? (en dus niet
de volledige lijst met voornamen)

kolom a: klantnummer
kolom b: achternaam
kolom c: voornaam

als ik dit kan, kan ik ook op dezelfde wijze (bv.) de taalcursussen die zij volgen
beperken tot de gekozen mensen...

bedankt !
peter, belgie
 

Excel Facts

Excel motto
Not everything I do at work revolves around Excel. Only the fun parts.
Hey Peter,

Alles goed?
Eens kijken of ik daar iets kan mee aanvangen:
Ik veronderstel dat er dubbels in de namen kunnen voorkomen en je die niet in jouw drop downs wil zien?

In het verleden heb ik het als volgt gedaan:
maak voor elke kolom die je in een drop down wil voorstellen een draaitabel aan. Deze draaitabellen liet ik dan automatisch updaten en had ik als benoemde range opgegeven die dan dienst deden als basis voor mijn drop downs.
Dit is noodzakelijk als je lijsten evolueren en als er dubbels in voorkomen. Indien niet kan het een stuk eenvoudiger.

Dus voor ik het helemaal uit de doeken doe:
- dubbels in de data en moeten die geweerd worden uit de lijsten?
- verandert de informatie vaak?
- kan je zelf draaitabellen maken? benoemde bereiken? macro's? (kwestie dat ik weet hoe uitgebreid de uitleg moet zijn)

groeten,
N
 
Upvote 0
hallo en alvast bedankt voor de hulp :)

draaitabellen maken kan ik. named ranges zijn geen probleem. draaitabel als bron voor de dropdown list instellen
(rowsource) kan ik ook.
in de namenlijst zit denk ik maar één echt dubbele naam (twee mensen met dezelfde naam dus) ...
wat je andere manier is weet ik nog niet ... macro's schrijven kan ik basically met véél afkijkwerk maar ik ken er toch al
genoeg van om wat ik overneem aan te passen...

de lijst is de verwerking van alle gepensioneerden die in ons centrum taallessen volgen en bevat klantnummer naam adres mail telefoon gsm lessenreeks niveau jaargang betalingen opmerkingen registernummer ...

de lijst "verandert" twee keer per jaar (per semester) ...

thx a lot voor alle hulp :) !!!
peter
 
Upvote 0
En ik had nog niet eens iets gedaan. Sorry voor de vertraging trouwens, maar ik had plots serieus wat werk op de plank.

Ik zou op een verborgen blad een aantal draaitabellen maken, steeds op basis van dezelfde basisdata, maar iedere keer met een ander veld. De data zelf hoeft niet eens ingevuld te worden. Je zou dit eventueel ook met formules kunnen, maar dat vind ik persoonlijk omslachtiger. De eerste draaitabel is dan gewoon de achternamen, de tweede de voornamen, de derde de lessen,...
Zorg dat je geen eindtotaal hebt voor elk van deze en dan benoem je ze als benoemd bereik. Je weet hoe dat moet, maar je moet er ook voor zorgen dat ze dynamisch zijn
Dus stel dat je draaitabel voor de achternaam op blad 2, kolom a staat, dan wordt de definitie van het bereik: (ik veronderstel dat de eerste naam in cel A3 staat en dat je niet meer dan 10000 namen hebt.)
=VERSCHUIVING(Blad2!$A$3;0;0;AANTALARG(Blad2!$A$3:$A$10000)-1;1)

Voor de tweede draaitabel zal je dan wel een filter (de achternaam) moeten instellen. Die koppel je dan met wat VBA aan de dropdown. Waarschijnlijk zal dat er ongeveer zo moeten uitzien (te plakken in de code van het tabblad waar je de dropdown hebt)
Hier wordt verondersteld dat je dropdown zich bevindt in I1 (kolom 9, rij 1)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

[COLOR=#008000]'Definieer de variabelen
[/COLOR][COLOR=#151B8D][B]Dim[/B][/COLOR] pt [COLOR=#151B8D][B]As[/B][/COLOR] PivotTable
[COLOR=#151B8D][B]Dim[/B][/COLOR] Field [COLOR=#151B8D][B]As[/B][/COLOR] PivotField
[COLOR=#151B8D][B]Dim[/B][/COLOR] NewCat AsString

[COLOR=#008000]'Amend here to filter your data
[/COLOR][COLOR=#151B8D][B]Set[/B][/COLOR] pt = Worksheets([COLOR=#800000]"Blad2"[/COLOR]).PivotTables([COLOR=#800000]"Draaitabel2"[/COLOR]) 
[COLOR=#151B8D][B]Set[/B][/COLOR] Field = pt.PivotFields([COLOR=#800000]"Achternaam"[/COLOR])
NewCat = Worksheets([COLOR=#800000]"Blad1"[/COLOR]).Range([COLOR=#800000]"I1"[/COLOR]).Value

[COLOR=#8D38C9][B]With[/B][/COLOR] pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
EndWith

End If

End Sub
Daarna doe je ook hetzelfde voor de lessen.
Gebruik tenslotte de benoemde bereiken als bron voor je dropdowns.
 
Upvote 0
bedankt voor alle uitleg ik probeer dat straks allemaal stap voor stap uit :) !!! thx :)
 
Upvote 0
hallo ;)

ben al aardig op weg :)
de drie draaitabellen zijn gemaakt (drtnaam, drtvnaam, drtcode zijn de namen voor de tabbladen).

voor naam geen probleem: de userform rowsource toont mooi de lijst van achternamen.

de laatste lijn van je uitleg is niet duidelijk :
" Hier wordt verondersteld dat je dropdown zich bevindt in I1 (kolom 9, rij 1) "

deze macro dient om te zorgen dat na keuze van de achternaam, de lijst voornamen beperkt wordt ?
moet die dan niet OF op het tablad van de draaitabel (drtvnaam) ? ...

thx voor de "begeleiding" :)
peterke :D
 
Upvote 0
hallo ;)

*knip*
de laatste lijn van je uitleg is niet duidelijk :
" Hier wordt verondersteld dat je dropdown zich bevindt in I1 (kolom 9, rij 1) "

deze macro dient om te zorgen dat na keuze van de achternaam, de lijst voornamen beperkt wordt ?
moet die dan niet OF op het tablad van de draaitabel (drtvnaam) ? ...

thx voor de "begeleiding" :)
peterke :D

Wel om te beginnen... op een of andere manier is mijn code onvolledig in de vorige reply terecht gekomen. Dat helpt ongetwijfeld om je meer in de war te brengen. :s

Een beetje meer uitleg omtrent het onduidelijke zinnetje:

de macro dient inderdaad om de lijst voornamen te beperken op basis van de selectie van de familienaam die je eerder maakte. Deze macro moet dus uitgevoerd worden van zodra je een selectie in de dropdown van de familienamen maakt. Ik heb verondersteld, omdat ik jouw file niet ken, dat de dropdown familienamen in I1 staat. De kans dat dat juist is, is één op ettelijke miljoenen, dus wou ik je alvast meegeven dat je het zelf in de macro kunt aanpassen.
Staat die dropdown in A1, dan verander je de lijnen als volgt: (de bovenste lijn ontbrak in mijn vorige comment)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

' Target.column = 9 wil zeggen kolom i, Target.row = 1 wil zeggen rij 1
If Target.Column = 9 And Target.Row = 1 Or Target.Column = 9 And Target.Row = 2 Then
Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat AsString

'Amend here to filter your data
Set pt = Worksheets("Blad2").PivotTables("Draaitabel2")
Set Field = pt.PivotFields("Achternaam")
NewCat = Worksheets("Blad1").Range("I1").Value

With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
EndWith

End If

End Sub
 
Upvote 0
hey ;)

het is mij nog niet duidelijk waar ik die worksheet change bij mij moet zetten...
- in het tabblad waar de gegevens staan ; - in het tabblad van de draaitabel achternaam ; - tabblad draaitabel voornaam ? ...

een overzichtje kort waar alles te vinden is:
tabbladen : lessen - lijsten - personen - drtnaam - drtvnaam
userform : "seniorama" : naam = combobox5 ; voornaam = combobox6
named ranges: voor draaitabel lijst achternamen: drtnaam ; en voor idem voornaam: drtvnaam

misschien is t zo wat duidelijker...
ik ga nu werken vanavond puzzel ik verder alvast bedankt :) !!!
peterke
 
Upvote 0
Jup, die verduidelijking maakt het iets tastbaarder voor mij.

Ik was vergeten er rekening mee te houden dat het een userform betreft. Die code ging er van uit dat het een data-validatie dropdown was, in een gewone cel dus.

Je hebt dus deze trigger nodi<code>g ComboBox_click() ipv de hele worksheet_change rommel en verderop in de code is er ook een aanpassing nodig:

Dim pt As PivotTable
Dim Field As PivotField
Dim NewCat AsString

'Amend here to filter your data
Set pt = Worksheets("Blad2").PivotTables("Draaitabel2")
Set Field = pt.PivotFields("Achternaam")
NewCat </code>= Me.ComboBox1.Value<code></code><code>

With pt
Field.ClearAllFilters
Field.CurrentPage = NewCat
pt.RefreshTable
EndWith

End If

End Sub
</code>
 
Upvote 0
hallo ;)

ik krijg een fout bij " dim field as pivotfield :
fout 1004 eigenschap van klasse pivottable kan niet worden opgehaald ...

ik ben naast dit ook bezig aan de telefoonnummers-opmaak... haast je dus zeker niet, doe maar wanneer je tijd hebt :)
ben al zeer blij dat iemand helpt :) ! thx :)

peterke
 
Upvote 0

Forum statistics

Threads
1,214,958
Messages
6,122,475
Members
449,087
Latest member
RExcelSearch

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top