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 :-).
]]>@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
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 :
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.
]]>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).
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.
]]>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
]]> 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.
]]>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 :
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