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

Minder handelingen

Status
Niet open voor verdere reacties.

DeArie

Gebruiker
Lid geworden
15 jul 2016
Berichten
126
Hallo,

Ik probeer een manier te vinden om veel minder handelingen te verrichten voor ik mijn facturen kan maken.
Ik krijg uit een machine die ik gebruik de info in het voorbeeld bestand zoals die in test 1 & test 2 staan.
Ik zou graag willen dat met VBA de handelingen die ik nu moet verrichten automatisch gaan zodat de testsheets eruit komen te zien als het voorbeeld.
Het betreft telkens andere lengte kolommen vanaf rij 10, tot en met rij 9 dat is een vast gegeven en ook max kolom A t/m F.

Om het er net zoals de voorbeeldsheet uit te laten zien is het volgende gedaan:

Tussen Kolommen C t/m F een kolom ertussen zetten.
cel D10 delen door cel C3
E10=D10*C10
F10=E10*1,21
Bovenstaande tot het eind van de kolommen doortrekken.
1 rij ertussen open laten en een dikke onderrand maken onder kolommen C t/m F ( of C T/m I als de kolommen er al tussen gezet zijn ).
Kolom C, E & F onder de dikke onderrand opgeteld.
de optellingen van kolom E & F celeigenschap veranderd in "valuta".

Als ik de gegevens uit de machine haal staan ze in diverse tabbladen in 1 Excelbestand, is het mogelijk dat al die handeling over alle tabbladen gedaan worden met 1 druk op de knop?
Het zijn geen vast aantal tabbladen.



Is er iemand die dat kan en wil doen?

Alvast bedankt.Bekijk bijlage Voorbeeld bestand.xlsx
 
Beste,

Start de opname van een macro en voer de handelingen in de juiste volgorde uit. Stop de opname en sla het bestand op. Indien je steeds dezelfde handelingen moet uitvoeren, kopieer de macro in een nieuw bestand en voer hem daar uit. Dat zou moeten lukken.
 
Beste tkint,

Dat klopt voor een deel wat je schrijft, alleen bijvoorbeeld het einde van een kolom selecteren kun je niet opnemen. Of ik weet niet hoe ik dat zou moeten doen in elk geval daar schuilt hem voor ij het probleem.
 
Met minder werk, alleen op 3 knoppen drukken, van boven naar beneden
 

Bijlagen

  • Kopie brief bestand(jp).xlsm
    179,6 KB · Weergaven: 33
Beste Jean-Paul,

Hartelijk dank, het is bijna wat ik zoek. Alleen Is het eigenlijk de bedoeling dat de werkbladen wel gescheiden blijven, daar dat allemaal verschillende klanten zijn.
Wat mij ook opvalt is dat bij het originele bestand ik 155 lijnen heb en bij jouw uitkomst "maar" 139 dus ik mis er nog een aantal.
Dit zie je ook terug in de kolom stuks die iet met het origineel overeenkomt.

Is dat nog op te lossen?

Mvg Arjen
 
Kan je de aantallen even verklaren? Leg ook even uit wat wat is Test 1 is klant Test 1? test 2 is klant test 2? Test 1 heeft een totaal van 689 stuks test 2 heeft een totaal van 94 stuks. In het voorbeeld kom je uit op 123 stuks. Dus wat moet het worden?
 
Beste VenA,

Ik heb van de werkbladen de namen inderdaad veranderd, normaal staan daar de klantnamen evenals in cel A1 zoals ik die importeer vanuit de frankeermachine.
Ik had het werkblad "voorbeeld sheet" erbij gedaan om een voorbeeld te geven zoals het eruit zou moeten komen zien na de handelingen.

Test 1 & test 2 zijn onbehandelde bladen. In het bestand wat ik normaal importeer staan soms wel 100 werkbladen.

De aantallen zijn bij elk werkblad verschillend, dit is afhankelijk van wat de klant in die periode aangeboden heeft.
Dat kant de ene keer 2 rijen zijn de andere keer 200 of meer. evenals de aantallen in de kolom "stuks".

Hoop dat dit het wat duidelijker maakt?
 
Alle tabbladen worden aangepast
 

Bijlagen

  • Kopie brief bestand(jp2).xlsm
    37,7 KB · Weergaven: 30
Beste Jean-Paul,

Dank hiervoor, het enige wat er nog niet helemaal juist gaat is dat kolom "D" door kolom "C" gedeeld moet worden is dat nog aan te passen?
De rest is helemaal wat ik bedoelde.
 
Mogelijk iets sneller en zonder dat je formules achterlaat.

Code:
Sub VenA()
  Application.ScreenUpdating = False
  For Each sh In Sheets
    With sh.Cells(10, 1).CurrentRegion
      ar = .Resize(.Rows.Count + 2).Value
      For j = 1 To UBound(ar) - 2
        ar(j, 4) = ar(j, 4) / ar(j, 3)
        ar(j, 5) = ar(j, 4) * ar(j, 3)
        ar(j, 6) = ar(j, 5) * 1.21
        t1 = t1 + ar(j, 3)
        t2 = t2 + ar(j, 5)
        t3 = t3 + ar(j, 6)
      Next j
      ar(j + 1, 3) = t1
      ar(j + 1, 5) = t2
      ar(j + 1, 6) = t3
      .Resize(UBound(ar)) = ar
    End With
    sh.Range("D:D,F:F").Columns.Insert
    sh.Columns(6).Insert
    sh.Cells(j + 10, 3).Resize(, 7).Borders(xlEdgeTop).Weight = xlMedium
    sh.Cells(j + 10, 3).NumberFormat = "General"
    sh.Cells(j + 10, 7).Resize(, 3).NumberFormat = "$ #,##0.00"
  Next sh
End Sub
 
Beste VenA,

Ik heb die van jouw geprobeerd alleen als ik hem wil gebruiken geeft hij

"Fout 9 tijdens uitvoering:
Het subscript valt buiten het bereik"

Moet ik hier zelf nog iets in aanpassen?
 
Beste VenA,

Ik heb de code toegepast op de originele werkbladen alleen bij het optellen gaat het niet goed. Hij telt van alle werkbladen de aantallen bij elkaar op aan de onderkant. Dus blad 1 is helemaal goed maar bij blad 2 telt hij de aantallen van blad 1 erbij, bij blad 3 telt hij blad 1 en 2 de aantallen erbij enzovoort. Ook als je hier het voorbeeld gebruikt wat bovenaan staat.
 
t1, t2 en t3 moeten even op 0 gezet worden na het wegschrijven.
 
Aangepaste versie
 

Bijlagen

  • Kopie brief bestand(jp3).xlsm
    39,8 KB · Weergaven: 29
Beste HSV,

En hoe doe je dat? Heb helaas daar geen kaas van gegeten.
 
Gewoon proberen. Er komt vast geen rook uit als je het verkeerd doet.
 
Beste VenA,

Ben ook niet bang dat er rook uit komt :d, alleen heb geen idee wat/waar moet komen staan.

Ik snap "t1 t/m t3" leeg gemaakt moeten worden als hij naar het volgende blad gaat ( mede dankzij HSV ) en had deze op 0 gezet in de code maar dan telt hij helemaal niets meer op.

Als ik de code bekijk snak ik wel wat hij doet maar niet alle dingen die erbij staan... Heb ook totaal geen cursus gehad of wat dan ook. Veel lezen en proberen... Maar dit gaat helaas m'n pet te boven.
 
Ik had het volgende gedaan

Code:
Sub VenA()
  Application.ScreenUpdating = False
  For Each sh In Sheets
    With sh.Cells(10, 1).CurrentRegion
      ar = .Resize(.Rows.Count + 2).Value
      For j = 1 To UBound(ar) - 2
        ar(j, 4) = ar(j, 4) / ar(j, 3)
        ar(j, 5) = ar(j, 4) * ar(j, 3)
        ar(j, 6) = ar(j, 5) * 1.21
        t1 = t1 + ar(j, 3)
        t2 = t2 + ar(j, 5)
        t3 = t3 + ar(j, 6)
      Next j
      ar(j + 1, 3) = t0
      ar(j + 1, 5) = t0
      ar(j + 1, 6) = t0
      .Resize(UBound(ar)) = ar
    End With
    sh.Range("D:D,F:F").Columns.Insert
    sh.Columns(6).Insert
    sh.Cells(j + 10, 3).Resize(, 7).Borders(xlEdgeTop).Weight = xlMedium
    sh.Cells(j + 10, 3).NumberFormat = "General"
    sh.Cells(j + 10, 7).Resize(, 3).NumberFormat = "$ #,##0.00"
  Next sh
End Sub

Maar dan telt hij dus nergens meer op ( waarschijnlijk ook erg logisch ). Ik denk dat er ergens .ClearContents met een verwijzing naar t1 t2 t3 moet komen staan en ik denk dat dat onder next sh
moet komen. maar hoe de verwijzing maken naar t1 t2 en t3?

En als we dan toch nog bezig zijn :rolleyes: is het dan nog mogelijk om dit plus ik denk nog wat meer erbij te zetten
Code:
sh.columns(6)HorizontalAlignment = xlCenter
om de kolommen te centreren dit zal geplaatst moeten worden onder End with?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan