Kopie naar rij met juiste weeknummer

Status
Niet open voor verdere reacties.

icecube87

Gebruiker
Lid geworden
5 okt 2011
Berichten
46
Hallo allen,

ik ben bezig met een document dat het volgende zou moeten doen:

1. Op Blad2 staat een waarde in range A5 tot C5 (dit is altijd een vaste range)
2. Wanneer er op de knop "kopieer" wordt geklikt, worden de waardes in deze range gekopieerd naar Blad1

Dit werkt voor zo ver. Echter wil ik dat de waardes op Blad1 terecht komen bij de rij met het weeknummer dat op Blad2 in kolom A1 is ingevuld.

Code voor het kopiëren tot nu toe:

Code:
Sub Knop2_Klikken()
  With Sheets("Blad2")
    Sheets("Blad2").Range("A5:C5").Copy
     Sheets("Blad1").Range("B2:D2").Insert Shift:=xlDown
  End With
End Sub

Hoe kan ik het "kopieer naar" gedeelte afhankelijk maken van de waarde in Blad2 kolom A1?
Ik hoop dat jullie een oplossing weten, via google helaas nog niet gevonden wat ik zoek.
 

Bijlagen

bv.

Code:
Sub Knop2_Klikken()
 if range("a2")<> "" then Sheets("Blad1").Cells(Range("a2").Value + 1, 2).Resize(, 3) = Range("A5:c5").Value
End Sub
 
Top, heel erg bedankt, dat doet precies wat ik graag wil!

Heb ik nog een vraag.
Nu staan de gegevens die ik wil kopiëren in een range naast elkaar, maar stel dat het zo is dat de gegevens uit de volgende kolommen moeten komen:

A1, A3 en A6?
 
Laatst bewerkt:
Code:
=array(range("A1"),range("A3"),range("A6"))

Ik heb dat nu geprobeerd, dat heb ik als volgt gedaan:

Code:
Sub Database_Klikken()
 If Range("B4") <> "" Then Sheets("Database").Cells(Range("A3").Value + 1, 2).Resize(, 3) = Array(Range("C10"), Range("F10"), Range("L10"))
End Sub

Ik krijg geen foutmelding, maar er gebeurd ook niets.
Wel heb ik .value weggehaald achter de array omdat deze een foutmelding geeft. Hoort deze er toch te staan maar doe ik iets verkeerd?
 
Code:
Range("A3").Value + 1

Range("B4").Value + 1
 
Het is allemaal maar een beetje gokken zo. Selectief reageren is ook niet zo handig.

Code:
Array(Range("C10").value, Range("F10").value, Range("L10").value)
 
#7 is geen gok @VenA. ;)
 
Mijn excuses, inderdaad niet zo handig, omdat ik het originele document niet mag delen.
Heb alle privacy gevoelige zaken er nu uitgehaald, zodat ik het kan delen.

Nu in de bijlage het origineel.

Wat er nu gebeurd:

Als ik op "opslaan" klik, gaat alleen het bedrag "10.000" naar de sheet "Database" maar komt terecht in B1.
Terwijl ik het idee heb dat het in het de rij van weeknummer uit sheet "Totaal overzicht" B4 moet komen.
 

Bijlagen

Code:
 If Range("B4") <> "" Then Sheets("Database").Cells([COLOR=#ff0000]Range("b4").Value + 2[/COLOR], 2).Resize(, 3) = Array(Range("C10"), Range("F10"), Range("L10"))
 
Super bedankt! Dat is de oplossing voor het probleem.

Kan je mij uitleggen waarom de waarde veranderd naar 2 i.p.v. 1?
 
Omdat B4.value + 2 cel B6 is op het ander blad en daar staat het getal wat in B4 staat.
Mocht het steeds veranderen dan is het beter om de match functie te gebruiken, maar leek me hier niet nodig.


Ps. Gebruik ook geen samengevoegde cellen; daar krijg je vroeg of laat problemen mee.
 
Ik heb toch nog een vraag.
Door omstandigheden is het toch handiger om de indeling te veranderen.
In plaats van de weeknummers onder elkaar te zetten, heb ik ze nu naast elkaar gezet.
De data moet er dan van boven naar beneden onder gezet worden.

Ik kom er echter niet achter hoe er in het script bepaald wordt dat de data nu van links naar rechts gaat.
Hoe verander ik de richting?
 
Ik heb even gegoogled op transponeren.
Dat is mijn inziens handig op het moment dat je al data hebt, mij gaat het meer om het script dat de data kopieert. (de database moet nog gevuld worden en is opnieuw ontworpen op de nieuwe indeling)

Op dit moment slaat excel de data met dit script op:

Code:
 If Range("aa2") <> "" Then Sheets("Database").Cells(Range("aa2").Value + 2, 2).Resize(, 32) = Array(Range("C10"), Range("F10"), Range("I10"), Range("L10"), Range("O10"))

Dit slaat echter de data horizontaal op, nu wil ik dat omzetten naar verticaal.
 
Lijkt mij een slecht ontwerp. Waarom Resize(, 32) als je maar 5 gegevens hebt?

Dat is mijn inziens handig op het moment dat je al data hebt
Misschien even verder zoeken? transponeren is in VBA application.transpose.

Plaats maar een voorbeeld met wat het allemaal moet worden.
 
Ik had de andere arrays even weggehaald, omdat het er wel 32 zijn en de code op het forum anders zo lang wordt.

Heb een voorbeeld gemaakt van wat ik bedoel.
De code die nu aan de knop zit zorgde er voor dat de data horizontaal in de sheet Database_OUD bij het juiste weeknummer werd neergezet.
Nu wil ik de code eigenlijk aanpassen zodat de data verticaal ingevoerd wordt bij het juiste weeknummer in de sheet "Database".
 

Bijlagen

Zowel de sheet 'Database_OUD' als de sheet 'Database' hebben niets met een database te maken. In een database zet je eenduidige gegevens onder elkaar in tabel vorm. In jouw geval wordt het dan iets van artikel-aantal-week. Vervolgens maak je dmv van bv draaitabellen overzichten.
Wat jij wil kan al helemaal niet want dan moet je de gegevens per dag vastleggen.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan