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

Sorteren zonder dubbelen

Status
Niet open voor verdere reacties.

gast0219

Gebruiker
Lid geworden
7 feb 2017
Berichten
107
Goedenavond allemaal,

ik wil graag me tabel sorteren maar dan zonder dubbele waardes die tevoorschijn komen. Nu heb ik van VenA afgelopen week deze code gekregen voor het sorteren:

With Sheets(1).ListObjects(1)
.Range.Sort .Range(1, 3), 1, , , , , , xlYes
ListBox1.List = .DataBodyRange.Value
.Range.Sort .Range(1, 3), 2, , , , , , xlYes
End With

Ben ik blij mee werkt goed maar nu heb ik wel dubbele waardes in me combobox en ik krijg het niet voor elkaar om deze eruit te halen of hier iets op aan te voegen. Dit deed ik normaal met:

With CreateObject("scripting.dictionary")
For Each Lloc In Range("ADRESfilter")
.Item(Lloc.Value) = Lloc.Value
Next Lloc
cboWERKfltr.List = .keys
End With
End Sub

Als ik deze code 2e in me userform zet en uiteraard doorverwijs naar een andere range en combobox dan krijg ik een foutmelding. Graag wil ik deze 2 zien te combineren maar dit lukt me helaas niet.

Kan iemand mij verder helpen of advies geven?

Alvast bedankt
 
De code heb je niet van mij maar van HSV en deze is ook nog door hem aangepast in een betere variant maar heb je blijkbaar over het hoofd gezien of in iedergeval niet toegepast.

Tip1 plaats code tussen code tags
Tip2 plaats een voorbeeldbestandje
Tip3 stel geen vervolgvraag als de vorige nog niet opgelost is
Tip4 kijk hier eens http://www.snb-vba.eu/VBA_Userform_in_database.html
 
ja sorry VenA die had ik idd van HSV, had ook al de verbeterde gezien, had ik ook in me bestand staan al ik ben de oude aan het proberen te bewerken omdat ik ermee verder probeer te komen, maar ik blijf hangen op het punt dat ik nog steeds helaas dubbelen in me comboboxen heb of een foutmelding krijg. Bedankt voor de tip van de site, alleen dat gaat nog net iets me pet te boven. en omdat me andere vraag nog onbeantwoord was en vrij ingewikkeld is in het totaal wilde ik het maar in stappen proberen om verder te komen of gaan nadenken over een andere oplossing.
 
Beste helpers,
Het is verloren moeite om TS nog te helpen.
1 Hij ziet alles over het hoofd.
2 Voor ieder voorzetje dat hij krijgt is hij doof en blind.
3 Iedere tip is aan hem niet besteed.
4 TS kent geen snars van VBA en doet ook geen enkele moeite om iets bij te leren, hij rekent alleen op de goodwill van de brave helpmij helpertjes.
5. Dank u of top of tof of ... staan niet in zijn woordenboek.
Verder wil ik er niet over uitweiden, liever niet.
Maar indien nodig , ik heb bewijzen die ik kan door sturen naar de moderators die mijn punten kunnen staven.
 
dutchie

1. ik vraag me af hoe jij kan oordelen hoeveel uur ik hierin besteed, ik zie 1 reactie over het hoofd en dan heb ik dit??
2. de voorzetjes die ik krijg zie ik naar te kijken, net zoals de tips die ik van jullie krijg om op diverse site of voorgaande besproken items te kijken, doe ik zeker wel, alleen zoals eerder aangegeven, zoals het op desbetreffende sites staat, tja sorry, dat begrijp ik niet helemaal.
3. dat is jou oordeel
4. idd klopt, ik wist 4 weken geleden nog helemaal niets van vba nee, ik wist niet eens wat een macro was, dus ikzelf vind dat ik me best snel heb ontwikkeld in 4 weken tijd voor een leek.
5. dank u of top heb ik zeker wel vaker gezegt tegen degene die mij hebben geholpen met mijn vorige vragen, ik denk dat je daar overheen kijkt. Net zoals die mail die ik naar jou had gestuurd, heb ik ook heel duidelijk jou in bedankt bij voorbaat, alleen al voor de gedane moeite dat je er naar wilde kijken.

Als een leek zoals ik hier niet gewenst is, ZEG HET DAN DUIDELIJK !!!!
 
Na even rustig (dat was even het probleem bij me, had geen geduld) te hebben zitten nadenken en logisch nadenken is het me gelukt, mede door alle hulp hier op het forum, uiteindelijk werkt alles zoals ik wil en geen foutmeldingen meer. Ik laat eerst alles sorteren op de kolom ( dit opzetje had ik van HSV gehad, mijn dank hiervoor nog HSV :thumb::thumb:)Ik zit nu alleen nog met 1 ding en dat is me comboboxen samen laten werken met elkaar. Dus als in cbo1 de waarde xxx is gezocht in kolom1, dat er in de rest nog maar het beperkte aantal kan weergeven. Nu hebben ze nog alle resultaten die in die kolommen staan..

Momenteel laad ik dus me cbo's ( 5 stuks ) met deze code in..... ( misschien wel met een omweg, maar het doet precies wat ik wil, alfabetisch en geen dubbelen ).

With Sheets("Totale overzicht offertes").ListObjects(1)
.Range.Sort .Range(1, 2), 1, , , , , , xlYes
End With

Dim dict As Object
Dim Eloc As Range
Set dict = CreateObject("Scripting.Dictionary")

With dict
For Each Eloc In Range("Tabeloffertes[( Bedrijfs ) naam aanvraager:]")
If Not .Exists(Eloc) Then .Item(Eloc.Value) = Eloc.Value
Next Eloc
cboBDNMfltr.List = .keys
End With

Voor de volgende cbo laat ik eerst weer sorteren op kolom, dan inladen en weer door tot de laatste, ( wellicht kan dit simpeler maar ik weet nog niet hoe ) en dan laat ik alles terug zetten zoals ik het tabblad zou willen hebben staan.
Als enige zoek ik nog een oplossing dus voor het combineren van me cbo's, nog ff gaan zoeken dus, maar iedereen nog bedankt voor alle tips ( ook in voorgaande topic's ), maar het probleem van deze topic is opgelost.

gr
 

Code:
dim cl as range
[COLOR=#333333]  [/COLOR]With CreateObject("System.Collections.ArrayList")     
 For Each cl In [COLOR=#333333]Sheets("Totale overzicht offertes").[/COLOR][COLOR=#3E3E3E]Range("Tabeloffertes[( Bedrijfs ) naam aanvraager:]")[/COLOR]
        if cl = [COLOR="#0000FF"]combobox1.value[/COLOR] and not .contains(cl) then
         .add cl
       end If
      Next cl
       .sort
[COLOR=#333333] cboBDNMfltr.List = [/COLOR].toarray
[COLOR=#333333]End With[/COLOR]
 
Hartelijk dank voor deze script weer HSV :thumb::thumb: Ik ga er weer mee stoeien!!!
 
Beste HSV, ik ben van gisteravond al aan het stoeien met de opzet die je me gaf, ik heb de namen van me cbo's aangepast naar degene van mijn bestand, maar helaas wordt me combobox niet gevuld en ik snap er nix meer van... zou je me nog een goeie tip kunnen geven om me iets verder op weg kunnen en willen helpen? Ik kom er helaas weer eens niet uit :( Ik heb excel 2016 ik weet niet of dat verschil uitmaakt met de opbouw van de scrips :S :S maar ik krijg helaas de opzet van jou niet aan de praat in mijn bestand.

alvast bedankt.

Groeten Stephan
 
Laatst bewerkt:
Plaats het bestandje eens. Dan kunnen we zien wat je zoal aangepast hebt en waarom het niet werkt.
 
Besta allen, hierbij het bestand wat ik tot nu toe met uiteraard hulp van vele van jullie, heb kunnen maken. Bekijk bijlage 295251 Userform1 is wat ik momenteel heb gemaakt de manier van inladen kan dus veel sneller, dit probeer ik in userform 2 met de code die ik dus van HSV heb gekregen. Maar hetgene wat ik niet voor elkaar krijg is als ik dus op 1 waarde heb gezocht met cbo2 of cbo3 ( bedrijfsnaam of adres ) dan filtert hij het bestand naar behoren, alleen in de resterende cbo's blijven alle gegevens uit de hele kolom staan.... Ik zou graag dat de "gefilterde gegevens" erin blijven staan. Ik dacht dit makkelijk op te kunnen lossen door me userform opnieuw in te laten laden nadat ik op een waarde van een cbo heb gezocht maar dit lukte helaas niet. Userform 2 staat de code die ik hierboven van HSV kreeg, maar die krijg ik ook helaas niet werkend, er is geen foutmelding maar ook geen data en ik snap niet waarom en hoe dit op te lossen en dus wat het resultaat hiervan is :(:(

Als iemand mij zou kunnen en willen helpen, graag.... alvast hartelijk dank voor alle gedane moeite.

Gr
 
Je moet cbo2 niet inlezen in de initialize, maar na een change van bv. cbo1.
Zo krijg je afhankelijke combobox keuzes.
 
ja, dat is nou het vervelende van het hele verhaal.... b.v. als ik dus het offertenummer (cbo1) niet meer weet te herinneren maar wel het werkadres (cbo4) , wil ik ook daar als 1e keuze op kunnen filteren, dus dan moeten de waarde van de rest van de cbo's aangepast worden.... vandaar dat ik dacht en hoopte dat het juist kon via het userform_initialize, als ik die dan opnieuw zou oproepen dat alles opnieuw ingeladen wordt met de eventuele mogelijkheden... dus eigenlijk na een keuze in de ene cbo2 of cbo4, wil ik eigenlijk dat elke cbo opnieuw de eventuele mogelijkheden laat zien.
 
Je kan ze wel gewoon inlezen in de initialize, als je een keuze hebt gemaakt met de change dat je dan de uniek/sorteer code laat lopen, om ze opnieuw in te lezen.
 
Ik had het ookal geprobeert met een hele tabel...

Private Sub UserForm_Initialize()
cbo1.List = Sheets("Totale overzicht offertes").ListObjects(1).DataBodyRange.Value
cbo2.List = Sheets("Totale overzicht offertes").ListObjects(1).DataBodyRange.Value
End Sub


enz enz en dan

Private Sub cmd3_Click()
Me.cbo1.Value = ""
Me.cbo2.Value = ""
Me.cbo3.Value = ""
Me.cbo4.Value = ""
Me.cbo5.Value = ""
Me.cboDatumfltr.Value = ""

With sheets ("Totale overzicht offertes")
Blad3.Range("Tabeloffertes").AutoFilter 1, cbo3
End With

Call UserForm_Initialize

End Sub

maar dat werkte ook niet echt zoals ik had gehoopt of verwacht
 
Je stelt met kolom 1 van de databodyrange cbo1 in die allemaal uniek zijn.
Wat heeft het dan voor zin om de unieke van kolom 5 gebaseerd op cbo1 te verkrijgen, dat kan dus niet.

Zo had ik het voor ogen zoals je schreef, afhankelijke comboboxen; ik citeer: "samen laten werken met elkaar".
Nu is cbo2 afhankelijk van de wijziging van cbo1.
Als het anders moet zul je dat iets beter moeten omschrijven.
Code:
Private Sub UserForm_Initialize()
cbo1.List = Sheets("Totale overzicht offertes").ListObjects(1).DataBodyRange.Value
cbo2.List = Sheets("Totale overzicht offertes").ListObjects(1).DataBodyRange.Value
End Sub


Private Sub cbo1_click()
Dim sn, i
sn = Sheets("Totale overzicht offertes").ListObjects(1).DataBodyRange
With CreateObject("System.Collections.ArrayList")
   For i = 1 To UBound(sn)
        If sn(i, 1) = Val(cbo1.Value) And Not .contains(sn(i, 5)) Then .Add sn(i, 5)
   Next i
       .Sort
 cbo2.List = .toarray
End With
End Sub

Ps. dit wordt in ieder geval m'n laatste reactie voor vandaag.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan