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

Macro maken van bestellijst voor import

Status
Niet open voor verdere reacties.

Torino

Gebruiker
Lid geworden
15 nov 2018
Berichten
5
Hallo,

Ik denk dat ik jullie hulp goed kan gebruiken, want ik ben voor mn werk bezig met de volgende uitdaging:
Ik wil graag een bestellijst, die handig is voor de eindgebruiker, omzetten naar een bestand welke geschikt is om als csv te gebruiken om de bestellingen te importeren.

De bestellijst bestaat uit:
in de kolommen: artikelnummers (100+)
in de rijen: de weken waarin het artikel geleverd moet worden (25 weken)


Nu zou ik graag willen bereiken dat:
Als in een bestelkolom een aantal wordt genoteerd bij een weeknummer,
dat de macro hiervan op blad 2 hier een bestelregel van maakt in een vast format (gescheiden door komma's of elke waarde in een aparte kolom)

Dus als er in week 14 het aantal van 2 bij superfiets 3 wordt genoteerd, dat op blad 2 een regel wordt aangemaakt die alle gegevens ophaalt en op de volgende wijze weergeeft:
klantnummer; artikelnummer; aantal; leverdatum

Ik heb tot nu toe geprobeerd om het op te lossen met ALS.VOORWAARDEN in excel, maar voor het grote aantal gegevens is dit niet handig (ik ben ook niet zo super handig met excel). Tevens wil ik dat er geen regel wordt aangemaakt als er geen aantal is ingevuld.
Ik wil dus graag alleen een bestelregel aanmaken, als er een aantal in een kolom is ingevuld.


Maar nu is de vraag....hoe moet dat?

Super bedankt alvast voor het meedenken

Carolien
 

Bijlagen

deze achter het bestelblad van de klant?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Blad2
    If Target.Column > 1 And Target.Row > 3 And Target.Count = 1 And IsNumeric(Target) Then
        Lr = .Range("A" & Rows.Count).End(xlUp).Row + 1
        .Cells(Lr, 1).Resize(, 4) = Array(Cells(1, 2), Cells(Target.Row, 1), Target, CDate(Cells(2, Target.Column)))
    End If
End With
End Sub
 
Laatst bewerkt:
Ik krijg hm toch nog niet uitgevoerd...als ik deze in visual basic editor invoer, dan krijg ik en foutmelding (dat er end sub wordt verwacht)
Zou jij me daarbij willen helpen? (Zou je hm erin willen zetten of me willen helpen hoe ik dat kan doen?)
 
De code moet je zetten in de module van het blad 'Bestelblad klant'

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column > 1 And Target.Row > 3 And Target.Count = 1 And IsNumeric(Target) Then Blad2.Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 4) = Array(Cells(1, 2), Cells(Target.Row, 1), Target, Cells(2, Target.Column))
End Sub
 

Bijlagen

Dank! Ik heb hm inmiddels ook toegepast op het echte bestelformulier en hij werkt top!
Helemaal blij :)
 
Nog een aanvullende vraag:

1. Als een aantal in een cel weer wordt verwijderd (de klant heeft bijvoorbeeld een fout gemaakt), kan de regel op blad 2 dan ook weer verdwijnen?
2. Als je het klantnummer wijzigt, kan de macro die wijziging dan meenemen ? (of is het slim om de macro pas uit te voeren als alle gegevens zijn ingevuld aan het einde? Dmv een knop bijvoorbeeld?
3. Ik wil alle aantallen 0 en kleiner dan 0 uitsluiten om een bestellingsregel aan te maken.
Op welke plek zet ik die logica in de macro?
 
Als je voor een gestructureerde vorm van invoer kiest dan zal het wel mogelijk zijn. Met deze opzet is nagenoeg niets mogelijk.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan