Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Gegevens verplaatsen van blad1 naar blad2  (gelezen 5536 keer)

0 leden en 1 gast bekijken dit topic.

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Gegevens verplaatsen van blad1 naar blad2
« Gepost op: 29 juni 2007, 10:43:55 »
Hoi allen,

De vraag is hoe ik een aantal rijen gegevens kan kopieren van blad1 naar blad2, rekening houdend met een waarde in een cel. Deze moet in blad 1 en 2 overeenkomen. op rij 1 staat het weeknr., die kolom kan ik vinden in blad2.

Probleem: Ik hou een portefeuille aandelen bij in blad1. Er kan een fonds bijkomen, er kan een fonds afgaan. In blad2 hou ik een jaaroverzicht bij, elke kolom 1 week. De portefeuille-totalen moeten daar onderaan staan (keuze). Als ik de kolom van blad1 in z'n geheel kopieer naar blad2, dan staan de bedragen niet bij het juiste fonds.

Ik moet dus rij voor rij controleren of het bedrag in de juiste rij staat en de juiste kolom(week). Dat zou kunnen door de portefeuille eerst in een 2-dimensionale array te plaatsen (fondsnaam,bedrag). En dan in het jaaroverzicht rij voor rij de namen te vergelijken en het bijgehorende bedrag te plaatsen.

Maar ik heb ook een kwijtgeraakte website gezien waarin dit eenvoudiger met een andere variabele kan (misschien RANGE). Is dat zo? Weet iemand hier een oplossing voor?

Edit: Inmiddels weet ik genoemde website weer:
https://users.skynet.be/onderland/TekstExcel/Variabelen.htm . Hier wordt o.a. uitleg gegeven over het gebruik van collections.


Alvast heel erg bedankt!  Gerrit.
Voorbeeld:

BLAD1
      A       B
1             21
2    C&A   12,50
3    ING    32,11
4    KLM    44,11
5    SBM    49,33
6    X-tern 5,79


BLAD2
      A       B
1              19           20
2    C&A   12,50       10
3    ING    32,11       31
4    SBM    49,33      50
5    X-tern 5,79          6
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #1 Gepost op: 29 juni 2007, 22:02:19 »
Gerrit, een paar vraagjes..
  • is blad 1 dus je 'week-invoer-blad'?
  • dit blad zal je dus iedere week 'schonen' nadat je de waarden hebt overgenomen op je totaaloverzicht?
  • Om hoeveel fondsen gaat het maximaal op het totaaloverzicht?
  • de fondsen die nieuw zijn in het weekinvoerblad moeten uiteraard worden toegevoegd aan het totaaloverzicht. Moeten dan de regels die je niet meer in je weekinvoerblad opgeeft, verwijderd worden uit je totaaloverzicht?

Ik heb opzich wel een ideetje om dit uit te werken. Maar da's niet 1,2,3 gebeurd. :'(

Interessant stuk trouwens van Luc Heyndrickx. Heel leerzaam voor diegene die in de wereld van de VBA wil stappen. (bekijken dus, die link)

Groet, Leo

Ps. Je hebt je weg naar OplossingBE nu ECHT gevonden hè? ;) ;D Blijf sturen, die vragen!
______________________________

Groet, Leo

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #2 Gepost op: 30 juni 2007, 16:32:20 »
Hoi Leo,

Ja, blad 1 is week-invoer. Maar om direct inzicht te hebben in het rendement staat daar altijd ook vorige week. En vorige week wordt naar het jaaroverzicht gekopieerd bij het drukken op de knop 'nieuwe week'.

Er staat ook een rendement per fonds tov vorige week en begin v/h jaar of aankoop-moment. In procenten en euros. Ik schoon niet, maar verplaats deze week naar vorige week en dus schoont hij de kolom 'deze week'. Het aantal fondsen moet uiteindelijk helemaal variabel, maar we hebben er nu 15 en er zijn gemiddeld 5 à 7 mutaties per jaar. Als het inzicht verbetert, dan kan het aantal mutaties ook vermeerderen.

Oude fondsen worden NIET verwijderd uit het jaaroverzicht, nieuwe fondsen worden wel toegevoegd. Als een fonds is verkocht in week 3 en wordt teruggekocht in week 37, dan moet deze in dezelfde rij van het jaaroverzicht worden opgenomen.

In het weekoverzicht zit een knop 'fonds verwijderen'. Je hoeft niet te werken met 'rij verwijderen', dat doet vba (en gaat goed).

Het probleem zit dus in het slim kopieren van de vorige week naar het jaaroverzicht. Eerst deed ik dit voor de hele kolom, maar dat is fout, het moet per fonds (dus per rij).

Mijn idee is om de vorige week in een array te plaatsen, dan naar het jaaroverzicht te gaan, per fonds kijken of deze bestaat in het jaaroverzicht en dan in de juiste week de waarde vanuit de array in de juiste cel te plaatsen.

Het maken van de array begint nu te komen (ik oefen er nu mee). Het plaatsen in het jaaroverzicht is de volgende stap.

Groetjes, Gerrit.
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #3 Gepost op: 30 juni 2007, 18:15:52 »
Gerrit, als ik je antwoord zo lees, maak ik op dat je al een workbook hebt.... Klopt dat? Zo ja, is het dan mogelijk om een kopie daarvan als bijlage op het forum te plaatsen? (uiteraard kan je de fondsen en/of bedragen in dat kopiebestand veranderen zodat je geen geheimen op het net gooit! ;))
Maar dan kunnen we verder bouwen op hetgeen je nu hebt, ipv het wiel opnieuw uitvinden. Eens?

Groet, Leo
______________________________

Groet, Leo

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #4 Gepost op: 30 juni 2007, 20:59:21 »
Ja, wil ik wel doen, maar...

ik moet even zoeken naar een wachtwoord dat er in staat (in de vba-code).

Dus hij komt er aan, maar nu nog even niet.

Tot hoors, Gerrit.

Okee, hier is het excel-sheet. Ik ben op dit moment bezig met module 4, proc. fill_array().

De MsgBox toont aan dat de array goed wordt gevuld met fondsnamen en beurswaarden. Nu moet de array naar het jaaroverzicht gezet worden.
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #5 Gepost op: 30 juni 2007, 21:06:08 »
Gerrit, Rustig aan... We zien 'm vanzelf verschijnen! ;D

Groet, Leo
______________________________

Groet, Leo

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #6 Gepost op: 01 juli 2007, 09:29:35 »
Hoi Leo en de rest,

De file staat erop, 1 berichtje terug. 2 fondsen zijn hetzelfde gebleven, om de bedoeling van kolom b en c duidelijk te maken.
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #7 Gepost op: 01 juli 2007, 17:33:15 »
Omdat ik problemen kreeg met varabele-declaraties is de vul_array code samengevoegd met ProKopieerVrgWeekNaarJaaroverzicht .

Hierdoor krijg je een wat langere procedure, maar met duidelijker inzicht in de volgorde van uit te voeren stappen.

Het probleem spitst zich nu toe op een lus in een lus. De buitenste lus loopt door m'n array, en gaat per gevonden fonds in de 2e lus door het jaaroverzicht om de regel van dat fonds te vinden.

In de 1e lust treedt echter een foutmelding op als een fonds in de array niet direct wordt gevonden in de volgende regel van het jaaroverzicht: Fout 9, het subscript valt buiten het bereik.

    Sub ProKopieerVrgWeekNaarJaaroverzicht()
   
    Dim LWeek As Integer
    Dim LColumn As Integer
    Dim LFound As Boolean
    Dim FondsFound As Boolean
    Dim Arrayteller As Integer
    Dim thisarray As Variant
   
    'On Error Resume Next
    On Error GoTo Err_Execute

    'Retrieve date value to search for
    Sheets("Portefeuille").Select
   
    LWeek = Sheets("Portefeuille").Range("F8").Value
   
    number_of_elements = LaatsteRij() - 9   'aantal elementen in de matrix
    'grootte moet worden gewijzigd
    ReDim thisarray(1 To number_of_elements, 20) As Variant
   
   Arrayteller = 1
   fillmeup = 7
   For Arrayteller = 1 To number_of_elements
      'Hier moeten de fondsen uit portefeuille.B9-laatste rij komen en de waarden uit F9-laatsterij
      'de 7 en hoi werken, de rijen ook
     
      thisarray(Arrayteller, 1) = Range("B" & 8 + Arrayteller) 'fondsnaam
      thisarray(Arrayteller, 2) = Range("F" & 8 + Arrayteller) 'koers
   Next Arrayteller
   Arrayteller = 1        'deze lus toont wat is ingevuld in de portefeuille
   
   Sheets("Jaaroverzicht").Select

    'Start at column A
    LColumn = 1
    LFound = False
   
    While LFound = False
        'Encountered blank cell in row 3, terminate search
        If Len(Cells(3, LColumn)) = 0 Then
            MsgBox "Geen overeenkomend weeknummer gevonden."
            Exit Sub

        'Found match in row 2
        ElseIf Cells(3, LColumn) = LWeek Then
          LFound = True
          'Continue searching
        Else
            LColumn = LColumn + 1
        End If
    Wend
   
   'MsgBox ("LWeek: " & LWeek)
   'MsgBox ("wat is lcolumn: " & LColumn)
   
   
   While Arrayteller <= UBound(thisarray)
      MsgBox ("arrayteller is: " & Arrayteller & " en Ubound is: " & UBound(thisarray))
     
     
      FondsFound = False
      While FondsFound = False
        If thisarray(Arrayteller, 1) = Cells(Arrayteller + 3, 1) Then
          Cells(Arrayteller + 3, LColumn).Value = thisarray(Arrayteller, 2)
          FondsFound = True
        Else
          FondsFound = False
        End If
      Arrayteller = Arrayteller + 1
      Wend
     
      MsgBox ("Teller is: " & Arrayteller & " , fonds is: " & thisarray(Arrayteller, 1) & " koers is: " & thisarray(Arrayteller, 2))
     
   Wend
   
    On Error GoTo 0
   
    Exit Sub

Err_Execute:
    MsgBox "(2) Er is een fout opgetreden.

End Sub
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #8 Gepost op: 01 juli 2007, 21:10:15 »
Okee,

Terug naar de schoolbanken. Als je een dubbele geneste lus gebruikt, dan moet je iedere lus met een aparte teller controleren! Ik probeerde dit met 1 var. te doen, ging niet.

Dit ging wel: (in module 4, zie boven)
Arrayteller = 1
   While Arrayteller <= UBound(thisarray)
      MsgBox ("arrayteller is: " & Arrayteller & " en Ubound is: " & UBound(thisarray))

      FondsFound = False
      Rijteller = 1
      While FondsFound = False
        If thisarray(Arrayteller, 1) = Cells(Rijteller + 3, 1) Then
          'Cells(Arrayteller + 3, LColumn).Value = thisarray(Arrayteller, 2)
          Cells(Rijteller + 3, LColumn).Value = thisarray(Arrayteller, 2)
          FondsFound = True
        Else
          FondsFound = False
        End If
        Rijteller = Rijteller + 1
        'MsgBox ("Teller in 2e lus: " & Rijteller)
      Wend
     
      'MsgBox ("Teller is: " & Arrayteller & " , fonds is: " & thisarray(Arrayteller, 1) & " koers is: " & thisarray(Arrayteller, 2))
      Arrayteller = Arrayteller + 1
   Wend

Nu nog testen-testen-testen. >:( >:( >:(  ==> Gaat goed tot nu toe, meestal vergeet ik belangrijke test-handelingen, dus we gaan door.... ??? ???

Groet, Gerrit.
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #9 Gepost op: 01 juli 2007, 23:06:04 »
Gerrit, je bent lekker bezig zo te zien... ;D
Ik was zelf een dagje afwezig, maar ga morgen(avond) met je mee doen (voor zover je er dan al niet zelf uitgekomen bent).

Groet, Leo
______________________________

Groet, Leo

Offline gbon

  • Lid
  • *
  • Berichten: 15
  • Oplossing.be
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #10 Gepost op: 02 juli 2007, 08:28:26 »
Hoi Leo,

Het programma doet op dit moment wat er moet gebeuren. Het is nu een kwestie van testen-testen, zorgen voor gekke situaties.

Verbeterpunten op dit moment:
  • Foutafhandeling is niet netjes,
  • Variabelen worden onnodig opnieuw ingesteld of niet afgesloten (geheugen vrijgeven).
  • Gebruikers mogen vrij in de cellen klikken, waardoor formules zouden kunnen verdwijnen.
  • Het jaaroverzicht kan inzichtelijker door de waarde per fonds weer te geven (en dan in de alt-tekst de koers met het aantal te zetten)
  • Waarschijnlijk kunnen de cracks de code herschrijven tot een-derde van de hoeveelheid tekst. Ik had met veel moeite in de praktijk geleerd dat de eerst-werkende oplossing gebruikt moet worden, maar in een volgende versie kan veel verbeterd worden.

O ja, kwam op de valreep nog een sorteerfout tegen nadat een nieuw fonds was toegevoegd. Het gaat om procedure ProFondsToevoegenOK(), met de regel
Range("A9:BA" & LaatsteRij - 1).Sort Key1:=Range("A4:A" & LaatsteRij - 1) . De eerste A9 moet A4 zijn.


Bedankt voor jullie betrokkenheid! Bij mij gaat de pc even uit om te kunnen verhuizen.  ;D ;D ;D
Standaard emailprogramma: Office Outlook
Standaard Operating System: Windows XP SP2
Standaard Browser:Internet Explorer 7

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.280
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Gegevens verplaatsen van blad1 naar blad2
« Reactie #11 Gepost op: 02 juli 2007, 22:20:00 »
Ehhh Gerrit, HEB je nog wel hulp nodig??? ;D Volgens mij heb je 't aardig onder controle!

Ik zal d'r ook nog 'ns doorheen lopen om te kijken of er nog leuke dingen gedaan kunnen worden.
Wat ik me trouwens net zit af te vragen.... Waarom zet je al je waarden niet gewoon in 1 grote doorlopende tabel (3 velden: fonds; bedrag; weeknummer) om vervolgens met een 'draaitabel' je gegevens te clusteren? Excel neemt je daarmee een hoop werk uit handen (óók al blijft het natuurlijk wél leuk om zelf iets te bouwen ;))

Groet, Leo

P.s. lange verhuizing?
______________________________

Groet, Leo

 


www.combell.com