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

Kopiëren en plakken met allerlei randvoorwaarden.

Status
Niet open voor verdere reacties.

Multimeter

Gebruiker
Lid geworden
11 jul 2016
Berichten
48
Gd

Na al uitstekend geholpen te zijn met bijgaand bestand wil ik proberen om het nog verder op te leuken cq foolproof te maken.
We willen graag bereiken dat op zo makkelijk mogelijke manier liefst onder een knop het volgende bereikt wordt:
-het blad kopiëren om zodoende een nieuwe maand aan te maken
-in dat nieuwe blad vanuit B29:C35 de ingevulde cellen naar boven te kopiëren waarbij ze de cellen in B5:C:25 moeten overschrijven
met paste special- values and number formats.
Hierbij moet voor elke regel de plek gezocht worden waar de celinhoud in kolom F (die uit een listbox gekozen is)
overeenkomt met die van beneden.
-Van de regel die in B5:C25 overschreven wordt zou de bijbehorende cel in kolom D op blank gezet moeten worden. Alle D cellen moeten
echter ook nog handmatig ingevuld kunnen worden.
-Na het naar boven kopiëren zou het handig zijn als de range B29:F35 op blank gezet wordt zonder conditional formatting en of
data validation geweld aan te doen.
-Ook zou het makkelijk zijn als hetgeen in U1 ingevuld wordt ook op de tab verschijnt ipv Sheet1 etc. Misschien ook bij het
kopiëren U1 en daarbij ook de tab met een maand op te waarderen.

Geen idee hoe dit te verwezenlijken en of het uberhaupt mogelijk is, maar roep hierbij weer jullie hulp in.

Alvast bedankt voor de moeiteBekijk bijlage voorbeeld 3.xlsx
 
Neem een macro op dan zien wel waar je nog tegenaan loopt.
 
Bekijk bijlage voorbeeld 3.xlsm
Gd

Ik kom niet verder dan een macro voor het wissen die ik aan de knop gehangen heb, maar die probeer ik juist overbodig te maken.
Heb ook wel een macro kunnen fabriceren om te kopieren naar boven toe maar dat is dan regel voor regel waarbij ik zelf de plaats
aangeef waar ik wil plakken. Geen idee hoe ik dat voor de hele range moet doen en dan nog uitzoeken waar geplakt moet worden.
Zover reikt mijn kennis nu eenmaal niet.
Ook ontdek ik al proberende een addertje onder het gras, er staan verschillende ak's in, dus zal er ook nog een voorwaarde in moeten
dat er geplakt wordt als de celinhoud van kolom F overeenkomt met die van beneden EN als de waarde van de cel in kolom D overeenkomt
met die van beneden. Mocht er niet aan die laatste voorwaarde voldaan kunnen worden doordat er bijv. iemand extra bijkomt en niemand
vervangen wordt zal er op een blanco regel geplakt moeten worden.
Al met al zijn het geen addertjes meer denk ik die onder het gras liggen maar een nest ratelslangen.
 
Met een macro-opname doe je de stappen die je in #1 beschreven hebt. Plaats geen lange teksten en beperk de vraag tot 1 issue. Het is helpmij.nl en geen maakvoormij.nl

Nb. Gebruik bij voorkeur geen samenvoegde cellen. En ook geen nieuwe tabjes per maand maar zet alles in 1 gestructureerde tabel.
 
Bekijk bijlage voorbeeld 4.xlsm

Gd

Sorry, liep in mijn niet meer zo jeugdig enthousiasme een beetje te hard van stapel. Stap voor stap dus.
In bijgevoegde voorbeeld zover als ik zelf kom ten aanzien van het kopieren van onder de streep naar boven. Ik weet niet hoe ik moet kopieren onder de
streep en dan boven de streep plakken anders dan op deze manier.
Moet dus nu handmatig kopieren en de cel boven selecteren en dan doet de knop de rest. Het zoeken naar de juiste regel boven de streep bv. gebaseerd op
de overeenkomst tussen de cellen D&F daar kom ik niet uit. Laat staan voor alle ingevulde regels onder de streep.
Ik wil dus alles in de range B29:F35 kopieren naar B5:F25.
 
Onder de streep, boven de streep het hele bestand staat vol met strepen. Over welke streep heb je het?

Ik wil dus alles in de range B29:F35 kopieren naar B5:F25.
De bereiken zijn verschillend qua aantal rijen. En zal een beetje puinhoop opleveren. Uit de hele opzet van het bestand kan ik ook niet opmaken wat je wil.
 
Wat ik wil bereiken is dat de nieuwe namen in bereik B29:F35 (onder de streep) aan het eind van de maand naar boven gekopieerd
kunnen worden, waarbij de oorspronkelijke regel (onder de streep) gewist wordt en boven de date off (kolomD) van de betreffende
cel op blank gezet wordt.
De rij waar ze terecht moeten komen is afhankelijk van waar dezelfde waarden gevonden worden in kolom D&F
Mochten die overeenkomsten niet gevonden worden doordat iemand extra is en er dus niemand boven de streep vervangen wordt
dan moeten ze in een blanco regel komen.
Bij het bereik boven de streep gaat het om B5:F25 Rij 26-27 doen wat dit betreft niet mee.
 
Ik ben niet van de slimste maar dit is (waarschijnlijk) een eerste aanzet. Het kan er ook ver naast zijn.
 

Bijlagen

Emields

Ook bedankt voor het meedenken, het is echter niet de bedoeling dat iedereen in het bereik B5:C25 verdwijnt, alleen diegenen die vervangen worden.
Dus degenen met een blanke 'date off' cel blijven en alleen zij met een ingevulde 'date off' cel worden vervangen. In de meeste gevallen dus door diegene
onder de streep met zelfde waarde in de D en F kolom van de betreffende regel.
In het voorbeeld zou dus nummer 24 nummer 1 moeten vervangen (en daarna de betreffende D cel op blank zetten). 21 moet 2 vervangen en ook de D cel deleten.
Wat betreft de nummers 22 en 23 daar heb ik in het voorbeeld geen 'date on' bij staan en boven ook niemand met dezelfde 'date off' maar die zouden de
'ak' moeten vervangen met dezelfde 'date on' en 'date of'. (Dit kunnen er meerdere tegelijkertijd zijn)
In geval er iemand bij komt waarbij boven de streep geen matching date gevonden wordt is het een extra die niemand vervangt en moet hij of zij dus op een nieuwe
regel komen.
 
Ik zal nog een keer een poging doen om het met op een andere manier uit te leggen, wil wel eens helpen.
Regel 29 moet einde maand gekopieerd worden naar regel 5 omdat hiervan D5 en F5 overeenkomen. B29:F29 en D5 worden gewist. Opmaak en validatie etc wel laten staan.
Indien geen matching "date off" gevonden wordt (maar wel de F cel dus in dit geval ab uit de list box) dan in een blanco regel plakken, wel met wat er in de F cel staat. Voor de rest van de ingevulde regels van onder de streep geldt hetzelfde ze moeten allemaal een plaats innemen van degene boven de streep waar D en F hetzelfde zijn, indien geen matching D dan wel in een nieuwe blanco regel, wel met de F van onder (uit de list box). Als er een ak vervangen moet worden (daar zijn er meerdere van) dan maakt het niet uit wie wie vervangt als maar geen ak overschreven wordt die geen date off heeft, dus waarvan de D cel blanco is.
Er mag dus nooit iemand overschreven worden die een blanco "date off" heeft!
 
Waarom is kolom E verborgen? Werk het verwachte resultaat eens uit op het nieuwe tabblad en neem daarin alle mogelijke opties op. Al die lappen tekst geven weinig verduidelijking. Het vergelijken van verschillende bereiken is niet zo moeilijk. Hoe slechter de opzet, hoe ingewikkelder de code.

Code:
Sub VenA()
  With Cells(4, 1).CurrentRegion.Resize(, 6)
    ar = .Value
    ar1 = Cells(28, 1).CurrentRegion.Resize(, 6)
    For j = 2 To UBound(ar)
      For jj = 2 To UBound(ar1)
        If ar(j, 4) & ar(j, 6) = ar1(jj, 4) & ar1(jj, 6) And ar1(jj, 4) <> "" Then
          ar(j, 2) = ar1(jj, 2)
          ar(j, 4) = ""
          Exit For
        End If
      Next jj
    Next j
    .Value = ar
  End With
End Sub
 
Laatst bewerkt:
Bekijk bijlage voorbeeld6.xlsm
Ga

Kolom E is verborgen omdat ik daar gegevens had staan nodig bij de berekeningen uitgevoerd in G5:AM35
Omdat ik cellen moest wissen in een range waar kolom E tussen zat heb ik hem verplaatst en kon vervolgens hem (E) niet ertussenuit
halen. Pas toen begreep ik ook je opmerking over bij voorkeur geen cellen samenvoegen.
Intussen ben ik zelf weer aan het proberen geslagen en kan nu de rij selecteren op basis van de formules die ik ernaast heb gezet. (kolom AO)
De uitkomst van die formule kan ik gebruiken om de plaats te bepalen waar geplakt moet worden mits in die regel Date off is ingevuld.
Indien blank moet er een blanke rij gevonden worden.
VBA is voor mij (voorlopig) nog een brug te ver, dus modder ik op deze manier.
Ik ga proberen of ik de geleverde code in een nieuw tabblad krijg en kijken wat er dan gebeurt, voorlopig bedankt maar weer.
 
En die formules heb je er 1 voor 1 handmatig ingezet? Dan wordt het wel een hele lange weg.

Code:
=MATCH(F29;$F$1:$F$24;0)
 
7 Formules er handmatig ingezet, wat neerkomt op 6x cel verwijzingen aanpassen. Ik noem dat geen lange weg.
Tekenend voor mijn niveau is dat ik dus met =MATCH(F29;$F$1:$F$24;0) niets kan. Daarmee bedoel ik dat ik er geen antwoord uit krijg.
Vandaar ook dat ik jullie hulp inroep, maar blijf zelf ook proberen op mijn manier. Voorlopig moet ik er echter vandaag een punt achter zetten.
Morgen gaan we vrolijk verder, ik heb de moed nog niet verloren. (een andere manier om eigenwijsheid te omschrijven:))
 
Bekijk bijlage voorbeeld7.xlsm
Gd

Sub VenA verandert alleen iets in kolom B. Heb nu aangegeven wat er anders zou moeten zijn na het kopie/paste verhaal.
Range B29:F35 leeg en in de range B5:F25 is voor de // wat er eerst stond en erna wat er bijgeplakt is. De D kolom moet helemaal leeg zijn, ook in de onderste range.
F kolom B5:F35 verandert in principe niets alleen als er geen match kan worden gevonden zoals in het geval van de nieuwe ak in regel 21, die komt er extra bij omdat er geen ak meer was met een date off die dus kon worden vervangen.
Excuses overigens voor de data in de A kolom, die staat er alleen maar om mijn listbox te vullen, er hoeft niets in verandert te worden.
Mijn eigen gefreubel heeft (uiteraard) niets opgeleverd behalve dan dat ik de plakrange kan bepalen behalve voor de ak`s.
 
Het van-naar uitwerken op een nieuw blad was even te moeilijk? Kleurtje en streepjes zeggen mij niet zoveel.
 
weer een stukje verder

Heb met hulp van de code van VenA (waarvoor mijn dank) het volgende bereikt.
Zie attachments.
Voorlopig is het probleem dat de ak's allemaal naar boven kopieren met dezelfde naam en nummer en de extra waarvoor dus niemand
in de plaats komt helemaal weg raakt.
ak 22 sss wordt boven ak 22 sss is helemaal goed
ak 23 ttt wordt boven ak 22 sss dat zou niet moeten, de naam en het nummer moeten wel hetzelfde blijven
ak 25 extra wordt niet naar boven gekopieerd en zou omdat er niemand vervangen wordt (er staan geen ak's meer met date off 19)
op een nieuwe regel moeten komen. In dit geval op regel 21
Voor de overigen kan dit ook wel een gebeuren dat er een extra ab tot en met aj komt die dus op een blanco regel gezet moet worden.

Ik hoop dat er iemand een poging kan doen om mij weer een stukje vooruit te helpen

bij voorbaat dank

Bekijk bijlage na pasten.xlsmBekijk bijlage voor pasten.xlsm
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan