[ delizoki @ 11.04.2020. 20:02 ] @
Zamolio bih za malu pomoć. Ima ssituaciju da treba da se napravi kopiranje podataka iz jednog u drugi sheet u dva excell fajla. Kopiram podatke iz kolone A u nekom rangu , npr od A1 do A6. Kad hoću da prekopiram neki naredni podatak trebalo bi da mi proveri koje je sledeće naredno slobodno polje ( u ovom slučaju A7 ) i tu da nastavi kopiranje.

Može pomoć ?
[ Jpeca @ 13.04.2020. 09:36 ] @
Ako razumeo pitanje, treba naći prvo slobodno polje u koloni A i onda tu kopirati?
1/ Ozančiš šta kopiraš i onda CTRL+C
2/ Premestiš se u radnu svesku i list gde treba da se kopira
3/ Selektuješ A1
4/ CTRL + strelica dole - pozicionira se na kraj popunjenog dela u toj koloni
5/ strelica dole za pozicioniranje u sledeći red u toj koloni
6/ CTRL + V

Ovo je ručni postupak, a naravno može da se napravi i makro za tako nešto, ali onda taj konkretan primer da ne gubimo vreme
[ delizoki @ 14.04.2020. 18:37 ] @
Nešto se ne snalazim gde da zakačim fajl.

[ delizoki @ 14.04.2020. 18:39 ] @
Evo kako bi trebalo da izgleda. Iz fajla(iz ovog) treba da prekopira podatje u fajl ( u ovaj ) ali tako da proveri da li prodavac postoji, ako postoji da obriše stari rezultat i upiše novi, a one kojih nema u drugom fajlu da poslaže na slobodne pozicije u koloni A.

Trebao bi makro, hvala ti unapred :)
[ Jpeca @ 14.04.2020. 21:30 ] @
Ja sam zamislio da makro startuješ iz falja (i aktivnog lista) u koji ubacuješ podatke (u ovaj). U tom slučaju dodaj sledeći kod u novi modul i snima sa ekstenzijom xlsm (Makro-Enabled Workbook )

Code:
Option Explicit

Sub Import()
' Makro koji azurira podatke u tabeli podacima iz izabranog opsega (spoljna tabela)
' Makro se startuje sa lista u koji se uvoze podaci
' Kolona A su imena prodavaca, kolona B Target, kolona C Ostaveren
' P. Jovanovic za elitesecurity.org
'
    Dim rgDest As Range
    Dim rgSource As Range
    Dim rw As Variant
    Dim rwUpis As Long
    
    Set rgDest = ActiveSheet.UsedRange
    ' Izbegavanje greske kad se klikne Cancel
    On Error Resume Next
    
    Set rgSource = Application.InputBox("Izaberi opseg iz koga se preuzimaju podaci", Title:="Source Range", Type:=8)
    
    ' Aktiviraju se greske ponovo
    On Error GoTo 0
    
    ' Ako nista nije selektovano izadji
    If rgSource Is Nothing Then GoTo Kraj
    
    ' Prebacuje podatke red po red
    Set rgSource = rgSource.Resize(rgSource.Rows.Count, 1) ' Uzima se samo prva kolona iz selekcije
    If rgSource.Cells(1, 1).Value = "PRODAVAC" Then
        Set rgSource = rgSource.Offset(1, 0).Resize(rgSource.Rows.Count - 1, 1)
    End If
    For Each rw In rgSource.Rows
        'Debug.Print rw.Cells(1, 1).Value
        If Len(rw.Cells(1, 1).Value) = 0 Then GoTo Sledeci
        rwUpis = FindInList(rw.Cells(1, 1).Text, rgDest)
        If rwUpis = 0 Then
           rwUpis = rgDest.Rows.End(xlDown).Row + 1
           rgDest.Cells(rwUpis, 1).Value = rw.Cells(1, 1).Value
        End If
        ' Target i Ostvareno
        rgDest.Cells(rwUpis, 2).Value = rw.Cells(1, 1).Offset(0, 1).Value
        rgDest.Cells(rwUpis, 3).Value = rw.Cells(1, 1).Offset(0, 2).Value
Sledeci:
    Next rw
    
    MsgBox "Import završen", vbInformation, Title:="Kraj"
Kraj:
 
End Sub

Private Function FindInList(item As String, rng As Range) As Long
' Pomocna funkcija koja trazi da li postoji item u rng
' Ako postoji vraca broj reda u suprotnom 0

    Dim c As Variant

    FindInList = 0
    Set c = rng.Find(item, LookIn:=xlValues)
    If Not c Is Nothing Then
        FindInList = c.Row
    End If

End Function


Nakon startovanja (Alt+F8, ili napravi prečicu) treba izabrati opseg iz druge sveske (iz ovog) - moze ceo opseg ili samo imena
I linija po linija se prenosi na aktivni list. Na kraju se ispisuje poruka da je završeno
[ delizoki @ 14.04.2020. 22:02 ] @
Peco,

pokušavam ali se ništa ne dešava. Radim li ja dobro ?
[ Jpeca @ 15.04.2020. 08:15 ] @
Nisam siguran šta pokušavaš pa se ne dešava?

Postupak bi bio:
1/ Preuzmi fajl iz priloga u prethodnom postu i snimi ga kod sebe u isti folder kao i u "ovaj.xlsx". Zbog različite ekstenzije neće biti problema.
2/ Otvori fall "iz ovog.xlsx"
3/ Otvori fajl "u ovaj.xlsm". Ako pita za makroe omogući ih. Proveri da li ti su ti makroi omogućeni
4/ Obriši podatke za Svetlanu kako bi mogao da pratiš promene
5/ Alt+F8, da se startuju makroi. Treba da se pojavi Imort na listi makroa

6/ Izaberi Run
Treba da se pojavi dijalog u kome piše "Izaberi opseg iz kojeg se preuzimaju podaci"
7/ Izaberi opseg iz radne sveske "iz ovog.xlsx" npr. A1:C3
Dovoljno je izabrati prvu kolonu. Prazna polja se preskaču, kao i header "PRODAVAC"
8 / Dobiješ poruku Import završen i proveri da li su polja prebacena
[ delizoki @ 15.04.2020. 17:33 ] @
Peco,

sve to uradim i ne dešava se ništa. Ne prebcuje. Ni kad je samo 1 stavka. A trebalo bi da uradi validaciju ako je isto ime da ga obriše i upiše novi podatak. Formula može da ostane i posle kopiranja ?
[ Jpeca @ 15.04.2020. 17:43 ] @
Kod mene je odradio - vidiš svetlana novi unos i 1000 kod Zoki na slici

Ako su ti makroi omogućeni moraš da debaguješ

Prva pomoć:

U kodu imaš liniju Debug.Print... koja je pod komentarom
Izbaci oznaku za komentar ' (apostrof).
U VBE (Alt+F11) postavi Immediate Window da se prikazuje
Izvšri makro i vidi da li se nešto ispisuje u prozoru - Trebalo bi imena koja selektovana u sveci "iz ovog.xlsx"

Za ozbiljnije debagovanje vidi


Da li su ti tabele identične ovima koje si postavio? Ako su kolone drugačije to može da bude problem - mora da se promeni kod

Evo kratak postupak u videu https://drive.google.com/file/...1LjcCRotMurMwqDAIqNwHZ3sa/view
[ mikoni @ 19.04.2020. 18:32 ] @
Evo još jedan način za kopiranje sheet-a iz jednog u drugi file:
1. Otvoriš oba file-a
2. U file iz koga kopiraš obeležiš mišem sheet i pritisneš desni klik
3. Iz menija izabereš Move or Copy i prisneš Enter
4. Otvara se nova ponuda
a. U donjem levom uglu OBAVEZNO čekiraš Create a copy
Napomena: bez čekiranja premešta sadržaj u želji sheet i file a izvorni ostaje bez
kopiranog sadržaja
Ovaj problem se rešava izlaskom iz file iz koga je kopiran sadržaj BEZ SAVE
b. Otvoriš To book i obeležiš file u koji treba kopirati sadrža, i Enter
c. Izabereš poziciju za kopirani sadržaj i opet Enter
5. Po završetku nastaviš da radiš sa kopiranim sadržajem ili Save file
6. Deluje dugačko, ali u većini slučajeva je brži i jednostavniji način

Mikoni