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

Data kopieeren van blad a naar blad b en daar bewaren

Status
Niet open voor verdere reacties.

Johan3h

Gebruiker
Lid geworden
16 jan 2012
Berichten
45
Geacht Forum,

Ik heb het volgende probleem waar ik niet uit kom:

Ten behoeve van managementrapportage heb ik op blad a een lijst gemaakt waar de collega's elke dag hun scores op bijhouden. Dit gebeurt door een simpel "klik" systeem waarbij per product het aantal wordt vermenigvuldigd met een toegewezen aantal punten en de totaalscore wordt opgeteld. Hierbij wordt gelijk een hitratio uitgerekend. Elke dag maakt men de sheet leeg middels een knop met daarachter de betreffende macro.

Nu is het bedoeling dat de macro, voor dat hij de sheet (blad a) leeg maakt, de diverse scores per product van de dag ervoor naar blad b kopieerd en daar bewaard in een rij. De scores van de volgende dag dienen dan weer te worden gekopieerd naar blad b naar de volgende rij en daar bewaard. enz. enz. Het is dus niet de bedoeling dat de rij van dag 1 wordt overschreven of leeggemaakt doordat de medewerker blad a leeg maakt.

In de hoop mijn probleem zo een beetje duidelijk te hebben gemaakt.

Wie kan mij helpen dit voor elkaar te krijgen,

Alvast bedankt,
 
Dat is niet zo moeilijk maar zonder voorbeeldbestandje is er niks zinnigs over te zeggen.

Niels
 
Bestandje bijvoegen

Helaas het bestandje wil niet uploaden. Kan iemand mij daarbij helpen?
 
Voor schroeven gedaan.
Alsje niet elke keer een lege regel er tussen hebt staan is het een stuk makkelijker,probeer ook samengevoegde cellen te voorkomen. Dit levert problemen op met macro's

Bekijk bijlage Turflijst(1).rar

Niels
 
Bestand

Dank je wel !!
Het werkt precies zoals ik bedoel.:thumb:

Maar zou je mij in Nijntje-taal kunnen uitleggen wat de macro precies doet. En hoe je het commando in elkaar hebt gezet. Zodat ik in voorkomende geval weet hoe dit werkt.
Dit is voor mij een goed leer-moment. Daarnaast moet ik de macro ook nog op de rest aan het werk zien te krijgen. Ik wil dan graag weten wat ik aan het doen ben.

Alvast mijn dank

Johan
 
Loop de code eens stap voor stap door met F8
Zet het venster locale variabelen (vba editor , beeld) aan en je ziet wat er verandert in de waardes.



Code:
Sub Nweinvoer()

icol = Sheets("turflijst").Range("k4").Value 'ik heb in K4 een formule gezet die kijkt in welke kolom de datum uit cel E2 staat op het andere tabblad.

For irow = 12 To 30 Step 2 'voor irow met een waarde van 12 tot een waarde van 30 in stappen van 2 (12,14,16 enz......)
c01 = c01 & "|" & Sheets("turflijst").Cells(irow, "k").Value 'string C01 = c01 en teken "|" en waarde uit cel K12 of K14 of... (afhankelijk van waarde van irow)
 Sheets("turflijst").Cells(irow, "k").Offset(0, -2).Value = "0" 'de cel 2 links van de cel met de waarde op 0 zetten
Next 'volgende waarde voor irow
Sheets("blad1").Cells(8, icol).Resize(UBound(Split(c01, "|"))) = Application.Transpose(Split(Mid(c01, 2), "|"))
'blad1 / rij 8 / kolom(waarde gevonden bij icol) bereik uitbreiden tot het aantal waardes dat in c01 staat(deze zijn gescheiden door "|") =
'c01 splitsen in stukjes op teken "|" .

End Sub

Niels
 
Jeroen,

Nou dat is dan blijkbaar uit het boekje "Nijntje studeert af in hogere wiskunde" en laat ik dat boekje nou net niet hebben gelezen. :D
Ik begrijp wat de commando's doen. Echter krijg ik het niet voor elkaar om deze van toepassing te laten zijn op de andere onderwerpen. Ik kopieer jouw opdracht en verander daar de mijns inziens van toepasbare zaken als de rijen e.d.. Op dat moment geeft de macro allerlei fouten op. w.o. bijv. For already in use. Dan denk ik Ja,.. nou en?? Kan jij mij op weg helpen? Ik kom er simpel gezegd niet uit.

groet en alvast mijn dank

Johan
 
Sorry voor de "Nijntje studeert af in hogere wiskunde" uitleg, ik vind het moeilijk om uit te leggen zonder te weten wat je wel en niet weet van VBA.

Ik neem het op als een compliment want wiskunde was niet mijn sterkste vak.;)

Zie word document voor een uitleg in "Jip&Janneke" taal misschien ken ik die beter.:p

Bekijk bijlage uitleg macro.doc

heb je bestand aangevuld zodat je hier kunt zien hoe het vervolg zou kunnen.
Bekijk bijlage Turflijst(2).rar


Plaats anders even je bestand of macro wat je er nu van gemaakt hebt, en we kijken er even naar.
De melding "For already in use" komt omdat je tussen for en next nog een for hebt staan met de zelfde naam.


PS als je op zondag test moet je de datum in E2 wel veranderen want zondagen komen niet in je lijst voor.
De macro kan korter, ik hoop dat je het dan nog volgt.

Code:
Sub Nweinvoer()

icol = Sheets("turflijst").Range("k4").Value

'=================Schroeven/hamers/verf/schroevendraaiers============================================

For irow = 12 To 54 Step 2
If irow = 32 Then C01 = C01 & "|" 'omdat er een lege rij tussen schroeven en hamers staat op blad1
If irow = 38 Then C01 = C01 & "|" 'omdat er een lege rij tussen hamers en verf staat op blad1
If irow = 42 Then C01 = C01 & "|" 'omdat er een lege rij tussen verf en schroevendraaiers staat op blad1
C01 = C01 & "|" & Sheets("turflijst").Cells(irow, "k").Value
 Sheets("turflijst").Cells(irow, "k").Offset(0, -2).Value = "0"
Next
Sheets("blad1").Cells(8, icol).Resize(UBound(Split(C01, "|"))) = Application.Transpose(Split(Mid(C01, 2), "|"))

'=================spijkers=============================================
C01 = ""
For irow = 12 To 16 Step 2
C01 = C01 & "|" & Sheets("turflijst").Cells(irow, "Y").Value
 Sheets("turflijst").Cells(irow, "Y").Offset(0, -2).Value = "0"
Next
Sheets("blad1").Cells(34, icol).Resize(UBound(Split(C01, "|"))) = Application.Transpose(Split(Mid(C01, 2), "|"))

End Sub

Niels
 
Laatst bewerkt:
Nijntje was wel aardig maar net iets te geleerd voor mij, die wel Frans, Duits, Engels, Nederlands en een beetje Spaans, maar totaal geen VBA taal spreekt.:o Nou dacht ik dat ik zowel met Jip als met Janneke goed kon opschieten. Zij hebben mij in ieder geval wel laten zien wat wat doet.
Nu wilde ik met hen verder om, indien er in de werkplek "vloer" staat, de waarde van het aantal klanten op blad 1 bij vloer te laten zetten en, indien er "Servicebalie" staat... Afin je begrijpt het al. De VBA linguïst vraagt mij om haakjes, geeft gele foutmeldingen en verwacht van alles en nog wat wat ik hem helaas niet kan leveren. Ik heb blijkbaar nog lang niet genoeg geleerd.:confused:

Kortom HELP!! mij. :d

Bekijk bijlage Turflijst(3).zip

groet
Johan
 
Jip en Janneke spreken echt geen latijn , dus zo moeilijk hoeft die code niet te zijn.
Ieder zijn ding , bij mij houdt het na een beetje engels helemaal op.

Code:
If UCase(Sheets("turflijst").Range("e4").Value) = "SERVICEBALIE" Then 'het maakt nu niet uit hoe het in de cel staat Ucase maakt er allemaal hoofdletters van.
Sheets("blad1").Range("G39").Value = Sheets("turflijst").Range("i5").Value
ElseIf UCase(Sheets("turflijst").Range("e4").Value) = "VLOER" Then
Sheets("blad1").Range("G38").Value = Sheets("turflijst").Range("i5").Value
End If
End Sub

Als je in cel E5 de formule =vandaag() zet dan hoef je niet elke dag de formule aan te passen.

Niels
 
Niels,

Vandaag() klopt maar het was gister zondag dus dan gaat het niet want in Blad 1 is de zondag niet opgenomen, van daar. Daarnaast: Mogen de medew. zelf ook wat invullen!?.:D

Dank voor je reactie.
Ik leer steeds meer. Maar de formule geeft een compileerfout: Else zonder if .
Daarnaast zet deze het nu elke keer weer in cel G38 of G39 en gaat hij niet verder, net als bij de andere dagen. Het is de bedoeling dat deze ook elke dag zijn waarde copieerd echter dan afhankelijk van waar de mewerker staat in Vloer of Servicebalie en dan weer op 0 zet voor de volgende dag.

Het begint bij mij een beetje op mijn eerste Spaans te lijken. Je besteld een biertje, je weet wat je zegt maar je begrijpt nog niet hoe je er op komt. :p

Begrijp je wat ik bedoel m.b.t VBA taal? Jij bent een kei in dit soort taal blijkbaar. Maar hoe leer ik die taal ook? Dan ga je proberen, experimenteren etc. Als je er dan niet meer uit komt dan ga je terug naar de meester of juf. Nou bij deze kom ik graag terug.(Ik ga even uit van de meester hahahaha.)

Groet,
Johan
 
Dag Johan,

Meester in VBA klinkt leuk, maar ben ook nog leerling.
Het leren van die taal heb ik gedaan door:
Een macro op te nemen en kijken wat excel er van maakt, dit zijn vaak codes met veel selects erin en die zijn meestal niet nodig,
deze ga je dan handmatig proberen aan te passen.
Veel op deze site te lezen, daarna vragen te gaan stellen omdat je de selects er niet uit krijgt of het bereik variabel en daarna vragen proberen te beantwoorden.

Ik weet niet wat je gedaan hebt maar als je de code kopieert en plakt krijg je de melding niet.
Macro aangepast aan juiste kolom en aangegeven hoe ie moet komen te staan.

Code:
Sub Nweinvoer()

'eerdere code staat hier boven
'=================spijkers=============================================

If UCase(Sheets("turflijst").Range("e4").Value) = "SERVICEBALIE" Then 'het maakt nu niet uit hoe het in de cel staat Ucase maakt er allemaal hoofdletters van.
Sheets("blad1").Cells(39, icol).Value = Sheets("turflijst").Range("i5").Value
ElseIf UCase(Sheets("turflijst").Range("e4").Value) = "VLOER" Then
Sheets("blad1").Cells(38, icol).Value = Sheets("turflijst").Range("i5").Value
End If

End Sub 'is de end sub van de vorige code

Niels
 
Laatst bewerkt:
Ik had de uitlegtekst verwijderd. Echter tegelijkertijd de zin dus verlengd door het verwijderen van de "enter". (ik hou van volzinnen, hahahaha) Dat was het dus waarom hij het niet deed.
Maar nu doet zich een ander probleem voor.
Een jaar heeft 52 weken. De andere 26 krijg ik niet meer achter de eerste want het blad is te klein. Hij loopt maar tot UV.
Nu wil ik de andere week 27 t/m 52 op blad1 onder de eerste zetten. Maar dan wel met de bedoeling dat e.e.a. wordt doorgeteld op dat gedeelte. Dus dat het onderste gedeelte dezelfde functie en uitvoering krijgt als het bovenste gedeelte tot 30-06-2012. Ergo vanaf 2-7-2012 op het onderste gedeelte. Weet jij een oplossing?

Jij ook een leerling?? Ga weeeeeg :D.

Johan
 
Jawel ook nog leerling, leer elke dag nieuwe dingen van helpers die een heeeel stuk verder zijn dan mij in excel.

Zie bijlage.
De waarde van x is afhankelijk van de rij waarin je de tweede deel van het jaar zet.
Dit geld ook voor het getal dat bij de x wordt opgetald bij service of vloer.

Bekijk bijlage Turflijst(4).rar

Als er nog vragen zijn , lees ik het wel.


Niels
 
Niels,

Ik moet aangeven of de vraag is opgelost. Nou dat is hij natuurlijk wel maar.....ook weer niet. Als ik jouw laatste oplossing kopieer in mijn definitieve project. (Dat gaat over iets anders dan spijkers en schroeven, maar dat had je al gezien natuurlijk in de eerste bijlage) dan doet iets het niet. Ik wil graag eerst proberen er zelf uit te komen tot ik mij weer tot jouw (of toch jullie :d) wend. Kom ik er niet uit, dan zal ik niet schromen om je hulp te vragen. Maar eerst zelf proberen leer ik ook veel van.
Van je fouten moet je leren zullen we maar zeggen.

groetjes,
Johan
 
He He, Even kunnen zitten en naar het foutje kijken.
Fout gevonden. Ik moest de vergelijkingsformule nog aanpassen aan de nieuwe situatie.
Probleem opgelost.Het werkt fantastisch. :D

Mijn oprechte dank voor alle hulp!!!:thumb:

Groet,

Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan