[ Taft @ 18.10.2021. 15:50 ] @
Pozdrav,

trebam pomoć znanaca u VBA imam cod koji radi ali trebam male izmjene.
VBA radi kad stisnem gumb arhiviraj i on stavi taj dokument u sheet arhiviraj.
obzirmo da planiram raditi i račune i ponude onda sam si zamislio zašto nebi mogao spremati odvojeno ponude na arhiva ponude, račune na arhiva računi.
stavio sam VBA code ali i privitak.



Code:
Private Sub arhiviraj()
'
' Makronaredba1 Makronaredba
'
YesNo = MsgBox("Spremno za arhivu?", vbYesNo + vbCritical, "Pazi")
Select Case YesNo
Case vbYes
 
Application.ScreenUpdating = False
'your code
Sheet2.Unprotect Password:="EG"
    Sheets("Racun-Ponuda").Select
    Range("A1:G55").Select
    'Selection.Copy
    Sheets("Arhiva").Select
    Range("A1").Select
        ActiveWorkbook.Worksheets("arhiva").Rows("1:55").Insert Shift:=xlDown
    ActiveWorkbook.Worksheets("arhiva").Activate
    Sheets("Racun-Ponuda").Select
    Range("A1:G55").Select
    Selection.Copy
    With Worksheets("arhiva")
                .Range("A1:G55").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    'Range("A1").Select
     .Range("A1:G55").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    End With
    Sheets("Racun-Ponuda").Select
    Range("A1").Select
    Range("f12").Value = Range("f12") + 1
    Sheet2.Protect Password:="EG"
Application.ScreenUpdating = True

Case vbNo
'Insert your code here if No is clicked
MsgBox ("Uh, zamalo si zeznuo stvar!! Pazi sto radis!")
End Select
    
  
    
End Sub
[ Ivek33 @ 19.10.2021. 20:41 ] @
Ne znam zašto si se odlučio vršiti arhiviranje na taj način.
Nisam još vidio da netko kopira cijeli range i range by range lijepi na drugi sheet unutar iste WBK.
razmisli o drugačijem načinu arhiviranja.

U prilogu ove poruke nalazi se datoteka koja sadrži više načina arhiviranja. Nadam se da ćeš se snaći.
- Možeš arhivirati svaku ponudu ili račun u zasebnu datoteku u nekii folder a popis izdati računa opet možeš voditi na nekom sheetu.
[ Taft @ 20.10.2021. 10:39 ] @
Citat:
Ne znam zašto si se odlučio vršiti arhiviranje na taj način.

zato što nisam znao drugačije, pokušao sam iskoristiti što sam znao.

Hvala Ivek pogledam ovo što si mi ponudio.

Ivek pitanje dodatno polje F3 dali se to može automatizirati.

ovako kad stisnem arhiviraj ponudu da to polje bude slijedeći redni broj po redu, isto i za raćune.
teško je napisati što sam zamislio

želim dobiti kad stisnem arhiviraj ponudu da se promjeni broj ponude(f12) za +1 ali da to ne računa za broj računa i obrnuto.
znači polje f 12 je ponuda 1 nakon arhiviraj je ponuda 2.
kad prebacim b12 na račun tu bi trebalo ići od br 1 pa istim korakom arhiviraj račun +1 up.
Dali je to moguče izvesti?

[Ovu poruku je menjao Taft dana 20.10.2021. u 12:26 GMT+1]
[ Ivek33 @ 20.10.2021. 15:17 ] @
Vjerojatno si mislio na ćeliju F12/F13 (U principu ja izbjegavam Merge Cells u radu)
Dodao sam nekoliko stavki na Sheet 'Brojač' sa kojeg se formulom povlači slijedeći redni broj zavisno od ponuda/račun.

[ Taft @ 20.10.2021. 15:47 ] @
Citat:
Vjerojatno si mislio na ćeliju F12/F13 (U principu ja izbjegavam Merge Cells u radu)


da to sam prvo promjenio :).


i HVALA na svako pomoći do sad
[ Taft @ 25.10.2021. 12:03 ] @
Ivek,

Imam mali problemčić trebao bi da brojevi računa i predračuna idu po redu.
sad uzima sljedeči broj koji je na redu.
Dali je to izvedljivo?
[ Ivek33 @ 25.10.2021. 21:14 ] @
Ne razumijem te što nije ok?
Rekao si da želiš redne brojeve posebno za
- ponudu/predračun
- račun

Ovisi što si arhivirao, slijedeći broj će biti plus zadnjeg arhiviranog broja, zavisno jel ponuda ili račun.
Citat:
sad uzima sljedeči broj koji je na redu.
Pa zar nisi tražio redne brojeve?

Budi malo detaljniji i daj nekoliko primjera.
[ Taft @ 26.10.2021. 10:45 ] @
kad si postavio takvo pitanje pogledao sam tvoj primjerak i on radi ok ja sam izgleda nešto sj....

kak se resetira brojevi da idu ponovno od 1?

[ Ivek33 @ 26.10.2021. 11:15 ] @
Citat:
kak se resetira brojevi da idu ponovno od 1?

Na Sheets 'Arhiva_predračuna' i 'Arhiva_računa' u ćeliju A2 upiši nulu (0) a ostalo neka bude prazno u istom redu.
ili
Ako želiš izbjeći taj prvi red ispod naslova da bude prazan, na Sheet 'Brojač' postavi ove formule
U ćeliju A3
Code:
=IF(ISNUMBER(VALUE(TRIM(IFERROR(IF(LEN(A2>10);LEFT(A2;SEARCH("-";A2)-1);A2);A2))))=FALSE;0;VALUE(TRIM(IFERROR(IF(LEN(A2>10);LEFT(A2;SEARCH("-";A2)-1);A2);A2))))

U ćeliju B3
Code:
=IF(ISNUMBER(VALUE(TRIM(IFERROR(IF(LEN(B2>10);LEFT(B2;SEARCH("-";B2)-1);B2);B2))))=FALSE;0;VALUE(TRIM(IFERROR(IF(LEN(B2>10);LEFT(B2;SEARCH("-";B2)-1);B2);B2))))
[ Taft @ 29.10.2021. 07:32 ] @
Hvala Ivek to je to.
Ispričavam se na duljem odgovoru ali naš A1 šteka :)
[ Taft @ 03.11.2021. 08:21 ] @
evo mene ponovno :)

malo od gripe nisam stigao raditi po ovome.

Ivek ista tema problem sa redoslijedom računa.
Ovo što si narpavio radi odlično i redoslijed ide po rednom broju, ali ono što mi nije dobro i trebalo bi se ispraviti ako se može da računi uvijek idu po rednom broju.
vidjeti češ u primjeru.

znači ako imam račun br 1 onda ga arhiviram i on je broj 1 ,ali ako radim ponudu iza tog računa ponuda je broj 2 slijedeći račun je tek broj 3.
nedostaje mi broj 2 računa.

nadam se da sam sad bolje objasnio.
[ Ivek33 @ 03.11.2021. 13:35 ] @
Sorry ali ja tebe ne razumijem u potpunosti.
Uvijek ide prvo ponuda pa na osnovu toga ide račun.
Ne možeš izdati račun a da ni si dao ponudu (ako si tako organizirao rad vezan za ponuda/račun).

Uzmimo da krenemo od nule.

Istog dana imao si 4 upita za ponudu različitih proizvoda.
1. klijentu 'A' poslao si ponudu broj '1'
2. klijentu 'B' poslao si ponudu broj '2'
3. klijentu 'C' poslao si ponudu broj '3'
4. klijentu 'D' poslao si ponudu broj '4'

Dakle poslao si 4 ponude ali nijedan račun.

Nakon određenog vremena klijent 'D' ti se javi i želi kupiti proizvode po ponudi broj '4'
Ti u ćeliji 'B12' sa padajućeg izbornika izabereš stavku "Račun BR.", u ćeliji 'F12' treba ti biti broj '1' jer je to prvi račun koji izdaje tvoja firma.
Kopiraš podatke iz ponude broj '4' isprintaš i klikneš "Arhiviraj račun" jer si završio posao. (sada u računu broj '1 imaš podatke za klijenta 'D' ali sa ponude broj 4).
Isprintaš i klikneš "Arhiviraj račun" jer si završio posao. Račun ti je arhiviran pod brojem 1.
Pošalješ račun klijentu i kada ti plati pošalješ mu robu.

Za desetak dana javi ti se klijent 'A' i kaže da se slaže sa kupnjom i traži da mu izdaš račun po ponudi broj '1' od tog i tog datuma, da ti avansno plati.
Ti u ćeliji 'B12' sa padajućeg izbornika izabereš stavku "Račun BR.", u ćeliji 'F12' treba ti automatski biti broj '2' jer je to drugi račun koji izdaje tvoja firma.
Kopiraš podatke iz ponude broj '1' i zalijepiš ih u račun broji '2' na sheet, isprintaš i klikneš "Arhiviraj račun" jer si završio posao. (sada u računu broj '2 imaš podatke za klijenta 'A' ali po ponudi broj '1' od tog i tog datuma)

itd, itd...

Napomena:
S obzirom da postoji opuno varijacija s obzirom na ponudu/račun postoji i puno varijanti (sve zavisi do tvoje organizacije rada)

npr:
- možeš izdati "ponudu/predračun" sa popisom 10-tak proizvoda (recimo ponuda broj '1'),
...kupac/klijent odluči da kupi samo 7 proizvoda sa te ponude. Na tebi je da odlučiš da li ćeš praviti novu ponudu sa novim brojem samo za tih 7 proizvoda i vezati račun za tu novu ponudu).
ili
...kupac/klijent odluči da kupi samo 7 proizvoda sa te ponude. Na tebi je da odlučiš da li ćeš bez obzira na promjene zahtjeva kupca raditi račun po toj ponudi ali izostaviti 3 proizvoda i vezati račun za broj već poslane ponude).

Ako ćeš uvijek raditi novu ponudu (u slučaju da dođe do izmjene zahtjeva kupca u odnosu na popis ponuđenih proizvoda) možda bi bilo dobro da dodaš još jednu rubriku na sheetu "Arhiva_racuna" pod nazivom "broj ponude" pa ćeš tako imati uvid za koju ponudu ti je vezan određeni broj računa.
Isto to možeš i na sheetu "Arhiva_predracuna"

Preširoko je to knjigovodstva i skladišno materijalno poslovanje (za to postoje profesionalin programi knjigovodstva).
btw: Imaj u vidu da ja nisam VBA programer, pa tako za novotarije morat ćeš tražiti pomoć od drugih.
LP
[ Taft @ 04.11.2021. 09:24 ] @
Citat:
Ivek33: Sorry ali ja tebe ne razumijem u potpunosti.
Uvijek ide prvo ponuda pa na osnovu toga ide račun.
Ne možeš izdati račun a da ni si dao ponudu (ako si tako organizirao rad vezan za ponuda/račun).
LP



Što nije bilo razumljiv?
Što se tiće ponuda i računa sve si to točno rekao.

Bez ponude nema računa i to stoji, ali to nije riješenje koje sam želio i pitao za pomoć (nevidim razlog font 20).
Ono što sam planirao je da nevezano sa br. ponude računi idu po rednom broju bez da ja ručno upisujem br računa.
Do sad je u primjeru koji si ti napravio MIX rednih brojeva.

Ako napravim ponudu i stisnem arhiviraj ta ponuda je br 1,druga ponuda je br 2, treča broj 3, tu nastaje sad taj problem o koji sam želio riješiti znači za ponudu br 2 koja je prošla recimo račun če biti tek broj 4 a ne br 1

Možda da odvojim sheet ponude i računi pa bi onda išlo po redu.

Pa svako arhiviranje će ići po redu.....


Ukoliko ti idem na živce možeš to i napisati slobodno, pomogao si mi u raznim situacijama i HVALA ti na tome.

HVALA je jedino što ti na forumu mogu napisati, uživo možda koja i piva bi pala :)



[ Ivek33 @ 04.11.2021. 12:59 ] @
Žao mi je što si moj post pogrešno shvatio. :(
Citat:
(nevidim razlog font 20).
to je samo zbog toga da bi naglasio ono što sam pisao.
Citat:
Ako napravim ponudu i stisnem arhiviraj ta ponuda je br 1,druga ponuda je br 2, treča broj 3, tu nastaje sad taj problem o koji sam želio riješiti znači za ponudu br 2 koja je prošla recimo račun če biti tek broj 4 a ne br 1

to je upravo ideja i razlog za uvećani font i jedno od mogućih rješenja
Citat:
Ukoliko ti idem na živce možeš to i napisati slobodno,
Uopće mi ne ideš na živce :), samo ja ne vidim drugačiji način rada, ili te dovoljno ne razumijem.
[ Taft @ 13.01.2022. 14:15 ] @
evo mene opet po ovom pitanju uspio sam riješiti odvojeno ponudu od računa ali ...
uvjek ima taj ali :P

kad spremi u putanju koju smo postavili uvjek mi spremi sa brojem više znači ako je račun 1-1-1 on spremi kao Račun 2-1-1 traži sam po codu gdje da to promjenim ali nisam našao

Hvala na pomoči

[ Ivek33 @ 13.01.2022. 19:25 ] @
U VBE, Module3

U proceduri "Sub ArhivirajPonudu()" pronađi ovu liniju koda
Citat:
txtIme = FPath & "\" & Format("Ponuda ") & Range("F12") & Range("G12") & "_" & Format(Now() + 1, "dd mmmm, yyyy hh-mm") & ".xlsx"
i zamjeni sa ovim kodom
Code:
txtIme = FPath & "\" & Format("Ponuda ") & Range("F12").Value - 1 & Range("G12") & "_" & Format(Now(), "dd mmmm, yyyy hh-mm") & ".xlsx"


U proceduri "Sub ArhivirajRacun()" pronađi ovu liniju koda
Citat:
txtIme = FPath & "\" & Format("Racun ") & Range("F12") & Range("G12") & "_" & Format(Now() + 1, "dd mmmm, yyyy hh-mm-ss") & ".xlsx"
i zamjeni sa ovim kodom
Code:
txtIme = FPath & "\" & Format("Racun ") & Range("F12").Value - 1 & Range("G12") & "_" & Format(Now(), "dd mmmm, yyyy hh-mm-ss") & ".xlsx"
[ Taft @ 17.01.2022. 09:56 ] @
Ivek

HVALA!! to radi sad ok.

Drugo pitanje radi se o polju E 38 kako da dobijem podatak traženi nakon save?
Vidim da prilikom save on obriše sve šifre-codove i onda dobijem #NAME?

Obzirom da ostale podatke prepiše ok i tu netreba ništa ispravljati ali ovo polje bi trebalo biti :)






[Ovu poruku je menjao Taft dana 17.01.2022. u 11:14 GMT+1]
[ Ivek33 @ 17.01.2022. 20:43 ] @
Ne znam baš o čemu pričaš (bez tvog primjera)
Ako misliš na formulu =CONCATENATE("Slovima: ";ConvertCurrencyToEnglish(G37)) meni je sve OK nakon arhiviranja računa.
[ Taft @ 18.01.2022. 09:26 ] @
evo primjer
[ Ivek33 @ 18.01.2022. 22:44 ] @
Iskreno, ne mogu ti puno pomoći jer nemam dovoljno znanja u VBA programiranju.
Ta greška "#NAME!" događa se jer prilikom kopiranja Excel ne kopira UDF funkciju u tu novu arhiviranu WBK i Excel ne može izračunati jer nije definiran naziv ili ime za pojedini podatak.

Ja sam krenuo obilaznim putem, ali nisam siguran koliko je to dobro i ispravno?
Moja ideja je da u 'Module3' na vrhu zamjeniš VBA procedure 'ponuda' i 'racun'

Ovo bi bio novi VBA kod
Code:

Sub Ponuda()
'unosi tekst u ćeliju B12
    Range("B12").Select
    ActiveCell.FormulaR1C1 = "PONUDA BR:"
'postavlja formulu u ćeliju E38
        Range("E38:G38").Select
        ActiveCell.FormulaR1C1 = _
            "=CONCATENATE(""Slovima: "",ConvertCurrencyToEnglish(R[-1]C[2]))"
'copy/paste E38 ćelija kao vrijednost/tekst
    Range("E38").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Paste
        Application.CutCopyMode = False
End Sub

Sub Racun()
'unosi tekst u ćeliju B12
        Range("B12").Select
        ActiveCell.FormulaR1C1 = "RAČUN BR:"
'postavlja formulu u ćeliju E38
        Range("E38:G38").Select
        ActiveCell.FormulaR1C1 = _
            "=CONCATENATE(""Slovima: "",ConvertCurrencyToEnglish(R[-1]C[2]))"
'copy/paste E38 ćelija kao vrijednost/tekst
    Range("E38").Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        ActiveSheet.Paste
        Application.CutCopyMode = False
End Sub

Ove dvije procedure insertiraju formulu u 'E38' ćeliju a rezultat formule konvertiraju u običan tekst.
Tako da se prilikom arhiviranja kopira tekst umjesto UDF-formule.

Ovdje dolazi do jednog problema, kada radiš tj. unosiš podatke, rezultat u ćeliji 'E38' neće se promijeniti sve dok ne klikneš na button ARHIVIRAJ.

Možda neki VBA programer može više pomoći.
[ Taft @ 19.01.2022. 07:30 ] @
Hvala Ivek probam.

Citat:
Možda neki VBA programer može više pomoći.


Nadam se da bude zalutao na forum jedan barem :), znaš kako se kaže nada umire zadnja :)

Hvala na pomoči do sada