Help!

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

Hulp bij posten

Recente topics

Auteur Topic: geautomatiseerd sjabloon voor budget  (gelezen 58129 keer)

0 leden en 1 gast bekijken dit topic.

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.384
  • Geslacht: Man
Re: geautomatiseerd sjabloon voor budget
« Reactie #105 Gepost op: 03 augustus 2023, 18:21:31 »
Ik heb deze beslissing eigenlijk genomen omdat ik merkte dat het resultaat beter kon inzake wat ik voor ogen had (das dan weer het nadeel van een perfectionist te zijn  :-[).
Je zal merken dat je als "programmeur" eigenlijk nooit tevreden zult zijn , je "werk" zal je nooit als AF kunnen plaatsen......
ik heb dat in het verleden genoeg gemerkt , je wilt het altijd beter en beter , toch nog extra's aan toevoegen enz...
maar dat is juist het leuke aan een project !. en je merkt van je eigen dat je er meer en meer in bedreven wordt....zo heb ik nog in bed code "geschreven" die ik dan s'morgens zomaar hoefde te in te typen  :)
Uw project (de code) is voor mij té ingewikkeld om te kunnen helpen maar ik volg het verder zeker op .
grtjs,
Arnold

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #106 Gepost op: 03 augustus 2023, 19:35:07 »
Hey Arnold,

Bedankt alvast voor je positieve berichtje  ;).

Je zal merken dat je als "programmeur" eigenlijk nooit tevreden zult zijn , je "werk" zal je nooit als AF kunnen plaatsen......
Klopt inderdaad wel  :). Dat is net hetzelfde met mijn genealogie, dat is ook nooit "AF", je wil altijd maar verder en verder  ;D.

Maar nu in dit geval was het wel degelijk echt niet goed... zowel qua volgorde van de vragen als de koppeling tussen de diverse
onderdelen...
Nu ik herbegonnen ben én gebruik maak van die gedetailleerde uiteenzetting op dat extra (hulp)werkblad heb ik een veel beter
overzicht en krijg ik spontaan nieuwe inzichten en ideetjes ivm het ontwerp, de code, algemene structuur en zelfs extra opties.
Ik heb er dus goed aan gedaan om deze beslissing te nemen  :).

Citaat
Uw project (de code) is voor mij té ingewikkeld om te kunnen helpen maar ik volg het verder zeker op .
Goh, suggesties en feedback geven is ook helpen hé  ;).
Jouw suggestie ivm de weergave (tov schermgrootte) heeft toch al voor een extraatje gezorgd dat het project alleen maar ten goede komt  :thumbsup:


groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #107 Gepost op: 03 augustus 2023, 21:15:26 »
Hey Bieke,

Citaat
Ik ben nu mezelf een pak extra werk aan het geven  0:-) ;D door de volledige opbouw van het UF (zowel qua ontwerp als qua volgorde van de vraagstellingen) terug van nul te beginnen
:'( maar tegelijk ook \o/ als je overuigd bent dat het beter kan/moet 8)

Citaat
zo heb jij ook eventjes rust mbt dit project  :D :D :D

't Is te zeggen, ik kon het uiteraard niet laten om 2.0 (zeer goede naamgeving) al eens onder de loep te nemen, en zag meteen een mogelijke verbetering: het formulier resetten naar origineel formaat zou ik inkorten tot (kan nog korter maar deze is ietsje duidelijker)
Private Sub cmd_ZoomReset_Click()
  With Me
    .Width = 600
    .Height = 549.75
    .Zoom = 100
  End With
End Sub

Groetjes,
Molly
(en vergeet deze nacht niet minstens een uurtje slapen in te lassen)
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #108 Gepost op: 03 augustus 2023, 21:31:02 »
't Is te zeggen, ik kon het uiteraard niet laten om 2.0 (zeer goede naamgeving) al eens onder de loep te nemen, en zag meteen een mogelijke verbetering: het formulier resetten naar origineel formaat zou ik inkorten tot (kan nog korter maar deze is ietsje duidelijker)
Private Sub cmd_ZoomReset_Click()
  With Me
    .Width = 600
    .Height = 549.75
    .Zoom = 100
  End With
End Sub
Wel, zo had ik het eerst gedaan maar kreeg nooit mijn oorspronkelijk formaat terug :( en dus heb ik het zoals nu in elkaar gepuzzeld.
En tijdens dat puzzelen realiseerde ik me dat ik in de .height een typfout had gemaakt en het daardoor dus niet werkte  :-[ :D maar omdat
mijn nieuw gepuzzeld code-blok werkte had ik hem nog niet opnieuw aangepast  ;D . Maar dat is bij deze nu dus wel gebeurd  ;D

Citaat
(en vergeet deze nacht niet minstens een uurtje slapen in te lassen)
ik zal mijn best doen  0:-) ;D ;D

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #109 Gepost op: 05 augustus 2023, 18:07:55 »
Hey Molly,

Hier ben ik nog eens met een vraagje…
Gezien mijn nieuwe aanpak ben ik een beetje vastgelopen op één onderdeel in een specifiek code-blok.
Namelijk in het 3e frame van de multipage-pagina “basis”.
Daarin kunnen nog steeds max 6 zicht en max 6 spaarrekeningen weergegeven worden.
Wat neerkomt op 2 “rijen” per categorie (zelf, gezamenlijk en partner).
In de vorige versie werden gewoon alle zichtrekeningen onder elkaar geplaatst enerzijds en alle spaarrekeningen onder elkaar anderzijds, ongeacht uit welke categorie ze kwamen, dit was op zich een beetje verwarrend omdat er op die manier een spaarrekening uit de ene categorie op dezelfde ‘rij’ kon staan als een zichtrekening uit een andere categorie.
Maar met de nieuwe aanpak heb ik de vraagstelling in dit frame gebundeld met een volgende vraagstelling waardoor het echt wel per categorie moet weergegeven worden.
Dus max 2 rijen voor de 1e categorie, daaronder max 2 rijen voor de 2e categorie en daaronder dan max 2 rijen van de 3e categorie.
Het ‘buiten beeld’ zetten van overbodige elementen én de frame-hoogte aanpassen adhv heb ik al mooi gecodeerd gekregen.
Maar nu moet ik dus de .Top posities van alle elementen correct laten aanpassen via de code en daar stuit ik dus op de hindernis van “hoe en waar”…

Om het even te verduidelijken :
Als de eerste categorie bij één der rekeningsoorten minstens 2 vermeldingen heeft dan wijzigt er niets, wanneer er bij beide rekeningsoorten maximum 1 vermelding staat dan dient de beginpositie van zowel categorie 2 als 3 één ‘rij’-hoogte naar boven verplaats te worden.
Idem voor de tweede categorie maar dan dient enkel de beginpositie van de derde categorie verhoogd te worden EN komt er nog de optie bij dat indien de tweede categorie geen vermeldingen heeft dat dan de derde categorie 2 ‘rij’-hoogtes naar boven geplaatst moet worden.
Categorie 1 zal sowieso altijd minstens 1 vermelding hebben en inzake categorie 3 wordt de ‘leegruimte’ reeds opgevangen door de aangepaste frame-hoogte.

In bijlage mijn huidig bestand. De betreffende code bevind zich onder de module ‘mod_toonframesBasis_Page0’ in de sub ‘toonfrm_Basis03()’.

Kan jij mij helpen bij deze kleine ‘hindernis’?
Indien nodig mag de structuur van het huidige code-blok uiteraard anders opgebouwd worden.

Alvast dank op voorhand.

Groetjes,
Bieke

1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #110 Gepost op: 06 augustus 2023, 09:36:47 »
Hey Bieke,

Ik heb alvast je laatste versie gedownload en vlug bekeken, maar zal vandaag helaas geen tijd hebben om het onder handen te nemen. Morgen waarschijnlijk wel, al is zelfs dat niet helemaal zeker.
Tegelijk lijkt het me niet zo moeilijk, maar eerder een kwestie van geconcentreerd te blijven. Het zou me niet verbazen als je zelf nog een poging zou doen door deze tamelijk eenvoudige logica te volgen: als arrmaxaantal(1)=1, dan moeten alle besturingselementen daaronder 23 'punten' stijgen, als vervolgens arrmaxaantal(2)=0 of 1, dan moeten alle besturingselementen daaronder respectievelijk 46 of 23 'punten' stijgen.
Als je voor vandaag zelf ook andere dingen te doen hebt probeer ik morgen zeker een gaatje te vinden, hoor.

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline Montagnard

  • Ambassadeur
  • *****
  • Berichten: 2.384
  • Geslacht: Man
Re: geautomatiseerd sjabloon voor budget
« Reactie #111 Gepost op: 06 augustus 2023, 09:50:03 »
Goedemorgen !
ik kan dan wel niet helpen bij het "programmeren" maar misschien kan ik helpen als "debugger"  ;D ?
ik heb de laatste versie eens gestart en wat gegevens ingegeven en loop tegen een layout fout aan , wou dit toch even meegeven  ;)
Mvg,
Arnold.

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #112 Gepost op: 06 augustus 2023, 10:29:16 »
@Molly,

Hartelijk dank voor je reactie  ;).
Ik ga inderdaad vandaag ook zelf nog een poging doen tussendoor tijdens kleine vrije momentjes.
Ik laat het hier dan wel weten of ik al dan niet succesvol was.


@Arnold,

Ook dank voor jouw reactie.
Het "lay-out"-probleem dat jij vermeld is allesbehalve een "bugje" maar gewoon een nog niet afgewerkt onderdeel in de code en net daarover gaat mijn bericht #109.
Waarbij ik aanhaal dat de overbodige elementen 'buiten beeld' zetten en het aanpassen van de frame-hoogte reeds in orde zijn maar dat ik er nu de code nog moet
tussen krijgen om de andere elementen omhoog te plaatsen, of beter gezegd de leegruimtes weg te werken.

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #113 Gepost op: 06 augustus 2023, 17:32:03 »
***UPDATE***

Toen ik van start wou gaan met een nieuwe poging besloot ik de volledige sub opnieuw van nul op te bouwen.
Om het niet vanaf het begin te ingewikkeld te maken ben ik gestart met het zo ruim mogelijk te coderen.
Ik ben gestart met het opbouwen van een structuur met zowel if-statements als select cases waarin ik de handelingen eerst als commentaar in mijn eigen woorden heb uitgeschreven.
Op die manier had ik dan een beter inzicht over welke code waar moest komen.
Eerst heb ik het code-blok voor “alleenstaand” gecodeerd wat nog simpel was en dan ben ik begonnen met het code-blok voor “samenwonend” wat toch wel complexer was.
Aangezien mijn kennis met arrays redelijk beperkt is, vooral in combinatie met “loops”, heb ik mijn code voorlopig beperkt tot 1 array en een aantal ‘simpele’ “loops”.
Nadat ik hiermee klaar was heb ik de code getest en deze werkt perfect, maw het doet wat het moet doen, dus de code is op zich wel in orde.
MAAR omwille van de extreme lengte (ca 175 lijntjes waarvan amper 12 commentaar zijn) vind ik het niet zo overzichtelijk en zou ik het dus graag een pak korter willen zien wat volgens mij toch zeker mogelijk is.
Alleen weet ik niet zo goed welke code ik waar op welke wijze kan inkorten waarbij toch nog duidelijk blijft wat de bedoeling is.

Dus als er iemand met een sterke kennis van wat complexere code-structuren is die een poging zou willen wagen of die mij alvast in de goeie richting wilt sturen dan zou ik dat enorm appreciëren.

Dit is mijn sub :
Sub toonfrm_Basis03()
  Dim i As Long, arCat(1 To 3), c As Variant, z_aantal As Long, s_aantal As Long, max_aantal As Long
  With UF_nwSituatie.MultiPage1.Pages(0).frm_Basis03
    .Top = UF_nwSituatie.frm_Basis02.Top + UF_nwSituatie.frm_Basis02.Height + 5
    .Left = 10
    .Height = 201
    arCat(1) = "U"
    arCat(2) = "G"
    arCat(3) = "P"
    If UF_nwSituatie.opt_Alleenstaand.Value = True Then
     .Height = 109
      Select Case UF_nwSituatie.txt_B02Z1.Value
        Case 1
          .Height = .Height - 23
          .lbl_B03UZ2.Left = 300
          .txt_B03UZ2.Left = 300
          .chk_B03UZ2.Left = 300
          If UF_nwSituatie.txt_B02S1.Value = 1 Then
            .lbl_B03US2.Left = 300
            .txt_B03US2.Left = 300
          End If
          If UF_nwSituatie.txt_B02S1.Value = 0 Then
            .lbl_B03US1.Left = 300
            .txt_B03US1.Left = 300
            .lbl_B03US2.Left = 300
            .txt_B03US2.Left = 300
          End If
        Case 2
          If UF_nwSituatie.txt_B02S1.Value = 1 Then
            .lbl_B03US2.Left = 300
            .txt_B03US2.Left = 300
          End If
          If UF_nwSituatie.txt_B02S1.Value = 0 Then
            .lbl_B03US1.Left = 300
            .txt_B03US1.Left = 300
            .lbl_B03US2.Left = 300
            .txt_B03US2.Left = 300
          End If
      End Select
      For c = 2 To 3
        For i = 1 To 2
          .Controls("lbl_B03" & arCat(c) & "Z" & i).Left = 300
          .Controls("txt_B03" & arCat(c) & "Z" & i).Left = 300
          .Controls("chk_B03" & arCat(c) & "Z" & i).Left = 300
          .Controls("lbl_B03" & arCat(c) & "S" & i).Left = 300
          .Controls("txt_B03" & arCat(c) & "S" & i).Left = 300
        Next i
      Next c
    End If
    If UF_nwSituatie.opt_Samenwonend.Value = True Then
      For c = 1 To 3
        z_aantal = UF_nwSituatie.Controls("txt_B02Z" & c).Value
        s_aantal = UF_nwSituatie.Controls("txt_B02S" & c).Value
        max_aantal = WorksheetFunction.Max(z_aantal, s_aantal)
        Select Case max_aantal
          Case 2
            If z_aantal = 2 Then
              Select Case s_aantal
                Case 1
                  'verwijder s2
                  .Controls("lbl_B03" & arCat(c) & "S2").Left = 300
                  .Controls("txt_B03" & arCat(c) & "S2").Left = 300
                Case 0
                  'verwijder s1 & s2 + chk-z1 & z2
                  .Controls("chk_B03" & arCat(c) & "Z1").Left = 300
                  .Controls("chk_B03" & arCat(c) & "Z2").Left = 300
                  .Controls("lbl_B03" & arCat(c) & "S1").Left = 300
                  .Controls("txt_B03" & arCat(c) & "S1").Left = 300
                  .Controls("lbl_B03" & arCat(c) & "S2").Left = 300
                  .Controls("txt_B03" & arCat(c) & "S2").Left = 300
              End Select
            Else
              Select Case z_aantal
                Case 1
                  'verwijder z2
                  .Controls("lbl_B03" & arCat(c) & "Z2").Left = 300
                  .Controls("txt_B03" & arCat(c) & "Z2").Left = 300
                  .Controls("chk_B03" & arCat(c) & "Z2").Left = 300
                Case 0
                  'verwijder z1 & z2
                  .Controls("lbl_B03" & arCat(c) & "Z1").Left = 300
                  .Controls("txt_B03" & arCat(c) & "Z1").Left = 300
                  .Controls("chk_B03" & arCat(c) & "Z1").Left = 300
                  .Controls("lbl_B03" & arCat(c) & "Z2").Left = 300
                  .Controls("txt_B03" & arCat(c) & "Z2").Left = 300
                  .Controls("chk_B03" & arCat(c) & "Z2").Left = 300
              End Select
            End If
          Case 1
            .Height = .Height - 23
            'verwijder z2
            .Controls("lbl_B03" & arCat(c) & "Z2").Left = 300
            .Controls("txt_B03" & arCat(c) & "Z2").Left = 300
            .Controls("chk_B03" & arCat(c) & "Z2").Left = 300
            'verwijder s2
            .Controls("lbl_B03" & arCat(c) & "S2").Left = 300
            .Controls("txt_B03" & arCat(c) & "S2").Left = 300
            'if c = 1 dan verhoog toppositie c2 en c3 -23
            If c = 1 Then
              For i = 1 To 2
                .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top - 23
               
                .Controls("lbl_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 2) & "Z" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 2) & "Z" & i).Top - 23
                .Controls("chk_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 2) & "Z" & i).Top - 23
                .Controls("lbl_B03" & arCat(c + 2) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 2) & "S" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 2) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 2) & "S" & i).Top - 23
              Next i
            End If
            'if c = 2 dan verhoog toppositie c3 -23
            If c = 2 Then
              For i = 1 To 2
                .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top - 23
                .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top - 23
                .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top - 23
              Next i
            End If
            If z_aantal = 1 Then
                If s_aantal = 0 Then
                  'verwijder s1 + chk-z1
                  .Controls("chk_B03" & arCat(c) & "Z1").Left = 300
                  .Controls("lbl_B03" & arCat(c) & "S1").Left = 300
                  .Controls("txt_B03" & arCat(c) & "S1").Left = 300
                End If
             Else
                'verwijder z1
                .Controls("lbl_B03" & arCat(c) & "Z1").Left = 300
                .Controls("txt_B03" & arCat(c) & "Z1").Left = 300
                .Controls("chk_B03" & arCat(c) & "Z1").Left = 300
            End If
          Case 0
            .Height = .Height - 46
            'verwijder z1 & z2
            'verwijder s1 & s2
            For i = 1 To 2
              .Controls("lbl_B03" & arCat(c) & "Z" & i).Left = 300
              .Controls("txt_B03" & arCat(c) & "Z" & i).Left = 300
              .Controls("chk_B03" & arCat(c) & "Z" & i).Left = 300
              .Controls("lbl_B03" & arCat(c) & "S" & i).Left = 300
              .Controls("txt_B03" & arCat(c) & "S" & i).Left = 300
            Next i
            'if c = 1 dan verhoog toppositie c2 en c3 -46
            If c = 1 Then
              For i = 1 To 2
                .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top - 46
               
                .Controls("lbl_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 2) & "Z" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 2) & "Z" & i).Top - 46
                .Controls("chk_B03" & arCat(c + 2) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 2) & "Z" & i).Top - 46
                .Controls("lbl_B03" & arCat(c + 2) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 2) & "S" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 2) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 2) & "S" & i).Top - 46
              Next i
            End If
            'if c = 2 dan verhoog toppositie c3 -46
            If c = 2 Then
              For i = 1 To 2
                .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top = .Controls("chk_B03" & arCat(c + 1) & "Z" & i).Top - 46
                .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top = .Controls("lbl_B03" & arCat(c + 1) & "S" & i).Top - 46
                .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top = .Controls("txt_B03" & arCat(c + 1) & "S" & i).Top - 46
              Next i
            End If
        End Select
      Next c
    End If
   
    '"volgende"-knop op juiste positie plaatsen
    .lbl_BasisVlg03.Top = .Height - 20
  End With
End Sub


Groetjes,
BlackDevil/Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #114 Gepost op: 07 augustus 2023, 12:33:53 »
***UPDATE 2 ***

Na heel wat gepuzzel dan toch een kortere code-blok kunnen creëren voor het 'buiten beeld' zetten van de overbodige controls..
Het enige wat er nu nog tussen moet is de hoogte van het frame laten aanpassen, het verhogen van de controls om 'leegruimtes' te vermijden
én ergens in de code dat wanneer "alleenstaand" is geselecteerd hij na verwerken van de eerste ronde de loop moet verlaten.

dit is mijn drastisch "ingekort" code-blok (van ca 175 lijntjes naar amper 40  :D ) :

Sub toonfrm_Basis03()
  Dim i As Long, c As Long, rij As Long, p As Long
  Dim ar_Prfx As Variant, arCat As Variant, arZ_aantal(1 To 3), arS_aantal(1 To 3), arMax_aantal(1 To 3) As Variant
  With UF_nwSituatie.MultiPage1.Pages(0).frm_Basis03
    .Top = UF_nwSituatie.frm_Basis02.Top + UF_nwSituatie.frm_Basis02.Height + 5
    .Left = 10
    .Height = 201
    If UF_nwSituatie.opt_Alleenstaand.Value = True Then .Height = 109
   
    ar_Prfx = Array("lbl", "txt", "chk")
    arCat = Array("U", "G", "P")
    ReDim Preserve ar_Prfx(1 To 3)
    ReDim Preserve arCat(1 To 3)
    For i = 1 To 3
      arZ_aantal(i) = UF_nwSituatie.Controls("txt_B02Z" & i).Value
      arS_aantal(i) = UF_nwSituatie.Controls("txt_B02S" & i).Value
      arMax_aantal(i) = WorksheetFunction.Max(arZ_aantal(i), arS_aantal(i))
    Next i
    For c = 1 To 3
      For p = 1 To 3
        Select Case arZ_aantal(c)
          Case 0
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "Z1").Left = 300
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "Z2").Left = 300
          Case 1
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "Z2").Left = 300
        End Select
      Next p
      For p = 1 To 2
        Select Case arS_aantal(c)
          Case 0
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "S1").Left = 300
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "S2").Left = 300
          Case 1
            .Controls(ar_Prfx(p) & "_B03" & arCat(c) & "S2").Left = 300
        End Select
      Next p
    Next c
   
    '"volgende"-knop op juiste positie plaatsen
    .lbl_BasisVlg03.Top = .Height - 20
  End With
End Sub

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #115 Gepost op: 07 augustus 2023, 14:44:57 »
Hey Bieke,

Je gaat er met rasse schreden op vooruit :thumbsup:
Ik heb voor het 'visueel in orde brengen' van frame 3 enkele lijntjes veranderd of toegevoegd, maar omdat de tijd vandaag zo beperkt is zou ik je adviseren voldoende scenario's uit te proberen 0:-)

Citaat
én ergens in de code dat wanneer "alleenstaand" is geselecteerd hij na verwerken van de eerste ronde de loop moet verlaten.
Dat heb ik maar liever niet gedaan, want je zal geen tijdswinst kunnen vaststellen, én het zou net extra code betekenen (méér dan zomaar verlaten)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #116 Gepost op: 07 augustus 2023, 16:39:22 »
Hey Molly,

Bedankt dat je desondanks je zeer beperkte tijd vandaag toch eventjes tijd heb genomen om me
verder te helpen  _/-\o_ _/-\o_  ;).

Ik was zelf ook in die richting begonnen met die "for... each.." en dat lukte wel enigszins maar steeds
met opnieuw een hele resem extra code voor alle voorwaarden.... Ik had er dus nog niet aan gedacht
om op voorhand, bij de 'loop' voor het vullen van de arrays met de aantallen, de benodigde voorwaarden
reeds te verwerken  :-[.

Die optie om te verlaten indien 'alleenstaand' geselecteerd was had ik enkel maar vermeld omdat met mijn
code-blok (zoals het was) in dat geval er nog controls zichtbaar waren.
Maar dat kwam uiteraard omdat ik daar op voorhand reeds de hoogte had ingesteld ingeval van 'alleenstaand'.
En zoals de code nu is, is het inderdaad totaal overbodig daar een onderscheid te gaan in maken.

De code is perfect nu, kort en krachtig  :D zoals ik het graag heb  ;D .

Tijd voor mij dus om met het volgende frame te starten... als zal daar deze week ook niet al te veel vordering
in kunnen komen door andere dringende verplichtingen.

groetjes,
Bieke
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline BlackDevil

  • Ambassadeur
  • *****
  • Berichten: 1.031
  • Geslacht: Vrouw
  • veni vidi vici
Re: geautomatiseerd sjabloon voor budget
« Reactie #117 Gepost op: 09 augustus 2023, 09:09:38 »
Hey Molly,

Voor de verwerking van frm_Basis03 heb ik een nogal complexe voorwaarden-structuur nodig waarvan ik niet zo goed weet hoe ik dit best kan benaderen en opbouwen en of ik dit enkel met ‘If..then’, enkel met “select case” of met een combinatie van beide doe.
Zowel voor het inlezen als voor het verwerken van de ingelezen gegevens zit ik vast omwille van de voorwaarden in combinatie met de diverse mogelijke scenario’s van de verschafte gegevens.

Er kunnen tot drie categorieën zijn met elk max 2 zicht- en/of max 2 spaarrekeningen met al dan niet max 2 aangevinkte checkboxen.
Binnen elke categorie zijn er dus diverse mogelijkheden (met één lichte afwijking ingeval van een alleenstaande (deze zal sowieso altijd minstens 1 zichtrekening hebben in de eerste en enige categorie)) :

1 zicht en 1 spaar met al dan niet 1 ES
1 zicht en 2 spaar met al dan niet 1 ES
2 zicht en 1 spaar met al dan niet 1 of 2 ES (ingeval van 2 ES dient elke zicht apart gekoppeld te worden aan dezelfde spaar)
2 zicht en 2 spaar met al dan niet 1 of 2 ES
1 of 2 zicht en 0 spaar = sowieso GEEN ES
0 zicht en 1 of 2 spaar = sowieso GEEN ES

De eerste verwerking van deze gegevens is, per categorie, het correct samenvoegen tot een string voor de aanvulling van de samenvatting waarbij, ingeval van geen ES, de rekeningen moeten gescheiden worden door ", " en dit in volgorde van eerst de zichtrekeningen en dan pas de spaarrekeningen en waarbij, ingeval van wél ES, eerst de zicht en daaraan gekoppelde spaar moet samengevoegd worden met in het midden "-ES-" en dan verder eerst zicht en dan spaar die geen ES-koppeling hebben.
De tweede verwerking is enkel een vermelding van elke rekening apart waarbij de gebruiker bepaalde opties per rekening moet aanvinken, dit komt in het volgende frame.
De derde verwerking heeft betrekking op de berekeningscode in het uiteindelijke “werk”-bestand en komt dus pas in een later stadium aan bod.

Hoe kan ik dit het beste benaderen voor zowel de eerste als de tweede verwerking?
Ik heb reeds diverse structuren geprobeerd voor de eerste verwerking, maar ik loop steeds vast bij het ‘inlezen’ van de verschafte gegevens om vervolgens de juiste voorwaarden-structuur te vinden en de gegevens in de juiste volgorde en het juiste format in de string te plaatsen voor de samenvatting.
Ik heb zelfs een 3D-array geprobeerd maar desondanks dat één der voorwaarden ingesteld stond dat de linkse positie kleiner moest zijn dan 200 werden de labels die op een linkse positie van 300 staan ook vermeld in de array  ???.

Groetjes,
Bieke 
1) HP ProDesk (Windows 10 Pro Edu / Intel(R) Core(TM) i5-7500 CPU@ 3.40Ghz 3.41Ghz)
2) Laptop ASUS (Windows 10 Home / Intel(R) Core(TM) i3-3110M CPU@ 2.40GHz 2.40GHz)
Beide (RAM : 8,00 GB / 64-bits besturingssysteem, x64-processor)
Extern (Seagate Backup+ Hub 6TB / Seagate BUP Slim 2TB / Seagate Expansion Desk 5TB / HP ENVY 6030e)
Bullguard Premium Protection / Office Pro Plus 2016 NL

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #118 Gepost op: 09 augustus 2023, 10:35:04 »
Hey Bieke,

Liefst val ik niet te vaak in herhaling, maar ik ben ervan overtuigd (al sedert geruime tijd) dat ik nooit het belang van die samenvatting zal kunnen snappen.
Dat neemt niet weg dat ik accepteer dat het voor jou anders is ;)
Of je het nu met 'if', 'select case' of beide doet maakt niets uit, ze doen hetzelfde, je schrijft het enkel anders. Als je jouw opgesomde voorwaarden in een schemaatje zet merk je daarna wel automatisch hoe je dat best naar code vertaalt (waarbij persoonlijke voorkeuren zeker mogen meespelen...)
En ik denk dat zo een schema meteen ook kan aantonen dat het niet écht moeilijk moet zijn (een beetje langdradig mogelijk wel :-X)
Volgende geeft vermoedelijk alle mogelijkheden weer:
zicht  spaar  es
0        0        0
0        1        0
0        2        0
1        0        0
1        1        0
1        1        1
1        2        0
1        2        1
2        0        0
2        1        0
2        1        1
2        1        2
2        2        0
2        2        1
2        2        2

En na het te hebben gemaakt kan ik (althans voor mezelf) meteen constateren dat ik vooral van 'select case' gebruik zou maken :)
Misschien wil je daarmee eerst zelf nog een laatste poging doen?
Tot zover verwerking 1 :D
Wat verwerking 2 betreft kan ik voorlopig weinig kwijt, ik denk dat het veel zal afhangen van wat en hoe de gebruiker er verder moet mee omgaan.

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

Offline MollyVH

  • Excel-Expert
  • Oplosser
  • *****
  • Berichten: 847
Re: geautomatiseerd sjabloon voor budget
« Reactie #119 Gepost op: 09 augustus 2023, 12:15:59 »
Hey Bieke,

Met het idee dat ik je hiermee toch iets verder op weg mag helpen heb ik nog vlug een kleinigheid gedaan.
Om er geen erwtensoep van te maken zijn de wijzigingen t.o.v. de vorige versie duidelijk aangegeven:
binnen de UF-code zijn er twee korte stukjes toegevoegd die elk als volgt :D tussen twee commentaar-lijntjes staan:
  '************molly****************
  '*********************************
En verder is er een nieuwe module toegevoegd die vooral bedoeld is om aan te tonen hoe je relatief eenvoudig de benodigde gegevens te pakken krijgt.
Want je hebt het ongetwijfeld zelf al meermaals gemerkt: met iets als "for each ... in controls" pak je ze allemaal, zijnde meestal te veel 0:-)

Groetjes,
Molly
Windows 11 Home NLD 64bit
11th Gen Intel(R) Core(TM) i7-11700 @ 2.50GHz 2496
Aspire TC-1660
Intel(R) UHD Graphics 750 1024MB
476 GB SSD KINGSTON OM8PCP3512F-AA
1863 GB HD Seagate ST2000DM008-2FR102
Office 2021 Professional Plus NLD 64bit

 


www.combell.com