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

Automatisch samenstellen kostenoverzicht

Status
Niet open voor verdere reacties.

Bart1981

Gebruiker
Lid geworden
30 apr 2010
Berichten
14
Hallo,

bij een verhuurlijst worden het aantal artikelen ingevoerd en ook het aantal weken/dagen dat een artikel wordt verhuurd. (gele cellen)
Vervolgens worden de artikelen die zijn verhuurd met aantal en totaalbedrag handmatig ingevoerd in een kostenoverzicht. (blauwe cellen)

Is er een mogelijkheid om bovenstaande via een formule/macro te laten plaatsvinden?
Hierbij moet als een artikel wordt verhuurd dit artikel automatisch worden opgenomen in het kostenoverzicht, incl. aantal en totaalkosten.

Alle ideeën en hulp zijn welkom. Bedankt alvast.

Bekijk bijlage Test verhuur.xlsx
 
Code:
Sub tst()
    With Sheets("Blad1")
        .[A18:F20].ClearContents
        For Each cl In .Range("A5:A9")
            If WorksheetFunction.CountA(cl.Offset(, 3).Resize(, 3)) <> 0 Then
                With .Range("A1048576").End(xlUp)
                    .Offset(1) = cl.Value
                    .Offset(1, 2) = cl.Offset(, 3).Value
                    .Offset(1, 5) = cl.Offset(, 1) * (cl.Offset(, 3) * cl.Offset(, 5)) + _
                                        cl.Offset(, 2) * (cl.Offset(, 3) * cl.Offset(, 4))
                End With
            End If
        Next
    End With
End Sub

@ Rik
Waarop zou je moeten googlen om hier een antwoord op te krijgen ?:o
 
Laatst bewerkt:
draaitabelletje
 
Bart, daar blijf ik (spijtig genoeg) af, dat is jouw field of expertise :D
 
Dank je wel voor de snelle hulp.

Code werkt goed, zal eens proberen de code te gaan begrijpen.

Had ook al wat gegoogled maar wist niet goed hoe ik het moest omschrijven.
 
ik kom er toch niet helemaal uit met behulp van onderstaande code.........

Stel dat ik het aantal artikelen wil uitbreiden en wil onderbrengen in artikelgroepen, zie de nieuwe bijlage. Bekijk bijlage Test verhuur V2.xlsx

Klopt het dan dat:

.[A18:F20].ClearContents wordt vervangen door .[A23.F34.ClearContents

en

For Each cl In .Range("A5:A9") wordt vervangen door For Each cl In .Range("A5:A15")
of kan dat niet vanwege de artikelgroepen die zijn ingevoerd.

Verder kom ik niet met het "ontcijferen" van de code. Kan iemand mij op weg helpen.
Bedankt alvast voor de moeite.


Sub tst()
With Sheets("Blad1")
.[A18:F20].ClearContents
For Each cl In .Range("A5:A9")
If WorksheetFunction.CountA(cl.Offset(, 3).Resize(, 3)) <> 0 Then
With .Range("A1048576").End(xlUp)
.Offset(1) = cl.Value
.Offset(1, 2) = cl.Offset(, 3).Value
.Offset(1, 5) = cl.Offset(, 1) * (cl.Offset(, 3) * cl.Offset(, 5)) + _
cl.Offset(, 2) * (cl.Offset(, 3) * cl.Offset(, 4))
End With
End If
Next
End With
End Sub
 
Je eerste 2 veronderstellingen waren al juist :thumb:
Code:
Sub tst()
    With Sheets("Blad1")
        .[A23:F34].ClearContents
        For Each cl In .Range("A5:A16")
            [COLOR="red"]If cl <> "" And Left(cl, 12) <> "Artikelgroep" Then[/COLOR]                
                If WorksheetFunction.CountA(cl.Offset(, 3).Resize(, 3)) <> 0 Then
                    With .Range("A36").End(xlUp)
                        .Offset(1) = cl.Value
                        .Offset(1, 2) = cl.Offset(, 3).Value
                        .Offset(1, 5) = cl.Offset(, 1) * (cl.Offset(, 3) * cl.Offset(, 5)) + _
                                        cl.Offset(, 2) * (cl.Offset(, 3) * cl.Offset(, 4))
                    End With
                End If
            [COLOR="red"]End If[/COLOR]        
         Next
    End With
End Sub
Heb enkel de rode regel toegevoegd om de lege cellen te vermijden alsook de cellen die beginnen met Artikelgroep.
 
Dan werkt het weer inderdaad.

Nog een paar aanvullende vragen.
In de volgende code: With .Range("A36").End(xlUp) staat nu "A36" vermeld, eerst stond hier "A1048576". Ik ging ervan uit dat dit de laatste cel was van een kolom (die verschilt per versie van excel), maar waar staat deze waarde eigenlijk voor?

En is het kort aan te geven hoe ik de code van de Offset lezen?
.Offset(1) = cl.Value
.Offset(1, 2) = cl.Offset(, 3).Value
.Offset(1, 5) = cl.Offset(, 1) * (cl.Offset(, 3) * cl.Offset(, 5)) + _
cl.Offset(, 2) * (cl.Offset(, 3) * cl.Offset(, 4))

Dank jullie wel alweer voor de info.
 
Aangezien het in jouw voorbeeld enkel ging om 2 kleine tabelletjes vond ik het niet nodig om vanaf de laatste cel in de kolom omhoog te beginnen tellen om de laatsgevulde cel te vinden.
Wil je jouw tabellen echter uitbreiden mag je dit getal gerust verhogen.
Wat betreft de Offset springt deze het aantal kolommmen(volgens het getal na de komma) naar rechts vanaf een bepaalde cel.
In jouw vb stelt cl een waarde voor in kolom A dus cl.Offset(,2) zoekt/gebruikt dus de waarde in kolom C
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan