Un modello di fattura integrato con database

di Corrado Del Buono

11 Febbraio 2022 08:22

Ecco un modello già pronto di fattura da compilare e personalizzare: guida alla realizzazione e all'utilizzo per fatture commerciali semplici e veloci.

Una delle attività ricorrenti nella pratica aziendale, anche la più piccola, è l’emissione di una fattura commerciale: ridurne al minimo i tempi di compilazione ed i margini di errore è quindi un indubbio vantaggio. In questo tutorial proponiamo un modello che consente la creazione di una fattura in tempi ridottissimi, senza l’ausilio di software dedicati. La fattura commerciale è “legata” a due database costruiti su fogli di calcolo esterni al prospetto (“database prodotti” e “database clienti”) dai quali vengono estratti, attraverso elenchi a discesa (e quindi, con semplici clic del mouse) i dati necessari per la sua compilazione.

=>Scarica il modello di fattura già pronto

Come usare il modello fattura

Il modello è costituito da un foglio di calcolo contenente la fattura commerciale (foglio Fattura) e da due fogli di calcolo contenenti i database di riferimento; nel database relativo ai prodotti (foglio dbProdotti) è sufficiente indicare, nei singoli record, la Descrizione e il Prezzo unitario dei singoli prodotti, mentre nel database relativo ai clienti (foglio dbClienti) dovranno essere inseriti i dati relativi ai singoli clienti (Cliente, Indirizzo, CAP, .. ).

Figura 1. Esempio di database dei clienti

Esempio di database dei clienti

I dati relativi al cliente vengono richiamati nella fattura commerciale attraverso la selezione del nominativo del cliente da un elenco a discesa posto nella cella D5. Dopo la selezione del cliente viene automaticamente compilato l’intervallo sottostante contenente i dati del destinatario della fattura.

Figura 2. Selezionare il cliente con menu a “discesa”

Selezionare il cliente con menu a "discesa"

Per compilare la parte tabellare della fattura è sufficiente selezionare, sempre tramite un elenco a discesa, il prodotto ed inserire le quantità vendute; il prezzo del prodotto viene estrapolato automaticamente dal database mentre il calcolo degli importi avviene attraverso le formule presenti nel prospetto.

Figura 3. Selezionare gli articoli

Selezionare gli articoli

Nella fattura, predisposta per una sola aliquota IVA, è possibile indicare uno sconto incondizionato ed eventuali spese non documentate o documentate.

=> Confronta: modello di fattura per agenti di commercio

Come costruire il modello

Cominciamo ad analizzare la struttura del modello soffermandoci, dapprima, sui legami tra il database clienti e il modello fattura. Per realizzare un elenco “a discesa” che faccia riferimento ad un foglio di calcolo differente è necessario assegnare un nome all’intervallo di riferimento ed utilizzare quest’ultimo nella finestra Convalida dati.

Pertanto, dopo aver selezionato l’intervallo A2:A21 del foglio “dbClienti”, è stato utilizzato il comando “Definisci” posto all’interno del sottomenu “Nome” del menu “Inserisci” e si è digitato il nome ElencoClienti all’interno della finestra “Definisci nome” (in alternativa, si poteva digitare il nome direttamente nella “Casella nome” posta nella barra della formula e confermare con il tasto INVIO).

Figura 4. Dare il nome alla tabella esterna

Dare il nome alla tabella esterna

Dopo aver selezionato la cella D5 del foglio Fattura, si è utilizzato il comando “Convalida” del menu “Dati” e, nella scheda “Impostazioni” della finestra “Convalida dati”, si è scelto “Elenco” nella casella “Consenti” e si è digitato =ElencoClienti nella casella “Origine”.

Figura 5. Impostare l’origine dei dati

Impostare l'origine dei dati

La cella D6 del foglio “Fattura” dovrà “ricercare” nel database clienti, l’indirizzo corrispondente al cliente scelto attraverso l’elenco a discesa e trascritto automaticamente da Excel nella cella. Pertanto, si è utilizzata la formula:

=SE(D5=””;””;CERCA.VERT(D5;dbClienti!A2:G21;2;FALSO))

Che può essere letta in questo modo: se la cella D5 è vuota restituisci una etichetta vuota, altrimenti cerca il nominativo del cliente (trascritto, attraverso l’elenco a discesa, in D5) nella prima colonna del database clienti (dbClienti!A2:G21) e restituisci il dato inserito nella seconda colonna (indice 2).

La cella D7 dovrà estrapolare i dati (CAP, Città e Prov.) dal database clienti sempre del cliente “selezionato” nella cella D5 attraverso l’elenco a discesa. Per la trascrizione della formula si è dovuto ricorrere all’operatore di concatenazione “&” che consente di unificare più dati all’interno della stessa cella. Facciamo un esempio per comprenderne il suo utilizzo; supponiamo di avere nella cella A1 l’etichetta “Cognome” e nella cella A2 l’etichetta “Nome”; la formula =A1&” “&A2 visualizza l’etichetta “Cognome Nome” in quanto viene concatenato il valore della cella A1 con uno spazio (” “) e con il valore della cella A2; diversamente la formula =A1&A2 avrebbe visualizzato l’etichetta “CognomeNome”.

Pertanto, la formula utilizzata in D7 è stata:

=SE(D5=””;””;CERCA.VERT(D5;dbClienti!A2:G21;3;FALSO)&” “&
CERCA.VERT(D5;dbClienti!A2:G21;4;FALSO)&” “&
MAIUSC(CERCA.VERT(D5;dbClienti!A2:G21;5;FALSO)))

La formula, sebbene più lunga, è simile a quella appena esaminata: si chiede ad Excel di testare se la cella D5 è vuota e nel caso in cui tale condizione non si verifichi, di ricercare il nominativo del cliente (D5) nella prima colonna del database clienti (dbClienti!A2:G21) e di restituire il contenuto della terza (CAP), quarta (Città) e quinta colonna (Prov.), distanziati da uno “spazio”. Da notare che la funzione MAIUSC utilizzata prima dell’ultima funzione CERCA.VERT, consente la trascrizione sempre in maiuscolo della sigla della provincia (anche se nel database clienti quest’ultima è stata trascritta erroneamente). Nella cella D8 è stata utilizzata la formula:

=SE(D5=””;””;CERCA.VERT(D5;dbClienti!A2:G21;6;FALSO))

per estrapolare dal database il valore contenuto nel campo Paese, mentre nella cella D10 la formula

=SE(D5=””;””;CERCA.VERT(D5;dbClienti!A2:G21;7;FALSO))

per estrapolare il valore contenuto nel campo PI/CodiceFiscale del database clienti.

Osserviamo adesso i legami tra il modello fattura e il database prodotti. Anche in questo caso è stato necessario assegnare un nome (nello specifico, ElencoProdotti) all’intervallo dbProdotti!A2:A21 per consentire la creazione di un elenco a discesa nella parte tabellare della fattura. Dopo aver creato, nella cella A20, l’elenco attraverso la finestra Convalida dati, e si è copiato il suo contenuto (quindi, l’elenco) nelle celle sottostanti fino alla A29. Nella cella C20 è stata utilizzata la funzione:

=SE(A20=””;0;CERCA.VERT(A20;dbProdotti!$A$1:$B$21;2;FALSO))

che, come quelle esaminate in precedenza, testa il contenuto della cella A20, ricerca, se quest’ultimo è diverso da “vuoto”, il dato (descrizione del prodotto) nella prima colonna del database cliente e restituisce il contenuto (indice 2) posto nella seconda colonna (il prezzo); la formula, costruita con i riferimenti assoluti, è stata successivamente copiata fino alla cella C29.

Le altre formule del modello fattura non presentano difficoltà operative. Elenchiamole brevemente.

  • Nella cella D20 è stata utilizzata la formula =B20*C20 per il calcolo degli importi relativi ai singoli prodotti (la formula è stata successivamente copiata fino alla cella D29);
  • la cella D30 contiene il totale degli importi (=SOMMA(D20:D29));
  • la cella D31 contiene la formula =D30*C31 per il calcolo di un eventuale sconto (da inserire, in formato percentuale, nella cella C31);
  • la cella D34 contiene la formula per il calcolo della base imponibile (=D32+D33), ovvero del valore scontato sommato ad eventuali “spese non documentate” (da inserire nella cella D33);
  • la cella D35 contiene la formula =ARROTONDA(D34*C35;2) per il calcolo dell’IVA con arrotondamento a due cifre decimali (l’aliquota IVA indicata nella cella C35);
  • la cella D38 contiene la formula =SOMMA(D34:D37) che consente di calcolare il totale fattura (Imponibile + IVA + eventuali spese documentate da inserire nelle celle D36 e D37).

Come personalizzare il modello

Per aggiungere altri record ai database relativi ai prodotti e ai clienti (nelle formule si fa riferimento a 20 record) senza modificare le formule è sufficiente, inserire delle righe vuote all’interno del database: in questo modo, i riferimenti agli intervalli, sia nelle funzioni CERCA.VERT che nel nome assegnato agli intervalli utilizzato negli elenchi a discesa, (ElencoProdotti e ElencoClienti), vengono aggiornati automaticamente. Utilizzando la finestra Convalida dati è possibile creare un elenco personalizzato all’interno della cella C17 per l’inserimento delle “modalità di pagamento” (per farlo è sufficiente digitare nella casella Origine della scheda Impostazioni le voci dell’elenco, ad esempio, 30 giorni data fattura, 60 giorni data fattura, … separate da un punto e virgola). Inoltre, se le fatture vengono stampate nella stessa giornata della loro compilazione, è possibile inserire in automatico la data all’interno della cella A17 ricorrendo alla funzione =OGGI(). Ancora, è possibile aggiungere ulteriori voci non previste in fattura (quali ad esempio, un eventuale importo per la cauzione o per gli interessi se il pagamento avviene in maniera dilazionata) ed adattare la parte finale della stessa.

Il modello può essere ulteriormente personalizzato aggiungendo un database relativo alle banche e richiamando i suoi record all’interno del prospetto fattura (nella cella C17 relativa alla denominazione della “Banca di appoggio”) o all’interno di “nuove” celle (contenenti, ad esempio, il numero di c/c, ABI, CAB, …).