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

Als waarde/tekst begint met "00" dan

Status
Niet open voor verdere reacties.

Andre175

Gebruiker
Lid geworden
2 feb 2018
Berichten
351
Goedemiddag,


Ik krijg iedere maand van de loonadministratie een excel-bestand met het loonjournaal.
Uit dit bestand wil ik door middel van een macro de benodigde gegevens in een text bestand (TAB gescheiden) zetten zodat ik deze kan importeren in mijn boekhouding.

In Kolom A (beginnend bij A9) eerst de text "000012 NaamWerknemer1,
Dan een aantal volgende rijen met de text "1700 af te dragen loonheffing" of 1710 "af te dragen verzekeringen" (Altijd 4 cijfers, het grootboeknummer, met een omschrijving)

Nu ben ik op zoek naar een stukje VBA-code welke eigenlijk deze formule vervangt.

Code:
=ALS(LINKS(A9;2)="00";DEEL(A9;8;20);0)

Dan kan ik daar mee verder puzzelen voor wat ik wil bereiken.

Wat in de gele kolom staat in het bestand heb ik zelf bijgevoegd... alles andere komt bij de loonadministratie weg, de opmaak van rij 1 t/m 9 is iedere week gelijk.
Vanaf rij 10 wordt het afhankelijk van het aantal grootboekregels dat er gebruikt worden.

André
 

Bijlagen

  • loonjournaal.xlsx
    12,7 KB · Weergaven: 14
Laatst bewerkt:
zou je ook willen aangeven op een aantal regels wat je als uitkomst verwacht?
 
Een tabblad toegevoegd met het beoogde resultaat.
Dit Tabblad wordt dan opgeslagen als text bestand, TAB gescheiden. (dan kan ik deze in het memoriaal van de boekhouding importeren)
Op zich hoeft er geen tabblad worden toegevoegd, enkel het Text bestand, Tab gescheiden is van belang.

De macro wil ik dan in het navigatievenster van excel zetten, zodat ik het ontvangen bestand kan openen, macro uitvoeren, en bestand weer afsluiten.
Daarna verder met het boekhoudprogramma.

PS... Het bestand wat ik van de loonadministratie ontvang bestaat uit meerder Tabbladen.
Het Tabblad "Wn gb" is er 1 van.
 

Bijlagen

  • loonjournaal.xlsx
    14,7 KB · Weergaven: 10
Laatst bewerkt:
Andre, als je excel 365 gebruikt kun je met de filter functie heel ver komen.
vertel eens welke excel je gebruikt
 
Waarom exporteert de loonadministratie niet een Tab-gescheiden of CSV bestand ?
 
Omdat zij dit niet in de juiste opmaak (zoals ik het nodig ben) kunnen zetten vanuit hun programma.
Ze hebben wel een aantal koppelingen met verschillende boekhoudpakketten, dit zijn met name de online boekhoudpakketten.

Ik heb een offline boekhoudpakket, gebruikt net ff andere opmaak voor de import bestanden.
 
bedoel je zoiets? ik moet wel zeggen dat er betere manieren zijn.
 

Bijlagen

  • loonjournaal.xlsm
    27,7 KB · Weergaven: 11
Ik zou liever met geëxporteerde tekstbestanden werken dan met een verkeerd opgemaakt Excel-bestand.

Code:
Sub M_snb()
   sn = Blad3.Cells(10, 1).CurrentRegion.Resize(, 4)
   For j = 2 To UBound(sn)
     If Left(sn(j, 1), 2) = "00" Then
        c00 = Mid(sn(j, 1), 8)
     Else
        sn(j, 4) = c00 & " " & Mid(sn(j, 1), 5)
        sn(j, 1) = Val(sn(j, 1))
     End If
  Next
  
  Blad3.Cells(10, 1).CurrentRegion.Resize(, 4) = sn
  Blad3.usedrange.columns(4).specialcells(4).entirerow.delete
End Sub

Mij verbaast dat een medewerker geen eigen kostenplaatsnummer heeft.
 
Laatst bewerkt:
Andre, ik heb hem naast de gele kolom gezet: ik hoop dat je er mee verder kan. anders horen we het wel.
als vba een optie is geef dat dan aan.
 

Bijlagen

  • loonjournaal sp.xlsx
    18,3 KB · Weergaven: 14
@Emields
Met deze code worden de getallen voor de werknemers weg gehaald, dat was nu niet mijn bedoeling.
Maar door jouw input wel nu in de smiezen hoe ik bepaalde cellen eruit kan filteren om verder te bewerken. thanks

@SNB
Deze code doet bijna wat ik graag wil, de rest red ik me wel mee. (denk ik)
Het antwoord is al meer dan ik in eerste instantie om gevraagd had.
Had 1 foutmelding... Blad3.cells(....
ondanks dat in mijn bestand het te bewerken blad ook Blad3 was, deed ie het niet
Gewijzigd in Sheets("Wn gb").Cells... toen ging het wel goed.

Wat betreft de kostenplaats per medewerker...
Dit is niet nodig, eigenlijk mogen alle gelijke grootboeknummers ook wel bij elkaar opgeteld worden, dus niet per medewerker.
De Loonbelasting bijvoorbeeld, die ik als werkgever betaal van alle werknemers komt ook per maand op 1 hoop.
Voor me zelf wil ik het wel per werknemer weg zetten... je weet maar nooit waar het goed voor is.
En door 1 Macro... blijft de hoeveelheid werk hetzelfde, of het nu per werknemer of alles op 1 hoop gaat.

@sylvester-ponte
Mooi resultaat... wist niet dat dit zo ook kan.
Mijn voorkeur gaat wel uit naar de VBA code, aangezien ik iedere maand een nieuw bestand krijg.
De Macro heb ik in mijn navigatie venster van Excel staan.
Dan is het alleen een kwestie van bestand openen, Macro runnen en ik heb mijn juiste bestand welke ik kan gebruiken voor het importeren in de boekhouding.


Al met al... ben weer zeer goed op weg geholpen.
Chapeau voor alle meedenkers.
 
@ SNB

Er is nog wel een klein schoonheidsfoutje in het resultaat... is je misschien niet opgevallen omdat het onder aan de lijst is.

Knipsel.PNG

de laatste 3 regels horen er niet in te staan.


Ik dacht de code ff simpel aan te passen om het resultaat in een nieuw bestand te zetten.
maar dat ging natuurlijk niet op...

Code:
   sn = Sheets("Wn gb").Cells(10, 1).CurrentRegion.Resize(, 4)
   For j = 2 To UBound(sn)
     If Left(sn(j, 1), 2) = "00" Then
        c00 = Mid(sn(j, 1), 8)
     Else
        sn(j, 4) = c00 & " " & Mid(sn(j, 1), 5)
        sn(j, 1) = Val(sn(j, 1))
     End If
  Next
  
    Workbooks.Add
    Set wsnew = Worksheets("blad1")
  
  wsnew.Cells(10, 1).CurrentRegion.Resize(, 4) = sn
  wsnew.UsedRange.Columns(4).SpecialCells(4).EntireRow.Delete



Maakt niet uit... uiteindelijk wordt het tabblad waar het resultaat op komt te staan toch apart opgeslagen.
 
Laatst bewerkt:
Code:
Sub M_snb()
   With Blad3.Cells(10, 1).CurrentRegion
    sn = .Resize(.Rows.Count - 3, 4)
   End With
   
   For j = 2 To UBound(sn)
     If Left(sn(j, 1), 2) = "00" Then
        c00 = Mid(sn(j, 1), 8)
     Else
        sn(j, 4) = c00 & " " & Mid(sn(j, 1), 5)
        sn(j, 1) = Val(sn(j, 1))
     End If
  Next
  
  Sheet1.Cells(1).Resize(UBound(sn), UBound(sn, 2)) = sn
  Sheet1.UsedRange.Columns(4).SpecialCells(4).EntireRow.Delete
  Sheet1.Copy
  
  ActiveWorkbook.SaveAs "G:\OF\snb.txt", 20
  ActiveWorkbook.Close 0
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan