2_APC_CONTGEN

download 2_APC_CONTGEN

of 25

Transcript of 2_APC_CONTGEN

2. Analiza, proiectarea i dezvoltarea aplicaiei

2.1. Analiza structurilor de date folosite

La SC ALFA SA Iai, baza de date a contabilitii financiare, CONTGEN, va fi conceput pornind de la circuitul informaional al documentelor utilizate. Astfel, s-au n vedere doar documentele contabile utilizate pentru reflectarea la nivel sintetic a faptelor economice ce se desfoar ntr-o entitate economic, dup cum urmeaz: a. Documentele justificative, centralizate ntr-un document centralizator, sunt contate direct sau prin intermediul notelor contabile. Astfel, se obin articolele contabile;

b. c.

Articolele contabile de mai sus stau la baza ntocmirii registrului Jurnal i registrului Carte-Mare, aceste dou registre fiind obligatorii prin lege; Pe baza celor dou registre se ntocmete balana de verificare cu una sau mai multe egaliti.

Pentru aplicaia CONTGEN acest circuit se respect aproape n totalitate, dar cu unele particulariti: a. Documentele justificative sunt preluate n baza de date a contabilitii sintetice printr-o machet special (ecran de lucru), care reproduce nota contabil;

b. c.

Notele contabile, la rndul lor, cu articolele contabile corespondente sunt centralizate n Jurnalul de nregistrare; Pe baza datelor din Jurnal i din Balana de verificare iniial se pot obine, la cerere, fiele de cont (Cartea-Mare) i balana de verificare. Pentru proiectarea bazei de date CONTGEN vom prezenta mai jos documentele contabile amintite mai sus, care sunt necesare reflectrii n contabilitatea sintetic a operaiunilor economice ce au loc.

Tabel 2.1. Model de REGISTRU JURNALREGISTRUL JURNAL Nr. pagin Nr. Crt. 1 Data nreg. 2 Documentul (felul, nr. data) 3 Explicaii 4 Report: Simbol conturi Debitoare Creditoare 5 x 6 x Debitoare 7 Sume Creditoare 8

ntocmit,

De reportat: Verificat,

14-1-1

A4

Tabel 2.2. Model de balan de verificare cu patru serii de egalitiBalana de verificare la data de .

Solduri iniiale Cont Denumire cont Debitoare Creditoare Debitoare

Rulaje Creditoare Debitoare

Total sume Creditoare Debitoare

Solduri finale Creditoare

*

TOTAL

Tabel 2.3. Model de Fi de contCarte - Mare cont: DEBIT Data Explicatii Sold initial Nota Cont creditor Sume debitoare Data CREDIT Explicatii -leiNota Cont debitor Sume creditoare

Rulaj debitor Total sume debitoare Sold final creditor

Rulaj creditor Total sume creditoare 0

La toate acestea se adug Planul de conturi general n care includem doar conturile sintetice de gradul I.Tabel 2.4. Model de Plan de conturi generalSimbol Cont PLAN DE CONTURI Denumire cont 101 Capital social 104 Prime legate de capital Tip Cont

Not: Includem n planul de conturi doar conturile sintetice de gradul I. Acest lucru presupune c simbolul contului nu poate fi dect n intervalul 982.

Relaia universalRelaia universal pentru o baz de date reprezint ansamblul elementelor informaionale (denumite atribute) din documentele prezentate anterior. n acest ansamblu nu este voie s se cuprind un element (atribut) de dou ori. Pentru aceasta vom ntocmi tabelul 2.5 cu ajutorul cruia s realizm o analiz a componentelor informaionale ale bazei de date CONTGEN.Tabel 2.5. Analiza componentelor informaionale pentru baza de date CONTGEN

Element Data nregistrrii Fel document Nr. document Data documentului Explicaii Simbol cont debitor Simbol cont creditor Sume debitoare Sume creditoare Simbol cont Denumire cont Solduri iniiale debitoare Solduri iniiale creditoare Rulaje debitoare Rulaje creditoare Total sume debitoare Total sume creditoare

Nume Data_op Fel_doc Nr_doc Data_doc Explic Cont_D Cont_C Sume_D Sume_C Cont Den_Cont Sold_init_D Sold_init_C Rulaj_D Rulaj_C -

Observaii

Trebuie s fie cuprins ntre 101-982, fr analitice. Trebuie s fie cuprins ntre 101-982, fr analitice.

Trebuie s fie cuprins ntre 101-982, fr analitice.

Se poate obine din solduri iniiale i rulaje Se poate obine din solduri iniiale i rulaje

Element Sold final debitor Sold final creditor Data Explicaii Nota contabil Cont corespondent creditor Suma debitoare Data Explicaii Nota contabil Cont corespondent debitor Suma creditoare Simbol cont Denumire cont Tip cont

Nume -

Nota

Observaii Se poate obine din solduri iniiale i rulaje Se pot obine din solduri iniiale i rulaje Se poate prelua din Jurnal Se poate prelua din Jurnal Este necesar n Jurnal Se poate prelua din Jurnal Se poate prelua din Jurnal Se poate prelua din Jurnal Se pot prelua din Jurnal Se poate prelua din Jurnal Se poate prelua din Jurnal Se poate prelua din Jurnal Se repet n Balan Se repet n Balan

Tip_Cont

Din tabelul precedent putem construi relaia universal a viitoarei baze CONTGEN, care se prezint astfel:RU(Data_op, Fel_doc, Nr_doc, Data_doc, Explic, Cont_D, Cont_C, Sume_D, Sume_C, Cont, Den_Cont, Sold_init_D, Sold_init_C, Rulaj_D, Rulaj_C, Nota, Tip_Cont)

*** n urma operaiilor de normalizare s-au obinut relaiile JURNAL, BALANTA i PLAN, cu urmtoarele atribute i restricii:

JURNAL: Data_op, D, 8; Fel_doc, C, 12; Nr_doc, N, 8; Data_doc, D, 8; Explic, M, 4; Cont_D, N, 3; Cont_C, N, 3 ; Suma, N, 15, 2; Nota, N, 5. Restricii: Data_op trebuie s fie n anul curent Cont_D i Cont_C trebuie s fie n intervalul 101-982 Chei strine: Cont_D Cont_C

BALANTA cu atributele: Cont, N, 3; Sold_init_D, N, 15, 2; Sold_init_C, N, 15, 2; Rulaj_D, N, 15, 2; Rulaj_C, N, 15, 2. Restricii:

Cont trebuie s fie n intervalul 101-982

PLAN cu atributele: Cont, N, 3; Den_Cont, C, 35; Tip_Cont, C, 1. Restricii: Cont_D i Cont_C trebuie s fie n intervalul 101-982 Tip_Cont trebuie sa fie A, P sau

2.2. Particularizarea analizei, proiectrii i conceperii pe mediul MSO Excel & VBAAm ales s folosim un model de dezvoltare care s permit: 1. 2. 3. Analiza i conceperea modelului de rezolvare; Construirea modelului de rezolvare; Generalizarea modelului de tabel.

Dup cum se observ din cerinele aplicaiei, aceasta este structurat pe mai multe module, dup cum urmeaz:

modulul Carte Mare (Jurnal). Pentru o mai bun nelegere a dezvoltrii aplicaiei vom parcurge etapele rezolvrii problemei pentru fiecare modul.

modulul plan contabil general (PCG); modulul solduri iniiale (Solduri); modulul operaii n jurnal (Jurnal); modulul balan de verificare (Balanta); modulul grafice (Jurnal);

A. Modulul Plan contabil general (PCG)n cazul aplicaiei noastre, planul contabil general este un nomenclator pentru conturile sintetice de gradul I. Avnd n vedere faptul c n cadrul acestuia au loc modificri minore am considerat c toate datele sunt introduse de ctre dezvoltator. A.1. Analiza problemei A.1.1. Date de intrare. Aa cum se observ i din modelul pus la dispoziie vom avea: numr curent, NRC; simbol cont, CONT; denumire cont, DEN_C. A.1.2. Date de ieire. Pentru acest modul nu dispunem de date de ieire; A.1.3. Relaii de calcul. Nu dispunem n acest modul nici de relaii de calcul; A.2. Proiectarea modelului de tabel A.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care va fi localizat modelul se va numi PCG i va fi structurat astfel:

5 D E 6 7 Nr. 8 crt. Cont 9 10 11 12 37 204 205

F PLAN DE CONTURI Denumire cont

A.2.2. Analiza zonelor de lucru.

Zone de intrare: (D9:F205); Zone de ieire: nu este cazul; Relaii ntre linii i coloane: nu este cazul; Formatarea zonelor: zona D9:E205 se va formata format fix, 0 zecimale; Protecia zonelor de lucru. Zona (D9:F205) va fi neprotejat, iar restul foii de calcul va fi protejat.

B. Modulul Solduri iniiale (Solduri)Soldurile iniiale la un cont se introduc la nceputul perioadei de gestiune. n cazul aplicaiei noastre dispunem de un modul de lucru asemntor unei balane de verificare pe solduri iniiale, prin care putem atribui solduri iniiale fiecrui element patrimonial. n acest modul nu se vor introduce conturile fr solduri iniiale. Introducerea simbolului de cont va avea ca efect apariia denumirii acestuia, ca urmare a apelrii unei macrocomenzi prin combinaia CTRL+D. B.1. Analiza problemei B.1.1. Date de intrare. Aa cum se observ i din modelul pus la dispoziie vom avea: 1. simbol cont, CONT; 2. sold iniial debitor, SID; 3. sold iniial creditor, SIC. B.1.2. Date de ieire: 1. Denumire cont, DEN_C; 2. Total solduri iniiale debitoare, TSID; 3. Total solduri iniiale creditoare, TSIC; 4. Diferen debit fa de credit, DIF; 5. Mesaj de atenionare, MESAJ. B.1.3. Relaii de calcul. TSID=SID TSIC=SIC DIF=TSID-TSIC Pentru denumirea contului (DEN_C) nu dispunem de o relaie de calcul, ci se va proceda de la preluarea sa pe baza datelor din planul de conturi (PCG), n timp ce pentru MESAJ vom avea o funcie de evaluare a cazului n care ne aflm. B.2. Proiectarea modelului de tabel B.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care se va dezvolta modelul se va numi Solduri i va fi structurat astfel:

4 C D 5 6 Cont Denumire cont 7 201 202 203 204 TOTAL 205 Diferenta Debit-Credit/

E F Solduri initiale Debitoare Creditoare

0

B.2.2.

Analiza zonelor de lucru. Zone de intrare: (C7:C203) i (E7:F203). Zone de ieire: (D7:D203), (E204:F204), D205 i F205; Relaii ntre linii i coloane:

Pentru denumire cont (DEN_C) vom folosi funcia de cutare pe vertical VLOOKUP(argumente), care, pe baza simbolului, va extrage denumirea din nomenclatorul planului de conturi. D7=VLOOKUP(C7,PCG!$E$9:$F$205,2)Not : n aceast funcie, C7 este cheia dup care se face cutarea n coloana cont a planului de conturi (PCG !E9 :E205). n zona de cutare specificat, PCG !$E$9 :$F$205, denumirea contului se afl n coloana a doua (vezi pe 2 din funcie).

Pentru copierea formulei vom folosi o macro-comand cu numele Den. Coninutul acestei macro-comenzi este prezentat la finalul acestui studiu de caz. E204=Sum(E7:E204) F204=Sum(F7:F204) D205= IF(F2050,Diferenta Debit-Credit, ) F205= IF(E204=F204,0,F204-E204) Formatarea zonelor: zona (C7:C203) format fix, 0 zecimale; zonele (E7:F204) i F205, format fix, 2 zecimale. Protecia zonelor de lucru. Protejate la scriere sunt zonele de ieire: (E204:F204), D205 i F205.Explicaii: Pentru introducerea simbolului de cont se va proceda la preluarea sa dintr-o list ataat fiecrei celule din zona (C7:C203).

Figura 3. Ameliorarea intrrilor Pentru realizarea prelurii simbolului de cont dintr-o list se va crea n aceeai foaie de calcul a unei liste cu toate conturile din planul de conturi, prin copierea simbolurilor din modulul PCG. Zona astfel creat este (M206:M404). Declararea acestei liste ataate se realizeaz prin selecia zonei (C7:C203) i apelarea meniului Data cu opiunea Validation (Validare), dup care se va selecta pe rnd cadrul Setri, Mesaj de intrare i Avertizare la eroare.

205 M 206 207 Cont 208 101 403 786 404 787 n mod similar se procedeaz i cu apariia mesajului de intrare Tastati CTRL+D de la denumirea contului. Not: Zona declarat list pentru simbolul contului presupune urmtoarea relaie de calcul (preluare): M208=PCG!E9

Figura 4. Introducerea listei de valori i a mesajelor

C. Modulul Operaii n jurnal (Jurnal)Modulul Jurnal permite preluarea operaiunilor aferente unei perioade de gestiune, precum i stabilirea perioadei de gestiune pe care o dorim. C.1. Analiza problemei C.1.1. Date de intrare. Aa cum se observ i din modelul pus la dispoziie vom avea: nceput perioad, Datai; Sfrit perioad, Datas; Data operaiei, Dataop; Explicaii, Explic; Nota contabil, Nota; Cont debitor, Cont_D; Cont creditor, Cont_C; Sume debitoare, Sume_D; C.1.2. Date de ieire. n acest modul dispunem de urmtoarele date de ieire: - Sume creditoare, Sume_C;

-

Sume debitoare la nchidere conturi, Sume_DI; Sume creditoare la nchidere conturi, Sume_CI; Cont creditor de cheltuieli, Cont_CC; Cont debitor de venituri, Cont_DV; Total sume debitoare, TSD; Total sume creditoare, TSC.

C.1.3. Relaii de calcul: Sume_C=Sume_D Sume_DI=rulaje_cont_venituri Sume_CI=rulaje_cont_cheltuieli Cont_CC=Cont_chelt_lista Cont_DV=Cont_venit_lista TSD=Sume_D+Sume_DI TSC=Sume_C+Sume_CI C.2. Proiectarea modelului de tabel C.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care se va dezvolta acest modul va avea numele Jurnal, iar modelul de tabel va fi structurat astfel:4 Registrul Jurnal Perioada de gestiune Cont Cont Nota debitor creditor conturi de cheltuieliIC conturi de cheltuieliIC conturi de cheltuieliIC conturi de cheltuieliIC conturi de venituri IV 121 121 121 121 701 787 * 121 691 121 0 600 601 602 0 0 0 1-Jan-00 31-Jan-00 Sume Sume debitoare creditoare 0 0 0 0 0 0 0 0

5Data Explicatii 6 105 10631/01/00Inchidere 10731/01/00Inchidere 10831/01/00Inchidere . 14331/01/00Inchidere 31/01/0 1440 Inchidere

17031/01/00Inchidere conturi de venituri IV 171 * TOTAL OPERATII *

*

Pentru preluarea din list numai a conturilor din planul contabil general vom avea o zon de lucru n aceeai foaie de calcul structurat astfel:173 AA 174 175 Cont 176 101 371 786 372 787

C.2.2. Analiza zonelor de lucru. Zone de intrare: (H4:I4) i (C6:H105); Zone de ieire (C106:C170), (I6:I105), (G106:I143), (F144:F170) i (H144:I171); Relaii ntre linii i coloane: C106=I4, C170=I4; I6=H6, , I105=H105; G106=AA308, , G143=AA345; H106=I106, , H143=I143; I106=SUMIF($F$6:$H$105,G106,$H$6:$H$105)

I143=SUMIF($F$6:$H$105,G143,$H$6:$H$105) F144=AA346, , F170=AA372; H144=I144, , H170=I170; I144=SUMIF($F$6:$H$105,F144,$H$6:$H$105); I170=SUMIF($F$6:$H$105,F170,$H$6:$H$105); H171=sum(H6:H170); I171=sum(I6:I170).Not: Zona declarat list pentru simbolul contului presupune urmtoarea relaie de calcul (preluare): AA176=PCG !E9

Figura 5. Restricionarea domeniului pentru data operaiunii

Formatarea zonelor: zonele (H4:I4) i (C6:C170) se vor formata tip data calendaristic; zona (H6:H105) format ir de caractere; zonele (F6:I171) format fix, zero zecimale; Protecia zonelor de lucru. Zone de ieire (C106:C170), (I6:I105), (G106:I143), (F144:F170) i (H144:I171) vor fi protejate la scriere.

Explicaii: Declararea intervalului de preluare a datei calendaristice se realizeaz prin selecia zonei (C6:C105) i selectarea meniului Data/Validation (vezi figura 5). n mod similar se procedeaz i cu preluarea contului debitor (zona F6:F105) i a contului creditor (zona G6:G105).

D. Modulul Balan de verificare (Balana)Modulul Balana permite centralizarea datelor din timpul perioadei de gestiune alturi de datele de la nceputul perioadei (solduri iniiale din foaia de calcul Solduri). D.1. Analiza problemei

D.1.1. Date de intrare. n acest modul nu dispunem de date de intrare. Cu alte cuvinte informaiile introduse pn la acest moment sunt agregate n balana de verificare. D.1.2. Date de ieire. Pentru acest modul dispunem de urmtoarele date de ieire; - Simbol cont, Cont; - Sold iniial debitor, SID; - Sold iniial creditor, SIC; - Rulaje debitoare, RD; - Rulaje creditoare, RC; - Total sume debitoare, TSD; - Total sume creditoare, TSC; - Sold final debitor, SFD; - Sold final creditor, SFC; - Total solduri iniiale debitoare, TSID; - Total solduri iniiale creditoare, TSIC; - Total rulaje debitoare, TRD; - Total rulaje creditoare, TRC; - Total total sume debitoare, TTSD; - Total total sume creditoare, TTSC; - Total sold final debitor, TSFD; - Total sold final creditor, TSFC; - Antet balan, Antet. D.1.3. Relaii de calcul: SID= Solduri iniale debitoare din modulul Solduri; SIC= Solduri iniale creditoare din modulul Solduri; RD= rulaje_cont; RC= rulaje_cont; TSD=SID+RD; TSC=SIC+RC; SFD=TSD-TSC; SFC=TSC-TSD; TSID=SID; TSIC=SIC; TRD=RD; TRC=RC; TTSD=TSD; TTSC=TSC; TSFD=SFD; TSFC=SFC; Antet=Balan de verificare la data +Datas D.2. Proiectarea modelului de tabel D.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care se va dezvolta acest modul va avea numele Balana, iar modelul de tabel va fi structurat astfel:5 6 7 8

E

F

G

H

I

J

K

L

M

N

O

Balanta de verificare la data de 31/1/2000

Solduri Denumir initiale e Debit Credit 10 Cont cont9 11

Rulaje Debit Credit

Total sume Debit Credit

Solduri finale Tip Debit Credit 1

20 7 20 8

*

TOTAL

D.3.2. Analiza zonelor de lucru. Zone de intrare: nu dispunem de zone de intrare n acest modul;

Zone de ieire (E11:N207), (G208:N208) i (O11:O208); Relaii ntre linii i coloane: E11=PCG!E9, N207=PCG!E205; F11=VLOOKUP(E11,PCG!$E$9:$F$205,2);

1

2

=$AF$373

3 4

Figura 6. Realizarea tabelului pivot pentru rulajele debitoare ale conturilor

Preluarea soldurilor iniiale se face folosind foaia de calcul Solduri din care extragem soldul fiecrui cont cu ajutorul funciei SUMIF. G11=SUMIF(Solduri!$C$7:$F$203,Balanta!E11,Solduri!$E$7:$E$203); H11=SUMIF(Solduri!$C$7:$F$203,Balanta!E11,Solduri!$F$7:$F$203); Pentru preluarea automat a rulajelor ne vom folosi de facilitatea tabele pivot construite pe baza coninutului bazei de date Jurnal!$C$5:$I$171 (vezi figura 1-4). n prima etap se rezolv rulajele debitoare, apoi in mod similar rulajele creditoare. Zona de lucru destinaie pentru calcularea rulajelor debitoare (coloanele AF i AG) i a celor creditoare (coloanele AH i AI) este prezentat mai jos:

372

AF

AG

AH

AI

373 Debit 374 Sum of Sume debitoare 375 Cont debitor 376 . 428 429 430 431

SumeD Total

Credit Sum of Sume creditoare Cont creditor

SumeC Total

(necompletat) Total general

0 731370000

Not: Nu se poate preciza ultima linie deoarece aceasta este n funcie de numrul conturilor folosite. n aceste condiii : I11=SUMIF(Jurnal!$AF$376:$AG$572,Balanta!E11,Jurnal!$AG$376:$AG$572); J11=SUMIF(Jurnal!$AH$376:$AI$572,Balanta!E11,Jurnal!$AI$376:$AI$572); K11= G11+I11; L11= H11+J11; M11= IF(K11>L11,K11-L11,0); N11=IF(K11TSC, iar mesaj sold final creditor trebuie s apar pe debit numai atunci cnd TSC>TSD. E.2. Proiectarea modelului de tabel E.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care se va dezvolta acest modul are numele Jurnal, iar modelul de tabel va fi structurat astfel:

Modulul Carte mare se

Figura 7. Obinerea Carii Mari pentru un cont la cerere

E.2.2. Mod de lucru cu modelul 1. Se activeaz butonul Vizualizare CM; 2. Se selecteaz un simbol de cont din meniul ataat butonului (o singur dat click); 3. Se activeaz o macro-comand care: a. Extrage valori pentru debit si pentru credit; b. Mut aceste valori mai jos cu un rnd pentru a putea scrie Sold iniial; c. Scrie Sold iniial i formula de extragere a acestuia n B12, respectiv BJ12; d. Numr rndurile pe debit i cele de pe credit i le compar, pentru a tii unde se nchide contul; e. Aplic tehnica de determinare a rulajelor, a total sumelor i a soldului final; f. Revine n lista cu conturi; 4. Se poate relua operaia pentru un alt cont. Not: Dac se d dublu-click, atunci etapa nr. 4 nu se mai execut. Butonul Prsire d posibilitatea ieirii din machet.Explicaii: Numele macro-comenzii este Teu i este prezentat la finalul acestei aplicaii.

Realizarea machetei presupune inserarea unei noi foi de dialog prin click-dreapta mouse pe un nume de foaie de calcul. Se selecteaz Inserare i se adaug un modul de Dialog MS Excel 5.0 (Figura 1-6)

Figura 8. Inserarea unui modul de dialog Dup aceast inserare se ajunge ntr-un proiectant de machete. Se introduce o etichet (Caset de grupare), n cazul nostru Explicaii. Selectai un cont simbolul acestuia. Se apeleaz din Machete (Forms) o caseta list, care s ofere posibilitatea afirii listei de conturi din (PCG!E9:E205). Precizarea domeniului se face prin dublu-click pe caseta i selectare opiune Formatare control. Rezultatul simplei selectii va fi dus n celula de legatur AZ6. Pentru a face legtura cu macro-comanda se selecteaz dup dublu. Pentru crearea butonului se alege din Machete obiectul Buton, se modific eticheta acestuia, se d dublu-click pe suprafaa sa pentru activarea ferestrei Formatare control, de unde se selecteaz cadrul de pagin Control, iar n acesta se activeaz casetele de validare Implicit i ndeprtare (vezi figura 1-8)

Figura 9. Asociere macro-comand, declarare domeniu i celul de legtur (Nr_List) Dup realizare machet, pentru numele modulului de dialog se schimb numele n C_M.

Butonul Vizualizare CM din foaia de calcul Jurnal s-a dezvoltat n mod similar butonului Prsire i are ataat o macrocomand cu numele C_M, care conine o instruciune de afiare a acestei machete (vezi coninutul acesteia la sfritul aplicaiei).

Figura 10. Ataarea aciunilor pentru butonul Prsire

F. Modulul Grafice

Ne propunem s evideniem n mod grafic cheltuielile i veniturile dintr-o perioad. Logica de lucru cu modulul Grafice const n interogarea zonei din Jurnal rezervate conturilor de venituri i celor de cheltuieli prin folosirea unor criterii compuse. Astfel, pentru cheltuieli simbolul contului trebuie s fie >=600 i =700 iar suma debitoare diferit de zero. F.1. Analiza problemei F.1.1. Date de intrare: nu este cazul. F.1.2. Date de ieire. n acest modul dispunem numai de date de ieire, astfel: - Cont debitor, Cont_D; - Cont creditor, Cont_C; - Sume debitoare, Sume_D; - Sume creditoare, Sume_C; F.1.3. Relaii de calcul. Pe baza zonelor de criterii se obin n mod separat, prin interogare, veniturile i cheltuielile. F.2. Proiectarea modelului de tabel F.2.1. ncadrarea modelului n foaia de calcul. Foaia de calcul n care se va dezvolta acest modul are numele Jurnal, iar modelul de tabel va fi structurat astfel:

3 4

CC

CD Cont creditor =600 7 8 9 10 11 12 13 14 15 16 17 18

Cont debitor >=700

Venituri Cheltuieli -leiCont Sume Sume debitor debitoare Cont creditor creditoare 707 75000000 600 8500000 722 5000000 607 45000000 625 450000 626 1500000 641 10000000 645 3700000 681 1000000

Figura 11. Obinerea situaiei centralizatoare pentru Venituri i Cheltuieli

F.2.2. Mod de lucru cu modelul a. Obinerea veniturilor. Apelm meniul Date/Filtrare/Filtrare (Data/Filter/Advanced Filter) i vom specifica coordonatele listei (C5:I70), criteriile de (CC5:CE6) i destinaia rezultatelor (CE11:CF11) i se activeaz butonul Ok; b. Obinerea cheltuielilor. Apelm meniul Date/Filtrare/Filtrare (Data/Filter/Advanced Filter) i vom specifica coordonatele listei (C5:I70), criteriile de (CH5:CI6) i destinaia rezultatelor (CG11:CH11) i se activeaz butonul Ok;

complex interogare complex interogare

Figura 12. Interogarea pentru venituri

Pe baza datelor obinute se pot realiza diverse tipuri de grafice.

2.3. Generalizarea modelului de tabelGeneralizarea aplicaiei se realizeaz prin conceperea unui meniu principal (figura 1-11) care s permit gestionarea tuturor operaiilor de rutin cu posibilitatea revenirii de fiecare dat la meniul principal. Pentru crearea meniului principal este necesar s se insereze un modul dialog. Noi am denumit acest modul Meniu. Pentru a asigura revenirea n meniul principal este necesar s se construiasc o serie de butoane, care s aib ca sarcin aceast revenire.

Macrocomanda SOLDURI Macrocomanda ARTICOL Macrocomanda Refac_Bal Macrocomanda Vad_CM Macrocomanda Vad_Jurnal

Macrocomanda List_Jurnal

n cadrul fiecrui modul am adugat asemenea butoane folosind instrumentele din Machete. n acelai timp, se blocheaz defilarea zonei de antet din model pentru a putea accesa butoanele declarate i pentru a avea la dispoziie antetul de tabel.

2.3.1. Generalizarea modulului SolduriPentru accesarea din meniul principal a modulului Solduri este necesar s se activeze butonul Solduri iniiale. n plus, vom aduga n zona de preluare a soldurilor butonul Ajutor, care ofer informaii despre cum se lucreaz i butonul Revenire Meniu, care afieaz meniul principal dup ce, n prealabil, ne avertizeaz c este necesar dezactivarea filtrrilor automate.

Macrocomanda List_Bal

Macrocomanda Vad_Balanta Macrocomanda Grafice

Figura 1-11. Meniul principal al aplicaiei CONTGEN

Figura 14. Butoane adugate n Solduri

2.3.2. Generalizarea modulului Operaii n jurnalPreluarea automat a operaiilor n Registrul Jurnal presupune apelarea din meniul principal a butonului Articole contabile, care va avea ca efect poziionarea n foaia de calcul Jurnal n zona registrului. Aici se vor introduce toate operaiile pe baz de not contabil. Blocarea antetului de registru conduce la pstrarea antetului de tabel pentru Registru Jurnal, iar n plus, butonul REVENIRE MENIU este disponibil tot timpul.Figura 15. Preluarea articolelor contabile

Aici se pune i problema vizualizrii registrului Jurnal i a listrii acestuia. Astfel, dup activarea butonului de vizualizare a Jurnalului din meniul principal se transfer controlul n foaia de calcul Jurnal, se selecteaz zona Jurnal i se filtreaz zona de rndurile ce nu sunt completate (autofilter). n mod similar se pune problema la listarea jurnalului, dar zona selectat este trimis i la imprimant. Not: La finalizarea operaiei este necesar dezactivarea filtrrii.

2.3.3. Generalizarea modului Balan de verificaren legtur cu balana de verificare apar urmtoarele probleme: Refacerea balanei de verificare; Vizualizarea balanei de verificare; i Listarea balanei de verificare. Refacerea balanei de verificare presupune refacerea tabelului pivot pentru rulaje debitoare i a celei pentru rulaje creditoare, cu revenirea ulterioar n meniul principal. Vizualizarea balanei de verificare are n vedere selectarea zonei atribuit balanei de verificare din foaia de calcul Balana, urmat de o eliminare (filtrare) a conturilor care nu prezint nici solduri iniiale i nici rulaje. n acelai timp, se blocheaz antetul balanei de verificare i se adaug un buton de revenire n meniul principal. nainte de revenire este necesar s se renune la autofiltrarea dup tip. Listarea balanei de verificare presupune n plus, fa de vizualizare, ca zona selectat s fie trimis la imprimant.

2.3.4. Generalizarea modulului Carte-MarePentru acest modul se are n vedere realizarea legturii cu butonul Carte Mare a zonei din foaia de calcul Jurnal destinat acesteia. n aceast zon dispunem de dou butoane de comand: unul pentru vizualizare i un altul pentru tiprire. La activarea unui buton din cele dou se activeaz modulul de dialog C_M, care permite realizarea repetat a situaiei pentru diferite conturi. i n acest modul dispunem de un buton pentru revenirea n meniul principal.

Figura 16. Generalizarea obinerii Crii Mari pentru un cont

2.3.5. Generalizarea modulului Grafice

Generalizarea modulului Grafice presupune extragerea automat a sumelor pentru cheltuieli i a celor pentru venituri i realizarea a dou grafice separate de tip histogram. i n aceast zon dispunem de un buton pentru revenire n meniul principal.

Figura 17. Extragerea datelor pentru grafice

Figura 1-16. Reprezentarea automat a veniturilor

Figura 18. Reprezentarea automat a cheltuielilor

2.4. Macrocomenzile asociate generalizrii modelului aplicativ CONTGEN' Macro-comenzi aplicatie CONTGEN ' * 1 Declarare variabile

Public Public Public Public Public Public Public Public Public Public Public Public Public

optiune nume As String text As String rasp incep tsd tsc rand As Integer col As Integer curent r As Integer p As Integer q

' Procedura care se executa la intrarea in aplicatia CONTGEN '* 2 Procedura de initializare MENIU principal Sub Auto_Open() Application.ScreenUpdating = False DialogSheets("Meniu").Show Application.ScreenUpdating = True End Sub ' * 3 Parasire MENIU parasire/revenire in EXCEL 'Dezactivare proprietati Sub Dezact() Application.ScreenUpdating = True nume = "Teminat sesiune de lucru BALANTA" optiune = vbYesNo + vbQuestion + vbDefaultButton1 + vbAplicationModal text = "Doriti sa parasiti CONTGEN si MS Excel? " & Chr$(13) rasp = MsgBox(text, optiune, nume) If rasp = vbYes Then ActiveWorkbook.Save Application.Quit Else ActiveWorkbook.Save End If End Sub ' * 4 Refacere calcule in balanta de verificare Sub Refac_Bal() ' ' Refac_Bal Macro ' Macro recorded 3/20/01 by Alex TUGUI ' ' Keyboard Shortcut: Ctrl+r Sheets("Jurnal").Select ActiveSheet.PivotTables("PivotTable4").RefreshTable ActiveSheet.PivotTables("PivotTable5").RefreshTable ' Sheets("Meniu").Select End Sub ' * 5 Copiere denumire cont in Balanta pe solduri initiale Sub Den() ' Den Macro ' Keyboard Shortcut: Ctrl+d curent = ActiveCell.Address Range("D7").Select Selection.Copy Range(curent).Select ActiveSheet.Paste End Sub ' * 6 Afisarea unui mesaj informativ la introducere solduri initiale Sub Ajutor1() ' Ajutor1 Macro ' Keyboard Shortcut: Ctrl+j text = "Introduceti simbolul contului, apoi pozitionati cursorul in celula pentru denumire si tastati CTRL+D" optiune = vbOK + vbQuestion + vbDefaultButton1 + vbApplicationModal

nume = "Cititi cu atentie !!!" rasp = MsgBox(text, optiune, nume) End Sub ' * 7 Adaugare articol in Jurnalul de inregistrare Sub Articol() ' Articol Macrocomanda ' Comanda rapida de la tastatura: Ctrl+a ' DialogSheets("Meniu").Hide Sheets("Jurnal").Select Range("C6").Select Range(Selection, Selection.End(xlDown)).Select r = Selection.Rows.Count incep = ActiveCell.Offset(r, 0).Address Range(incep).Select End Sub ' * 8 Revenire la introducere solduri in caz ca nu exista egalitate ' * intre total debit si total credit Sub rev_sold() ' Range("F205").Select If ActiveCell.Value 0 Then MsgBox "Nu puteti parasi introducerea soldurilor. Total debit este diferit de total credit" Else MsgBox "Atentie este necesar sa se dezactiveze filtrarea automata!! Meniul Data/Autofilter" DialogSheets("Meniu").Show End If End Sub ' * 9 Revenire in MENIU dupa intoducere articol, sold initial si ' * vizualizare Carte Mare pentru un cont Sub revenire() MsgBox "Atentie este necesar sa se dezactiveze filtrarea automata!! Meniul Data/Autofilter" DialogSheets("Meniu").Show End Sub ' * 10 Realizare Carte Mare cont selectat Sub Teu() ' Pregatire loc pentru CARTEA MARE a contului Sheets("Jurnal").Select ' Dezactivarea chenarului de la listele precedente Range("BA12:BJ2531").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Selection.Interior.ColorIndex = xlNone Selection.ClearContents Application.CutCopyMode = False ' Extragere debit Range("C5:I171").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "BA5:BA6"), CopyToRange:=Range("BA11:BE11"), Unique:=False ' Extragere credit Range("C5:I171").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "BF5:BF6"), CopyToRange:=Range("BF11:BJ11"), Unique:=False 'ActiveWindow.SmallScroll ToRight:=14 ' Inserare rand pentru soldul initial Range("BA12:BJ12").Select Selection.Insert Shift:=xlDown

Range("BB12").Select ' Scriem Sold initial ActiveCell.FormulaR1C1 = "Sold initial" With ActiveCell.Characters(Start:=1, Length:=12).Font .Name = "Arial" .FontStyle = "Regular" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With Range("BE12").Select ' Extragem soldul initial din Balanta initiala pe solduri ActiveCell.FormulaR1C1 = _ "=SUMIF(Solduri!R7C3:R203C6,Jurnal!R6C53,Solduri!R7C5:R203C5)" Range("BJ12").Select ActiveCell.FormulaR1C1 = _ "=SUMIF(Solduri!R7C3:R204C6,Jurnal!R6C58,Solduri!R7C6:R204C6)" Range("BA13").Select ' Testam daca contul are 1 sau 2 inregistrari ' pentru a elimina anomaliile la contorizarea randurilor If (ActiveCell.Value = Empty Or ActiveCell.Offset(1, 0).Value = Empty) Then r=1 Else Range(Selection, Selection.End(xlDown)).Select r = Selection.Rows.Count End If Range("BF13").Select If (ActiveCell.Value = Empty Or ActiveCell.Offset(1, 0).Value = Empty) Then p=1 Else Range(Selection, Selection.End(xlDown)).Select p = Selection.Rows.Count End If Range("BA13").Select ' Vedem care parte contine numarul mai mare de inregistrari If r >= p Then incep = ActiveCell.Offset(r, 0).Address Range(incep).Select Else incep = ActiveCell.Offset(p, 0).Address Range(incep).Select End If ' Realizam chenarul pentru inchiderea contului Range(incep, ActiveCell.Offset(2, 9)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous

.Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With ' Scriem elementele de tehnica a contului si formulele de determinare ale acestora Range(incep).Select ActiveCell.Offset(0, 1).Value = "Rulaj debitor" q = ActiveCell.Offset(-1, 4).Address ActiveCell.Offset(0, 4).Formula = "=SUM($BE$13:" & q & ")" ActiveCell.Offset(0, 6).Value = "Rulaj creditor" q = ActiveCell.Offset(-1, 9).Address ActiveCell.Offset(0, 9).Formula = "=SUM($BJ$13:" & q & ")" ActiveCell.Offset(1, 1).Value = "Total sume debitoare" q = ActiveCell.Offset(0, 4).Address ActiveCell.Offset(1, 4).Formula = "=$BE$12+" & q & "" ActiveCell.Offset(1, 6).Value = "Total sume creditoare" q = ActiveCell.Offset(0, 9).Address ActiveCell.Offset(1, 9).Formula = "=$BJ$12+" & q & "" q = ActiveCell.Offset(2, 4).Address Range(q).Select ActiveCell.Offset(0, -3).FormulaR1C1 = "=IF(R[-1]C[3]=R[-1]C,R[-1]C[-5]-R[-1]C,0)" q = ActiveCell.Offset(0, 5).Address ' Incadram in chenar continuu inregistrarile si antetul contului Range("BA11", ActiveCell.Offset(0, 5)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Range("BA11:BJ12").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous

.Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Range("BF10").Select Range("AZ5:BJ5").Select ' Centram situatia contului Range("AX10").Select ActiveWindow.SmallScroll ToRight:=0 End Sub ' * 11 Introducem noile solduri initiale sau ' * le actualizam pe cele existente Sub SOLDURI() DialogSheets("Meniu").Hide text = "Doriti Initializare / Actualizare solduri (Yes/No)?" optiune = vbYesNo nume = "Actualizare/Initializare solduri" rasp = MsgBox(text, optiune, nume) Sheets("Solduri").Select If rasp = vbNo Then Range("C8").Select Else Range("C8:F203").Select Selection.ClearContents Range("C8").Select End If End Sub ' * 12 Listam Registru Jurnal cu operatiile din timpul lunii Sub List_jurnal() Sheets("Jurnal").Select Range("C5:H5").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="" Range("D5").Select Selection.AutoFilter Field:=2, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=3, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=4, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=5, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=6, Criteria1:=">0", Operator:=xlAnd Range("C4:I171").Select 'Selection.PrintOut Copies:=1, Collate:=True Range("C5:H5").Select Selection.AutoFilter Range("C5").Select End Sub ' * 13 Vizualizam operatiile din Registru Jurnal Sub Vad_jurnal() DialogSheets("Meniu").Hide Sheets("Jurnal").Select Range("C5:H5").Select Selection.AutoFilter Selection.AutoFilter Field:=1, Criteria1:="" Range("D5").Select Selection.AutoFilter Field:=2, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=3, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=4, Criteria1:=""" """, Operator:=xlAnd

Selection.AutoFilter Field:=5, Criteria1:=""" """, Operator:=xlAnd Selection.AutoFilter Field:=6, Criteria1:=">0", Operator:=xlAnd Range("C4:I171").Select End Sub ' * 14 Listam balanta de verificare finala Sub List_bal() ' Sheets("Balanta").Select Range("O9").Select Selection.AutoFilter Selection.AutoFilter Field:=11, Criteria1:="=1", Operator:=xlAnd Range("E7:N208").Select 'Selection.PrintOut Copies:=1, Collate:=True Selection.AutoFilter ActiveWindow.SmallScroll ToRight:=-4 End Sub ' * 15 Vizualizam balanta de verificare finala Sub Vad_bal() DialogSheets("Meniu").Hide Sheets("Jurnal").Select Range("C6").Select DialogSheets("Meniu").Select DialogSheets("Meniu").Hide Sheets("Balanta").Select Range("O9").Select Selection.AutoFilter Selection.AutoFilter Field:=11, Criteria1:="=1", Operator:=xlAnd Range("E7:N208").Select ActiveWindow.SmallScroll ToRight:=-4 End Sub ' * 16 Vizualizare Carte Mare pentru un cont Sub Vad_CM() ' Vad_CM Macrocomanda DialogSheets("Meniu").Hide Sheets("Jurnal").Select Range("BC6").Select End Sub Sub Tiparire_CM() ' * 17 Tiprire Carte Mare cont ' ' Tiparire_CM Macrocomanda Sheets("Jurnal").Select Range("BC6").Select If q = Empty Then MsgBox ("Nu aveti nici un cont activ. Selectati vizualizare!!!") Else Range("BA9", q).Select Selection.PrintOut Copies:=1, Preview:=False End If End Sub

' * 18 Activare meniu cu lista de conturi Sub C_M() DialogSheets("C_M").Show End Sub