• 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 verbouwen voor datadump BAAN (snb?)

Status
Niet open voor verdere reacties.

Dukesofhazard

Gebruiker
Lid geworden
1 jan 2012
Berichten
46
Beste forumleden,

Ik heb onlangs een vraag gepost over een bewerking van een datadump in Excel uit BAAN. Dit had betrekking op de totale orderintake in een boekjaar van al onze klanten. Er is toen door (Mega Honourable Senior Member) snb een macro gebouwd (waarvoor dank, werkt nog steeds uitstekend!)
Zie hiervoor de link met vorige post:

http://www.helpmij.nl/forum/showthread.php/867999-Welke-formule-toepassen-voor-landenselectie-datadump-orderintake

Nu heb ik uit BAAN een soortgelijke datadump maar dan voor de aan ons gelieerde bedrijven (intercompany). Zie hiervoor een screenshot van het voorbeeldbestand en het voorbeeldbestand zelf:

Screenshot voorbeeldbestand Orderintake Intercompany.jpg

Bekijk bijlage Voorbeeldbestand Orderintake Intercompany.xlsx

Eigenlijk zou ik hiervoor dezelfde macro willen gebruiken maar ik weet niet goed wat ik aan moet passen. Punt 2, ik gebruik een Nederlandse Excel versie.
Het gaat om de volgende Macro van snb:

Macro snb.JPG

Ik kan me voorstellen dat de 'trigger' "land" kan worden vervangen door "Relatie" in deze macro. Heb ik geprobeerd maar werkt helaas niet. De volgende regel geeft problemen: sn = Blad1.UsedRange.Columns(1)

Zou iemand mij kunnen helpen met het 'tweaken' van deze macro en, als het niet teveel moeite is, in het nederlands willen vertalen?
Er komen voor en achter deze instructie nog een aantal andere commands.

Bij voorbaat dank,

Gr. Dukes.. :thumb:
 
Klopt de naam van het blad ook? Kan het op de IPad niet zien.
Dit kun je in de VBA editor zien.
 
Laatst bewerkt:
Het plaatje van je werkblad laat inderdaad niet de naam van het werkblad en de kolommen en rijen zien. Daarom wordt er altijd om een document gevraagd en geen plaatjes. Daarnaast vertel je er niet bij wat er fout gaat op de regel die je laat zien. Als je een foutmelding krijgt, vertel die er dan bij.
 
Laatst bewerkt:
Alles waar je om vraagt staat in de tekst van Ts @ed.
Alleen de code staat er niet in (xlsx).

Blad1 = sheet1
 
Klopt. Maar plaatjes zijn nooit handig met dit soort dingen en als er een foutmelding is zie ik die graag in de post omdat dat heel ongevings afhankelijk kan zijn.

Maar je hebt gelijk, wat het plaatje betreft was ik wellicht wat voorbarig.
 
Die foutmelding geeft duidelijk aan dat er een Next mist voor de gebruikte For loop. Doe hem eens zo:
Code:
Sub Orderintake1()
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    sn = Data.UsedRange.Columns(1)
    For j = 1 To UBound(sn)
        If Left(sn(j, 1), 4) <> "Relatie" Then sn(j, 1) = ""
        If j > 1 Then
            If sn(j, 1) = "" And sn(j - 1, 1) <> "" And InStr(sn(j - 1, 1), ")") = 0 Then
                sn(j, 1) = sn(j - 1, 1)
            End If
        End If
    Next j
End Sub

Dan ben je in ieder geval van die compiler melding af.
 
Laatst bewerkt:
Bij je vorige vraag was het probleem ook de naam van het blad.
Doe het zo, denk dat het dan wel werkt.
Code:
Sub Orderintake1()
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    sn = Sheet1.UsedRange.Columns(1)
    For j = 1 To UBound(sn)
        If Left(sn(j, 1), 4) <> "Relatie" Then sn(j, 1) = ""
            If j > 1 Then
                If sn(j, 1) = "" And sn(j - 1, 1) <> "" And InStr(sn(j - 1, 1), ")") = 0 Then
                    sn(j, 1) = sn(j - 1, 1)
            End If
        End If
    Next j
End Sub
Anders moet je i.p.v. Sheet1 - Sheets("Data") gebruiken.
 

Bijlagen

  • BladNaam.jpg
    BladNaam.jpg
    75,6 KB · Weergaven: 41
Laatst bewerkt:
Nog niet helemaal.. :(

Beste forumleden,

De compileerfout is weg nu. Het eerste deel van commands werkt ook, kolom A wordt ook daadwerkelijk ingevoegd.

Sub Orderintake1()
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove


Deel twee wil nog niet werken. Ik ben nog aan het kijken waarom niet.
Bij het gebruik van "sheets' krijg ik wederom weer een compileerfout.

Bekijk bijlage Voorbeeldbestand Orderintake Intercompany.xlsm
 
Bekijk je code nog eens zelf. Je gaat eerst een kolom invoegen vervolgens laadt je de gegevens van deze lege kolom in een array? Hoeveel letters heeft het woord Relatie? Wat zal de vergelijking If Left(sn(j, 1), 4) <> "Relatie" voor waarde opleveren?
 
Bekijk je code nog eens zelf. Je gaat eerst een kolom invoegen vervolgens laadt je de gegevens van deze lege kolom in een array? Hoeveel letters heeft het woord Relatie? Wat zal de vergelijking If Left(sn(j, 1), 4) <> "Relatie" voor waarde opleveren?

Je hebt helemaal gelijk. Het punt is dat voor de bewerking die ik wil alleen een VBA beschikbaar is. Ik heb lang nagedacht om hiervoor een standaardformule toe te passen maar dat is me niet gelukt. Na het stellen van de vraag kwam forumlid SNB met deze oplossing. Ik geef toe, ik ben niet helemaal bedreven in het 'lezen' van deze codering. Ik heb echter nog niet de mogelijkheid gehad om me er echt in te verdiepen. Bovendien werk ik met een Nederlands ingestelde Excelversie.
Bedankt voor de adviezen, ik ga hier mee weer aan de slag!

Gr. Dukes..
 
Als het er alleen om gaat om het relatienummer in kolom A te krijgen dan is dit met een eenvoudige formule te doen. Even een kolom invoegen en deze gebruiken.
PHP:
=ALS(LINKS(B11;7) ="Relatie";DEEL(B11;10;5);A9)
 

Bijlagen

  • Voorbeeldbestand Orderintake Intercompany.xlsb
    21 KB · Weergaven: 18
Beste Vena,

Excuses voor de later reactie. Ik zat vorige week in de rapportage week dus had even geen tijd.
De formule lijkt inderdaad op hetgeen wat ik zoek. Ik ga hier van de week even mee aan de slag.
Ik laat de vraag nog even op onopgelost staan daarvoor.

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan