Zoek celwaarde in andere sheet en vervang rij bij statuswijziging

Status
Niet open voor verdere reacties.

paulkoolen

Nieuwe gebruiker
Lid geworden
20 okt 2015
Berichten
3
Beste wijze mensen,
ik loop al wat dagen te peinzen over een VBA code maar kom er niet uit.
Mn nagels zijn al kortgebeten, tijd om hulp in te roepen aan de specialisten :)


Mijn vraag:
Ik heb een voorbeeld bijlage meegestuurd. Grofweg de bedoeling: zoek celwaarde en vergelijk met andere sheet, bij een specifieke verandering, de hele rij vervangen.
Hoe bedoel ik dat in detail? in het voorbeeld bestand heb je 2 tabladen met data: bron en nieuw.

De code zou moeten doen:
-Zet de cursor op een bepaalde rij in tablad nieuw,
-Vergelijk uit tabblad nieuw dat specifieke ordernummer (kolom A) van de actieve rij, met hetzelfde ordernummer van t andere tabblad Bron (ook kolom A),
-als de status (kolom B) van tablad nieuw afwijkt van status (kolomB) in bron; dan de complete regel waar de cursor op staat, copieren en de bestaande regel uit tabblad bron overschrijven.
-De gekopieerde regel uit tabblad nieuw mag dan compleet verwijderd worden uit tabblad nieuw, als deze is verhuisd naar tabblad bron.
-Anders niets doen.

hebben jullie een idee?
Alvast dank voor de wijze lessen.
Paul
 

Bijlagen

  • test zoek waarde en vervang rij.xlsx
    10,7 KB · Weergaven: 15
Code:
Sub M_snb()
   sn = Sheet2.Cells(1).CurrentRegion      ' zet nieuwe gegevens in array sn
   sp = Sheet1.Cells(1).CurrentRegion      ' zet brongegevens in array sp
   
   For j = 2 To UBound(sn)                     ' loop alle nieuwe gegevens af (behalve de kopteksten)
     For jj = 2 To UBound(sp)                  ' loop alle brongegevens door (behalve de kopteksten
       If sn(j, 1) = sp(jj, 1) Then Exit For   ' als het ordernummer van 'nieuw' gelijk is aan een ordernummer in de 'bron', stop het zoeken
     Next
     If jj <= UBound(sp) Then                  ' als het ordernummer in de 'bron' bestaat:
       For jjj = 2 To UBound(sn, 2)            ' vervang alle 'kolommen' van dat ordernummer
         sp(jj, jjj) = sn(j, jjj)              ' door de waarden in de array met nieuwe gegevens 
       Next
     End If
   Next
   
   Sheet1.Cells(1).CurrentRegion = sp      ' zet de array sp inclusief alle door nieuwe gegevens vervangen brongegevens in het werkblad met brongegevens.
End Sub
 
Laatst bewerkt:
Dat is snel en super SNB.
t is echter zo abstract voor mij dat ik t moeilijk kan interpreteren, maar t werkt wel!
ik ga proberen dit zo in mijn orginele excel te bakken.
thanx.
paul.
 
Een beetje toelichting toegevoegd in #2
 
Super, wordt gewaardeerd! maakt t idd een stuk beter te interpreteren.
Gr Paul.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan