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

Wie kan mij helpen met Macro's of iets anderS?

Status
Niet open voor verdere reacties.
Zo zou het in principe kunnen.
Het kan zijn dat de formules in de verkeerde kolom terechtkomen, maar dan moet je de offset maar even aanpassen.

Code:
Public Sub Tellen_Export()
    For Each a In Range("m2", Cells(Rows.Count, 13).End(xlUp)).SpecialCells(2).Areas
        With a
            m = .Address
            n = .Offset(, 1).Address
            o = .Offset(, 2).Address
            .Cells(.Rows.Count, 5) = Evaluate("sumproduct((" & m & ")*(" & n & "=""CAN""))")
            .Cells(.Rows.Count, 6) = Evaluate("SUM(--(" & n & "=""CAN""))=SUM((" & n & "=""CAN"")*(" & m & ">=1)*(" & m & "<=12)*(" & o & ">=15)*(" & o & "<=26))")
        End With
    Next a
End Sub
 
Laatst bewerkt:
@ SynerDennis Ik wordt hier wel een beetje moe van. Eerst moet ik al berichten van je aanpassen omdat je onnodig quote. En nu als wilde topics openen over hetzelfde onderwerp. Lees je anders even in hoe een forum werkt. Is voor alle partijen beter, voor jou maar vooral ook voor de helpers en als laatste voor de mods.
 
Als mijn post “getallen optellen” zijn. En ik heb Daar antwoord op. Moet ik toch nieuwe post maken met een nieuwe vraag? Ik ging er de eerste instantie verder op in, maar leek me niet juist. Mocht dit een probleem zijn. Houd ik me er aan.

1e post is vervuild door mijn warrigheid en onduidelijkheid.
2e post heb ik antwoord op en is afgerond.
3e post is deze
 
Laatst bewerkt:
Zo zou het in principe kunnen.
Het kan zijn dat de formules in de verkeerde kolom terechtkomen, maar dan moet je de offset maar even aanpassen.

Code:
Public Sub Tellen_Export()
    For Each a In Range("m2", Cells(Rows.Count, 13).End(xlUp)).SpecialCells(2).Areas
        With a
            m = .Address
            n = .Offset(, 1).Address
            o = .Offset(, 2).Address
            .Cells(.Rows.Count, 5) = Evaluate("sumproduct((" & m & ")*(" & n & "=""CAN""))")
            .Cells(.Rows.Count, 6) = Evaluate("SUM(--(" & n & "=""CAN""))=SUM((" & n & "=""CAN"")*(" & m & ">=1)*(" & m & "<=12)*(" & o & ">=15)*(" & o & "<=26))")
        End With
    Next a
End Sub

Heb deze code geprobeerd, ik krijg in kolom R nu "waar" en "onwaar" op alle gele regels en in Kolom Q de optelsom. ipv waarde "1"
 
Niemand? die me de juiste richting op kan sturen.
of is dit te gecompliceerd?
Het antwoord luidt "NEE".
Ik twijfel er niet aan dat dit in je hoofd perfect op te lossen is, dus waarom zou het in vba moeilijk moeten zijn?
Als het dus nog steeds niet werkt moet dat wel liggen aan het feit dat tot nu toe geen enkele helper kan snappen wat je condities zijn.
Als je begint met "als dit en als dat en als die en als deze, dan..."
en vervolgt met "als zus en als zo en als alfa en als omega, dan..."
welnu, dan zal je er ook na 100 posts nog niet zijn.

Mijn advies? Vergeet (tijdelijk) Excel en probeer een schema te bouwen dat begint met één conditie. In een volgende stap ga je verder met wat er moet gebeuren bij zowel de ene als de andere mogelijkheid (conditie klopt of klopt niet) en daar doe je hetzelfde, dus alweer met één conditie. Zo bouw je verder tot alle mogelijkheden zijn behandeld.
Als je dat voor mekaar hebt en dat schema post is elke helper hier in staat om je met een vingerknip de vba-oplossing te geven.
Aan jou de keuze!
 
eerst de mp, dan de euro en dan het blok !
 

Bijlagen

  • Test (13).xlsm
    28,4 KB · Weergaven: 35
Thnx COW18!

Ik zie in de macro dat de sheet naam vermeld staat, moet ik die nu veranderen als ik meerdere sheets gestuurd krijg?
Zoals;
Knipsel.PNG
Of wat moet ik veranderen als ik wil dat die alle sheets gaat update van de gehele werkmap.

Knipsel2.PNG
Nu wil ik die som achter de gele velden verbergen.

Tot slot:
Als ik nu zelf een criteria wil toevoegen gezien ik er 100 heb, hoe schrijf je die nu uit.
Stel als ik 7 cans heb van 26 kg en 6 vaten van 60 kg?
Hoe schrijf ik die nu uit?

Code:
Sub palletteren()
   Dim a() As Integer
   ReDim a(2)
   Set dict = CreateObject("scripting.dictionary")
   dict.CompareMode = vbTextCompare
   For Each ar In Sheets("DUITSLAND").UsedRange.Offset(1).Columns("R").SpecialCells(xlConstants).Areas
      dict.RemoveAll
      For Each c In ar.Cells
         dict(c.Value) = dict(c.Value) + c.Offset(, -1).Value
      Next
      k = dict.keys: it = dict.items
      s = ""
      For j = 0 To UBound(k)
         s = s & " | " & it(j) & " " & k(j)
      Next
      ar.Cells(ar.Rows.Count, 7).Value = Mid(s, 4)
      If dict.Exists("CAN") Then aantal = dict("CAN") Else aantal = 0   '12'24'32
      ReDim a(2)
      If aantal > 24 Then a(2) = Int((aantal + 8) / 32)
      aantal = Application.Max(0, aantal - a(2) * 32)
      If aantal > 12 Then a(1) = Int((aantal + 12) / 24)
      aantal = Application.Max(0, aantal - a(1) * 24)
      a(0) = -(aantal > 0)
      ar.Cells(ar.Rows.Count, 4).Resize(, 3).Value = a

   Next
End Sub

Thnx alvast!
 
Laatst bewerkt:
tja, 7 canc van 26 kg, in mijn ogen was een can gewichtsloos.
Dus ja, je gaat een beetje meer huiswerk moeten maken.
6 van van 60 kg, dus per begonnen 8 een euro voorzien.

Hoe je omgaat met paletten deels met CAN, deels met VAT, deels met DOS ????
 

Bijlagen

  • Test (13).xlsm
    30,4 KB · Weergaven: 29
Laatst bewerkt:
Njaa Miss wordt dat idd lastig maar ik ben hier al heel erg tevreden mee. Voor mijn gevoel is die voor 90% al klaar. Idd even kijken hoe ik die laatste 10% ga fixen.
Hebben zoveel palletcombinaties

Als ik de vaten toevoeg als VAT+ en VAT- Maakt die geen onderscheid.
Zie afbeelding + Vraag;
Knipsel.PNG

Code;
Code:
               'Test -- >64+ kg werkt nog niet.
               If dict.Exists("VAT+") Then Aantal = dict("VAT+") Else Aantal = 0      'vanaf hier voor de VAT+'s Rekenen
               If Aantal > 6 Then a(0) = Int((Aantal = 0) / 6)
               Aantal = Application.Max(0, Aantal - a(0) * 6)
               If Aantal > 2 Then a(0) = Int((Aantal + 3) / 6)
               Aantal = Application.Max(0, Aantal - a(0) * 6)
               If Aantal > 0 Then a(1) = 1
               
               'Test -- <64+ kg werkt nog niet.
               If dict.Exists("VAT-") Then Aantal = dict("VAT-") Else Aantal = 0      'vanaf hier voor de VAT+'s Rekenen
               If Aantal > 8 Then a(0) = Int((Aantal = 0) / 8)
               Aantal = Application.Max(0, Aantal - a(0) * 8)
               If Aantal > 4 Then a(0) = Int((Aantal + 4) / 8)
               Aantal = Application.Max(0, Aantal - a(0) * 8)
               If Aantal > 0 Then a(1) = 1
 
Laatst bewerkt:
Hoe palletiseer je precies ?
Ik ging van volgende gedachtengang uit.

deel aantal vaten+ door 6 = aantal volle europalletten
is de rest >= 4, dan 1 extra europallet
---> dit is het deel i = Int((Aantal + 2) / 6)
dus door het (aantal+2) te delen door 6 en daarvan het gehele deel te nemen

Is er nu nog een restje, dat niet nul is, in dit geval 1-3, dan op een extra minipallet
Dus opletten, als je voordien al berekeningen gemaakt had, vb op CAN, dan mag je die pallets niet overschrijven, dus is a(1) = a(1) + 1
analoge redenering met de a(0)

Code:
     If dict.Exists("VAT+") Then
      Aantal = dict("VAT+")                      'vanaf hier voor de VAT+'s Rekenen
      i = Int((Aantal + 2) / 6)                  'van zodra de rest >= 4 dan naar boven afronden
      a(0) = a(0) + i                            'bij de oorspronkelijke aantallen europallets optellen
      Aantal = Application.Max(0, Aantal - i * 6)   'wat blijft er dan nog iets over, dat nog niet op die europallets staat ?
      If Aantal > 0 Then a(1) = a(1) + 1         'dan ééntje bij de oorspronkelijke minipallets tellen
   End If

optimalisatie van de restpallets(=niet volle pallets), dat kan vermoedelijk beter in een aparte UDF, maar dat zal je best zelf eerst vooraf mooi op papier moeten zetten.
 
Laatst bewerkt:
Helder. alleen kijkt het ook naar het gewicht gezien ik
6 vaten op 1 euro kan zetten van 65 kg vaten &
8 vaten op 1 euro kan zetten van 62,5 kg
Dan heb je weer dat je bij 3 vaten, van 65 kg, ook nog eens 12 cans, van 26 kg, op 1 euro kan zetten.
bij de 62 kg vaten, kan ik 4 vaten, met 12 cans van 26 kg, op 1 euro zetten.

Zo heb ik een aantal combinaties waarvan het gewicht van Vat en Can belangrijk is om te palletiseren.
In kolom S staat die gegeven.

Pallitesering: *Deel pallets*
Zie ik vat "Ja", zie ik 65 kg "ja" aantal is "3" zie ik Can? "ja" zie ik 26 kg "ja" onder <12 "ja" = "1 Euro"
Zie ik vat "Ja", zie ik 65 kg "Ja" aantal is "3" zie ik Can? "ja" zie ik 26 kg "ja" onder <12 "Nee" tussen >12 en <24 "Ja" = "1 Euro" & "MP"

Als een CEL al 24 aangeeft moet het 1 op 1 Euro zijn. "zonder som" zeg maar. zie afb.

Dit voorbeeld moet dus 1 euro en 1 mp zijn. Knipsel.PNG
24 is vol "euro" dan heb je nog een rest over <12 is dus een extra "MP" Totaal: 26 cans


Dit voorbeeld moet dus 1 euro zijn. knipsel1.PNG
Beide is 26 maar dit wordt "verzameld". allemaal onder de 24 tot een max van 26 is 1 euro.

UDF file? zal me er is in verdiepen.
 
Laatst bewerkt:
maak dit tabelletje eens af zodat alle mogelijkheden er in staan.
 

Bijlagen

  • Tabellen.xlsx
    8,8 KB · Weergaven: 40
er zitten nog wat leegtes in je tabellen.
een paar logische rijen heb ik verwijderd.
maar kijk eens of er nog wat rijen toegevoegt moeten worden bvb waar ik het geel heb gemaakt.

vreemd dat er in een Blok geen cans van 15 kg staan.
 

Bijlagen

  • Tabellen 2.xlsx
    13,6 KB · Weergaven: 31
Laatst bewerkt:
Ja, er zijn er meer van dat soort locaties.
hier mis ik 1/0/3/......
en 1/0/2.....
en.......
 
welke oplossing zou jij kiezen? geel of oranje? en waarom

ps deze gaan nog met de hand. als je betere oplossingen weet meld het dan aub.
 

Bijlagen

  • Tabellen 3.xlsm
    15,1 KB · Weergaven: 40
oranje boven ? 3 posities ipv 4
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan