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

Voorraadbeheer

Status
Niet open voor verdere reacties.

jarre2

Gebruiker
Lid geworden
9 nov 2011
Berichten
43
Bekijk bijlage In en uitboeken.xlsx

Hallo Excelgebruikers,

Ons Excel gebruik beperkt zich meestal tot een formule of een macro en indien nodig passen we die dan aan.
Voor bijgevoegd voorbeeld hebben we echter een vba code nodig.

We willen graag het volgende realiseren:
Als in kolom G (inboeken) een getal wordt ingegeven moet automatisch het bestaande getal van kolom I (huidige voorraad) worden opgehoogd met de ingave van G. Vervolgens ingave G weer wissen.

Als in kolom H (uitboeken) een getal wordt ingegeven moet automatisch het bestaande getal van kolom I (huidige voorraad) worden verlaagd met de ingave van H. Vervolgens ingave H weer wissen.

Heeft iemand een idee?
 
Hoe kan je een huidige voorraad hebben met meer dan tien cijfers achter de komma?
 
@VenA

Aantallen zijn fictief (gegenereerd met een random) kennelijk vergeten de formule weg te halen...

Bekijk bijlage 229945

Hallo Excelgebruikers,

Ons Excel gebruik beperkt zich meestal tot een formule of een macro en indien nodig passen we die dan aan.
Voor bijgevoegd voorbeeld hebben we echter een vba code nodig.

We willen graag het volgende realiseren:
Als in kolom G (inboeken) een getal wordt ingegeven moet automatisch het bestaande getal van kolom I (huidige voorraad) worden opgehoogd met de ingave van G. Vervolgens ingave G weer wissen.

Als in kolom H (uitboeken) een getal wordt ingegeven moet automatisch het bestaande getal van kolom I (huidige voorraad) worden verlaagd met de ingave van H. Vervolgens ingave H weer wissen.

Heeft iemand een idee?
 
Probeer het eens met dit achter je werkblad en sla deze op als .xlsm (Werkblad met macro's):
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Val(Target.Value) = 0 Then Exit Sub
    Application.EnableEvents = False
    Select Case Target.Column
        Case 7
            Cells(Target.Row, 9) = Cells(Target.Row, 9) + Target.Value
            Target.Value = vbNullString
        Case 8
            Cells(Target.Row, 9) = Cells(Target.Row, 9) - Target.Value
            Target.Value = vbNullString
    End Select
    Application.EnableEvents = True
End Sub
 
Laatst bewerkt:
of iets anders geschreven

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G4:H180")) Is Nothing Then
    Application.EnableEvents = False
        If Target.Column = 7 Then Target.Offset(, 2) = Target.Offset(, 2) + Target Else Target.Offset(, 1) = Target.Offset(, 1) - Target
    Target.Value = vbNullString
    Application.EnableEvents = True
End If
End Sub
 

Bijlagen

Maar net wat je prettig lezen vind :) De Application.EnableEvents is een goeie. Bij deze in mijn voorbeeld verwerkt:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Val(Target.Value) = 0 Then Exit Sub
    Application.EnableEvents = False
    Select Case Target.Column
        Case 7
            Cells(Target.Row, 9) = Cells(Target.Row, 9) + Target.Value
            Target.Value = vbNullString
        Case 8
            Cells(Target.Row, 9) = Cells(Target.Row, 9) - Target.Value
            Target.Value = vbNullString
    End Select
    Application.EnableEvents = True
End Sub

N.B:
M'n vorige post is er ook op aangepast.
 
Laatst bewerkt:
@V en A @edmoor

Beide oplossingen werken perfect! Knap werk. Hartelijk dank hiervoor, ik was er zelf niet uitgekomen.

Vr. gr.
Jarre
 
Daar is helpmij voor. Veel plezier ermee :)
 
Ook met de 'Val' is hierin een goede foutafhandeling ingebouwd. :thumb:

Voor mij een onbekende functie. Als ik het goed begrepen/gezocht heb dan elimineert deze spaties aan de voorkant en tussen de in de invoer totdat er een teken gevonden wordt anders dan een spatie of cijfer of getalscheidingstekens?
 
Typ per ongeluk maar eens een letter met je eigen code.
 
Laatst bewerkt:
Goede middag,

Dankzij de geboden oplossing op dit forum, werken we met veel plezier met "voorraadbeheer". Een kleinigheid is aan het licht gekomen; als meer dan één cel wordt geselecteerd om te delete, verschijnt de fout melding:

Fout 13 tijdens uitvoering
Typen komen niet met elkaar overeen

Is hier nog mogelijke oplossing voor?


Bekijk bijlage In en uitboeken v2.xlsm
 
Schrijf het eens zo.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G4:H180")) Is Nothing Then
        Application.EnableEvents = False
           With Target
            If Val(.Value) > 0 Then
              Cells(.Row, 9) = IIf(.Column = 7, Cells(.Row, 9) + .Value, Cells(.Row, 9) - .Value)
            End If
          End With
        Target.Value = vbNullString
        Application.EnableEvents = True
      End If
    End Sub
 
Dit is wel een hele snelle reactie. In de vorige oplossing had ik in kolom 10 "verkocht" alle uitboekingen zichtbaar gemaakt. Maw elke keer als iets werd uitgeboekt, werd dit cumulatief zichtbaar gemaakt in kolom 10. In dit script zou ik niet weten hoe. Is dit ook nog mogelijk?

Jarre
 
Helaas begrijp ik niet wat je bedoeld.
Ik zie nergens "Verkocht" in kolom 10 (J).
Wat is er niet zichtbaar?
 
@HSV

In kolom 10 (verkocht) worden alle uitboekingen (van kolom 8) bijgehouden. Steeds er een uitboeking wordt gedaan wordt deze in kolom 10 opgeteld.
Kolom 8 heeft dus de functie om de voorraad bij te houden en zorgt er tevens voor dat elke afboeking in kolom 10 wordt opgeteld.

Jarre
 
Dit bedoel je?
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("G4:H180")) Is Nothing Then
        Application.EnableEvents = False
           With Target
            If Val(.Value) > 0 Then
              Cells(.Row, 9) = IIf(.Column = 7, Cells(.Row, 9) + .Value, Cells(.Row, 9) - .Value)
      [COLOR=#FF0000]        Cells(.Row, 10) = Cells(.Row, 10) + .Value[/COLOR]
            End If
          End With
        Target.Value = vbNullString
        Application.EnableEvents = True
      End If
    End Sub
Of ?

Code:
   [COLOR="#FF0000"]Cells(.Row, 10) = IIf(.Column = 8, Cells(.Row, 10) + .Value, Cells(.Row, 10)) [/COLOR]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan