Help!

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

Hulp bij posten

Recente topics

Auteur Topic: Rijen toevoegen in excel automatiseren  (gelezen 16670 keer)

0 leden en 1 gast bekijken dit topic.

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Rijen toevoegen in excel automatiseren
« Gepost op: 28 augustus 2014, 12:16:31 »
Beste,

Het zal meer dan waarschijnlijk al wel eens een keertje gevraagd zijn, maar na een hele tijd zoeken, kwam ik nog nergens, bij deze dus de vraag en er zijn een paar bijkomstigheden waarvan ik niet weet of ze gaan kunnen.

In bijlage een voorbeeld van hoe de meeste excels eruit zien wanneer ik ze binnenkrijg.
Graag had ik indien mogelijk het volgende automatisch laten gebeuren.
 - toevoegen van 4 kolommen
 - onder elke rij die een hoeveelheid bevat, had ik graag 2 rijen toegevoegd
 - deze toegevoegde rijen zouden een opmaak moeten krijgen, lettergrootte 8 - rechts uitgelijnd en italic
 - bij deze toegevoegde rijen zou ook een formule moeten komen in de kolom onder de 'oorspronkelijke' hoeveelheid; bv =product(C5:F5)
 - wanneer het getal in kolom c negatief zou zijn, moet de omschrijving in kolom b rood gekleurd worden
 - als het ook nog mogelijk zou zijn om dan de 'oorspronkelijke' hoeveelheid te laten aanpassen naar een formule van de som van de 2 onderstaande rijen, dat zou het helemaal afmaken.

In ieder geval heel erg bedankt voor de tijd en moeite, ik hoop dat het duidelijk is en dat jullie er een mooie code voor kunnen schrijven, als ik zie welke code's hier al de revue voorbij kwamen, lijkt me dit klein bier te zijn.

Met vriendelijke groeten
Pieter-Jan

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rijen toevoegen in excel automatiseren
« Reactie #1 Gepost op: 28 augustus 2014, 14:05:19 »
Hallo PJH,

welkom op Oplossing.be.

de voorwaarde "onder elke rij die een hoeveelheid bevat, had ik graag 2 rijen toegevoegd" is in je voorbeeld-meetstaat niet volledig duidelijk.
Excel (de macro) moet duidelijke instructies krijgen waar hij moet op reageren.

Zo is:
"grondverzet - herbruik uitgegraven bodem op werf"  schijnbaar GEEN hoeveelheid waar
"grondverzet - herbruik uitgegraven bodem op werf / als bodem" WEL een hoeveelheid is....

Ik kan ook afgaan op de kolom I, waar de codes staan, maar dan moet de macro alle mogelijke codes kennen, en welke een hoeveelheid vertegenwoordigen.

Het starten van de macro zal best moeten worden uitgevoerd met een knop in de knoppenbalk, wat op zich geen probleem is.

Laat maar horen  ;)

:) SoftAid :)             




Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Re: Rijen toevoegen in excel automatiseren
« Reactie #2 Gepost op: 28 augustus 2014, 14:21:45 »
Hallo Theo,

Ik ben niet helemaal mee wat je bedoelt, de omschrijving van de posten die doet er toch niet toe of wel?, kan excel niet kijken naar de kolom (bij de tab 'start') C of daar een waarde ingevuld staat (0 is ook een waarde voor ons) (de eenheids- en hoeveelheidscode (kolommen D en E) durft de architect al eens leeg laten, dus het lijkt me moeilijker daar op gaan te zoeken), en van daaruit vertrekken?

De kolom waar de hoeveelheid in staat wisselt al eens af, dus als ik duidelijk zie waar excel in zoekt, dan kan ik dat waarschijnlijk wel makkelijk aanpassen nadat ik dat gekopieerd heb, niet?

Als ik het te simpel wil bekijken, moet je het ook zeggen he ;)

GRTZ
PJ

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rijen toevoegen in excel automatiseren
« Reactie #3 Gepost op: 28 augustus 2014, 14:33:55 »
Hallo PJH,

Als de weergave door de architect in kolom C consequent is, dan kunnen we daar van uitgaan.
"Maak 4 kolommen bij voor kolom C"
"Indien de waarde in C4 groter is dan "" (niets) maak dan 2 rijen bij onder rij 4 en zet de nodige formules"

De waarden in de oorspronkelijke meetstaat Start in kolom C heb je die niet nodig in blad "Oplossing"?
Het is waarschijnlijk je bedoeling om de afzonderlijke onderdelen van de meetstaat op te splitsen, zodat je materialen, werkuren enzovoort apart kan inbrengen, of heb ik het fout?

Zo ja, in je voorbeeldblad Oplossing gebruik je bvb de formule =Product(C5:F5), waardoor de waarden in C5 vermenigvuldigd worden met D5, vervolgens wordt dit resultaat vermenigvuldigd met E5, en het resultaat met F5. Is dit de bedoeling? Of moeten de waarden in die 4 kolommen opgeteld worden?


:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Re: Rijen toevoegen in excel automatiseren
« Reactie #4 Gepost op: 28 augustus 2014, 14:46:34 »
Hallo Theo,

Ik denk inderdaad dat het zo kan, de hoeveelheid dient inderdaad steeds ingevuld te worden.

Neen, de oorspronkelijke waarde in de kolom C heb ik niet meer nodig, deze wordt vervangen door de eigen opgemeten waarde in kolom G.

Deze excel is er enkel voor de hoeveelheden opnieuw uit te tellen.Ik begin normaal vanuit mijn eigen excel die al klaar staat op deze manier, maar dan komen de codes en omschrijvingen niet overeen met die van de architect, voor mij is dit nog wel duidelijk, maar niet voor de mensen die er na mij nog moeten mee werken, dus wil ik vanaf nu de meetstaat van de architect snel ombouwen zodat ik mijn opmeting daar in kan plaatsen.
Calculeren doe ik nog steeds in een echt calculatiepakket.

Het is inderdaad de bedoeling dat deze vermenigvuldigd worden, kolom C is het aantal, kolom D is lengte/opp; kolom E is breedte en kolom F is de hoogte/volume. De kolommen G tel ik dan op op post niveau (de rij waar de totaalhoeveelheid staat)

De opdracht moet uitgevoerd worden tot op het einde van de meetstaat, soms 2000 lijnen of meer.

Ik hoop dat het zo een beetje duidelijk is?

GRTZ PJ

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rijen toevoegen in excel automatiseren
« Reactie #5 Gepost op: 28 augustus 2014, 14:58:59 »
Hallo PJ,

dat is duidelijk(-er)  ;)

Ik zal een voorbeeldbestand maken, en dan kan je daar nog veranderingen in aanbrengen.

Groeten,

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rijen toevoegen in excel automatiseren
« Reactie #6 Gepost op: 28 augustus 2014, 15:59:01 »
Hallo Pieter-Jan,

Ik was er ondertussen ook al eens naar aan het kijken, maar merk dat SoftAid inmiddels ook in gang is geschoten...

@ Softaid : 'k wil zeker niet onder je duiven schieten  0:-) maar vermits ik toch al iets in elkaar had geknutseld bezorg ik het toch maar. 't Kan misschien als inspiratiebron dienen om het allemaal nog wat mooier te maken.

Pieter-Jan, we horen het wel als je het toch nog enigszins anders in gedachten had ?

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rijen toevoegen in excel automatiseren
« Reactie #7 Gepost op: 28 augustus 2014, 18:47:05 »
Hallo pitufo,

je weet dat je heel welkom bent om te helpen, en je macro werkt prima;

Hij is zelfs nog wat kleiner dan die van mij, maar deze werkt ook, gelijkaardig.

Ik ben het (zoals gewoonlijk  :-[) wat te ver gaan zoeken, maar vinden doe ik het wel  ;D ;D

in bijlage mijn bijdrage...  ;)

@PJH,

laat maar horen als je nog aanpassingen wenst.

Groeten

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Re: Rijen toevoegen in excel automatiseren
« Reactie #8 Gepost op: 29 augustus 2014, 08:30:06 »
Goedemorgen Theo en Pitufo,

Heel erg bedankt voor jullie bijdrage en jullie tijd hieraan.

@ Theo, hele erg duidelijk met je commentaar die je erachter zet, dankjewel, maar bij mij loopt hij vast op volgende :

Columns("C:9").Select                                                    'instellen van eigenschappen cellen

dan kan ik alleen maar beëindigen of de fout opsporen, maar geen idee wat ik eraan kan doen :p; ik denk dat je alleen kolom C wil selecteren, maar wat er dan in de plaats van de 9 moet komen, niets lijkt me te simpel :D.

@ Pitufo

Ik snap helemaal niets van de code die je gebruikt hebt :), maar hij is idd kort en werkt, heb al verscheidene malen geprobeerd en hij doet het in die excel. Dus helemaal geweldig.

Ik veronderstel dat het door dit komt: "Sheets("Start").Select" dat die het niet doet in andere excels? Mag ik die regel verwijderen, of moet ik telkens de juiste tab naam hier invullen alvorens de macro te laten werken?

Wat doet bv ook dit "rij = 1"?
En zo dit 'cells(rij, 1) <> "" '; wat betekent dit in mensentaal? :) je doet iets met de eerste kolom maar wat? :) En waarom moet daar dan het woordje rij voor? Of is het woord rij = 1 en staat daar dan eigenlijk 'cells(1, 1)? of wil rij = 1  gewoon zeggen dat hij vanboven moet beginnen?

Echt goed gedaan, had ik maar beter opgelet tijdens de lessen VB :p

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Re: Rijen toevoegen in excel automatiseren
« Reactie #9 Gepost op: 29 augustus 2014, 08:47:06 »
Na er wat mee te spelen Pitufo, is er heel wat duidelijk geworden, echt mooie code 'impressed'. Zo moeilijk voor mij en toch zo simpel gedaan door jou.

Enkel de tabnaam, daar kom ik niet aan uit, als de "start" wijzig daar de tabnaam die ik wil gebruiken dan doet hij het niet; wijzig ik de naam van de tab in excel waar ik de macro wil gebruiken in 'start' dan doet hij het wel.

En ik snap wel hoe het werkt, maar de rij =1 definitie snap ik nog steeds niet, ik snap wel dat je hem nodig hebt, maar wat dit juist doet en de cell(rij, 1), dat zijn codes waarvan ik dus niet weet waarvoor ze zijn :)

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.128
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Rijen toevoegen in excel automatiseren
« Reactie #10 Gepost op: 29 augustus 2014, 10:22:11 »
Hallo PJH,

er is duidelijk een foutje in die regel geslopen, na het testen...

Columns("C:9").Select moet zijn: Columns("C:G").Select

Ik heb de verwijzing naar tabblad "Start" weggehaald, de macro werkt zo ook.

Maar als we een stap verder gaan, dan moeten we er voor zorgen dat de Macro niet meer in dit werkboek staat, maar moeten we hem opnemen in jou Personal.xlsb. Dan kan hij gebruikt worden in elk Excel bestand.

Als je in het bestand in bijlage de Macro-editor opent, dan zie je jou macro in Module 1 staan.
Links in de editor zou je Projectverkenner moeten zien. Daarin vindt je VBAProject (Personal.xlsb), met een module 1.

Kopieer en plak nu de volledige macro Sub Starten() die in VBAProject (voorbeeld voor macro.xlsm) staat naar Module1 van VBAProject (Personal.xlsb). (zorg dat hij door een lijn gescheiden staat van andere macro's, mochten die aanwezig zijn)

Sla het werkboek op.

De macro zit nu in het Personal.xlsb, het lege werkblad dat automatisch opent als je Excel opent. En eigenlijk nog veel dieper. Zelfs als er geen werkblad geopent is, dan zit de macro toch in je Excel-systeem.

Open een ander werkboek (een meetstaat)  en selecteer het juiste tabblad (met dezelfde indeling als je vorige tabblad "Start").

Je kan nu de macro starten in dit werkboek (meetstaat met dezelfde indeling als het vorige), via de tab Ontwikkelaars, Macro's, en de macro "PERSONAL.XLSB!Starten"te selecteren en op Uitvoeren te klikken.
De macro wordt dan uitgevoerd.

Lukt dit?

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rijen toevoegen in excel automatiseren
« Reactie #11 Gepost op: 29 augustus 2014, 13:06:07 »
Hoi Pieter-Jan,

"Sheets("Start").Select" dat die het niet doet in andere excels? Mag ik die regel verwijderen, of moet ik telkens de juiste tab naam hier invullen alvorens de macro te laten werken?

Dit zorgt ervoor dat niet "per ongeluk" de code op een ander werkblad aan het werk gaat. Als je die regel weghaalt zal ze worden uitgevoerd op het werkblad dat op dat ogenblik actief is. Wil je het in een andere excel uitvoeren, dan kan je er uiteindelijk alle kanten mee uit : of je let er telkens op ze op het juiste werkblad uit te voeren, of je past deze regel in de macro aan.

Wat doet bv ook dit "rij = 1"?
En zo dit 'cells(rij, 1) <> "" '; wat betekent dit in mensentaal? :) je doet iets met de eerste kolom maar wat? :) En waarom moet daar dan het woordje rij voor? Of is het woord rij = 1 en staat daar dan eigenlijk 'cells(1, 1)? of wil rij = 1  gewoon zeggen dat hij vanboven moet beginnen?

"rij" is hier gekozen als benaming voor een variabele (ik had die evengoed "olifant" of "xpc1fg" kunnen noemen, maar een zinvolle benaming draagt meestal mijn voorkeur weg !). Als je een beetje verder in de code kijkt zal je zien dat de waarde van "rij" telkens oploopt, en beginnen doen we inderdaad in de eerste rij. Vermits we ondertussen rijen toevoegen kunnen we niet op voorhand bepalen hoe lang we moeten doorgaan, en dus doen we dat telkens met "cells(rij,1)<>"". In de mensentaal waar je om vraagt zou dit zijn : "doe alles wat hieronder aan code staat zolang de waarde in de eerste kolom ("1") van de rij waar we momenteel aan bezig zijn (huidige waarde van "rij") verschillend is ("<>") van LEEG ("")
Dus ja, eigenlijk staat daar (maar ALLEEN de eerste keer) "cells(1,1)". Daarna staat daar achtereenvolgens "cells(2,1)", "cells(3,1)", enz. (behalve als hij rijen heeft moeten toevoegen, dan moeten we ineens 3 rijen verder.

Echt goed gedaan, had ik maar beter opgelet tijdens de lessen VB

't Is nogal iets, hé ? Tussen haakjes : zelf heb ik nooit lessen gevolgd... niets zo plezant als het zelf allemaal uitdokteren (en links en rechts de nodige tips opscharrelen natuurlijk)

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline PJH

  • Lid
  • *
  • Berichten: 10
  • Geslacht: Man
  • Oplossing.be
Re: Rijen toevoegen in excel automatiseren
« Reactie #12 Gepost op: 17 september 2014, 22:23:54 »
@Softaid, bedankt voor de uitleg voor het opslaan van de code, maar eigenlijk snap ik daar niet zoveel van, vind de personal.xlbs niet terug in mijn ontwikkelaar lijst of ik zie er steeds over :s  :-[
Ik gebruik het zo: ik open de file van jou of pitufo, en laat via de macro knop de macro's in alle geopende excel bestanden zien en laat zo op die manier de macro werken, is dit een foute manier dan?

Want Pitufo, ik had tot nu toe steeds jou code gebruikt, deze werkte goed tot vandaag, om de een of andere reden deed hij eerst nog maar 500 lijnen, dan nog 100 ofzo en vanaf dan enkel nog kolommen, terwijl volgens mij de layout steeds hetzelfde was zoals de start in het voorbeeld. Uiteindelijk met de code van Softaid lukte het wel,  zonder dat ik iets aan layout heb gewijzigd. Wat ik vreemd vond was dat hij gewoon stopte, terwijl hij nog niet in de helft was. Bij de vorige keren deed hij het wel perfect, ik heb aan de code niets gewijzigd, en snap dus ook niet waar het de ene keer wel goed werkt en de andere keer niet. jij enig idee?

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Rijen toevoegen in excel automatiseren
« Reactie #13 Gepost op: 17 september 2014, 23:02:30 »
Hoi,

Pitufo, ik had tot nu toe steeds jou code gebruikt, deze werkte goed tot vandaag, om de een of andere reden deed hij eerst nog maar 500 lijnen, dan nog 100 ofzo en vanaf dan enkel nog kolommen, terwijl volgens mij de layout steeds hetzelfde was zoals de start in het voorbeeld

De oorzaak moet allicht toch in de layout gezocht worden : als er een lege rij wordt aangetroffen en zelfs als enkel een cel in kolom A leeg is zal er inderdaad gestopt worden. Daar is in de code geen rekening mee gehouden omdat dat scenario in je voorbeeldbestandje niet waarschijnlijk leek.

Bekijk je dat misschien eens ? Als het zo is en je behoudt liever lege rijen, dan moeten we de code lichtjes aanpassen.
En zou het toch aan iets anders liggen, stuur dan misschien eens een bestand mee waarin het fout gaat.

Mvg,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

 


www.combell.com