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

Automatisch gegenereerd werkblad bewerken

  • Onderwerp starter Onderwerp starter Wocky
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Wocky

Gebruiker
Lid geworden
22 feb 2014
Berichten
192
Beste,

Ik werk met een productieprogramma dat automatisch een materiaallijst genereerd in excel.
Nu zou ik graag op die bepaalde lijst (op werkblad 1) een aantal bewerkingen willen uitvoeren.
- Sorteren volgens een bepaalde kolom.
- Een bepaalde kolom volledig vervangen door het cijfer 1.

Het is zo dat ik voor het programma een slabloonbestand kan toekennen.
Dus een bestand waarin hoofd en voettekst bijvoorbeeld al ingesteld staan.

Ik zou dan in dit bestand bijvoorbeeld, blad 1 als ruw datablad kunnen houden. Dus het programma schrijft alle info weg op blad 1.
Maar ik zou dus blad 2 bvb. kunnen gebruiken om een gesorteerde bestellijst te hebben. Dus ik zou in het sjabloon op blad 2 een aantal instellingen kunnen toepassen, zodat hij de info van blad 1 kopieert en verwerkt.

Nu, het voornaamste probleem is dat de gegenereerde info altijd verschild van hoeveelheid, soms zijn er 30 rijen, soms zijn er 243 rijen.
Dus ik vraag me af hoe ik deze info van blad 1 naar blad 2 kan kopiëren en verwerken, zonder een "bepaald" bereik (van rijen) toe te kennen in mijn formules.

Hopelijk is mijn vraag duidelijk.
Alvast bedankt voor de moeite!

Wocky.
 
Er is vást wel een helper die een VBA procedure voor je wil schrijven om dit te regelen. Maar ja... op basis van alléén een beschrijving valt niets te bouwen. Zéker niet als die beschrijving óók nog 'ns vaagheden bevat...
- Sorteren volgens een bepaalde kolom
- Een bepaalde kolom volledig vervangen door het cijfer 1.
Dus? Bijlage?
 
Laatst bewerkt:
Beste,

In bijlage een voorbeeld.
De reden waarom ik er geen voorbeeld had bij gedaan is omdat ik nog niet concreet weet welke bewerkingen ik allemaal wil toepassen, en op welke gegevens.

Maar hieronder en in bijlage dus een concreet voorbeeld.

- Blad1 is dus een blad waarop de gegevens automatisch zijn weggeschreven door het programma.
--- De hoeveelheid van de gegevens zal elke keer opnieuw veranderen. De ene keer zijn het 50 regels.. de andere keer kunnen het er 150 zijn.

- Blad2 is (een voorbeeld van) een blad dat de gegevens van blad 1 gekopieerd en verwerkt heeft.
--- Eerst wordt er gesorteerd op Kolom MEUBELNR.

--- Daarna wordt er voor kolom MEUBELNR:
------ 1 kolom extra ingevoerd.
------ Deze kolom wordt voor elke ingevulde rij gevuld met een "a".

--- Daarna wordt wordt voor kolom R:
------ Voor elke "Ja", een 1 ingevuld.
------ Voor elke "Nee", niets ingevuld (dus gegevens gewist)

--- Daarna wordt achter kolom BREEDTE:
------ 1 kolom extra ingevuld.
------ Deze kolom krijgt een titel "VOLG".
------ Deze kolom wordt voor elke ingevulde rij gevuld met een "2".

Als jullie mij hiermee kunnen helpen?
Als er zaken niet duidelijk zijn mag je natuurlijk altijd een berichtje sturen.

Alvast bedankt!
Wocky.
 

Bijlagen

Beste Leo,

Alvast bedankt voor je inspanning!

Ik merk echter wel dat als ik de macro uitvoer, excel een nieuw werkblad aanmaakt.
Op zich is dat niet zo erg, zolang het een kopie is van blad1 en kop- en voettekst overgenomen worden.
Maar het zou in de toekomst vermoedelijk toch beter zijn moest excel werkelijk de gegevens kopiëren naar een nieuw werkblad, omdat ik later misschien meerdere macro's wil laten uitvoeren, elk voor 1 werkblad. Dit om verschillende lijsten te genereren uit het gegevensblad 1, en dan ga ik ook verschillende kopteksten moeten instellen.

Ik merk ook dat bij mij in Kolom R, de Nee's blijven staan.
Kan dit verholpen worden?
Zie bijlage.

En dan nog een laatste:
Heb je deze code zelf geschreven of heb je de code gegenereerd via "macro opnemen"?
Is het mogelijk om bij elke actie wat commentaar te schrijven over wat er juist gebeurd in de code?
Dit omdat ik graag zelf wat aan de slag zou willen gaan om een en ander te laten gebeuren en aan te passen, maar ik heb zelf nooit echt een opleiding VB gehad dus ik ken er niet te veel van (maar als ik mijn logisch inzicht bovenhaal denk ik wel dat ik ver geraak).
Zo kan ik mijzelf ook wat bijleren.

Stuur gerust een bericht als je vragen hebt.


Alvast bedankt!
Wocky.
 

Bijlagen

zie het, kolom R is in feite kolom G :)

maar wordt iets voor later op de dag, arbeid roept



mvg
Leo
 
Ik merk echter wel dat als ik de macro uitvoer, excel een nieuw werkblad aanmaakt.
Maar het zou in de toekomst vermoedelijk toch beter zijn moest excel werkelijk de gegevens kopiëren naar een nieuw werkblad

??????

@Leotaxi
Op grotere bereiken levert deze iets meer uitvoeringssnelheid op.
Code:
Sub Macro1()
    Application.ScreenUpdating = False
    Sheets("Blad1").Copy After:=Worksheets(Worksheets.Count)
    With Worksheets(Worksheets.Count)
        .Name = "Aangepast"
        .Columns("A:A").Insert xlToRight, xlFormatFromLeftOrAbove
        .Columns("G:G").Insert xlToRight, xlFormatFromLeftOrAbove
        .Range("A1").Value = "*": .Range("G1").Value = "VOLG"
        sn = .Cells(1).CurrentRegion.Value
        On Error Resume Next
        For i = 2 To UBound(sn)
            sn(i, 1) = "a"
            If sn(i, 2) <> vbNullString Then sn(i, 2) = Left(sn(i, 2), 1) & Format(Right(sn(i, 2), Len(sn(i, 2)) - 1), "000")
            sn(i, 7) = 2
            sn(i, 8) = IIf(sn(i, 8) = "Ja", 1, 2)
        Next
        .Cells(1).Resize(UBound(sn), UBound(sn, 2)) = sn
        .Range("A2:R" & .Cells(.Rows.Count, 1).End(xlUp).Row).Sort .Cells(2, 2)
    End With
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
@ Warme bakkertje

Het zou beter zijn dat de gegevens van blad1 gekopieerd worden in een leeg "bestaand" werkblad denk ik, en niet een kopie maken van blad1 zelf.
Dus het is beter enkel de gegevens te kopiëren denk ik dan, en niet het gehele werkblad, tenzij jullie nog een betere manier weten.

Alvast bedankt!
Wocky.
 
@ Rudi

uitvoeringssnelheid is geen beetje, maar aanzienlijk beter.
verschil van bewerkingen op blad of in geheugen, mooi.


mvg
Leo
 
Daarna wordt achter kolom BREEDTE:

Daar mag TS maar over oordelen want er is een kolom BREEDTE, BREEDTE_1 en BREEDTE_2 dus we horen het wel.
 
Achter kolom BREEDTE_2

Alvast bedankt voor jullie reacties!

Kunnen jullie eventueel nog wat uitleg in bij de code zetten?

mvg,
Wocky.
 
Beste,

Een tijdje geleden heb ik bovenstaande vraag gesteld.
Dit met de bedoeling de code wat te begrijpen en eventueel zelf aan de slag te gaan om verder uit te breiden.
Momenteel ben ik een boek aan het lezen om te leren programmeren (vba excel voor dummies), maar ik ben nog niet zo ver om het volgende te kunnen doen.
Kan er iemand er voor zorgen dat het volgende extra uitgevoerd wordt bij het runnen van de macro?

In het voorbeeld in bijlage heb ik op blad 1 een kolom met types toegevoegd.
Ik zou graag de macro willen uitvoeren zoals in voorgaande berichten beschreven, maar 1st nog een aantal andere zaken willen laten uitvoeren.
Ik zou graag 1st willen sorteren op de vermeldde types volgens onderstaande beschrijving, daarna te sorteren op meubelnr enz...
Achteraf zou ik de lijst willen scheiden/opdelen op basis van de gesorteerde types door rijen in te voegen die een titel bevatten.

Ik zou graag op volgende manier willen sorteren:

1st op de types:
- 1st op type C
- 2de op type B
- 3de op type D & front (dus kolom "omschrijving" bevat het woord "front" en respectievelijk kolom "types" bevat "D")
- 4de op type D
- 5de op type A
Daarna op meubelnr enz...

De reden waarom de types niet alfabetisch gesorteerd dienen te worden is omdat in de latere toepassing de types geen letters zullen zijn, maar volledige woorden.

Hopelijk is alles duidelijk en kan er iemand mij op weg helpen.

Alvast bedankt!
Wocky.
 

Bijlagen

Dag Leo,

Dat ziet er al goed uit!
Ik kan de code ook al beter lezen, maar zelf samenstellen zal nog niet lukken.
(Ik ga er van uit dat je ook wat hulp gebruikt van de macro-recorder?)

Toch nog even een bijkomstigheid.
Ik bedoelde eigenlijk bij de sortering dat:
- Elke cel die een C "bevat" als eerste wordt gesorteerd. Dus ook de cellen "CAD" en "ADCB" enz...
- ...
- "Bevat" D & "Bevat" Front.
- zelfde voor al de rest.

Het zou ook fijn zijn als deze groepen achteraf opgesplitst worden door lege rijen toe te voegen en een titel bevatten (en vet+onderlijnd).
In bijlage een voorbeeld met 1 lege rij + 1 titel-rij.
Zou je dit kunnen proberen?

Alvast bedankt!
Wocky.
 

Bijlagen

Bijkomende vraag.

Begrijp ik het goed dat "cl" een parameter is die in principe fungeert als een "variant" (omdat die niet gedefinieerd is)?

Bedankt.
Wocky.
 
is waarschijnlijk mogelijk, maar om volgende reden ga ik er even niet op zoeken

omdat in de latere toepassing de types geen letters zullen zijn, maar volledige woorden.


mvg
Leo
 
Hmkey,

Het is de bedoeling later gewoon A te vervangen door bvb "Leeuw" en B door "Tijger" enz...
Ik ga er vanuit dat ik die zaken gewoon kan vervangen in de macro.

Mvg,
Wocky.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan