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

Macro uitbreiden verticaal zoeken meerdere kolommen en cellen

Status
Niet open voor verdere reacties.

samiksz

Gebruiker
Lid geworden
2 nov 2012
Berichten
13
Hallo,
zit met de volgende vraag.
Ik heb in bijlage een voorbeeld gezet waarin er op blad2 in kolom A gekeken wordt of de waarde van cel A5 op blad1 reeds bestaat.
Zo ja vult hij de waarde uit cel B5 van blad1 in op de eerst volgende lege plaats op blad 2 achter de reeds bestaande waarde in kolom A,
Zo neen plaatst hij een nieuwe waarde in kolom a met in kolom b de waarde die erbij hoort.
Deze makro werkt nu voor 1 zoekwaarde van blad1.

Wat ik nu wil doen is dat de macro dit doet voor alle cellen in de kolommen a, c, e, enz..) van blad1 van omschrijving en dat hij de aantallen(kolommen b, d, f, enz..) invult die erbij horen op blad2.
Ofwel het aantal plaatsen achter de bestaande waarde of een nieuwe aanmaken met omschrijving met het aantal erachter.

Hopelijk is mijn uitleg wat duidelijk.

Blad 1 kan behoorlijk uitgebreiBekijk bijlage Map1000000.xlsmd worden met het invullen van de waarden.
kolommen +/- 50 & rijen +/- 100 afhankelijk van de in te vullen gegevens.

De bedoeling is dat ik op blad 1 alles kan ingeven van omschrijving en aantal en dat hij na de macro te activeren alle (verschillende) omschrijvingen en aantallen oplijst in blad 2

Kan iemand mij opweg helpen hoe ik dit kan aanpakken.
Heb al even liggen puzzelen om de macro in bijlage te maken en ik zou hem kunnen copieren en telkens de range enzo veranderen in de volgende cel en kolom maar dat lijkt mij veel te uitgebreid.
Hopelijk bestaat er een kortere oplossing.

Alvast bedankt voor tijd en uitleg.
Mvg Samiksz
 
Beste MDN111, dit is inderdaad wat ik bedoel.
bedankt voor de hulp.
Heb de macro even bekeken en er zitten zeker een aantal nieuwe zaken in die ik nog niet kende.
Nogmaals bedankt.
groetjes Samiksz
 
Beste MDN111,
ik had nog een klein vraagje.
Nu neemt hij enkel volle getallen over.
Het probleem is dat als hij nu bij aantal 0,5 tegenkomt dit weergeeft als 0.
kan dit aangepast worden?

Alvast bedankt.

grz samiksz
 
Dag samiksz!

Sorry, die vraag was ik even uit het oog verloren want ze staat op "opgelost".
Er worden inderdaad alleen gehele getallen overgebracht, dat is een stommiteit van mij! :o

Gelieve de regel:
Code:
Sub materiaallijst_tellen(ByVal cLib As String, ByVal nVal As [COLOR="#FF0000"]Long[/COLOR])
aan te passen naar:
Code:
Sub materiaallijst_tellen(ByVal cLib As String, ByVal nVal As [COLOR="#FF0000"]Double[/COLOR])

Grtz,
MDN111.
 
Beste MDN111,
Is zeker geen stommiteit :p
Ben al blij dat je mij geholpen hebt.
Heb het aangepast en werkt perfect zo.

Heb ondertussen ook al wat bijgevoegd zo als alfabetisch sorteren en rijen invoegen.
Misschien toch nog even een vraagje of informatie.
De macro loopt nu de rijen af van boven naar beneden en als de volgende cel leeg is schuift hij op naar de volgende kolom "Omschrijving".
Het is nu zo dat ik regelmatig lege cellen in de omschrijving en het aantal heb waardoor hij de rijen niet volledig afloopt.
Ik heb het opgelost met een macro-tje te maken, die ik eerst run, die de lege cellen opvult. Dan doet hij het wel volledig. :D
Ik moet dan nog even handmatig op blad 2 die lijn wissen maar dat is al zo erg niet.
hier de code die ik gebruik om de lege cellen op te vullen.
Heb er ook een paswoord opgezet voor als ik per ongeluk de macro activeer deze niet reeds al alles vult terwijl ik nog niet klaar ben.
Code:
Sub Lege_cellen_invullen()

pwd = InputBox("Vul het paswoord in!", "Beschermen tegen opvullen lege cellen.")
If pwd <> "PSWD" Then
         MsgBox "Verkeerd paswoord!", vbInformation, "Security Warning"
     Else

 With Sheets("Blad2").UsedRange
   .SpecialCells(4) = "1"
   .Value = .Value
   End With
End If
End Sub
Het kan misschien ook anders maar denk dat je dan een bereik dient op te geven neem ik aan.
In ieder geval het werkt zo voor hetgeen ik dien te bereiken.

Nogmaals enorm bedankt voor de hulp.
Mvg Samiksz
 
Dag samiksz!

Als ik het goed begrijp heeft u een macro gemaakt om lege cellen in de sheet "Blad1" op te vullen, want de macro stopt als hij een lege cel ontmoet.
Waarom staat er dan in uw code de regel "With Sheets("Blad2").UsedRange".
Verder is ook de regel ".Value = .Value" overbodig.

Maar goed, dat is nog het ergste niet. Wat erger is, is dat je eerst een macro laat uitvoeren om lege cellen op te vullen, die dan een overbodige regel produceert in de sheet "Blad2" en dan ga je die regel manueel verwijderen. Dat is nutteloos werk, dat we beter door een macro kunnen laten oplossen. Luiheid kan soms wel een deugd zijn. :D

Hoe jou "echt" bestand er uit ziet met al je wijzigingen, weet ik natuurlijk niet, daarom heb ik het bestand van #2 aangepast, zodat de macro nu wel rekening houdt met lege cellen. Zo wordt dat opvullen van lege cellen overbodig. Mocht je dat vanaf het begin in de probleemdefinitie hebben vermeld, dan hadden we vanaf het begin reeds rekening kunnen houden met het bestaan van eventuele lege cellen. :confused:

Grtz,
MDN111.
 

Bijlagen

Beste MDN111,
bedankt voor de aangepaste versie is inderdaad handiger om het in 1 macro te doen en op de juiste manier.
("Blad2") moest inderdaad ("blad1") zijn. foute copie-paste van mij. :o

Dat het niet vermelden van de situatie van in het begin is dat ik meestal aan zo een macro begin en de probleempjes aanpak als ze zich voordoen en in het begin denk van als ik dat kan doen is het wel ok, maar als ik dan ermee bezig ben dan denk ik altijd van , aah ja dat is misschien ook nog fijn als hij bv alfabetisch zou ordenen op ("Blad2"), en dan komt dat stukje code er weer bij.... en zo bouwt het zich op.
Ik ben er mij van bewust dat ik dan soms macro's krijg die niet altijd mooi zijn opgebouwd en er soms overbodige dingen instaan od via omwegen gewerkt wordt.
Komt ook deels door mijn gebrek aan kennis, wat iedere keer wel wat weer verbeterd door de hulp die ik krijg op het forum, waarvoor dank.

in bijlage jouw laatste versie aangevuld met mijn code voor het naar mijn wens te krijgen.
Ga het nu nog proberen uit te breiden met de 3 rijen die hij toevoegt vanboven op ("Blad2") tekst te laten invullen zodat ik dat ook al niet meer moet doen :)

Nogmaals bedankt voor alle hulp en mochten er zaken instaan waarvan je zegt dit kan beter of anders laat het me gerust weten, kan ik weer wat bijleren.
mvg Samiksz

Bekijk bijlage Map1000000.xls
 
Laatst bewerkt:
Dag samiksz!

Aangezien je deze post tot ieders tevredenheid op "opgelost" hebt gezet, zou ik niet meer gereageerd hebben, maar ik heb eventjes de macro van de laatste bijlage getest en ben op een 1004-error gestuit. Die wordt uitgelokt door de regel "Application.Calculation = False".
De property Application.Calculation aanvaardt de waarden xlCalculationAutomatic, xlCalculationManual of xlCalculationSemiautomatic, maar True en False zijn geen geldige waarden. Vandaar de foutmelding.

https://msdn.microsoft.com/en-us/library/office/ff835845.aspx

Grtz,
MDN111.
 
Beste MDN111, ik wil je bedanken voor alle hulp.
Raar dat je de foutmelding krijgt en ik niet.
Heb in ieder geval de regel wel aangepast naar "Application.Calculation = xlCalculationAutomatic" en de regel "Application.Calculation = False" gewist.
Nogmaals bedankt voor alle hulp en misschien tot in een volgende post.

Groeten Samiksz
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan