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

Bestelbon bakker 2

Status
Niet open voor verdere reacties.

stiefemb

Gebruiker
Lid geworden
29 apr 2010
Berichten
102
Hoi allemaal,

Ben reeds enkele dagen bezig met een bestelbon te maken voor men zaak.
Dit voor het bijhouden van onze zondagse bestellingen voor de warme bakker.
Nu moet ik deze handmatig invullen. DWZ bestelling opschrijven op een bestelblad, en op elke broodzak de naam en de produkten schrijven.
Graag had ik dit geautomatiseerd. Deels omdat ik graag met excel bezig ben, en recentelijk mij op vba heb gestort. Al doende leert men?

Even schetsen : een klant maakt een bestelling van bv. 10 sandwiches, 4 pistolets, 4 ontbijtkoeken en een wit brood.
Deze kan ik ingeven in tabblad "ingave" via het bestelformulier dat geactiveerd wordt met de knop " ingeven bestelling".
De bestellingen moeten verdeeld worden onder 4 categorieën, vandaar de 4 groepen (Pistolets, koeken, brood en diversen).
Het probleem zit hem een beetje in het tabblad "etiket_pistolets"
Omdat in het voorbeeld bovenaan de sandwiches en de pistolets in een verschillende zak moeten, heb ik hier 2 etiketten voor nodig.
1 met naam en 10 sandwiches en 1 met naam en 4 pistolets.
Moeilijker wordt het wanneer een klant bv. 2 witte pistolets, 2 groffe pistolets, 2 tijgers, 2 vloertjes besteld. Dan zou ik 4 etiketten genereren, terwijl deze allemaal in 1 zak mogen, en dus 1 etiket voldoende is.
Misschien is het gemakkelijker wanneer ik telkens een nieuwe ingave doe?
Begrijpen jullie er nog iets van? :confused:
Heb het volledige bestand bijgevoegd.
Laat gerust jullie aan- of opmerkingen horen.
Misschien kan het allemaal eenvoudiger en sla ik de bal volledig mis?
Momenteel gebeurd er iets raars in het tabblad "etiket_pistolets" wanneer ik op de knop "etiket aanmaken pistolets" druk.
Hier geeft hij nog lijnen die ik eerder ingaf, maar verwijderde?
Enfin, zie even door de bomen het bos niet meer. :)

Hopelijk kunnen jullie me terug even op de rails zetten.
Is eer iets niet duidelijk, laat gerust weten.

Bekijk bijlage BestellingenBakkerZondag.xlsm

Groeten
Steven
 
Beste,

Ik stel vast dat je met de knop "wissen inhoud etiketten" de gegevens op de tabbladen "etiket......" wist. Maar moet je de gegevens op de tabbladen "ingave......" niet wissen?
 
Beste Steven,

In je voorbeeld bestand is aan de knop Etiket aanmaken Pistolets geen macro gekoppeld, maar ook geen Private Sub gedefinieerd, met andere woorden ik kan op die knop klikken tot ik een ons weeg, maar er zal niets gebeuren. Kan dus ook niet zien wat er eventueel mis gaat.
 
En dan heb je nog het probleem hoeveel pistolets er in een zak gaan (een pistolet teveel en je hebt nog een extra etiket nodig).
Bij onze bakkers in de regio doen ze dat gewoon met de pen.
 
Begrijp wel dat dit niet gemakkelijk is.
Zal wel een oplossing vinden.
Kan er misschien toch iemand eens kijken waarom de knop "etiket aanmaken pistolet" niet doet wat ik vraag.
Namelijk aanmaken wat ingegeven is in "ingave"?

Steven
 
Hallo Steven

Als je deze code koppelt aan de knop Etiket aanmaken Pistolets gebeurt er in elk geval wat, al weet ik niet zeker of dat ook is wat je bedoelt:

Code:
Private Sub Ingave_pistolets_Click()
Dim Br, Bq
    Dim i As Long, j As Long
    
    Br = Sheets("Ingave_Pistolets").Cells(1).CurrentRegion
    ReDim Bq(1 To UBound(Br))
    For i = 2 To UBound(Br)
        Bq(i) = Br(i, 1) & "|"
        For j = 2 To UBound(Br, 2)
            If Br(i, j) <> "" Then Bq(i) = Bq(i) & Br(i, j) & " " & Br(1, j) & " "
        Next
    Next
    With Sheets("Etiket_Pistolets").Cells(1, 1).Resize(UBound(Bq))
        .Value = Application.Transpose(Bq)
        .TextToColumns , xlDelimited, , , , , , , 1, "|"
        .Resize(1, 2) = Array("Naam", "Bestelling")
    End With
End Sub

Bekijk bijlage BestellingenBakkerZondag1.xlsm
 
Beste,

Ik zie in de VBA-code dat er gebruik gemaakt van array. Ik vermoed dat je bij het begin van procedure de array moet leegmaken.
 
Het zou een idee kunnen zijn om je datamodel anders op te bouwen. Maak een artikeltabel aan waarbij je een veld "Groep-ID" oid aanmaakt. Dit is dan de verbinding tussen diverse artikelen om te bepalen of die in 1 zak mogen. Als je daarnaast het veld "Vulwaarde" opneemt in die tabel, kan je bij het vullen van een zak bepalen hoeveel er in kan voordat je een nieuwe zak moet gaan vullen. Een vulwaarde van een artikel kan je bepalen door een zak te vullen met een artikel totdat die vol is. Je weet nu hoeveel er in kunnen en dat deel je door 100 (als aanname dat het volume van een hele zak de waarde "100" heeft). Als je dit nou doet van elk artikel, heeft dus élk artikel zo'n "vulwaarde". Die kan je dan optellen totdat je óver de 100 gaat. Dan is de zak vol en moet je een nieuwe maken.
Schrijf je output van het invoerformulier weg als platte tabel met een record per besteld artikel. Je heb in die tabel dan de velden 'KLANT-ID", "ARTIKEL", "AANTAL", "AFHAALDATUM" (of wat voor gegevens er allemaal nog meer belangrijk kunnen zijn). Hiermee kan je een stuk makkelijker bewerkingen uitvoeren en rapportages maken dan via het datamodel dat je nu gebruikt.

Maar da's mijn visie op het geheel... :D
 
Mmmm, inderdaad misschien een idee.
Moet ik eens verder uitspitten.
Bedankt al! :thumb:
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan