Contabilità Excel



  • Contabilità Excel
    di brilishow (utente non iscritto) data: 11/01/2013 10:30:09

    Salve, ho un problema con excel.
    Ho creato 2 fogli dove rispettivamente in uno ho il "libro giornale" e nell'altro il "libro mastro"

    Quello che voglio fare è: quando inserisco i numeri nel libro giornale, nelle varie caselle a1,b1 ecc ecc ecc, quei valori devono andare nelle caselle del libro mastro del foglio 2.
    C'è un problema però, infatti, se io come azienda faccio un'operazione di cassa, muovendo soldi, l'11/01 e ne rifaccio un'altra 4 mesi dopo, vorrei automaticamente che quando la rifaccio 4 mesi dopo quando vado a inserire il valore mi vada automaticamente nel libro mastro senza che stia a ricreare il collegamento.



  • di Luca.Donati data: 11/01/2013 11:36:27

    Ciao. Penso che sarebbe più facile aiutarti se fornissi maggiori particolari sulla struttura dei due fogli.
    Tu scrivi nel foglio giornale. Come è strutturato?
    Il libro mastro contiene un riepilogo? Come è concepito?
    A presto!



  • di brillishow (utente non iscritto) data: 14/01/2013 10:11:42

    Dunque, tutto parte dal libro giornale. Io scrivo in questo il nome del conto che utilizzo ( ad esempio Conto corrente bancario ), poi in due colonne ( dare e avere ) accendo il conto a seconda che abbia riscosso una cifra oppure abbia pagato qualcuno ( quindi su excel avrò: 3 colonne- una per il nome del conto, una dare e una avere). In dare e avere, a seconda dell'operazione che faccio dovrò riportare i numeri che poi mi dovrebbero apparire anche nel libro mastro.

    il libro mastro riporta tutti i conti utilizzati nel libro giornale. Questo libro è formato da tanti "mastrini" quanti conti sono stati utilizzati nel libro giornale. La struttura di un mastrino è quella di una "T" gigante dove a sinistra c'è la colonna dare (che abbiamo anche nel giornale), e a destra la colonna avere ( anch'essa nel giornale ).

    Perciò quello che vi chiedo è:
    -Sapete per caso come possa fare a trasportare i numeri che metto nel giornale nel mastrino appropriato senza che tutte le volte stia a creare il collegamento fra i due fogli? Mi spiego meglio, se io dessi un codice (01,020,3651 ecc. ) a ogni conto che ho ( c/c banca, cassa, merci ecc.), e questo codice lo collego al mastrino specifico del conto, ogniqualvolta che inserisco un movimento in dare o avere questo si trasferisce automaticamente anche nel libro mastro.È possibile tutto ciò?

    Non so se avete altre idee voi mi fa molto piacere, in sostanza detto in parole povere vorrei che quando inserisco un movimento su più conti, anche a distanza di mesi, excel mi trasferisca quel movimento nel mastrino appropriato, e soprattutto nella colonna appropriata ( dare o avere)

    Grazie



  • di brillishow (utente non iscritto) data: 14/01/2013 10:15:50

    Per qualsiasi altro chiarimento sono più che disponibile.... io ho anche il file avviato, se volete posso fare l'upload.... In pratica ho trovato un modello già preimpostato di libro giornale poi vorrei farci questa modifica sopra che sicuramente lo rende più funzionale e giuridicamente corretto, dato che per tenere la contabilità aziendale il libro mastro e giornale sono obbligatori.



  • di Luca.Donati data: 14/01/2013 16:06:09

    Ma il libro mastro riporta un riepilogo, oppure TUTTI i movimenti, magari riorganizzati per conto e per data ?

    1) Perché nel primo caso, forse basterebbe una formula, tipo SOMMA.SE(). Allora, l'aggiornamento è davvero automatico.

    2) Nel secondo, invece, sarebbe più facile con un codice che percorra la colonna della causale (nome del conto) e quando trova un movimento che non è presente nel mastro, ce lo aggiunge. In questo caso, per aggiornare il libro mastro devi lanciare la macro, magari con un pulsante. Possibile anche (ma un po' più complicato e "delicato") fare in modo che la macro si lanci da sola ad ogni modifica delle celle - per esempio - di una certa colonna.

    Altro dettaglio: una colonna data non c'è?



  • di brillishow (utente non iscritto) data: 14/01/2013 21:06:00

    Nono allora, il libro mastro riporta il riepilogo si di tutti i conti ma non sono riorganizzati in nessun modo ( magari in ordine alfabetico o per codice se si vuole, ma non è necessario. L'importante è che a ogni mastrino siano affidati i reali movimenti riportati sul giornale).

    La colonna data c'è giustamente, e mi scuso per non averla rammentata. Questa si trova nel libro giornale, poi ci sarebbe anche una colonna per i codici affidati ai conti ( ma se è una cosa in più che non risulta utile ai fini della programmazione del foglio di lavoro si può tranquillamente omettere)

    Dunque ho pensato che per farti capire meglio potessi fare l'upload del foglio di lavoro fatto fino ad ora e di due foto che riportano un esempio di libro giornale e libro mastro.

    Presumo che tu non abbia nozioni sulla contabilità quindi se hai bisogno di sapere qualcosa chiedi tranquillamente.

    P.s. nel foglio di lavoro vedrai che i valori della colonna dare devono SEMPRE coincidere con i valori della colonna avere (è il principio della partita doppia, la somma algebrica deve tornare sempre zero ).... se questo non avviene vedrai che nel foglio excel si accenderà una lucina rossa



  • di brillishow (utente non iscritto) data: 14/01/2013 21:22:26

    ht tps : / / dl-web . dropbox . com /get/CAM00186.jpg?w=ff09f74d
    ht tps : / / www . dropbox . com /s/w6gbsv4zgg14t5g/Contabilit%C3%A0%20Sparkly.xlsx
    ht tps : / / www . dropbox . com/s/95bt38qkyjonww9/CAM00186.jpg

    ho lasciato degli spazi per il controllo antispam.
    Per qualsiasi informazione in più su contabilità e bilancio chiedi pure ;)



  • di Luca.Donati data: 15/01/2013 10:55:43

    È vero, non so nulla di contabilità...
    Ho visto il file e l'immagine della tabella disegnata a mano (il primo link invece non mi fa entrare).
    Potresti per favore postare di nuovo il file dopo averci messo dentro dei dati fasulli di esempio nel giornale e poi anche nel mastro (manualmente) per far vedere come vuoi che vengano?
    Nella colonna B del giornale cosa ci va? Per caso il numero che trovo in colonna B del Piano conti per riferirsi ad un capitolo di spesa?


  • STOP !!!
    di Luca.Donati data: 15/01/2013 11:01:47

    Scusa, rettifico.
    Ho capito dopo aver postato il messaggio precedente che la tabella disegnata a mano conteneva le spiegazioni che cercavo.
    Studio più in dettaglio, poi mi rifaccio vivo...



  • di brillishow (utente non iscritto) data: 15/01/2013 14:58:26

    perfetto, ti ringrazio e se hai bisogno chiedi pure ti spiegherò ciò che ti serve.


  • Selezione cella
    di Luca.Donati data: 16/01/2013 11:21:16

    Mi sto scontrando con un problema stupido ed imprevisto.
    Se qualcuno è capace di aiutarmi, è il benvenuto.
    Ho pensato di fare due macro.

    1) La prima, che va lanciata dal Giornale, percorre il foglio Giornale e trova tutte le occorrenze di una determinata categoria di movimento (descritta in colonna B nel file che brillishow ha postato); adesso che sono ancora in una forma provvisoria, cerco una sola categoria, successivamente farò un Arrow o qualcosa di simile per fare la stessa operazione per tutte le categorie; ad ogni categoria trovata, questa macro ne chiama un'altra alla quale passa i parametri giusti per mandare nel foglio Mastro i valori trovati.

    2) La seconda macro deve per prima cosa individuare la cella di destinazione. Nel foglio mastro, ho cominciato con l'attribuire il nome "nove" ad una cella (che sarebbe la prima in alto a sinistra di un insieme di celle in cui voglio mandare tutte le occorrenze del capitolo di spesa n. 9); dopodiché vorrei spostare il cursore alla prima cella libera sottostante per metterci i valori... Solo che la selezione della cella non mi riesce !!!

    DOVE SBAGLIO ?
     
    Sub aggiornaMastro()
    Dim fgDa As Worksheet, fgA As Worksheet
    Dim Ur As Integer, Ctg As Integer, deb As Double, cre As Double
    Set fgDa = Worksheets("Libro giornale")
    Set fgA = Worksheets("Libro mastro")
    Ur = fgDa.Cells(65536, 2).End(xlUp).Row
    For r = 7 To Ur
        'MsgBox ("Riga " & r)
        If Cells(r, 2).Value = 9 Then
        deb = Cells(r, 5).Value
        cre = Cells(r, 6).Value
        Call MandaInNove(fgA, deb, cre)
        End If
    Next
    End Sub
    Sub MandaInNove(fgA As Worksheet, deb As Double, cre As Double)
        MsgBox ("MANDO IN NOVE : " & " " & deb & " " & cre)
        'fgA.Range("nove").Select 'NON FUNZIONA !
        Sheets(fgA).Select
        Range("nove").Select 'NON FUNZIONA NEMMENO QUESTO !
        MsgBox ("controllo cella destinazione")
        
    End Sub



  • di Vecchio Frac data: 16/01/2013 14:24:21

    Devi specificare fgA per il Range ("nove").
    Questo funzionerà:
    fgA.Select
    fgA.Range("nove").Select

    Ma c'è qualcosa che non mi convince :)
    A parte che "MandaInNove" è da terminare, perchè così non fa nulla, non è chiaro come viene definito il range chiamato "nove".





  • di brillishow (utente non iscritto) data: 16/01/2013 15:03:56

    Intanto vi ringrazio per il vostro aiuto.
    Stamattina avevo un esame all'università perciò in questi giorno non pensavo ad altro.... riguardando il file del giornale che vi ho inviato ho notato che nella pagina del giornale non ci sono le famose " T " dei conti ( i mastrini per internderci ). Nel mio piccolo se volete posso contribuire a fare i mastrini relativi ad ogni conto. Però non so come state procedendo perchè di programmazione ci capisco meno di zero. Non so se state programmando un sistema automatico che costruisca i mastrini quando si immette un nuovo conto....

    Ditemi voi, io posso fare qualsiasi cosa che possa aiutare allo sviluppo del progetto, ovviamente se ci riesco eheh ;)



  • di Luca.Donati data: 16/01/2013 16:31:53

    Grazie, Vecchio Frac.
    La sintassi fgA.Range... l'avevo già usata ma senza risultato, forse perché non avevo scomposto la selezione in due tappe (non ho ancora capito quand'è che è necessario scomporre così !).
    Adesso la selezione funziona e posto il codice modificato. Però mi succede un'altra cosa strana: la prima routine funziona solo per la prima occorrenza, passa la mano alla seconda e non torna più alla prima.
    Facendo le prove con la sola prima msgbox, invece, la seconda macro ripassava normalmente la mano alla prima e mi trovava tutte le occorrenze del capitolo di spesa n. 9...
    Che cosa è cambiato?

    brillishow, la struttura a T adesso la sto facendo io e per il momento lasciamenla fare, tanto cambia molto poco se deve essere diversa.
    Comunque (rispondendo anche a Vecchio Frac) "nove" è un nome di cella. L'ho chiamata così in modo che poi possa essere messa dove vuole brillishow senza che ci sia un indirizzo tipo "A1" che sarebbe molto più vincolante. Una volta situata la cella, il codice va giù a cercare la prima cella libera e ci appiccica i valori che gli ha passato la prima macro.
    Più tardi, la mia intenzione è di fare una lista dei capitoli di spesa che si riferisca ad altrettante celle nominate "uno, due..." e che costituiscano semplicemente l'angolo a sinistra in alto del range in cui mettere i valori.

    So di essere contorto nelle mie spiegazioni: mi avete capito?
     
    Sub aggiornaMastro()
    Dim fgDa As Worksheet, fgA As Worksheet
    Dim Ur As Integer, Ctg As Integer, deb As Double, cre As Double
    Set fgDa = Worksheets("Libro giornale")
    Set fgA = Worksheets("Libro mastro")
    Ur = fgDa.Cells(65536, 2).End(xlUp).Row
    For r = 7 To Ur
        'MsgBox ("Riga " & r)
        If Cells(r, 2).Value = 9 Then
        deb = Cells(r, 5).Value
        cre = Cells(r, 6).Value
        Call MandaInNove(fgA, deb, cre)
        End If
    Next
    End Sub
    
    Sub MandaInNove(fgA As Worksheet, deb As Double, cre As Double)
        ' (non serve più)      MsgBox ("MANDO IN NOVE : " & " " & deb & " " & cre)
        fgA.Select
        fgA.Range("nove").End(xlDown).Offset(1, 0).Select
        ' (non serve più)     MsgBox ("controllo cella destinazione")
        ActiveCell.Value = deb
        ActiveCell.Offset(0, 1).Value = cre
    End Sub
    



  • di Luca.Donati data: 16/01/2013 16:58:07

    Risolto: davanti ad ogni "cells" ho messo la specifica del foglio. Non ci capiva niente col cambio foglio, poverino...



  • di Luca.Donati data: 16/01/2013 17:36:26

    Credo di aver risolto.
    Ma è tardi,devo andarmene.
    Allora guarda cosa fa questo codice, sapendo che "uno", due", ecc sono nomi di celle, CHE DEVONO ESISTERE NEL FOGLIO MASTRO, come descritto nei miei commenti precedenti.
    In questo forum c'era un puilsante per allegare files, ma non lo trovo più, altrimenti te lo avrei messo...
    Prova, domani rileggo. Ciao.
     
    Sub aggiornaMastro()
    Dim fgDa As Worksheet, fgA As Worksheet
    Dim Ur As Integer, Ctg As Integer, cap As Integer
    Dim deb As Double, cre As Double
    Dim capitoli As Variant, capito As String
    Set fgDa = Worksheets("Libro giornale")
    Set fgA = Worksheets("Libro mastro")
    capitoli = Array("uno", "due", "tre", "quattro", "cinque")
    Ur = fgDa.Cells(65536, 2).End(xlUp).Row
    For r = 7 To Ur
    For c = 0 To 4
        cap = fgA.Range(capitoli(c)).Value 'perché dentro alla cella che si chiama "uno" c'è scritto "1"
        capito = capitoli(c)
        If fgDa.Cells(r, 2).Value = cap Then
        deb = fgDa.Cells(r, 5).Value
        cre = fgDa.Cells(r, 6).Value
        Call MandaInMastro(fgA, capito, deb, cre)
        fgDa.Cells(r, 2).Value = "-" & cap
        End If
    Next c
    Next r
    End Sub
    
    Sub MandaInMastro(fgA As Worksheet, capito As String, deb As Double, cre As Double)
        fgA.Select
        fgA.Range(capito).End(xlDown).Offset(1, 0).Select
        ActiveCell.Value = deb
        ActiveCell.Offset(0, 1).Value = cre
    End Sub
    



  • di brillishow (utente non iscritto) data: 16/01/2013 18:19:16

    grazie, ma c'è un problema, quel codice dove lo devo copiare in excel??? basta che lo copi all'interno di una cella qualsiasi?



  • di Vecchio Frac data: 16/01/2013 21:19:05

    Credo che questo codice sia un esempio da provare e poi adattare al tuo programma principale.
    Naturalmente è codice VBA e va inserito in un modulo o nella zona codice di un foglio, non in una cella: per aprire l'editor premi Alt-F11 quindi scegli ad esempio Inserisci Modulo e incolla il codice.

    @Luca
    Il pulsante per allegare un file è disponibile in ogni discussione, in alto a destra della pagina.





  • di Luca.Donati data: 17/01/2013 10:15:05

    Ecco, ho allegato il file (il tasto sta fuori dalla risposta, per questo me l'ero perso).
    Lo devi dezippare.
    La macro non è ancora proprio completa, e prima di lanciarla devi comunque cancellare nel libro mastro le spese già copiate (dimenticato di farlo io prima di zippare).
    Se la macro fa quello che serve a te, allora bisogna completarla con tutti i capitoli, perché io ne ho fatti solo alcuni per brevità.
    Ciao.



  • di brillishow (utente non iscritto) data: 17/01/2013 10:39:01

    non so perchè ma se in alto alla pagina clicco su file allegati mi da errore 404, quindi non posso scaricare lo zip



  • di Luca.Donati data: 17/01/2013 11:01:45

    Prova a scaricarlo da qui: h t t p : / / dl . free . fr / m1XxyEEg2
    (togli prima tutti gli spazi)
    Ho anche fatto le cose che avevo dimenticato, rimettendo un po' a posto il Mastro.
    Invece mi succede una cosa strana (aiuto Vecchio frac!): sono ancora un po' nuovo di Excel 2010 e il pulsante non si lascia cliccare, penso che ci sia un controllo di sicurezza che non mi riesce di trovare.
    Casomai, lancia la macro "AggiornaMastro" dalla lista delle macro.



  • di brillishow (utente non iscritto) data: 17/01/2013 12:14:39

    Questa macro è FANTASTICA, è proprio quello che cercavo, semplice e intuitiva al massimo.
    Avrei solo tre domande:
    1- non ho ben capito il punto 2) della macro nelle spiegazioni
    2- Nel libro mastro si possono cambiare le voci debito/credito con dare ( a sinistra ) e avere ( a destra )?
    3- se ho ben capito nella spiegazione nel libro mastro ho la possibilità di spostare come meglio credo i mastrini, ad esempio mettendoli in fila per 4, ma l'importante è che ci sia una cella col numero scritto in lettere (poi accanto il nome del conto), e obbligatoriamente sotto la cella col numero in lettere la dicitura "debito" ( che se poi si può cambiare sarà dare ). giusto?



  • di Luca.Donati data: 17/01/2013 12:40:13

    Non esageriamo... bazzecole... quisquilie...
    1- Quando lanci la macro, questa cerca prima tutti i valori uno, poi tutti i valori due... ma poi tu aggiornerai il giornale e vorrai rilanciare la macro per aggiornare di nuovo il mastro... Allora che facciamo, ci rimettiamo dentro tutti i valori che già c'erano facendo dei doppioni? No, naturalmente, ma per evitare questo, bisogna che già dal secondo giro lamacro non trovi più il valore uno di quella spesa che già era stata messa nel mastro ieri. Se al momento dell'inserimento in Mastro, trasformo l'uno in meno uno, il due in meno due ecc., agli aggiornamenti successivi quelle occorrenze non vengono più trovate. E tu ti ritrovi con dei segni meno nel giornale, che indicano che l'occorrenza è inserita in Mastro.
    2-cambia, cambia pure la dicitura, l'importante è che una riga sia occupata da qualcosa sotto alla cella che porta il nome di ogni mastrino.
    3-Se sposti, assicurati di portarti dietro il nome della cella. Es.: Taglia-Incolla (invece Copia-Incolla no). Aggiungere celle sopra o a sinistra non cambia il nome della cella. Ho fatto questo perché se la cella è individuata p.es. con "C12" e tu gli aggiungi delle celle a sinistra diventa "D12", mentre la macro continua a riferirsi a C12, invece se la macro si riferisce al "nome" della cella ("uno", "due"..."trentuno"), continuerà a trovarle quale che sia il loro indirizzo. Il nome del capitolo non è indispensabile per la macro; invece il numero (4) dentro alla cella ("quattro") sì.

    Visto che la cosa sembra piacerti, dovrai completare il codice e i nomi delle celle.
    Per i nomi delle celle: posizionati nella cella che vuoi (sapendo che dopo la puoi spostare); in quella finestrella in alto a sinistra in cui vedi l'indirizzo della cella, scrivi invece il nome opportuno e dài l'invio; adesso quella cella è stata "battezzata".
    Ripeti per tutti i capitoli contabili che mancano nel Mastro.

    Poi intervieni sul codice (premi Alt+F11 e fai doppio clic nel Modulo1), dove devi fare due cose:
    A) allunga la lista che viene dopo la definizione dell'Array (e non Arrow come avevo detto in un post precedente!) con i nomi delle celle;
    B) adatta gli indici (che a memoria non ricordo tutti) che si riferiscono all'Array; devi sapere che se hai 31 capitoli, l'array non conterà da 1 a 31, ma da 0 a 30 (in totale fanno 31 lo stesso...)

    Buon divertimento!



  • di brillishow (utente non iscritto) data: 17/01/2013 13:32:15

    perfetto sei stato chiarissimo, proverò a cimentarmi nella programmazione sperando di riuscirci.

    Grazie mille ancora, mi piace molto questa macro



  • di brillishow (utente non iscritto) data: 17/01/2013 14:32:21

    una domandina piccolissima.... Intanto sto costruendo i mastrini mancanti e sto metetndo i numeri mancanti.

    Ma se faccio moltissime operazione per il conto cassa ad esempio, la colonna del dare o dell'avere mette numeri all'infinito, oppure si ferma fino a dove è stata tracciata la linea della "T"??



  • di Luca.Donati data: 17/01/2013 14:40:28

    Non, non si ferma proprio niente, va avanti finché ci sono occorrenze.
    Infatti questa è l'altra cosa che dovevo dirti: devi mettere i mastrini in una posizione tale che abbiano uno spazio sotto adeguato al numero di operazioni che possono esserci registrate. Se possono arrivare a mille... ci vogliono mille celle libere, altrimenti il codice sovrascrive quello che trova senza chiedersi se è opportuno o no.



  • di brillishow (utente non iscritto) data: 17/01/2013 15:12:06

    Mentre avevo finito di completare la riga ( "uno", "due", ...., "trenta", "trentuno" ) mi è spuntato questo errore, come devo risolvere?

    h t t p s : / / www . dropbox . com/lightbox/home



  • di Luca.Donati data: 17/01/2013 17:02:48

    Non riesco ad aprire il link che mi hai mandato (bisogna essere registrati).
    Ma se l'errore esce quando lanci la macro, si tratta sicuramente di un'incoerenza nel codice (per esempio hai aggiornato una parte ma non un'altra...).
    Se non riesci a trovare il problema, puoi copiare TUTTO il codice (due macro) e incollarlo nella finestra "codice VBA" di questo forum, quando rispondi. Comunque ci posso riguardare solo domani. Ciao.