Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 21. 6. 2019 09:17:03

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Změna pořadového čísla - VYŘEŠENO

Dobrý den,

  prosím o radu.
  Mám dodací listy - co zákazník to sešit, každý nový DL je nový list v sešitu.
  V listi mám udělané makro - kliknu na tlačítko, vytvoří se kopie aktuálního listu, přejmenuji a uložím.
  Problém je, že pokaždé musím přepisovat číslo DL. Nešlo by zakomponovat do toho mého makra, aby se pořžadové číslo automaticky změnilo podle názvu listu? Komplikace je, že názvy listů obsahují jméno zákazníka a číslo
př.: zákazníkA 0119 / zákazníkB 0119 atd. V dodacím listu má číslo formát 01/19, 02/19...
Vzorový sešit přikládám a předem děkuji za podněty.

http://wiki.openoffice.cz/wiki/Soubor:Vzor.ods

Editoval peterson (9. 7. 2019 12:09:54)

Offline

#2 21. 6. 2019 10:19:10

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

Ano jde to. Makro máte nahrané, nebo programované?


     Kam vkládáte nový list - na konec, nebo hned za první list? Jde spíš o to, že když nový list vytvoříte, tak můžete stát hned v novém listu.
     Je možné udělat na kliknutí vstup pomocí InputBoxu, nebo třeba zápis do buňky vzoru, který může obsahovat dvě políčka pro nové jméno listu. V jednom bude číslo zakázky (generované vzorcem) a ve druhém jméno klienta. První list může obsahovat seznam všech listů v podobě hypetextových odkazů - to aby stačilo kliknout a skočit na správný list. Naopak v cílovém listu může být hyperlink na první list (zdroj).
     V případě volby InputBoxem by dialog obsahoval automaticky generované číslo zakázky a skok na nový sešit. Ale i úplnou navigaci pomocí hyperlinků lze snadno sestrojit.


     Pokud si umíte poradit s makry pošlu jen ten přepis automatického čísla pro InputBox. Nemám ale problém postavit úplné variantní řešení.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 21. 6. 2019 10:37:18

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

Nový list ukládám vždy nakonec.

Offline

#4 21. 6. 2019 11:58:23

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

Víte dotazů jsem měl více. problém je také s tímto :

wiki napsal(a)

Seznam načtených obrázků

Tato speciální stránka zobrazuje všechny načtené soubory. Ve výchozím stavu je poslední načtený soubor nahoře. Kliknutím na hlavičku sloupce můžete změnit řazení.
Seznam načtených obrázků
Zobrazit
položek na stránku
Hledat obrázek podle názvu:

sestupněDatum     Název     Uživatel     Velikost (bajtů)     Popis
21. června 2019, 08.08     Vzor.ods (soubor)     Peterson     41 kB

Ale po klikutí se objeví toto stejně jako když volám bez přímé předvolby :

wiki napsal(a)

Strict Standards: Non-static method MediaHandler::getLongDesc() should not be called statically, assuming $this from incompatible context in /home/webs/openoffice.cz/wiki/web/w/includes/filerepo/File.php on line 1215

Warning: Parameter 2 to Parser::parse() expected to be a reference, value given in /home/webs/openoffice.cz/wiki/web/w/includes/StubObject.php on line 58

Fatal error: Call to a member function getText() on a non-object in /home/webs/openoffice.cz/wiki/web/w/includes/OutputPage.php on line 530

     Takže vím jen to, co mi napíšete sem. Nevím ani jestli si poradíte s postupem podle následujícího popisu :
1. načteme cyklem všechna jména listů a ze jmen separujeme textovými funkcemi.
2. Ve Vašem případě stačí zjistit jen poslední list a cyklem od konce se startem na číslu pořadí znaku Chr()="/". Pokud ano slučujeme znaky až do první mezery. Dostaneme znaky mezi mezerou a lomítkem
3. toto je string který který převedeme na číslo kterému přičteme jedničku.
4. vytvoříme nový list pomocí jména + nového pořadí DL.

     Makro se dá nastavit celkem variantně například na události listu ale i jinak. Je možné že pro Váš nový název postačuje jen číslo dodáku a jméno tam vložíte například z paměti, nebo seperátním makrem které sloučí jméno & číslo objednávky.
     Ona ta šablona může být již vyplněným vzorem a nejprve se do ní manuálně vybere (roletkou) zákazník, podle něj se vloží vzorcem adresa a podobně. Schází jenom pořadové číslo do správné kolonky a pro tvorbu nového listu. Ten se už může opírat jako název přímo o formulář. Je mi to celkem jedno. Posílám kód který zobrazí jméno posledního listu. Vy ho pak rozeberte textovými prostředky podle návodu výše a vytvořte nové jméno podle potřeby :

Sub JmenoPoslednihoListu
Dim oSheets as object : Dim sVar as string : Dim iVar as integer
iVar = ThisComponent.Sheets.Count()-1
svar = thisComponent.Sheets(iVar).Name
print sVar
End Sub

Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 24. 6. 2019 12:07:26

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

No bohužel to nahrávání souborů na Wiki stále zlobí. Dalo mi práci, než jsem to tam dostal a navíc až z Exploreru (Firefoxem to vůbec nešlo)

Offline

#6 24. 6. 2019 14:12:57

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

Ten obrázek by mi napověděl jak má vypadat číslování. Většinou se dodáky a faktury číslují čísly s pevným počtem čísel. Například od 0001/19 do 9999/19. Celkem to lze udělat i na přirozenou - proměnlivou délku od 1/19 do 9999/19.
     Rozdíl je "estetický", ale z pohledu rozkladu a číslování (+1) + konstrukce nového názvu je celkem odlišná. Dohromady je to víc detailů které je potřebné zohlednit.


     Například skutečnost kdy někdo manuálně přetáhne poslední list na jiné místo. V ten okamžik se načte úplně jiný list (nejspíš předposlední). Horší jsou důsledky kdy může dojít k zadání dvou stejných pořadových čísel. Už jenom takové nebezpečí by se mělo eliminovat i když je to možná ve Vašem případě nepravděpodobné. To vychází také z praktické skutečnosti.
     Názvy listů jsou dost dlouhé a tak budeme mít viditelných jen několik "prvních" listů. Na poslední listy - které jsou aktuálnější se musíme prokliknout. Také proč mít k dispozici kliknutí pouze na méně aktuální první listy?
     Takže potom se nabízí buď řazení od konce. Tedy vedle hlavního listu "dodací list" bude napravo vždy list poslední, následně více vpravo "předposlední" a tak dál. To je možnost rychlé kontroly - podíváme se co jsme dělali naposledy.
     Jinou podobně fungující kontrolou je sloupec v listu "dodák" který je mimo tiskovou oblast. Umožňuje kliknout na název a skočit do hledaného listu. Na jednotlivých listech by měl být zpětný odkaz na "hlavní list". Vše lze udělat vzorcem a makrem.


     Nevím co vše si umíte zkonstruovat a tak jsem poslal jen extrakci posledního listu i když mám za správnější postup otestování všech listů na pořadové číslo a teprve potom vrátit poslední které navýšíme o +1.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 25. 6. 2019 11:56:00

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 82

Re: Změna pořadového čísla - VYŘEŠENO

Mohl byste to nahrát na uloz.to a dát sem odkaz? Na uloz.to jde i nahrávat aniž byste se musel registrovat. Pokud v tom sešitě není ono makro které na to používáte, nahrajte sem prosím i kód toho vašeho makra. Rád bych se na to též podíval.

Offline

#8 25. 6. 2019 12:32:38

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

Offline

#9 25. 6. 2019 18:00:54

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 82

Re: Změna pořadového čísla - VYŘEŠENO

Takže v té vaší ukázce jsem předělal to makro. Teď to funguje tak, že po kliknutí na tlačítko "nova" se z buňky E1 vezme ten název (je tam 06/19) a zvětší se o 1 číslo měsíce (když bude prosinec tak dá na 01 a zvětší o 1 rok) a tento název se objeví v inputboxu (namísto 06/19 se objeví 'Vzor 0719'). Když bude tento název potvrzen, tak se ten list 'Vzor 0619' zkopíruje do nového listu s názvem z inputboxu (tedy 'Vzor 0719') a přepne se na ten nový zkopírovaný list ve kterém se změní buňka E1 též na nový název (na 07/19).

Ukázka zde:
https://uloz.to/!w7BaHf9M5Usk/vzor-uprava1kl-ods

Offline

#10 25. 6. 2019 19:57:23

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

Tak jsem to trošku předělal. Jsou tam určité novinky. Přidal jsem list adresář ze kterého se vybírají klienti podle názvu. Vzorce doplní hlavičku automaticky. Chtěl jsem tam udělat víc vychytávek, ale myslím že o to nemáte zájem.


     K číslování dodáků používám buňku E1 která se automaticky přečísluje (nyní je tam 00/19). Toto je výchozí údaj který byste neměl manuálně obsluhovat. Chtěl jsem původně zamykat buňky aby se nestal problém ale to jen v případě dožádání.


     Asi budete muset nejprve uložit PDF ale je to celkem jedno. Po vytvoření nového listu tam už nejsou tlačítka. Je to tady Vzor úprava 1


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#11 26. 6. 2019 06:40:41

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

Pánové děkuji. Mrknu na to.

Offline

#12 26. 6. 2019 09:37:50

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 82

Re: Změna pořadového čísla - VYŘEŠENO

neutr: v té vaší ukázce chybí ty vzorce pro to, aby se při výběru firmy z roletky přepsala adresa/IČa/kontakty v buňkách C7-C11, natvrdo tam zůstává: Ještědská 1524/2 atd.
Jinak výtečná ukázka, hned mě potěšilo když jsem se dozvěděl že nemusím testovat názvy listů ve smyčce ale je na to metoda oSheet.hasByName :-)

Offline

#13 26. 6. 2019 11:09:26

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

Jj - máte pravdu omlouvám se. Nevím jak se to mohlo stát. Včera mi to do poslední chvíle chodilo dobře. Dnes kontroluji zdroj postnutý na Uložto.cz a ve zdroji mám jen texty. Tady je oprava Vzor úprava 2.
     Došlo mi co se stalo. Já nikdy nevím Jaký poslední parametr zadat. Vždy jsem dával dvojku, ale z toho mne naposled někdo vyvedl (tuším pan Trnka) když jsem nemohl rozchodit vzorce. Tak jsem testoval a ověřoval setříděný sloupec. Ale jak se ztratily vzorce nevím.

Editoval neutr (26. 6. 2019 11:39:10)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#14 27. 6. 2019 10:11:45

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

kamlan napsal(a)

Takže v té vaší ukázce jsem předělal to makro. Teď to funguje tak, že po kliknutí na tlačítko "nova" se z buňky E1 vezme ten název (je tam 06/19) a zvětší se o 1 číslo měsíce (když bude prosinec tak dá na 01 a zvětší o 1 rok) a tento název se objeví v inputboxu (namísto 06/19 se objeví 'Vzor 0719'). Když bude tento název potvrzen, tak se ten list 'Vzor 0619' zkopíruje do nového listu s názvem z inputboxu (tedy 'Vzor 0719') a přepne se na ten nový zkopírovaný list ve kterém se změní buňka E1 též na nový název (na 07/19).

Ukázka zde:
https://uloz.to/!w7BaHf9M5Usk/vzor-uprava1kl-ods


Dobrý den,
toto řešení se mi líbí, ale potřebuji, aby to číslovalo pořád dál. Pořadové číslo není číslo měsíce, ale číslo v číselné řadě, takže se potřebuji dostat přes dvanáctku (41/19, 45/19, 101/19...).

@neutr - děkuji za řešení. Výběr zákazníku ovšem nevyužiju, jelikož pro každého zákazníka mám vlastní sešit a číselnou řadu.

Editoval peterson (27. 6. 2019 10:12:13)

Offline

#15 27. 6. 2019 11:26:02

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,931

Re: Změna pořadového čísla - VYŘEŠENO

peterson napsal(a)

@neutr - děkuji za řešení. Výběr zákazníku ovšem nevyužiju, jelikož pro každého zákazníka mám vlastní sešit a číselnou řadu.

     Nic se nestalo. Jenom mám dojem že pro dodací listy stejně jako pro faktury platí jednotnost číselných řad. Nemůže být u každého klienta jiná dokladová řada. Nicméne tuším že by se ukázalo že se nejdná o dadcí listy ve smyslu účetní osnovy ale o jinou interní evidenci.
     Už mám zkušenosti s tím když tazatel nechce nebo neumí popsat co opravdu potřebuje a tušil jsem to když jsem viděl ve Vašem příkladu 2 vzory. Myslel jsem si, že by to mohla být ukázka jak se mají zvyšovat čísla. Jenom název "vzor" jsem si nedovedl vysvětlit - logické by bylo napsat "jméno" plus ještě třeba číslo.
     Přes to jsem to udělal tak aby můj "vzor A" nabídl možnost, že vzorů bude více A...Z a podobně. Tak jak uvádíte v původním dotazu

peterson 21. 6. 2019 09:17:03 napsal(a)

př.: zákazníkA 0119 / zákazníkB 0119 atd.

Ale to odporuje definici číslování dodacích listů, respektive zakázek. nakonec vzor ukázal, že druhý "vzor" nemá stejné číslo. Proto jsem udělal to co uvádíte v popisu. Tedy jméno + číslo dodacího listu. Pro přesnost :

peterson 21. 6. 2019 09:17:03 napsal(a)

  prosím o radu.
  Mám dodací listy - co zákazník to sešit, každý nový DL je nový list v sešitu.
  V listi mám udělané makro - kliknu na tlačítko, vytvoří se kopie aktuálního listu, přejmenuji a uložím.
  Problém je, že pokaždé musím přepisovat číslo DL. Nešlo by zakomponovat do toho mého makra, aby se pořžadové číslo automaticky změnilo podle názvu listu? Komplikace je, že názvy listů obsahují jméno zákazníka a číslo
př.: zákazníkA 0119 / zákazníkB 0119 atd. V dodacím listu má číslo formát 01/19, 02/19...

     Takže komplex popisu mi říkal, že je něco nesprávně. Předpokládal jsem, že "dodací list" je dost jednoznačný výraz a chybou je popis vzoru př.: zákazníkA 0119 / zákazníkB 0119 atd.
     Přesvědčil mne postnutý vzor kde první list je značen "Vzor 0519" a druhý list "Vzor 0619". Opravdu super popis - uhodni jak to myslím a předlož návrh.


     To co nyní vyjadřujete odpovídá definici, že je potřebné generovat listy zákazníků které nejsou přímo dodacími listy - ale souhrny jednotlivý dodávek (což je častý případ kdy se fakturuje za určité období). Potom ale číslo na "DL" (buňka E1) není dodací list ale evidenční číslo zákazníka.
     To vlastní číslo zcela jistě není číslo dodacího listu ale číslem zakázky určitého zákazníka. není zřejmé zda takové číslování pokračuje i po roce kdy bylo zavedeno. (Číslo 19 je asi rok, a číslo před ním může být číslem zakázky jmenovaného zákazníka. Od tohoto počátku se na něj naváže i v letech dalších. Zákazník pak dostává ID svou první zakázkou. Ale to je do určité míry nesprávně. Výjimkou může být asi jen operační evidence, ale u regulérní účetní osnovy je to chyba.)


     Nechci mluvit místo kolegy "kamlana", ale také mu zadání nebylo moc jasné. Kamlan by neměl problém sestrojit číslování od 1 do XYZ. Toto zřejmě předělá. Když by se k tomu nedostal předělám to, ale to se nedělá pokud je autor k dispozici.


     Já si dovoluji takto obšírně komentovat jenom proto, že se vždy snažím co nejvíce detailů zjistit předem. Mám dost zkušeností s tím, že autor vzor podle "popisu" upřesní o pár detailů a nakonec se ukáže, že chtěl něco úplně jiného. Není to o tom, že by každý zadavatel měl umět bezchybně formulovat potřeby, ale o tom aby potřeby vykomunikoval - tedy upřesnil podle dotazu. U Vás právě toto chybí.


Omlouvám se, ale mrzí mne když neuhodnu to co myslíte i když to napíšete ze svého pohledu sebelépe.

Editoval neutr (27. 6. 2019 11:31:28)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#16 27. 6. 2019 14:37:29

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 82

Re: Změna pořadového čísla - VYŘEŠENO

Tak tady máte to číslování stále dál. Přidal jsem tam po vzoru neutra jen svislítko jako oddělovač mezi 0719 čili to neudělá např. Vzor 0719, nýbrž Vzor 07|19. Kdybyste to chtěl bez svislítka, tak asi 10.řádek v makru je sOddelovac="|", tak tam nechte prázdné uvozovky (sOddelovac="") - jen pozor, pro název listu tam třeba lomítko "/" použít nelze.
Předělávka zde:
https://uloz.to/!odtffK2lo9L8/vzor-uprava2kl-ods


Také jsem skutečně neporozuměl požadavku přesně, avšak všeobecně mi připadá, že když je problém popsán nepřesně, tak půjde o spíše jednoduché vylepšení co uživateli usnadní to co již s Calcem umí a dělá, než že by chtěl nějaké sofistikované až komplexní řešení.


Já sám jinak dělám s Calcem dost málo a zdaleka neznám všechny jeho možnosti a spíše se tak různě krůček po krůčku něco přiučuji; zde jsem se třeba od neutrova příkladu naučil jak se dělá s roletkami (a že to je z menu Data/Platnost) a že hodnoty jdou v jiných listech hledat jednoduše pomocí VLOOKUP. To si umím představit, že bych mohl někdy využít a za to jsem rád :-).

Offline

#17 9. 7. 2019 12:09:14

peterson
Člen
Registrace: 24. 9. 2009
Příspěvků: 20

Re: Změna pořadového čísla - VYŘEŠENO

Děkuji KAMLAN , funguje to dle představ.

Offline

Zápatí