Opgelost TXT Bestand naar Excel met berekening

Dit topic is als opgelost gemarkeerd

Georgyboy

Terugkerende gebruiker
Lid geworden
6 jan 2007
Berichten
1.020
Besturingssysteem
Windows 11
Office versie
365
Dag Ieder,

Heb een TXT bestand die ik graag wil naar Excel omzetten om extra simulaties te doen.

In het 1° deel zijn de inkoop + de kosten
In het 2° deel zijn de opbrengsten

Finaal De opbrengsten - de kosten = de opbrengst.

Daar het vandaag hard rekenen is en de opbrengsten hopelijk te kunnen valideren is het interessant om telkens van de calculaties
een nacalculatie te maken (wat wel gebeurd) maar VBA zou ons hier werk kunnen besparen?

Sorry dat het TXT bestand sterk vervormd is om veiligheidsredenen.

Zou dit kunnen lukken?
Het TXT bestand kunnen we wel naar Excel laden naar Vb "Blad1" of misschien kan het ook anders?

Alvast bedankt!
 

Bijlagen

Denk dat deze code met dank aan Cow18 Zou kunnen?
Wellicht kleine aanpassing(en)

Loop hier vast
aOut(iOut, 6) = IIf(aOut(iOut, 1) = "IN", -1, 1) * CDbl(Trim(Mid(sn(i), 68, 10))) 'gewicht


' .TextFileFixedColumnWidths = Array(9, 25, 11, 12, 10, 10, 13)
Const MyDir = "C:\Users\Geo\OneDrive - mXXX\Bureaublad\Desktop\Geo\Calculaties" 'dit is de directory waar normaal mijn TXT-bestanden staan


Sub Versnijden()

Dim sFilter, vaFile, aOut(), iOut As Long, bLocatie, bBegin, sCur, iArtNr

MsgBox "deze macro is voor txt-file zoals Varken 2 In.txt"

cur = CurDir
ChDir MyDir
sFilter = "Mijn Tekstfiles (*.TXT) ,*.txt," 'filteren op sn(i)files
vaFile = Application.GetOpenFilename(FileFilter:=sFilter, FilterIndex:=1, Title:="Kies je sn(i)file", MultiSelect:=False)
t = Timer
ChDir CurDir
If vaFile = False Then Exit Sub 'je hebt een geldige keuze gemaakt
sn = Split(CreateObject("scripting.filesystemobject").OpenTextFile(vaFile).ReadAll, vbCrLf) 'lees die sn(i)file in 1 keer en splits in aparte lijnen op dat vbCrLf-karakter

ReDim aOut(1 To UBound(sn), 1 To 9) 'maak een uitvoer-array klaar met ruim teveel rijen en 8 kolommen
For i = 1 To UBound(sn) 'loop alle lijnen af
If Trim(sn(i)) <> "" Then 'geen lege regel
iArtNr = iArtNr - (Trim(Left(sn(i), 9)) = "Art.Nr.") 'tel het aantal keer dat je Art.Nr. tegenkomt, om onderscheid te maken tussen grondstof en eindprodukt
If iArtNr > 0 Then
If IsNumeric(Trim(Left(sn(i), 9))) Then
Debug.Print sn(i) 'in je "direct"-venster (CTRL+G) kan je hier meevolgen wat je doet
Debug.Print Left(sn(i), 19) 'in je "direct"-venster (CTRL+G) kan je hier meevolgen wat je doet
Debug.Print Replace(Trim(Mid(sn(i), 68, 10)), ",", ".")
iOut = iOut + 1 'volgende regel in je array
aOut(iOut, 1) = IIf(iArtNr = 1, "IN", "OUT") 'grondstof of eindproduct
aOut(iOut, 2) = Trim(Mid(sn(i), 10, 25)) 'omschrijving
aOut(iOut, 3) = "'" & Trim(Mid(sn(i), 35, 11)) 'datum
aOut(iOut, 4) = "'" & Trim(Mid(sn(i), 46, 12)) 'tijdstip
aOut(iOut, 5) = Replace(Trim(Mid(sn(i), 58, 10)), ",", ".") 'partij
aOut(iOut, 6) = IIf(aOut(iOut, 1) = "IN", -1, 1) * CDbl(Trim(Mid(sn(i), 68, 10))) 'gewicht
aOut(iOut, 7) = Replace(Trim(Mid(sn(i), 78, 13)), ",", ".") 'percent
aOut(iOut, 8) = Replace(Trim(Mid(sn(i), 91, 13)), ",", ".") 'stuks
End If
End If
End If
Next

With Sheets("tabel3").ListObjects(1) 'je tabel waar je je gegevens wegschrijft
If .ListRows.Count Then .DataBodyRange.Delete ''leegmaken
'.ListColumns(3).Range.EntireColumn.ColumnWidth = 100
If iOut > 0 Then
With .ListRows.Add.Range.Range("A1").Resize(iOut, UBound(aOut, 2))
.Value = aOut 'als je zaken verzamelt hebt, schrijf ze dan in 1 keer weg
.EntireRow.AutoFit
.EntireColumn.AutoFit 'kolombreedte aanpassen
End With
End If
End With

ThisWorkbook.RefreshAll

MsgBox Format(Timer - t, "0.00\s") & vbLf & UBound(sn) & " lijnen in tekstbestand " & vbLf & vaFile & vbLf & vbLf & "Resultaat : " & iOut & " lijnen"
End Sub
 
Misschien handig om er ook bij te vertellen wat je met "loopt vast" bedoelt.
 
Dag Edmoor,

Hier stopt de lopende code bij uitvoeren;

aOut(iOut, 6) = IIf(aOut(iOut, 1) = "IN", -1, 1) * CDbl(Trim(Mid(sn(i), 68, 10))) 'gewicht
 
Dan heb je daar ook een melding bij gekregen.
 
1746549559130.png

Dank Edmoor voor me daarop te wijzen!
zie aOut (iOut, 6) = leeg
 
Zie nu dat ik volkomen mis ben, sorry,
Dank Edmoor zie nu mijn fout.

Het is van een totaal ander TXT document,
Denk dat mijn vraag ook op te lossen met VBA.
 
Dag,

Test gedaan met opname knop,
1° resultaat maar natuurlijk nog verre van gewenst resultaat.

MXXX QQ - MXXX GrRup NN, datum: 05 mQi 2025 (11:10), fRrmuliQr: 64, gQbruikQr: GQR DQ......, pagina 1
======================================================================
RQndQmQntsbQrQkQning van: RU VRRRKXXXXXXX - 107(2697)
-----------------------------------------------------------------------
Startdatum: 02-05-2025 07:48 GQwQnstQ startdatum: 02-05-2025 07:41
VQrsiQ : 1.0
RpmQrking : CalculatiQ Rpdracht handmatig aangQmaakt Rp dQ FlQx 3000
FlQx 0000: RQcQptaa KaaaassQn

LQQMUUUU
======================================================================
KRstprijs grRndstRffQn
-----------------------------------------------------------------------
Art.Nr. ArtikQlRmschrijving GQwicht Prijs TRtaal ink. RQgistr.
-----------------------------------------------------------------------
10003000 RXXX VRRRKXXXXXXX AAAAA 2451,500 kg X 10,00 = 24515,00 ( 10)
---------- -----------
TRtaal grRndstRffQn (A) 2451,500 kg 24515,00

-----------------------------------------------------------------------
KRstQn RvQr grRndstRffQn
-----------------------------------------------------------------------
Nr. Rmschrijving FactRr Prijs gQwicht TRtaal inkRRp
-----------------------------------------------------------------------
200 AAAAAAAAlkRst XXXtRla IItb&pRllRn 1,00 X 0,50 X 2451,500 kg = 1225,75
203 BBBBBBkRstQn 1,00 X 110,00 = 110,00
204 QQQQQtafval 1,00 X -10,00 = -10,00
-------------
TRtaal calculatiQ kRstQn (B) 1325,75

-------------
TRtaal kRstprijs (A+B) 25.842,75

-----------------------------------------------------------------------
RpbrQngst uitsnijdingQn bijartikQlQn
-----------------------------------------------------------------------
Art.Nr. ArtikQlRmschrijving GQwicht % Prijs RpbrQngst RQgistr.
-----------------------------------------------------------------------
50314001 PQQRFILQTPUR MINDQR DAN 4KG +1ST 0,000 (= 0,0%) 14,50 ( 0)
10030000 PQQR ZQNUWSTUK GQHQQL 0,000 (= 0,0%) 6,00 ( 0)
10029000 PQQR SCHRUDQRBAL PAT GQP /PRIMQU 0,000 (= 0,0%) 8,50 ( 0)
10508000 PQQR SRQPVLQQS Z/BQQN 0,000 (= 0,0%) 8,00 ( 0)
10446000 PQQR ZQSRIB RNTBQQND 113,860 (= 4,6%) 7,00 797,02 ( 18)
10025000 PQQR STRRFVLQQS NQK 0,000 (= 0,0%) 9,00 ( 0)
10709000 PQQR BQQNDQRQN 402,000 (= 16,4%) -0,05 -20,10 ( 5)
10048000 PQQR PLATTQ RMLRRP 0,000 (= 0,0%) 3,75 ( 0)
10024100 PQQR NQK GQHQQL Z.B.QXTRA 0,000 (= 0,0%) 8,00 ( 0)
10413000 PQQR ZQSRIB M.B. GQHQQL 0,000 (= 0,0%) 5,50 ( 0)
10027000 PQQR BRRSTLAP PAT /TRADITIRN 0,000 (= 0,0%) 5,00 ( 0)
10512000 PQQR STRRFVLQQS HALAL 697,180 (= 28,4%) 5,50 3834,49 ( 9)
10033600 PQQR GQHAKTVLQQS 80/20 VQRS HALA 270,900 (= 11,1%) 4,80 1300,32 ( 6)
10032500 PQQR AMQRICAINVLQQS HPLPL 485,240 (= 19,8%) 6,50 3154,06 ( 21)
50034001 PQQR MACHINQPQLLING DV 84,080 (= 3,4%) 4,50 378,36 ( 6)
50712000 PQQR PQQS DV 61,440 (= 2,5%) 1,00 61,44 ( 3)
50708000 PQQR MQRGPIJPQN RVQRLANGS DV 0,000 (= 0,0%) 2,00 ( 0)
50710000 PQQR VQT 100 % DV 72,380 (= 3,0%) 2,00 144,76 ( 4)
10092000 PQQR STQAK PRIMQUR GQHQQL 60,240 (= 2,5%) 14,00 843,36 ( 14)
10091000 PQQR STQAK QXTRA GQHQQL 42,680 (= 1,7%) 15,50 661,54 ( 9)
10093000 PQQR STQAK SUPQRIQUR GQHQQL 42,900 (= 1,7%) 13,00 557,70 ( 12)
10094000 PQQR STQAK TRADITIRN GQHQQL 118,600 (= 4,8%) 11,50 1363,90 ( 13)
------------ ---------
TRtaal RpbrQngst bijartikQlQn (D) 2451,500 (=100,0%) 13076,85
VQrliQs 0,000 (= 0,0%) 100,00 -100,00
-------------
TRtaal 2451,500 (=100.0%)
=====================

DQ vRlgQndQ waardQs zijn Rp basis van dQ huidigQ prijs.
------------
TRtaal nQttR RpbrQngst : 13076,85
TRtaal kRstprijs : -/- 25.842,75
------------
QCRNRMISCH RQSULTAAT : -12.765,9
-50,60 %
============
 

Bijlagen

Dag ieder,

Waarschijnlijk is deze vraag wat minder leuk om op te lossen?
Of was mijn opzet niet goed gestart, indien zo sorry daarvoor.
Mogelijk ook door de vervorming van de tekst om beschermreden en toch de tekst te behouden.
De (inkomende + Kosten) + Opbrengsten

Ben een stukje verder geraakt met 1 deel van het tekstbestand Met deels behulp van ChatGpt - Copilot.
Natuurlijk zijn de oplossingen van de Experts steeds zoveel beter. :)
Het zou leuk zijn mocht het geheel zijn uitgewerkt waar nadien in Excel berekeningen/ simulaties mogelijk zijn.

Hopelijk nog leuk om op te lossen?

Hier van blok D de opbrengsten

Van Tabblad "Blad1"
Art.Nr. ArtikelOmschrijving Gewicht % Prijs Opbrengst Registr.
-----------------------------------------------------------------------
50314001 PQQRFILQTPUR MINDQR DAN 4KG +1ST 0,000 (= 0,0%) 14,50 ( 0)
10030000 PQQR ZQNUWSTUK GQHQQL 0,000 (= 0,0%) 6,00 ( 0)
10029000 PQQR SCHRUDQRBAL PAT GQP /PRIMQU 0,000 (= 0,0%) 8,50 ( 0)
10508000 PQQR SRQPVLQQS Z/BQQN 0,000 (= 0,0%) 8,00 ( 0)
10446000 PQQR ZQSRIB RNTBQQND 113,860 (= 4,6%) 7,00 797,02 ( 18)
10025000 PQQR STRRFVLQQS NQK 0,000 (= 0,0%) 9,00 ( 0)
10709000 PQQR BQQNDQRQN 402,000 (= 16,4%) -0,05 -20,10 ( 5)
10048000 PQQR PLATTQ RMLRRP 0,000 (= 0,0%) 3,75 ( 0)
10024100 PQQR NQK GQHQQL Z.B.QXTRA 0,000 (= 0,0%) 8,00 ( 0)
10413000 PQQR ZQSRIB M.B. GQHQQL 0,000 (= 0,0%) 5,50 ( 0)
10027000 PQQR BRRSTLAP PAT /TRADITIRN 0,000 (= 0,0%) 5,00 ( 0)
10512000 PQQR STRRFVLQQS HALAL 697,180 (= 28,4%) 5,50 3834,49 ( 9)
10033600 PQQR GQHAKTVLQQS 80/20 VQRS HALA 270,900 (= 11,1%) 4,80 1300,32 ( 6)
10032500 PQQR AMQRICAINVLQQS HPLPL 485,240 (= 19,8%) 6,50 3154,06 ( 21)
50034001 PQQR MACHINQPQLLING DV 84,080 (= 3,4%) 4,50 378,36 ( 6)
50712000 PQQR PQQS DV 61,440 (= 2,5%) 1,00 61,44 ( 3)
50708000 PQQR MQRGPIJPQN RVQRLANGS DV 0,000 (= 0,0%) 2,00 ( 0)
50710000 PQQR VQT 100 % DV 72,380 (= 3,0%) 2,00 144,76 ( 4)
10092000 PQQR STQAK PRIMQUR GQHQQL 60,240 (= 2,5%) 14,00 843,36 ( 14)
10091000 PQQR STQAK QXTRA GQHQQL 42,680 (= 1,7%) 15,50 661,54 ( 9)
10093000 PQQR STQAK SUPQRIQUR GQHQQL 42,900 (= 1,7%) 13,00 557,70 ( 12)
10094000 PQQR STQAK TRADITIRN GQHQQL 118,600 (= 4,8%) 11,50 1363,90 ( 13)



Blok A: Totaal grondstoffen (A)
Blok B: Kosten over grondstoffen
Totaal (A + B)

Resultaat Opbrengst - totaal kosten (A+B)

Hopelijk nog leuk om op te lossen?
Alvast bedankt!
Groeten Georgyboy
 

Bijlagen

Ik weet niet precies wat je allemaal wilt, maar ik kom er zelf niet echt uit.
Voor jou is het waarschijnlijk gesneden koek, maar voor mij (en ik denk ook voor andere helpers) niet echt.
Je laatste bijlage helpt helaas ook niet echt – er zitten tabbladen bij die leeg zijn, dat maakt het wat verwarrend.
Ik heb een kleine poging gedaan, maar dan met Power Query in plaats van VBA.
Zou je het misschien wat duidelijker kunnen uitleggen?
 

Bijlagen

Dag Peter, Dank voor deze oplossing van een deel van het Bestand.

Sorry ieder voor het mogelijke ongemak!

Probeer het even beter uit te leggen.
  1. Blad1 = het TXT bestand
  2. Opbrengst is waar de gegevens mogen staan uit blad1
  3. Resultaat_D is een stuk met VBA uit regel 37 koptekst, regel 38 wissen en van regel 39 tot einde hier regel 60.
Het TXT bestand "Blad1" bestaat uit 4 delen zijnde:

Art.Nr. Artikelomschrijving Gewicht Prijs Totaal ink. Registr.
  1. Inkoop grondstof (hier 2451.5 kg x 10,00 € = 24515 €) = Totaal grondstoffen (A)
Art.Nr. Artikelomschrijving Gewicht Prijs Totaal ink. Registr.
-----------------------------------------------------------------------
10003000 RXXX VRRRKXXXXXXX AAAAA 2451,500 kg X 10,00 = 24515,00 ( 10)
2. De kosten
Nr. Omschrijving Factor Prijs gewicht Totaal inkoop
Factor x prijs x gewicht (1° regel) 1225.75 €
factor x prijs (2° (110 €) en 3° regel (-10 €)
Totaal kostprijs = 24515 + 1328.75 = 28840.75 €

Opbrengsten
Gewicht x prijs = Opbrengst
% = de som in % van het gewicht in de uitsnijding / gewicht (van inkoop hier 2451.5 kg)

Art.Nr. ArtikelOmschrijving Gewicht % Prijs Opbrengst Registr.
50314001 PQQRFILQTPUR MINDQR DAN 4KG +1ST 0,000 (= 0,0%) 14,50 ( 0)
10030000 PQQR ZQNUWSTUK GQHQQL 0,000 (= 0,0%) 6,00 ( 0)
10029000 PQQR SCHRUDQRBAL PAT GQP /PRIMQU 0,000 (= 0,0%) 8,50 ( 0)
10508000 PQQR SRQPVLQQS Z/BQQN 0,000 (= 0,0%) 8,00 ( 0)
10446000 PQQR ZQSRIB RNTBQQND 113,860 (= 4,6%) 7,00 797,02 ( 18)
10025000 PQQR STRRFVLQQS NQK 0,000 (= 0,0%) 9,00 ( 0)
10709000 PQQR BQQNDQRQN 402,000 (= 16,4%) -0,05 -20,10 ( 5)
10048000 PQQR PLATTQ RMLRRP 0,000 (= 0,0%) 3,75 ( 0)
10024100 PQQR NQK GQHQQL Z.B.QXTRA 0,000 (= 0,0%) 8,00 ( 0)
10413000 PQQR ZQSRIB M.B. GQHQQL 0,000 (= 0,0%) 5,50 ( 0)
10027000 PQQR BRRSTLAP PAT /TRADITIRN 0,000 (= 0,0%) 5,00 ( 0)
10512000 PQQR STRRFVLQQS HALAL 697,180 (= 28,4%) 5,50 3834,49 ( 9)
10033600 PQQR GQHAKTVLQQS 80/20 VQRS HALA 270,900 (= 11,1%) 4,80 1300,32 ( 6)
10032500 PQQR AMQRICAINVLQQS HPLPL 485,240 (= 19,8%) 6,50 3154,06 ( 21)
50034001 PQQR MACHINQPQLLING DV 84,080 (= 3,4%) 4,50 378,36 ( 6)
50712000 PQQR PQQS DV 61,440 (= 2,5%) 1,00 61,44 ( 3)
50708000 PQQR MQRGPIJPQN RVQRLANGS DV 0,000 (= 0,0%) 2,00 ( 0)
50710000 PQQR VQT 100 % DV 72,380 (= 3,0%) 2,00 144,76 ( 4)
10092000 PQQR STQAK PRIMQUR GQHQQL 60,240 (= 2,5%) 14,00 843,36 ( 14)
10091000 PQQR STQAK QXTRA GQHQQL 42,680 (= 1,7%) 15,50 661,54 ( 9)
10093000 PQQR STQAK SUPQRIQUR GQHQQL 42,900 (= 1,7%) 13,00 557,70 ( 12)
10094000 PQQR STQAK TRADITIRN GQHQQL 118,600 (= 4,8%) 11,50 1363,90 ( 13)

Hier onder de Optelsom van:
Gewicht, % en opbrengst

Laatst het resultaat van:
Inkoop + Kosten (A + B) - de opbrengsten (hier 13076.85 - 28840.75 = -15763.9

Hier zien we duidelijk dat de inkoop te hoog is tov de opbrengsten of dat de prijs van de opbrengsten hoger moet om positief uit te komen.

Handig zou zijn om het TXT bestand in te laden in Excel en via VBA of misschien Power Query te vernieuwen.
Het zijn steeds andere TXT bestanden met andere gegevens. meestal blijft de lay-out gelijk behalve de uitsnijdingen (opbrengsten) kunnen er meer of minder regels staan.

Sorry voor de transformatie van de vele woorden maar jullie begrijpen dit wellicht wel dat het om gevoelige info gaat.

Bij voorbaat dank!
Groeten Georgyboy
 
Dag Georges,

Ik denk dat de gezamenlijke hulplijn ChatGPT/Copilot nog niet goed wakker was want op Resultaat_D zijn een pakket decimalen weggevallen, en vooral als dat over lage bedragen gaat kan dat uiteraard een significant verschil voor het eindresultaat opleveren.
Wat de beginaanpak moet zijn lijkt mij min of meer duidelijk (niets anders dan een overzichtelijkere presentatie van wat je al hebt, toch?), dus als niemand mij voor is wil ik er gerust eens naar kijken, maar dat zal dan ten vroegste na het weekend zijn.
Hoe het na die eerste stap verder zal moeten is een andere kwestie, ik vraag me namelijk af hoe je daar daarna simulaties wil mee doen.
Maar goed: zorgen voor later;)
 
Wederom een poging gewaagd met power query.
Kijk eens of dit nu een beetje in de buurt komt?
Jou info en die van @Enigmasmurf proberen hierin te vertalen.
 

Bijlagen

Dag Enigmasurf,

Dank voor de éérste info

In bestand enkele bewerkingen Blad1 komt van een ERP met vaste gegevens waar bij registratie in productie
enkel de gewichten verschillen. De hoofdding komt van een opdracht die telkens word aangepast (start, leverancier, opdrachtnummer (hier 107,.....)

Blad1 uit TXT
Opbrengst uit Blad1
Simulatie
Resultaat_D via VBA code

Benieuwd wat er weer mogelijk is :)

Alvast bedankt,
Groeten,
Georgyboy

Bekijk bijlage 385066
 

Bijlagen

Dag Georges,

Het zal jou (en wie weet enkele anderen) misschien tegenvallen, maar dit is mijn allerlaatste post op dit forum!
Ik heb van een supermoderator (!) mogen vernemen dat ik én ontzettend kinderachtig én een leugenaar ben. Ik kreeg eerst al een redelijk belachelijke opmerking waar ik, onnozelaar die ik ben, nog vriendelijk en waarheidsgetrouw op gereageerd hebt, maar kreeg te horen dat het een slecht verzonnen verhaal was, m.a.w. ze weten beter dan ikzelf hoe het zit. En als het dan nog over iets ernstig zou gaan, maar het tegendeel is waar: het betreft een onwaarschijnlijk banaal iets. Blijkbaar hebben de beheerders niets beter te doen...

Dat gezegd zijnde, hierbij wat ik er net daarvoor nog van gemaakt had, en dat wil ik dus graag nog bezorgen. Als ik berekeningen doe met vba heb ik niet de neiging nog formules maar meteen de uitkomsten op het werkblad te zetten. Maar gezien je wens om nog simulaties te kunnen doen ben ik met plezier van dat principe afgeweken, dus hopelijk kan je hier iets mee.

Ik wens je verder alle succes met je job en je Excel-projecten, en meteen ook aan al die anderen die mij wél wisten te waarderen!
 

Bijlagen

Dag Enigmasmurf,
Ben er even niet goed van en heb niet de juiste woorden om je weer te bedanken.
Je bent er weer boenk op
, dit is weer een bewijs van wat je voor mij en wellicht vele anderen bent.
Zelf kan ik het niet en ben je en vele anderen dan ook steeds dankbaar om een vraag te mogen stellen de een leuker dan de andere) en toch steeds een antwoord te krijgen.
Zelf een deel van de oplossing is al zo hulpvol.
Mijn dank is groot voor je en vele anderen en dit zal voor mij en wellicht vele anderen een gemis zijn.

Graag zou ik je nog persoonlijk willen danken voor de verkregen oplossingen van nu en in het verleden.
Steeds benieuwd waar mensen de kennis halen die ik vaak zo mis.

Zal vaak aan je denken met de oplossingen die ik van je heb verkregen,
zo ook voor anderen die me hebben geholpen.

Iedere doet het op vrijwillige basis en heeft mogelijk plezier aan om het op te lossen, te helpen en er iemand blij mee te maken en dit allemaal gratis.

Weet nog uit het verleden vele jaren terug hoeveel tijd en moeite je hebt gedaan om me te helpen! :)
PS werkt nog altijd!

Hartelijk dank voor alles 😪

Groetjes,

Georges
 
@peter59
Dank ook voor je bijdrage via Power Query,
Sorry ben er nog niet goed van.
 
@Enigmasmurf
Zo, dat verhaal van jou is even niet niks.
Het roept bij mij toch wel wat vragen op zoals
  • Is dit je laatste post op het algehele forum van Helpmij of alleen "VBA ( Visual Basic for Appl.)?
  • Waar gaat het allemaal over?
  • Heb je wat voorbeelden?
@Georgyboy
Ik vind dit geheel een leuke uitdaging. VBA vs Power query
Dus heb ik nog wat verder geknutseld.
Geef eens je mening over de bijlage.
Komt deze in de buurt dan ben ik bereid om verdere tekst en uitleg te geven anders hoort het voor mij op.
Ik ben dan wel benieuwd hoe de VBA freaks het gaan oplossen.
 

Bijlagen

@peter59
Leuk dat je er ook tijd en energie wilt insteken en het vanop een andere manier binnen Excel toepassingen oplost.
Ja dit is voor mij ook héél leerzaam te zien hoe het opgebouwd is.
Dit is zeker een te gebruiken voorbeeld waar nadien simulaties mogelijk zijn.

Sorry dak ik daar ook niet zo ver sta en meer tekst en uitleg nodig heb om het te begrijpen.
Een goede code in Vba kan het tekstbestand laden en direct verwerken zo ook nieuwe bestanden uit 1 map.
Fijn dat Power Query ook veel kan en als men de M-Code begrijpt nog meer mee kan, denk ik toch.

Dank voor dit mee op te lossen op een andere manier en hoop dat je dit ook leuk vind.
Hartelijk dank om van jouw ook te mogen leren.

Groeten,
Georges
 
Dag Enigmasmurf,

Je code getest op 2 originele gelijkaardige TXT bestanden en beide met 1 klik direct het gewenste resultaat. :)
Alles berekend correct met een wijziging van de aankoopprijs en de prijsaanpassingen in de uitsnijdingen.

Top!
Hartelijk dank

@peter59
Het jouwe bekijk ik ook zeker en vast verder!
Leuk te zien hoe je dit stuk voor stuk bewerkt om uiteindelijk tot het resultaat te komen. Heel interessant en leerrijk voor mij.
Weet niet of alle stukjes in één M-code kunnen om zo mits mogelijk een, kleine aanpassing in de M-code een soortgelijk
resultaat kan worden bekomen zoals met VBA?

Hier gezien de M-Code uit "OrgOpbrengstInkoop" best veel stappen gedaan.
Denk dat de meeste van deze kunnen gekopieerd worden voor een nieuw resultaat uit een ander TXT bestand.

let
Bron = Excel.CurrentWorkbook(){[Name = "OrgTXTfile"]}[Content],
Tekst = Table.TransformColumnTypes(Bron, {{"Kolom1", type text}}),
TekensVerw = Table.SelectRows(
Tekst,
each (
[Kolom1]
<> null
and [Kolom1] <> " "
and [Kolom1]
<> " ------------"
and [Kolom1]
<> " ============"
and [Kolom1]
<> " -------------"
and [Kolom1]
<> " ---------- -----------"
and [Kolom1]
<> " ------------ ---------"
and [Kolom1] <> " ------------- "
and [Kolom1] <> " ====================="
and [Kolom1] <> "-----------------------------------------------------------------------"
and [Kolom1] <> "======================================================================"
)
),
SpatiesVerw = Table.AddColumn(
TekensVerw,
"AlleSpatiesVerw",
each Text.Combine(List.Select(Text.Split(Text.Trim([Kolom1]), " "), each _ <> ""), " ")
),
KolVerw = Table.SelectColumns(SpatiesVerw,{"AlleSpatiesVerw"}),
GesplitstOp1steSpatie = Table.SplitColumn(
KolVerw,
"AlleSpatiesVerw",
Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false),
{"Art.Nr.", "Rest"}
),
BovensteRijenVerwijderd = Table.Skip(GesplitstOp1steSpatie, each [#"Art.Nr."] <> "Kostprijs"),
OndersteRijenVerwijderd = Table.RemoveLastN(BovensteRijenVerwijderd, each [#"Art.Nr."] <> "Opbrengst"),
SplitsenOmschrijving = Table.SplitColumn(OndersteRijenVerwijderd, "Rest", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Omschrijving", "Rest.2", "Rest.3", "Rest.4", "Rest.5", "Rest.6", "Rest.7", "Rest.8", "Rest.9"}),
KolSamen = Table.CombineColumns(SplitsenOmschrijving,{"Rest.2", "Rest.3", "Rest.4", "Rest.5", "Rest.6", "Rest.7", "Rest.8", "Rest.9"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Berekeningen"),
nulGefilterd = Table.SelectRows(KolSamen, each ([Berekeningen] <> "") and ([#"Art.Nr."] <> "Totaal")),
UitkomstBerekeningen = Table.SplitColumn(nulGefilterd, "Berekeningen", Splitter.SplitTextByEachDelimiter({" = "}, QuoteStyle.Csv, true), {"Berekeningen", "Totaal"}),
SplitsKol = Table.SplitColumn(UitkomstBerekeningen, "Totaal", Splitter.SplitTextByEachDelimiter({" ("}, QuoteStyle.Csv, false), {"Totaal", "Totaal.2"}),
VerwKol = Table.SelectColumns(SplitsKol,{"Art.Nr.", "Omschrijving", "Berekeningen", "Totaal"}),
TypeGew = Table.TransformColumnTypes(VerwKol,{{"Totaal", type number}}),
SplitsFactor = Table.SplitColumn(TypeGew, "Berekeningen", Splitter.SplitTextByEachDelimiter({" "}, QuoteStyle.Csv, false), {"factor", "Berekeningen.2"}),
SplitsPrijs = Table.SplitColumn(SplitsFactor, "Berekeningen.2", Splitter.SplitTextByEachDelimiter({"X "}, QuoteStyle.Csv, false), {"Berekeningen.2.1", "Prijs"}),
SplitsGew = Table.SplitColumn(SplitsPrijs, "Prijs", Splitter.SplitTextByDelimiter(" X ", QuoteStyle.Csv), {"Prijs", "Gewicht"}),
KiesKol = Table.SelectColumns(SplitsGew,{"Art.Nr.", "Omschrijving", "factor", "Prijs", "Gewicht", "Totaal"}),
VerwKg = Table.ReplaceValue(KiesKol," kg","",Replacer.ReplaceText,{"Gewicht"}),
TyperGew = Table.TransformColumnTypes(VerwKg,{{"Gewicht", type number}, {"Prijs", Currency.Type}, {"factor", type number}, {"Art.Nr.", type number}}),
NaamKolGew = Table.RenameColumns(TyperGew,{{"Totaal", "Totaal ink"}})
in
NaamKolGew

Bedankt,
Top !
Hopelijk hebben anderen er ook iets aan of is dit ook een uitdaging.

Groeten,
Georges
 
Terug
Bovenaan Onderaan