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

VBA klantenbestand doorzoeken en automatisch sorteren

Status
Niet open voor verdere reacties.

mamin

Gebruiker
Lid geworden
9 dec 2013
Berichten
36
Hallo,

Eerst wil ik zeggen dat ik heel erg blij ben met jullie forum. Ik ben een stuk wijzer geworden sinds ik de forum lees. :d

Nu naar mijn probleem.

Via onderstaande code voeg ik een nieuwe klant toe aan mijn klantdatabase (tabel autoCorrecti Optie), waar tabel groeit bij nieuwe regel . Alles werkt uitstekend en toch heb ik 2 vraagjes:

1. Is het mogelijk via VBA (nadat nieuwe klant is toegevoegd) de klantendatabase A/Z te sorteren.

2. Ik zou graag via een andere knop mijn klantenbestand willen doorzoeken.

Ik heb de knop en de macro om het te openen al gemaakt, maar ik weet niet welke VBA moet gebruiken om het werkend te krijgen.
Als ik een klant opzoek via de knop en hij bestaat niet wil ik graag een msgbox "Klant niet gevonden. Wilt u nieuwe klant toevoegen - ja nee".
Bij ja klikken wil ik graag onderstaande code/knop gebruiken die al werkt.

Ik kan ook voorbeeldje sturen van mijn klantenbestand maar.....bijna alles is in andere taal en waarschijnlijk zouden jullie niets van begrijpen :P

De gegevens van de klanten zijn verwerkt in een tabel - Bedrijven (heb een naam gegeven),(B5:L5)-ik heb maar een klant toegevoegd.

Code:
Private Sub CommandButtonToevoegen_Click()
Dim iRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Klanten")

'vindt laatst gebruikte cel, ga naar de volgende rij
iRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row


'controleer of er een naam is ingevuld'
If Trim(Me.TextNaam.Value) = "" Then
Me.TextNaam.SetFocus
MsgBox "Er is geen naam ingevoerd"
Exit Sub
End If

If Trim(Me.TextStraat.Value) = "" Then
Me.TextStraat.SetFocus
MsgBox "Er is geen straatnaam ingevoerd"
Exit Sub
End If

If Trim(Me.TextNummer.Value) = "" Then
Me.TextNummer.SetFocus
MsgBox "Er is geen huisnummer ingevoerd"
Exit Sub
End If

If Trim(Me.ComboBoxPostcode.Value) = "" Then
Me.ComboBoxPostcode.SetFocus
MsgBox "Er is geen postcode ingevoerd"
Exit Sub
End If

If Trim(Me.ComboBoxPlaats.Value) = "" Then
Me.ComboBoxPlaats.SetFocus
MsgBox "Er is geen plaats ingevoerd"
Exit Sub
End If

If Trim(Me.TextBTW.Value) = "" Then
Me.TextBTW.SetFocus
MsgBox "BTW-nummer of N.B. invoeren"
Exit Sub
End If

'plaatst de gegevens in de database'

ws.Cells(iRow, 1).Value = Me.TextNaam.Value
ws.Cells(iRow, 2).Value = Me.TextVoornaam.Value
ws.Cells(iRow, 4).Value = Me.TextVorm.Value
ws.Cells(iRow, 5).Value = Me.TextDienstofcontact.Value
ws.Cells(iRow, 6).Value = Me.TextStraat.Value
ws.Cells(iRow, 7).Value = Me.TextNummer.Value
ws.Cells(iRow, 8).Value = Me.ComboBoxPostcode.Value
ws.Cells(iRow, 9).Value = Me.ComboBoxPlaats.Value
ws.Cells(iRow, 10).Value = Me.TextBTW.Value
ws.Cells(iRow, 11).Value = Me.TextTelefoonnummer.Value
ws.Cells(iRow, 12).Value = Me.TextMobielnummer.Value

'verwijder gegevens'

Me.TextNaam.Value = ""
Me.TextVoornaam.Value = ""
Me.TextVorm.Value = ""
Me.TextDienstofcontact.Value = ""
Me.TextStraat.Value = ""
Me.TextNummer.Value = ""
Me.ComboBoxPostcode.Value = ""
Me.ComboBoxPlaats.Value = ""
Me.TextBTW.Value = ""

Me.TextTelefoonnummer.Value = ""
Me.TextMobielnummer.Value = ""

'sluit de userform'

Unload Me

'Messagebox'

MsgBox "De klant werd toegevoegd"

End Sub
 
Lijkt mij dat je meer en meer nijgt naar een database omgeving, probeer eens wat te doen met Access :)
 
:D Misschien heb je gelijk namliam maar ik heb totaal geen verstand van Access.
Als ik nu ook daar moet gaan verdiepen dan wordt ik uit huis gezet :d door mijn man omdat ik te veel achter de PC zit.
 
Je hebt al een spreadsheet, die kan je 1:1 importeren, met de wizard een formuliertje maken en Appeltje eitje :)
 
Volgende probleem is dat bij mijn excel 2010 (office) de help functie en wizard niet werken.
Ik weet niet waarom.
Heb geprobeerd Office te repareren maar heeft niet geholpen.
 
Toch kan een voorbeeldbestandje met alle formulieren en code in al heel wat verduidelijken en een gerichte oplossing geven vergemakkelijken.
 
voorbeeldje

Warme bakkertje (wat een schattige naam),

Ik weet dat je gelijk hebt, zoals ik al zei....alles is in andere taal.....een uitdaging :d

Eerste blad is regiser van uitgegeven facturen en de tweede is een klantbestand

Bekijk bijlage Invoice_Helpmij.xlsm
 
Dit is voor het sorteren. Ik heb voor de werking wel de kolomkop aangepast (zie [Naam] in de code)
Code:
Sub sort()
    With Blad2.ListObjects("Tabel1").sort
        With .SortFields
            .Clear
            .Add Range("Tabel1[[#All], [Naam]]"), SortOn:=xlSortOnValues, Order:=xlAscending
        End With
        .Header = xlYes
        .Orientation = xlTopToBottom
        .Apply
    End With
End Sub

Deze voor het zoeken naar een naam.
Zet wel op de plaats waar nu Klantenform staat de juiste naam van je formulier om nieuwe klanten toe te voegen.
Code:
Sub zoeken()
    On Error Resume Next
    With Blad2
        sn = WorksheetFunction.Match(Application.InputBox("Geef naam op", "Zoekbox", , , , , , 2), .Columns(2), 0)
    End With
    On Error GoTo 0
    If sn = vbNullString Then
        If MsgBox("Klant niet gevonden. Wilt U nieuwe klant toevoegen? - Ja Nee", vbYesNo) = vbYes Then KlantenForm.Show
    End If
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan