Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Gewerkte uren in grafisch overzicht  (gelezen 5283 keer)

0 leden en 1 gast bekijken dit topic.

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #15 Gepost op: 08 september 2017, 11:15:05 »
....en het werkt wel ware het niet dat hij de datumnotatie sloopt en overal in kolom A als datum za 0-1-1900 neer zet....
Een foutje van mijn kant, sorry. Dat ik het niet had opgemerkt kwam door dat de datums in zwart op donkerbruin niet opvielen, en ik er ook geen aandacht aan schonk. Ze waren niet bedoeld om mee te veranderen. Het invullen gebeurde nu van kolom A tot CR in plaats van B tot CS. "For x = 1 To 96" moet zijn "For x = 2 to 97"
Die loop is inderdaad geen strak idee merk ik nu :P pc vertraagd en ik kan gaan douchen....
De loop doet 1/2 seconde per rij, dus 200 bewerkingen op 1 seconde. Dat is behoorlijk snel.
Maar als je je origineel werkblad telkens "volledig" laat scannen, dan zal je een propere jongen worden onder de douche  :P.
Maar het is natuurlijk niet de bedoeling om telkens het hele Rooster opnieuw in te lezen, enkel de nieuwe data.
Het feit dat er geen kolom is waar gegarandeerd ALTIJD data wordt geschreven maakt het moeilijk(er) om met een VBA formule je laatste (COMPLEET) ingevulde rij te laten vinden.
Is het geen idee om een hulpkolom in te zetten  die aangeeft of er in "rooster" op een datum een dienst is ingevuld?
Het zou zeker helpen. Als...  we kunnen te weten komen of een dag-rij volledig is afgehandeld, dan kan je dit gegeven gebruiken om
het begin van de te behandelen rij vast te stellen, via VBA.

In bijlage een verbeterd voorbeeld. Ik werk ook de code bij in mijn vorig bericht.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #16 Gepost op: 08 september 2017, 11:29:41 »
Hoi SoftAid,

Een foutje van mijn kant, sorry.
Het zij je vergeven :P en bedenk, zonder dat er fouten gemaakt worden, wordt er waarschijnlijk niets gemaakt ;)

Dat ik het niet had opgemerkt kwam door dat de datums in zwart op donkerbruin niet opvielen, en ik er ook geen aandacht aan schonk. Ze waren niet bedoeld om mee te veranderen. Het invullen gebeurde nu van kolom A tot CR in plaats van B tot CS. "For x = 1 To 96" moet zijn "For x = 2 to 97"
Dat had ik inderdaad ook al bedacht, kon het alleen nog niet uitproberen want mijn roekeloze "For A = 7 to 366" is momenteel nog bezig...

De loop doet 1 seconde per rij, dus 100 bewerkingen op 1 seconde. Dat is behoorlijk snel.
Als je je origineel werkblad telkens volledig laat scannen, dan zal je een propere jongen worden onder de douche.
Ik ben graag een propere jongen, al kunnen we soms ook wat overdrijven ;D

Maar het is natuurlijk niet de bedoeling om telkens het hele Rooster opnieuw in te lezen, enkel de nieuwe data.
Het feit dat er geen kolom is waar gegarandeerd ALTIJD data wordt geschreven maakt het moeilijk(er) om met een VBA formule je laatste (COMPLEET) ingevulde rij te laten vinden.Het zou zeker helpen. Als...  we kunnen te weten komen of een dag-rij volledig is afgehandeld, dan kan je dit gegeven gebruiken om
Ja die is er wel, kolom "H" is altijd de kolom waar iets ingevuld wordt, wanneer die dag gewerkt wordt, ook verwerk ik mijn administratie altijd op de dag na de gewerkte dag.


Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #17 Gepost op: 08 september 2017, 11:44:38 »
Johan,

kon het alleen nog niet uitproberen want mijn roekeloze "For A = 7 to 366" is momenteel nog bezig...
Dan zou je gedoucht zijn in minder dan 6 minuten, of je PC is heel traag (of er is iets anders mis....)
Op mijn Excel 2007 doet hij er 20 seconden over om een heel jaar (370 lijnen) in te vullen....
Ja die is er wel, kolom "H" is altijd de kolom waar iets ingevuld wordt, wanneer die dag gewerkt wordt, ook verwerk ik mijn administratie altijd op de dag na de gewerkte dag.
Je dienst-nummering, had ik ook al bekeken. Maar je hebt toch ook lege rijen, je vrije dagen zonder dienstnummer. Rijen 5,6,12,13,19,20,26,... Soms Woensdag werken, soms niet.
Kan je in kolom H, bij niet werken, een V of zo invullen, handmatig?

Ja, we kunnen kolom H zeker gebruiken, want als er wegens vrije dagen niets staat in kolom H, dan zal de macro gewoon enkele lege rijen meer scannen, maar dat maakt dus niets uit. Moeten nu nog bepalen welk het Startpunt is. We kunnen de macro de laatst gebruikte rij-nummer in een verborgen cel laten plaatsen, de macro opslaan, en dat rij-nummer terug gebruiken bij de volgende invoer.
Dus: 
A = From [getal rij-nummer] To [Ver.Zoeken van laatste lege rij van kolom H]
:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #18 Gepost op: 08 september 2017, 12:22:59 »
Hoi SoftAid

Dan zou je gedoucht zijn in minder dan 6 minuten, of je PC is heel traag (of er is iets anders mis....)
Op mijn Excel 2007 doet hij er 20 seconden over om een heel jaar (370 lijnen) in te vullen....
Ik douche nooit langer dan 5 minuten, en dan scheer ik mij ook nog in die tijd. Mijn PC (HP Pavilion laptop) is een trage machine, bij de volgende aanschaf zal ik zeker ook de snelheid van berekenen mee nemen in mijn pakket van eisen.

Je dienst-nummering, had ik ook al bekeken. *knip*
Ja, we kunnen kolom H zeker gebruiken, want als er wegens vrije dagen niets staat in kolom H, dan zal de macro gewoon enkele lege rijen meer scannen, maar dat maakt dus niets uit. Moeten nu nog bepalen welk het Startpunt is. We kunnen de macro de laatst gebruikte rij-nummer in een verborgen cel laten plaatsen, de macro opslaan, en dat rij-nummer terug gebruiken bij de volgende invoer.
Wat ook nog een uitdaging is, maar wellicht is dat te ondervangen om de eerste coderegel:
If Range("Rooster!C" & A).Value < Cells(2, y).Value And Range("Rooster!D" & A).Value >= Cells(2, x).Value Then Cells(A, x).Value = "1" aan te passen, want de uitlooptijd is altijd van toepassing op de dienst van de vorige dag. ik dacht zelf aan dit: If Range("Rooster!C" & A +1]).Value < Cells(2, y).Value And Range("Rooster!D" & A).Value >= Cells(2, x).Value Then Cells(A, x).Value = "1"[/s] maar heb nog niet uitgevogeld of dit werkt.

Inimddels wel uitgevogeld, maar dat werkt niet....
Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #19 Gepost op: 08 september 2017, 13:51:43 »
Hallo Johan,

het is/was eenvoudiger dan ik dacht (denk ik  :D)

Als je de code :

For A = 3 to 369
Vervangt door:

Top = Sheets("Grafisch").Cells(Cells.Rows.Count, 2).End(xlUp).Row
For A = Top + 1 To Top + 6

Dan worden de 6 laatste rijen bijgewerkt sinds de laatste invulling.

Je kan het aantal rijen veranderen zoals je zelf wil.

Sub SoftAid_Stuff()
   
   
Sheets("Grafisch").Select
Top = Sheets("Grafisch").Cells(Cells.Rows.Count, 2).End(xlUp).Row
    For A = Top + 1 To Top + 6
        For x = 2 To 97
        y = x + 1
            If Range("Rooster!C" & A).Value < Cells(2, y).Value And Range("Rooster!D" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!I" & A).Value < Cells(2, y).Value And Range("Rooster!J" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!O" & A).Value < Cells(2, y).Value And Range("Rooster!P" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!U" & A).Value < Cells(2, y).Value And Range("Rooster!V" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            Else: Cells(A, x).Value = "0"
            End If
        Next x
    Next A

End Sub

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #20 Gepost op: 08 september 2017, 20:54:30 »
Ik ben zeer onder de indruk SoftAid, Ik weet niet precies wat je nu gedaan heb, maar hij loopt nu erg snel en volgt inderdaad 6 regels(rijen) bliksemsnel op.

Blijft nog even staan dat in het Rooster, kolom C en D, wanneer die vermeld word een uitloop is van de vorige dag. Nu is dat natuurlijk een futiliteit want bij de volgende dag komen die gegevens wel gewoon mooi in beeld ;)

als ik het dus goed interpreteer zou ik met de volgende code ook middels een input de aantallen regels die nagelopen word kunnen beïnvloeden:
Sub SoftAid_Stuff()
   
B = InputBox("Hoeveel rijen wil je invullen ?", "Oplossing.be helpt echt")
   If B = "" Then
   Exit Sub
   End If
   
Sheets("Grafisch").Select
Top = Sheets("Grafisch").Cells(Cells.Rows.Count, 2).End(xlUp).Row
    For A = Top + 1 To Top + B
        For x = 2 To 97
        y = x + 1
            If Range("Rooster!C" & A).Value < Cells(2, y).Value And Range("Rooster!D" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!I" & A).Value < Cells(2, y).Value And Range("Rooster!J" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!O" & A).Value < Cells(2, y).Value And Range("Rooster!P" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            ElseIf Range("Rooster!U" & A).Value < Cells(2, y).Value And Range("Rooster!V" & A).Value >= Cells(2, x).Value Then
            Cells(A, x).Value = "1"
            Else: Cells(A, x).Value = "0"
            End If
        Next x
    Next A

End Sub

Dit is echt een prachtige basis waarmee ik dus het "echte" bestand kan in laten vullen met zowel de rusttijden, pauzes en werktijden.

Had ik al gezegd dat je een topper bent? zo niet dan bij deze: Je bent een topper ;D

Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #21 Gepost op: 08 september 2017, 22:40:39 »
Hallo Johan,

bedankt, maar ik ben maar een kleine vis in verhouding met de echte "gehaaide" helpers die dit forum helpen rechthouden  :love:

Maar een eenvoudige macro, dat kan ik nog wel maken.
Ik heb trouwens jou cel-code gewoon omgezet naar VBA-code, dan heb je meer mogelijkheden om aan te sturen.

Ja, je kan het aantal regels dat je wilt invoeren via de inputbox bepalen, je macro zal prima lopen zo.
Je kan nog veel meer automatiseren, maar dat horen we dan wel van jou.

Groeten,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #22 Gepost op: 08 september 2017, 22:55:13 »
Hoi SoftAid,

Kleine vissen kunnen hele grote dingen doen voor nog kleinere vissen, jouw bescheidenheid siert je edoch in mijn ogen ben je toch een grote ;D

Mijn 'blindheid' zit hem in het feit dat ik een simpele formule, in dit geval was die ook niet van mijzelf maar had hem uit de topic getrokken waar jij mij op geattendeerd had aan het begin van dit draadje, niet in VBA code gegoten krijg. Op de een of andere manier zie ik zonder voorbeeld de logica niet. Nu ik de code heb begrijp ik precies wat het doet en kan ik het gerust aanpassen aan de uiteindelijke situatie...

Dus nogmaals dank je wel voor je hulp

Johan
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Offline Haije

  • Excel-Expert
  • Volledig lid
  • *****
  • Berichten: 197
  • Geslacht: Man
  • Oplossing.be
Re: Gewerkte uren in grafisch overzicht
« Reactie #23 Gepost op: 09 september 2017, 15:50:11 »
Citaat
Mijn 'blindheid' zit hem in het feit dat ik een simpele formule (..) niet in VBA code gegoten krijg.

Als je een formule wilt omzetten naar VBA probeer dan eens het vogende:
selecteer de cel met de formule
start de macrorecorder
druk op F2 en enter
stop de macrorecorder

|-|aije

ik gebruik Office 2016 Professional Plus

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #24 Gepost op: 09 september 2017, 16:43:27 »
Hallo Haije,

De formule in de cel van het werkblad wordt inderdaad in je VBA geladen :)

Een nadeel: deze formule nu bewerken met variabelen wordt een stuk moeilijker  :-[

Zelf zet ik liever een ' voor de formule in het werkblad, kopieer en plak in mijn VBA. Daar knip ik ze in de logische stukken.
Als je variabelen in kolommen wilt gebruiken moet je natuurlijk ook uitwijken naar "Cells.value= ....", maar beter dat dan de RC-code te moeten bewerken.

Toch bedankt voor de tip, kan zeker nog van pas komen  ;) ;D

Groeten,

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #25 Gepost op: 10 september 2017, 07:47:42 »
Goedenmorgen..

@Haije:
Als ik jouw tip volg krijg ik iets als dit:
ActiveCell.FormulaR1C1 = _
        "=IF(OR(RC[-1]="""",RC[-2]=""""),"""",SUM(RC[-1]-RC[-2]))"
    Range("K253").Select

Je zult het ongetwijfeld goed bedoelen, maar hier kan ik al helemaal niets mee ;)  Wel geleerd om te zien hoe de macro dit behandeld en dus kan ik wellicht in vervolg proberen om uit zo'n regel "iets" te leren.

Johan.
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

Online SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Gewerkte uren in grafisch overzicht
« Reactie #26 Gepost op: 10 september 2017, 14:24:21 »
Hallo Johan, ook goede morgen middag ;D

de formule die op de manier van Haije gegenereerd wordt in een macro module is zeker moeilijk, omdat ze werkt met celverwijzing vanuit een bepaalde cel. R staat voor Row en C voor Collum.
Als Cel A1 geselecteerd is, en je wilt iets berekenen met de waarde van cel D1, dan moet je formule iets zijn als .....R[1] C[+3]  of iets dergelijke... ::)
Bij C[+3] ga je dus een cel die drie kolommen verder staat selecteren of bewerken, naargelang de rest van de code.
Bovendien wordt met het stukje code (ActiveCell.FormulaR1C1 =) de daaropvolgende formule in een cel geplaatst, iets wat we net willen verwijderen.
Moeilijk en zeer gebruiksonvriendelijk, maar soms nuttig.

Probleem met tellen met variabelen in VBA:
Je kan een Variabele Var = 1 to 5 gebruiken om een cel op een andere rij in dezelfde kolom te selecteren:
Dim Var As Variant
For Var= 1 to 5
[b]Range[/b]("A" & Var).Select
Msgbox(Var)   'dan zie je wat er gebeurt :-)
Next
De loop zal cel A1 selecteren, dan A2, A3, A4, A5 en dan uit de loop gaan.
wil je echter hetzelfde doen met kolommen, dan is het niet meer zo dat je Van A naar B kan door bij A een variabele te tellen.
Dim Var As Variant
For Var= 1 to 5
[b]Range[/b](Var & "1").Select
Next
Je kan geen getallen gebruiken voor een kolom als je "Range" aanduiding gebruikt.
Daarom heb ik in de code, waar nodig, over gegaan naar de aanduiding Cells()
Cells werkt met RC (Row,Colum)(Rij, Kolom) als (1, 2) .... Rij 1, Kolom 2.
Nu kan je wel een variabele aan een kolom 1 (A) toevoegen.
Dim Var As Variant
For Var= 1 to 5
Cells(1 , 1 + Var).Select
Msgbox(Var) 
Next
Wel opletten, gewone celaanduiding zoals "A1" is dus CR (Kolom, Rij)
Bij celaanduiding met =Cells(1, 2) is dit RC (Rij, Kolom) en zonder aanhalingstekens, R en C gescheiden door een komma.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline Josc1965

  • Ervaren lid
  • ***
  • Berichten: 279
  • Geslacht: Man
  • Je leert echt wat op "Oplossing.be"
Re: Gewerkte uren in grafisch overzicht
« Reactie #27 Gepost op: 10 september 2017, 23:11:27 »
Hoi SoftAid,

Behoorlijk ingewikkeld dus. Ik snap je betoog maar als ik zoiets zou willen toepassen op 356 dagen dan gaat het behoorlijk mis vrees ik ;)
Johan
Windows 10 Home   NLD 64bit
Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 2808
838F
Intel(R) HD Graphics 630 1024MB -
NVIDIA Virtual Audio Device (Wave Extensible) (WDM)
C:\ NTFS 118,01GB 44,78GB 8.079MB
AV: Avast Antivirus
FW: Windows Firewal Enabled: True
Office 2016

 


www.combell.com