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

Help met 2 vragen

Status
Niet open voor verdere reacties.

libregts65

Gebruiker
Lid geworden
14 jun 2013
Berichten
43
Beste allemaal, ik heb een ideaal programma gevonden voor mij maar.
Ik krijg 2 dingen niet aan de gang namelijk,

1 =J3/100*1,2888+J3 deze berekening werk in de lijst wel maar via het formulier niet de code daar is als volgt ws.Cells(iRow, 5).FormulaR1C1 = "=RC[5]*1.288%"
Maar ik krijg dan een geheel ander berekening.

Dan zit ik met het schrijven naar de bestellijst zodra een product de minimale voorraad heeft dan geeft hij zodra ik hem aanklik in beeld kijk maar naar product 123456.
Maar als ik dan op de knop vaar bestel lijst plaatsen doet hij het niet.

Ik hoop dat iemand dit kan oplossen ik ben je nu al dankbaar
 

Bijlagen

  • Voorraadbeheer userform Theo.xlsm
    46,1 KB · Weergaven: 16
1 deel van de oplossing misschien

verander

ws.Cells(iRow, 5).FormulaR1C1 = "=RC[5]*1.288%"

in

ws.Cells(iRow, 5).FormulaR1C1 = "=(RC[5]/100)*1.288+RC[5]"
 
Maak van je voorraad een tabel en gebruik daarin de formule
Code:
=J3*1,012888
Waarom moeilijk doen als het makkelijk kan?
Zie bijlage met voorraad in tabel, broncode iets aangepast, zie aldaar.

Achter de knop "In bestellijst zetten" (CommandButton5, niet zo'n heel logische naam) zit geen code, dus gebeurt er ook niets.
Wat wil je precies in de bestellijst plaatsen?
 

Bijlagen

  • Voorraadbeheer userform AH.xlsm
    41,9 KB · Weergaven: 5
Laatst bewerkt:
Bestellijst

Beste in de bestellijst moet komen de volgende gegevens

Artikel NR:
Omschrijving:
Leverancier:

Meer niet
 
Ik heb zo het idee dat het aantal te bestellen artikelen ook van belang is, gelijk aan de minimale voorraad?
Verder zou ik de labels van de tekstboxen voor omschrijving en artikelnummer in het kader "Pas de voorraad aan" van plaats wisselen.
En alle textboxen en knoppen een logische naam geven.
Heb je zelf al geprobeerd om de bestellijst te vullen? Kijk eens bij Sub CommandButton6_Click() 'Nieuw artikel toevoegen
Tip:
Artikelnummer = Textbox1
Omschrijving = Textbox2
Leverancier is in tabel1 te vinden (en die had ik natuurlijk TabelVoorraad moeten noemen;))
Minimum voorraad = Textbox7
 
Kijk eens naar jouw code van Commandbutton6 (toevoegen artikel)
Als je deze goed begrijpt zou het eigenlijk zelf moeten lukken.
p.s. zelf zou ik echte tabellen gebruiken.
 
Beter is het om dit stukje code direct onder de knop UITGIFTE te zetten.
Zodra de voorraad niet meer voldoet aan de minimale voorraad----> in bestellijst zetten.
 
voorraad beheer

Beste libregts65,

Heb het progje aangepast, als je iets wilt aanpassen zie en bestudeer het, dan kom je er wel.


Code:
Private Sub CommandButton1_Click() 'Voorraad aanvullen
    Dim Lijst As Integer
    
    If ListBox1.ListIndex = -1 Then
        MsgBox "Maak uw keuze in de lijst", vbExclamation
        Exit Sub
    End If
    If TextBox4.Value = "" Then
        MsgBox "Aantal ingeven aub.", vbExclamation
        TextBox4.SetFocus
        Exit Sub
    End If
    Lijst = ListBox1.ListIndex + 3
    Cells(Lijst, 3) = (Val(TextBox3.Value) + Val(TextBox4.Value))
    Cells(Lijst, 6) = CDate(TextBox5.Value)
    MsgBox "Ingave is aangepast"
    ListBox1.List = Sheets("Voorraad").Range("A3:E" & [A65536].End(3).Row).Value
End Sub

Private Sub CommandButton2_Click() 'voorraad aanvullen
    Dim Lijst As Integer
    
    If ListBox1.ListIndex = -1 Then
        MsgBox "Maak uw keuze in de lijst", vbExclamation
        Exit Sub
    End If
    If TextBox4.Value = "" Then
        MsgBox "Aantal ingeven aub.", vbExclamation
        TextBox4.SetFocus
        Exit Sub
    End If
    Lijst = ListBox1.ListIndex + 3
    Cells(Lijst, 3) = (Val(TextBox3.Value) - Val(TextBox4.Value))
    Cells(Lijst, 6) = CDate(TextBox5.Value)
    MsgBox "Ingave is aangepast"
    ListBox1.List = Sheets("Voorraad").Range("A3:E" & [A65536].End(3).Row).Value
End Sub

Private Sub CommandButton3_Click() 'Sluiten
    Unload Me
End Sub

Private Sub CommandButton4_Click() 'leegmaken zoek balk
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox3.Value = ""
    TextBox4.Value = ""
    TextBox6.Value = ""
    TextBox7.Value = ""
    TextBox21.Value = ""
    TextBox6.SetFocus
End Sub


Private Sub CommandButton5_Click() ,in bestellijst zetten
Dim LastRow As Long, ws As Worksheet
    Set ws = Blad3
    
    LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1

    ws.Range("A" & LastRow).Value = TextBox1.Text
    ws.Range("B" & LastRow).Value = TextBox2.Text
    ws.Range("C" & LastRow).Value = TextBox3.Text
    ws.Range("D" & LastRow).Value = TextBox7.Text
    ws.Range("E" & LastRow).Value = TextBox5.Text
End Sub

Private Sub ListBox1_Click()
    Dim rngMyData As Range
    TextBox1.Value = Me.ListBox1.Column(0)
    TextBox2.Value = Me.ListBox1.Column(1)
    TextBox3.Value = Me.ListBox1.Column(2)
    TextBox7.Value = Me.ListBox1.Column(3)
    TextBox21.Value = Me.ListBox1.Column(4)
    Set rngMyData = Sheets("Voorraad").Columns("A")
    TextBox4.Value = ""
    If (Val(TextBox3.Value) <= Val(TextBox7.Value)) Then
        Frame3.Visible = True
    Else
        Frame3.Visible = False
    End If
End Sub

Private Sub TextBox6_Change()
    Dim sFind As String
    sFind = Me.TextBox6.Text
     
    If Len(sFind) = 0 Then
        Me.ListBox1.ListIndex = -1
        Me.ListBox1.TopIndex = 0
    Else
        For i = 0 To Me.ListBox1.ListCount - 1
           If InStr(UCase(ListBox1.List(i)), UCase(sFind)) > 0 Then
                Me.ListBox1.TopIndex = i
                Me.ListBox1.ListIndex = i
                Exit For
            End If
        Next i
    End If
End Sub

Private Sub UserForm_Initialize()
    TextBox5.Value = Format(Date, "dd/mm/yyyy")
    ListBox1.List = Sheets("Voorraad").Range("A3:E" & [A65536].End(3).Row).Value
    TextBox6.SetFocus
    With Sheets("Leveranciers")
        ComboBox1.List = Application.Transpose(.Range("A2").Resize(Application.CountA(.Columns(1)) - 1))
    End With
End Sub

Private Sub CommandButton6_Click() 'Nieuw artikel toevoegen
    Dim n As Integer
    Dim iRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Voorraad")
    iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    Dim FindString As String
    Dim Rng As Range
    FindString = ComboBox1.Value
    If Trim(FindString) <> "" Then
        With Sheets("Leveranciers").Range("A:A")
            Set Rng = .Find(What:=FindString, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False)
            If Not Rng Is Nothing Then
                
            Else
                MsgBox "Deze leverancier bestaat niet, gelieve eerst deze leverancier aan te maken!!", vbCritical, "Niet gekende leverancier"
            End If
        End With
        'Exit Sub ''Hier stopte de macro
        TextBox16.SetFocus
    End If
    
    For n = 8 To 9
        If Me("TextBox" & n).Value = "" Then
            MsgBox "Alle gegevens moeten ingevuld zijn"
            Exit Sub
        End If
    Next n
    
    For n = 11 To 15
        If Me("TextBox" & n).Value = "" Then
            MsgBox "Alle gegevens moeten ingevuld zijn"
            Exit Sub
        End If
    Next n
    
    If Me.ComboBox1.Value = "" Then
        MsgBox "Alle gegevens moeten ingevuld zijn"
        Exit Sub
    End If
    
    Application.ScreenUpdating = False
    ws.Cells(iRow, 1).Value = Me.TextBox8.Value
    ws.Cells(iRow, 2).Value = Me.TextBox9.Value
    ws.Cells(iRow, 3).Value = Me.TextBox14.Value
    ws.Cells(iRow, 4).Value = Me.TextBox15.Value
    ws.Cells(iRow, 5).FormulaR1C1 = "=RC[5]*120%" 'aanpassen formule verkoop prijs
    ws.Cells(iRow, 6).Value = CDate(TextBox5.Value)
    ws.Cells(iRow, 7).Value = Me.ComboBox1.Value
    ws.Cells(iRow, 8).Value = Me.TextBox11.Value
    ws.Cells(iRow, 9).Value = Me.TextBox12.Value
    ws.Cells(iRow, 10).Value = Me.TextBox13.Value
    With ws.ListObjects("Tabel1").Sort
        .SortFields.Clear
        '.SortFields.Add2 Key:=Range("Tabel1[Artikel nr.]")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    
    Me.TextBox8.Value = ""
    Me.TextBox9.Value = ""
    Me.ComboBox1.Value = ""
    Me.TextBox11.Value = ""
    Me.TextBox12.Value = ""
    Me.TextBox13.Value = ""
    Me.TextBox14.Value = ""
    Me.TextBox15.Value = ""
    
    ListBox1.List = Sheets("Voorraad").Range("A3:E" & [A65536].End(3).Row).Value
    
    Application.ScreenUpdating = True
End Sub

Private Sub CommandButton7_Click() 'Leverancier toevoegen
    Dim n As Integer
    Dim iRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Leveranciers")
    iRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    
    For n = 16 To 20
        If Me("TextBox" & n).Value = "" Then
            MsgBox "Alle gegevens moeten ingevuld zijn"
            Exit Sub
        End If
    Next n

    Application.ScreenUpdating = False
    ws.Cells(iRow, 1).Value = Me.TextBox16.Value
    ws.Cells(iRow, 2).Value = Me.TextBox17.Value
    ws.Cells(iRow, 3).Value = Me.TextBox18.Value
    ws.Cells(iRow, 4).Value = Me.TextBox19.Value
    ws.Cells(iRow, 5).Value = Me.TextBox20.Value
    ws.Range("A2:E" & ws.Cells(Rows.Count, 1).End(xlUp).Row).Sort ws.Range("A3"), xlAscending
    ws.Range("A2:E" & ws.Cells(Rows.Count, 1).End(xlUp).Row).Borders.Weight = xlThin
    ws.Range("A2:E" & ws.Cells(Rows.Count, 1).End(xlUp).Row).Columns.AutoFit
    
    Me.TextBox16.Value = ""
    Me.TextBox17.Value = ""
    Me.TextBox18.Value = ""
    Me.TextBox19.Value = ""
    Me.TextBox20.Value = ""
    Application.ScreenUpdating = True
End Sub

Groetjes Ben.
 

Bijlagen

  • Voorraadbeheer userform AH.xlsm
    48,9 KB · Weergaven: 8
Nou vooruit, met de leverancier erbij:
Code:
Private Sub CommandButton5_Click()
    Leverancier = Sheets("Voorraad").ListObjects("Tabel1").ListColumns("Leverancier").DataBodyRange(ListBox1.ListIndex + 1, 1).Value
    Sheets("Bestellijst").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4) = Array(TextBox1, TextBox2, TextBox7, Leverancier)
End Sub
En wordt er iets gedaan met rngMyData in Sub ListBox1_Click()?
 
fiancieel bedrag

Aan Hulpje,
Deze is ook prima, wel heb ik een vraagje over textbox21 en Listbox 1 kolom 5 is het mogelijk deze bedragen in €50,00 te weergeven.
heb gezocht op internet maar niks gevonden.
Zou fijn zjin als jij misschien een oplossing heb.

met een vriendelijke groet Ben:thumb:
 
Code:
sub formatteren()
With ListBox1
    For i = 0 To .ListCount - 1
        .List(i, 4) = Format(.List(i, 4), "0.00")
    Next
End With
end sub
Zelf even kijken waar deze overal nodig is in de code.
 
Waarom lezen jullie niet de gehele tabel in de Listbox.
Code:
 ListBox1.List = Sheets("Voorraad").ListObjects(1).databodyrange.Value
Zet de kolommen in de Listbox die je niet wilt zien op 0pt.

Code worden eenvoudiger.
Code:
Private Sub CommandButton5_Click()
    Sheets("Bestellijst").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Resize(, 4) = Array(TextBox1, TextBox2, TextBox7, ListBox1.Column(6))
End Sub
 
Code van Harry en Albert toegevoegd, zie Sub VulListbox1() en Sub cmdBestellijst_Click().
Valuta format: Sub TextBox21_AfterUpdate()
 

Bijlagen

  • Voorraadbeheer userform AH.xlsm
    50,4 KB · Weergaven: 9
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan