Ga naar inhoud

alpha

Lid
  • Items

    1.124
  • Registratiedatum

  • Laatst bezocht

Alles dat geplaatst werd door alpha

  1. @viper32, Wat je beoogde oplossing in map2.xlsx betreft ben je niet consequent. Van Nieuw-Buinen en Nieuwegein toon je alle gegevens en je begint daarmee in kolom B Van Nieuwdorp, Nieuwe Wetering, en Nieuwe Pekela toon je alleen het adres en daarmee begin je in kolom A. Dat is niet logisch om tot een consistente oplossing te komen, je moet voor alle plaatsen dezelfde gegevens presenteren en in dezelfde kolommen. Een oplossing met een macro is mogelijk, die zou je op deze manier kunnen maken: Wis in alle bladen waarvan de naam een plaatsnaam is, de inhoud, zodat met een schone lei kan worden begonnen. Doorloop in blad1 kolom L (bv met for-next, do-while, do until, while-wend), ... en kijk bij elke cel of die plaatsnaam al voorkomt in de namen van de tabbladen van je bestand (opnieuw met een lus). Indien ja, dan hoeft voor die plaatsnaam geen blad te worden aangemaakt, indien nee dan wel. Dat nieuwe blad geef je de naam van de overeenkomstige cel in kolom L van blad1. Kopieer de rij van blad1 naar het blad dat zojuist werd aangemaakt (of dat reeds bestond). Zodra er meer dan 1 rij moet worden gekopieerd de rij in het blad waarnaar gekopieerd wordt, telkens 1 ophogen. Verder naar de volgende rij in kolom L en de procedure van hierboven herhalen.
  2. Andere oplossing met 1 naam en 1 bedrag voor het loon behorend bij die naam, ervan uitgaand dat het bereik I2:J400 is. Voor meer namen en bijbehorende bedragen, is de macro eenvoudig aan te passen. Sub macro1() Dim x As Integer, loon As Double loon = 2000 With Sheets("Blad1") .Range("J2:J400").ClearContents For x = 1 To 400 If LCase(.Range("I" & x).Value) = "jan" Then .Range("J" & x).Value = loon End If Next x End With End Sub
  3. Zie de bijlage en selecteer een cel in het bereik H4:AE4. PC-Helpforum Exceljan.xlsm
  4. Wat is je probleem: het eindtotaal van een rij of het kopiëren van dat totaal naar een andere cel? Om een eindtotaal per rij te maken, moet bekend zijn wat er in de cellen staat die je op wil tellen. Staat er in die cellen bv. telkens een 1 als iemand aanwezig is, of staat er bv. telkens een kruisje: x ? Als er telkens een 1 staat kun je voor de optelling gebruiken: =SOM(A2:K2;1) Als er telkens een x staat: =AANTAL.ALS(A2:K2;"x") Als dit totaal bv. in N2 van Blad1 staat en je wil dat overbrengen naar A2 van Blad 2, dan typ je in A2 van Blad2: =Blad1!N2
  5. Jij beschouwt de maandag als de eerste dag van een week, zie ik in je bestand. In dat geval: Als het weeknummer staat in A1, dan kun je voor de maandag van een willekeurige week van 2015 gebruiken: =42002+(A1-1)*7 Na invoer van bovenstaande formule stel je de cel in als "Aangepast" -> dd Voor week 9 geeft dat dan bv. als resultaat: 23 (nl. 23-02-2015). Voor de volgende dagen van de week moet je bij die celwaarde telkens 1 optellen (maarde celeigenschappen wel juist instleen natuurlijk), De eerste drie dagen van week 1 en de laatste 3 van week 53 behoren niet tot het jaar 2015, dus daar moet je voor corrigeren.
  6. Als je met Excel 2003 of eerder werkt, wijzig dan hieronder xlsm in xls Als beide bestanden zich in dezelfde map bevinden en de bladen waarin de gegevens staan bij beide bestanden blad1 is, kun je deze code gebruiken: Sub macro1() Workbooks("Bestand1.xlsm").Sheets("Blad1").Range("B9:H" & Range("B9").End(xlDown).Row).Copy Destination:= _ ThisWorkbook.Sheets("Blad1").Range("B9:H" & Range("B" & Rows.Count).End(xlUp).Row + 1) End Sub Je vraagt lijkt veel op die hier is gesteld: http://www.pc-helpforum.be/topic/56260-vba-code-nodig-voor-excel-voor-het-wegschrijven-van-datatabbladen/ Is ze misschien van dezelfde vragensteller afkomstig?
  7. Enkele opmerkingen vooraf: - Als je voor je macro's de knoppen wil gebruiken die in blad1 staan (dat zijn knoppen van de set formulierbesturingselementen), dan moeten die macro's allemaal in een module worden geplaatst!! - pdf is een extensie (voor een pdf-bestand), die moet je niet als macronaam gebruiken, dat kan tot problemen leiden. - van cel i3 kun je de opmaak in het blad aanpassen, zodat daar de datum meteen in de juiste opmaak wordt weergegeven. In de macro kun je dan de regel met de datum wijzigen in: datum = .Range("i3").value . - Waarom je in kolom G formules plaatst m.b.v. een macro is me niet duidelijk. Je kunt die berekening ook door de macro laten uitvoeren waardoor het resultaat meteen in de cellen wordt geplaatst en de formules achterwege kunnen blijven. - Je sorteermacro pas je nu best ook aan aan het bereik dat het pdf-bestand gaat krijgen. - Het feit dat je in je pdf-bestand op elk blad kolomkoppen wil herhalen, zorgde voor een bijkomend probleem, maar dat was op te lossen. Onderstaande macro doet wat je wil. Sub Maakpdf() Dim lLaatsteRegel As Long, datum As String, pad1 as string Dim Bestandsnaam as string, myrange As Range With Sheets("Blad1") lLaatsteRegel = .Range("A" & .Rows.Count).End(xlUp).Row Set myrange = .Range("A1:I" & lLaatsteRegel) datum = Format(.Range("I3").Value, "dd-mm-yy") .PageSetup.PrintArea = myrange pad1 = "M:\1 Offertes 2015\" & .Range("I4").Value & "\8 Budget\" Bestandsnaam = "Glasstaat " & "d.d. " & datum myrange.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pad1 & Bestandsnaam, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End With End Sub
  8. Tot en met rij 222 zijn dat geen 2 maar 3 bladen, of je ze nu afdrukt als Excel- of pdf-bestand. Die als pdf-bestand opslaan is geen enkel probleem. Maar wat wil je met blad1 van je Excelbestand, moeten de rijen 223 t/m 2504 blijven staan of moeten die verwijderd worden?
  9. Rijen waarvan het rijnummer kleiner is dan 21 mogen niet worden verwijderd, ook al zijn ze leeg, begrijp ik uit jouw verhaal. Ná rij 21 worden een aantal rijen met glaswaarden ingevuld en daaronder staan kennelijk nog een aantal rijen met gegevens die moeten worden verwijderd. Vraag: hoe ziet zo'n rij met glaswaarden er uit? Of, m.a.w.: welk gegeven/welke kolom is bepalend voor wat de laatste rij met glaswaarden is?
  10. De mappen die vóór uitvoering van de macro aanwezig moeten zijn, beschreef ik in bericht #2 niet helemal correct. Uit jouw eerste bericht blijkt dat moet bestaan: - in M:\ de map "Offertes 2015" - in "Offertes 2015" de map "120" (als 120 het getal is dat in H4 staat). - in de map "120" de map "8 Budget"
  11. Bij het opslaan als pdf is er een probleem als bij weergave van de tijd een dubbele punt wordt gebruikt tussen de uren en minuten. Maar als je in plaats daarvan een punt gebruikt is de tijd in de filename ook goed leesbaar. Probeer daarom dit als je in H3 nog steeds =nu() hebt staan: Sub macro1() Dim lLaatsteRegel As Long, Bestandsnaam As String, mydate As String, mytime As String lLaatsteRegel = Range("A" & Rows.Count).End(xlUp).Row ActiveSheet.PageSetup.PrintArea = Range("A1:I" & lLaatsteRegel) mydate = Format(Range("H3").Value, "dd-mm-yy") mytime = Format(Range("H3").Value, "hh.mm") Bestandsnaam = "Glasstaat " & mydate & " " & mytime pad1 = "M:\1 Offertes 2015\" & Range("H4").Value & "\8 Budget\" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:=pad1 & Bestandsnaam, _ Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub In plaats van de datum en tijd uit H3 te nemen, kun je ook de datum en tijd van de computer nemen (Date, resp. Time), maar behalve die twee woorden wijzigt dat niets aan het programmeren. Ervaar je nog problemen bij de pdf-opslag, dan kun je in H3 de tijd best invoeren als (bv.) 27-01-15, dan kun je in de code voor de bestandsnaam gewoon gebruiken: Bestandsnaam = "Glasstaat " & Range("H3").value . De regels met mydate= en mytime= kunnen dan vervallen.
  12. In =NU() zit naast de datum ook de tijd en die veroorzaakt bij jou problemen. Als wat de weergave betreft de datum voldoende is, kun je =NU() wel laten staan, maar dan kun je best die cel opmaken als Datum, type: 14-03-01. Dan loopt er met de opslag niks mis. Bedenk wel dat met =NU() de datum (en evt. ook de tijd) in H3 elke dag wordt aangepast. Als dat ook de bedoeling is, is dat ok natuurlijk.
  13. Onderstaande macro doet wat je wenst, maar uiteraard wel met de veronderstellingen (voordat je de macro uitvoert): - dat op schijf M de map "1 Offertes 2015" aanwezig is; - dat in de map "1 Offertes 2015" een map aanwezig is met de naam "Glasstaat 120" (als 120 het offertenummer is dat in H4 staat); - en dat in de map "Glasstaat 120" een map aanwezig is met de naam "8 Budget". Vreemde namen gebruik je overigens: "lLaatsteRegel", "1 Offertes 2015", "8 Budget". Sub PDF() Dim lLaatsteRegel As Long lLaatsteRegel = Range("A" & Rows.Count).End(xlUp).Row ActiveSheet.PageSetup.PrintArea = Range("A1:I" & lLaatsteRegel) pad1 = "M:\1 Offertes 2015\" & Range("H4").Value & "\8 Budget\" BestandsNaam = "Glasstaat " & Range("H3").Value ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pad1 & BestandsNaam, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True End Sub
  14. Je zult sowieso, als je bestanden ontvangt, die in een map moeten opslaan. Wat maakt het dan uit of dat map x of map y is ? Je wil, als je een bestand ontvangt, daarin op een knop klikken om de bladen (indien nodig) te kopiëren naar je verzamelbestand. Dat zou betekenen dat je in elk bestand die macro en een knop zou moeten plaatsen om de actie uit te voeren (tenzij de macro wordt opgenomen in de persoonlijke werkmap, maar dat is een ander verhaal). Dat is niet efficiënt en onhandig. Ik stel het volgende voor: Je maakt een map (bv. een submap van Documents) waarin je uitsluitend de Excelbestanden plaatst waarvan bladen naar je verzamelbestand gekopieerd moeten worden. De macro (waaraan ik nog aan het werken ben, zoiets maak je niet in enkele uren) plaats je in je verzamelbestand. Dat bestand moet wel een bestand zijn waarin het uitvoeren van macro's mogelijk is.. Als "Klantoverzicht.xlsx" nu je verzamelbestand is, dan moet je in Excel instellen dat macro's ombeperkt mogen worden uitgevoerd en dat bestand opslaan als Excel-werkmap met macro's (*.xlsm), dat wordt dan dus: "Klantoverzicht.xlsm". Niet zelf die extensie wijzigen, maar Excel dat laten doen bij het opslaan. De Excelbestanden die je toegestuurd krijgt mogen .xlsx-bestanden blijven. De procedure zou dan als volgt verlopen: Het ontvangen bestand (of de ontvangen bestanden, het mogen er meerdere zijn), plaats je in de map waarover ik hierboven sprak. Verder moet je daar niets mee doen. Daarna open je je verzamelbestand "Klantoverzicht.xlsm" en je voert de macro uit (met een sneltoets of met een knop). De macro gaat dan van alle bladen in alle Excelbestanden (in die map) na of in "Klantenoverzicht.xlsm" bladnamen met diezelfde naam ook voorkomen. Is dat het geval, dan wordt die bladen in "Klantoverzicht.xlsm" verwijderd en komen de nieuwe met dezelfde naam ervoor in de plaats. Bladen die in "Klantenoverzicht.xlsm" nog niet voorkomen maar wel in 1 van de Excelbestanden in die map, worden in "Klantenoverzicht.xlsm" ook toegevoegd. Wat zou je daarvan vinden ? Als je dit een geschikte oplossing vindt, laat dan weten wat de naam wordt van de map waarin je de Excelbestanden wil plaatsen.
  15. Daar is wel een macro voor te schrijven. Je kunt best de Excelbestanden waarvan je de bladen wil kopiëren, allemaal in 1 map plaatsen. En natuurlijk is het ook aangewezen dat alle bladen van alle bestanden een verschillende naam hebben. - Met welk besturingssyteem werk je (bv. Windows xp, Windows 7, Windows 8, Windows 8.1, Mac) ? - Met welke versie van Excel werk je (Excel 2003 of eerder, Excel 2007, 2010, 2013) ? - Wat is de directory en de naam van de map waarin de Excelbestanden staan (bv. D:\MijnExcelfiles\ ) ?
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.