Producten toevoegen op een werkblad middels getrapte keuzelijsten

Status
Niet open voor verdere reacties.
Was dat niet iets met Filter, Transpose en False of zoiets. Staat mij iets van bij.
 
Daar was ik in je bestand al bang voor.

Ik heb hier een testbestandje voor je gemaakt met een opgenomen code met de recorder.
Druk Alt+F11 en verklein het scherm zodat je de code doorloopt met F8 en Excel op de achtergrond ziet sorteren.
Zie wat er gebeurd als alle kolommen één voor één gesorteerd worden/zijn.
 

Bijlagen

  • masala test.xlsm
    18,4 KB · Weergaven: 27
Wat is eigenlijk het probleem?
Het blad sorteren of de laatste 3 comboboxes gesorteerd hebben?
Dat laatste kan met 'With CreateObject("System.Collections.ArrayList")' ipv. 'With CreateObject("scripting.dictionary")'.
Daar zit een soteersleutel ingebouwd, en krijg je alle boxes alfabetisch gesorteerd.
Wordt niet eerder dan morgen.
 
Feitelijk alle kolommen waar het om gaat Kolom A tot en met F. Dit is niet mogelijk via de eerder code daar hier maar 3 sorteersleutels gebruikt kunnen worden. Dus enkel kolom A tot en met C worden nu alfanumeriek gesorteerd. D tot en met F gaan niet mee. Als er hier echt geen oplossing voor mogelijk is, waar het naar alle waarschijnlijkheid wel naar uitziet, zou ik de comboxen die over D, E en F gaan zodanig kunnen instellen dat deze in ieder geval alfanumeriek worden gesorteerd. Enkel bij het product toevoegen gaat het dan een beetje scheef, maar dat moet ik dan maar accepteren als dit niet anders is.

De comboboxen filteren toch alle gelijke waarden eruit. Als ik die waarden dan alfanumeriek laat sorteren, dan merk je er verder weinig van dan alleen dat ik dan op het tabblad visueel een verschuiving waarneem. De zaken blijven dan wel in hoofde bij elkaar gesorteerd, alleen de bijbehorende opties liggen dan een beetje door elkaar.

Dus denk ik dat het overzicht wel redelijk tot goed blijft als dan enkel de comboxen voor die kolommen alfanumeriek worden gesorteerd. De rest is dan maar jammer en moet ik maar accepteren.

Bovenstaande enkel tenzij iemand met een oplossing komt welke jij ook niet wist, want zeg eerlijk.... ieder zijn kennis is beperkt en breid men uit door te leren van anderen of uit boeken. Hierom weet iemand nooit alles.

Hiermee zeg ik dus niet dat jouw gegevens oplossing niet het definitieve is, want dat kan heel goed wel zo zijn.

Wat jij gaat doen, ga ik ook maar doen. Moet er straks ook weer vroeg uit.

Ik hoor het wel.
 
Beste HSV.

Ik durf het bijna niet te schrijven, maar ik ben toch verder wezen rommelen met de code en heb jou voorbeeld van #42 gebruikt. Echter wat hier het probleem nu even wordt, is dat de header niet blijft staan. Of ik doe in de code iets verkeerds. Als ik namelijk de voorlaatste .sort uitschakel dan loopt het goed. Schakel ik deze in dan gaat het verkeerd en gaat de header ook mee in sorteren.

Maar hoe dan ook.... volgens mij werkt dit wel........ Het is alleen met een omweg. Ik bedoel eerst worden kolom A, B en C gesorteerd. Dan daarna C, D en E (Hierna is het de bedoeling E en F, maar hier gaat het fout dus heb ik deze uitgeschakeld). Omdat kolom C, D en E nu ook staan gesorteerd en deze goed staat, laat ik vervolgens weer kolom A, B en C sorteren en komt de boel voor zo ver ik zie wel in goede orde te staan.

Bekijk bijlage masala test.xlsm

Het blauwe vakje is de knop. Je zult zien dat de header nu wordt mee gesorteerd. Speel er maar eens mee als je wilt. Misschien dat jij de puzzelstukjes kan leggen voor de header.

Overigens blijft wel, indien het toch alsnog niet werkt, gewoon post #44 staan.
 
Laatst bewerkt:
Hoeveel komma's staan er op de derde regel voor 'xlyes' ?
 
:rolleyes: Yep er stond een komma teveel. Ja dan kom ik niet uit op de header, maar op de Order Custom.

Heb deze nu verbeterd. Er staan tussen .[F2] en xlYes 5 komma's. Zo zou het dan moeten kloppen.
Code:
    With Sheets("Blad1")
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes
        .Cells(3).CurrentRegion.Sort .[D2], , .[E2], , , .[F2], , xlYes
        '.Cells(5).CurrentRegion.Sort .[E2], , .[F2], , , , , xlYes
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes
    End With

Onderstaand het voorbeeldbestandje van jou met nieuwe waarden door elkaar heen. Klik op het blauwe vakje en voor wat ik zie, klopt het dan. Of zie jij iets?

Ik weet niet zeker of jij dit al kende of wist, maar dit bedoelde ik dus. Ik kreeg het niet werkzaam omdat ik de Cells telkens op 1 hield. Maar het kan aan mij liggen. Cells(1) is toch gewoon Cells1,1 Ofwel A1, terwijl A1 overeenkomt met Cells(1 ,1).
Of worden hier de cellen in kolom A bedoelt?

Bekijk bijlage masala test.xlsm

Als laatste:
Code:
Cells(3).CurrentRegion.Sort.[D2], , .[E2], , ,.[F2], , xlYes

Klopt het dan met bovenstaande dat ik met dit stukje de kolommen D, E en F sorteer op kolom C?
 
Laatst bewerkt:
Maakt het verschil als er links van C1 direct aaneengesloten gegevens staan?
Code:
msgbox cells(3).currentregion.address
msgbox cells(5).currentregion.address

Het bestandje erbij gedaan zodat je het verschil ziet met je sorteersleutels.
Meer kan ik er echt niet van maken.
 

Bijlagen

  • masala test.xlsm
    18,2 KB · Weergaven: 32
Hmmm erg vaag. Met Cells(1) kreeg ik eerst her en der verkeerde indelingen en nu gaat het goed? Toen paste ik de code met puzzelen aan naar hoe deze nu is en daarna ging het goed. Zodoende dat ik deze hier plaatste. Nu blijkt dat met Cells(1) wel alles goed wordt gesorteerd.

Ik doe er maar geen uitspraken meer over. Ik zit nu erg gefrustreerd achter de laptop en moet maar gewoon accepteren dat het op de wijze gewoon klopt. Ik heb mijn deel van de code weer terug aangepast naar Cells(1) en meer doe ik er niet meer aan.

Ik weet nu in ieder geval dat dit dus gewoon wel kan. Of jij mij bewust liet rommelen weet ik niet, maar ik dank je in ieder geval nogmaals hartelijk. Ik ga het geheel volledig invoegen en kijken wat er in het definitieve bestand gebeurd en als alles goed verloopt dan sluit ik dit topic weer.
 
Wat is er met.........
Code:
Sub sorteren()
With Sheets("Blad1")
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
        .Cells(1).CurrentRegion.Sort .[C2], , .[D2], , , .[E2], , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
        .Cells(1).CurrentRegion.Sort .[E2], , .[F2], , , , , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
       .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
    End With
End Sub
.......anders aan het blad dan?
Code:
Sub sorteren()
With Sheets("Blad1")
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
    End With
End Sub
 
Hoi HSV. Het probleem was dat met
Code:
Sub sorteren()
With Sheets("Blad1")
        .Cells(1).CurrentRegion.Sort .[A2], , .[B2], , , .[C2], , xlYes 'Sorteren vanaf rij 2, Producten per kolom A - C alfabetisch sorteren, xlYes: 1e rij bevat Koptekstnamen.
    End With
End Sub

Hier worden enkel de kolommen A, B en C per categorie op alfa numeriek gezet. De kolommen D, E en F bleven daarbij achter. Deze werden dus niet per categorie op volgorde gezet. Hierom heb ik de kolommen D, E en F weer in een aparte regel meegenomen opdat deze dan ook weer op volgorde gezet werden. Echter toen kreeg ik weer het probleem dat A, B, en C weer door elkaar stonden. Hierop heb ik besloten om dan de laatst genoemde maar weer opnieuw op alfa volgorde te zetten. Hierna klopt het gehele weer wel en staat alles netjes als hoe het moet staan. Ook als ik nu een product opnieuw invoer en ik laat de volledige code erop los dan komt het nu te staan waar ik het echt wil hebben. Alle categorieën en subcategorieën staan nu op alfanumerieke volgorde.

Een andere manier kon ik niet vinden om dit wel voor elkaar te krijgen. Jij gaf toen in eerste aan dat die code maar 3 sorteersleutels bevatte. Ik gaf toen aan dat ik het er niet zomaar bij laat zitten daar er in feite voor ieder probleem een oplossing moet zijn te vinden. De ene keer met een omweg en de andere keer weer niet, maar een oplossing zou er over het algemeen altijd moeten zijn. Ik kwam op deze oplossing, maar gezien jouw ervaring lijkt het mij niet dat jij dit niet wist. Hoewel ieders ervaring beperkt is, heb ik mijn oplossing wel geplaatst. Dit zodat anderen er misschien ook iets aan hebben of de code in andere vorm kennen en dus die 3 coderegels kon samenvoegen. Dat heb ik hier al regelmatig voorbij zien komen. Vele codes zie ik eerst in lange lijsten staan en dan komt er iemand zoals jij, goed bedoelt overigens, die de code volledig omgooit. De code die dan overblijft komt terug in een compleet andere vorm met daarin andere sleutelwoorden en zijn ontzettend ingekort en doen exact hetzelfde. Dit ook met alle respect voor Snb, Edmoor en WarmBakkertje. Ook zij hebben hier een houtje van.

De kennis die jullie hebben om dit allemaal voor elkaar te krijgen is mijn inzien gewoon fantastisch. Voor mij zijn veel zaken abracadabra. Ik probeer veel (al lijkt het er soms niet op). Ik vind het leuk om te doen, ik probeer, ik wil leren, maar wat dat aangaat ligt mijn kunde toch echt bij het elektrotechnische. Als ik hierover begin dan kan ik uren doorgaan en heb ik vaak zoiets van begrijp je het nu nog niet. Het is toch simpel denk ik dan. Maar telkens moet ik dan weer denken.... niet ieders kennis, kunnen, begrijpen en inzicht is het zelfde. Al die codes die jullie gebruiken zijn voor mij vaak puzzelwoorden. Woorden die ik nog niet ken, niet mee gewerkt heb etc. Tuurlijk zit ook te zoeken in de help en op internet etc. Maar punt is als je soms niet weet waar je moet zoeken dan kun je blijven zoeken, maar dan vind je het nog niet en als je dan denkt het gevonden te hebben, dan lijkt het toch niet datgene te zijn wat je zocht of je snapt de code niet waardoor je deze ook niet kunt aanpassen.

Als ik jou bijvoorbeeld mijn boeken geef. Al die NEN normen boekenvol dun A4 papier dubbelzijdig gedrukt met lettergrootte 9 met een dikte van vaak 5 cm die ook nog eens naar elkaar verwijzen, zoals een wetboek. Dan denk ik ook dat het bij jou of jullie gaat duizelen met als resultaat. Laat maar, het zal wel, begrijp er niets van. Stom voorbeeld: Differentieelschakelaar. Waar en wanneer en ik welke situatie moet of mag ik deze gebruiken, is de installatie waar deze in wordt gebruikt in een bedrijf of een tot woning bestemd pand welk vermogen mag ik max toepassen, welke afschakeltijd mag deze maximaal hebben, is de installatie tijdelijk etc etc etc. De normen geven meerdere situaties aan en verwijzen ook naar elkaar. Je moet hieruit de juiste toepassing pakken. Want wat voor de ene installatie geldt, geldt voor een andere installatie of bouw bijvoorbeeld weer niet. Het kan allemaal wel werken en veilig zijn, maar is het ook volgens de regels en wordt het dan ook bij keuring goedgekeurd. Zo niet dan mag je gaan aanpassen. Net zolang dat het goed is. De werking is dan hetzelfde enkel de aanleg is dan anders.
 
Dag Maarten,

Misschien heb jij een andere bril dan ik, maar er is echt geen verschil als je de andere sorteerregels weglaat.
Die ene regel doet precies hetzelfde als de vier van jou.
Maar goed als jij er een goed gevoel bij hebt mag je de vraag wat mij betreft als opgelost markeren.

Ps. natuurlijk wist ik van die methode anders was ik er niet meegekomen, maar het brengt je niets vandaar dat ik het niet gebruik. ;)
 
Hoi HSV. Ik heb even het bestandje aangepast. Ik heb hierbij jouw code gezet onder de blauwe knop.

Mijn code met meer regels staat onder de roze knop.

Op het moment dat je de blauwe knop aanklikt zult zien dat in sommige kolommen nog her en der fouten staan terwijl het op het eerste gezicht er goed uitziet.

Klik je nu op de roze knop dan zul je zien dat er weer verschuivingen plaatsvinden.

Sluit het bestand nu zonder opslaan af en open het weer.

Zodra je nu meteen op de roze knop drukt dan staat meteen alles goed.

Graag je bevinding.

Misschien dat dit jou duidelijk maakt waar ik dus mee zat en misschien zie je dan waar ik het over heb.

Bekijk bijlage masala test.xlsm
 
Ik zit nu enkel maar te denken hoor, mocht het bij jou wel in eens werken met de blauwe knop en dus dat zodra je de roze knop indrukt er geen verschil ontstaat.

Ik werk met Excel 2007 met VBA 6.3.

Het zou mij weinig verbazen dat als jij met een hogere versie werkt, jij geen probleem ondervind.
 
Dat heb je mooi opgelost Maarten. :thumb:
Alleen brengt het je nog niet veel verder om je comboxes gesorteerd te krijgen.
 

Bijlagen

  • masala test (1).xlsm
    21,5 KB · Weergaven: 26
Als het werkelijk allemaal zo zou staan dan is er weinig aan de hand, maar maak van de 1 maar eens een 10.
Je blad staat weer niet goed gesorteerd, maar het gaat er om dat je op een gegeven moment tevreden moet zijn, en dat punt is volgens mij nu wel bereikt.
 

Bijlagen

  • masala test (1) (1).xlsm
    35,7 KB · Weergaven: 32
Mag ook 12 versus 2 zoals in het voorbeeld.
 
Jij zit in het alfanumerieke gedeelte.

Het nummerieke werkt zo ver ik zie goed. Het alfa ook. Maar zodra deze bij elkaar komen. Zoals Tekst11 en Tekst2. Als deze op volgorde gezet moeten worden dan Zal Tekst11 boven Tekst2 staan. 2 Komt na 1. Bij het sorteren wordt er gekeken tot waar er een verschil komt. Tekst daar zit geen verschil in. Het verschil komt erna. Bij de ene is het 1 (Tekst11) en bij de andere is het 2 (Tekst2). Alfanumeriek gezien klopt dit. 2 Komt na 1, terwijl numeriek de 2 voor de 11 zit.

Los dit op als volgt. Tekst 2 wordt dan Tekst02.

Tekst 02 komt dan boven Tekst 11.

Bij mij komt dit niet voor in de lijst en als ik dan zoiets moet invoeren dan zal ik inderdaad een voorloopnul moeten gebruiken.

Ik denk ook niet dat dit is op te lossen en dat dit gewoon een acceptatiepunt moet zijn. De oplossing is simpeler dan een code daarop aan te passen. Zeker voor iets wat bij mij niet veel of helemaal niet zal voorkomen.

Had ik overigens nog niet opgemerkt. Scherp van je. :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan