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

Totaal omzet lijsten

  • Onderwerp starter Onderwerp starter HWV
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

HWV

Terugkerende gebruiker
Lid geworden
19 feb 2009
Berichten
1.213
Bekijk bijlage Helpmij.xlsm

Beste,

Zoals elk jaar / kwartaal / maand moeten er weer lijsten naar de diverse klantgroepen verzonden worden met de omzet.
Ik heb er nu al een paar handmatig gedaan, en zeker om dat dit elk maand / Kwartaal / jaar terug kom zou ik dit willen via VBA laten doen.

In blad 1 staat de export zoals ik het uit ons systeem haal, en in blad 2 hoe ik de opmaak zou willen hebben met onderaan een opsomming van de klanten met bedrag.
Is dit een project om dit via VBA voor elkaar te krijgen, zodat ik deze handelingen niet elke keer zelf hoef uit te voeren.

Ik was al begonnen maar liep wel gelijk vast;

Om de kolommen weg te halen die niet gebruikt worden heb ik :
Code:
Range("A:A,B:B,E:F,I:R,T:T,U:U,V:V,W:W,X:X,Y:AF,AI:AR").Delete

Om de lege regels weg te halen waar geen artikelnummer staat heb ik:
Code:
Range("A2:A10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Maar dan moeten de klanten gescheiden worden en dat de opmaak en totaal per klant gemaakt moet worden.
Maar omdat het aantal klanten en artikelen niet altijd het zelfde zijn moet er iets variabel gemaakt worden.
Met onderstaande sorteer ik het op klant.
Maar dan de rest.....

Code:
    Range("A2:G" & Cells(Rows.Count, 1).End(xlUp).Offset(0).Row).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Blad2").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad2").Sort.SortFields.Add Key:=Range("C2:C10000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad2").Sort
        .SetRange Range("A2:AR200")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Heeft iemand een idee hoe verder, of moet ik anders denken om deze lijst in deze format naar mijn klanten kan sturen.
Want de klant heeft aangegeven het in deze format aangeleverd te willen krijgen.

Alvast dank voor de hulp

HWV
 
Draai deze macro eens ter vervanging van uw 3 macro's:
Code:
Sub OmzetSorteren()
    Range("A2:AH" & Cells(Rows.Count, 1).End(xlUp).Offset(0).Row).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add Key:=Range("h2:H10000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").Sort
        .SetRange Range("A2:AR200")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Dim cl As Range
For Each cl In Range("H2:H" & Cells(Rows.Count, 1).End(xlUp).Row)
 If cl.Value <> cl.Offset(-1, 0) And cl.Offset(-1, 0) <> "" Then
  Rows(cl.Row).Insert Shift:=xlDown
 End If
Next
Rows(3).SpecialCells(xlCellTypeBlanks).EntireColumn.Hidden = True
End Sub
 
Zoals ik het lees zal een draaitabel hier wel uitkomst in bieden. Al geprobeerd?
 
Als een trein

Code:
Sub OmzetCijfers()

Range("A:A,B:B,E:F,I:R,T:T,U:U,V:V,W:W,X:X,Y:AF,AI:AR").Delete
Range("A2:A10000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    
    Range("A2:AH" & Cells(Rows.Count, 1).End(xlUp).Offset(0).Row).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Blad1").Sort.SortFields.Add Key:=Range("C2:C10000") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Blad1").Sort
        .SetRange Range("A2:AR200")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Dim cl As Range
For Each cl In Range("C2:C" & Cells(Rows.Count, 1).End(xlUp).Row)
 If cl.Value <> cl.Offset(-1, 0) And cl.Offset(-1, 0) <> "" Then
  Rows(cl.Row).Insert Shift:=xlDown
  Rows(cl.Row).Insert Shift:=xlDown
  Rows(cl.Row).Insert Shift:=xlDown
 End If
Next
End Sub

Met bovenstaande code zijn we idd al een heel end op weg.
Is er ook de opmaak al mee te maken, of blijf dat handwerk
en de totalen per klant onderaan het blad.
Dit scheel mij al heel veel tijd op deze manier.


Bekijk bijlage Helpmij.xlsm
 
Bij nader inzien denk ik dat het beter is om een draaitabel te gebruiken.
Ik ben daar (helemaal)niet zo bedreven in maar er zal wel iemand reageren om u verder te helpen met uw bestand.

Een beetje geduld.
 
HWV,

in de bijlage is een draaitabel toegevoegd.

Kijk maar eens of dit je wat lijkt.....
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan