Benvenuto ad una nuova lezione di MasterExcel.it. In questa lezione vedremo alcuni esempi importanti sull’utilizzo delle macro in VBA sulla Fattura Excel.
Questa è la quarta lezione dedicata al Modello Fattura Excel da me creato. Per andare alle lezioni precedenti: clicca qui 👈 (da cui puoi scaricare il file)
Guarda il Video: Fattura Excel – Il Codice VBA della Macro di Fatturazione
Il file che ti mostrerò non sarà composto solamente da codice, ma anche da commenti. Questi ultimi sono scritti in verde e servono a far comprendere meglio la composizione del codice. Ricorda, un buon programmatore inserisce sempre dei buoni commenti nel suo codice, così da semplificare le operazioni di modifica successive. Capita spesso infatti di operare dopo anni su una macro e non ricordarsi esattamente cosa facciano le varie porzioni di codice. Quindi inserisci sempre i commenti!
Prima Fattura? Scopriamolo!
La prima cosa da sapere è se questa è la prima fattura emessa o meno. E come si fa a sapere se è la prima fattura del sistema? Semplice, si va nel foglio “Archivio” e si fa il conto di quanti valori numerici sono presenti in colonna A (la colonna contenente i numeri delle fatture emesse in precedenza.
Il numero delle fatture emesse, manco a dirlo, è una variabile, esso cambia di voltata in volta che emettiamo una fattura. E indovina un po’, cosa dobbiamo fare? dobbiamo dichiarare una variabile. Lo so, è la prima volta che dichiari una variabile, ma non è una cosa difficile! Questa variabile la chiameremo “a” e dato che è per forza un numero interno, andremo a dichiararla semplicemente scrivendo:
Dim a As Integer
“Dim” = si utilizza per dichiarare una variabile
“a” = è il nome dato alla nostra variabile. In questo caso è una semplice lettera, ma può essere chiamata in qualunque modo.
“As Integer” = indica il tipo di variabile. In questo caso numero intero
Dichiarare un variabile, non basta, è necessario anche definirla. Nel nostro esempio la variabile “a” è definita come:
Application.WorksheetFunction.Count(Range(“A:A”)) = questo codice indica semplicemente che bisogna utilizzare all’interno di una applicazione (Excel), una funzione Conta Numeri (in inglese Count) nella colonna A (del foglio Archivio selezionato in precedenza).
Procediamo con un altro esempio.
Data di Fatturazione
Un altra cosa molto importante è la data di fatturazione, che varia di data in data, quindi anche essa è una variabile. Ed ecco come la ho definita:
A questa variabile ho dato il nome “del”, potevo chiamarla anche in un altro modo. Questa variabile non è indicata come “Integer” ma come “Date”, questo perché si tratta di una data. Successivamente la definisco come il valore uguale a quello che si trova nella cella C3 del foglio “Fattura”.
Data Corrente
Dichiariamo un’altra variabile.
In questo caso ho creato una variabile di nome “DATAodierna”, la cui composizione dovrebbe risultare facilmente comprensibile. Significa semplicemente: “Mostra la data di oggi nel formato giorno, mese, anno”.
Prima Verifica
Vediamo un’applicazione pratica delle ultime variabili che ti ho mostrato all’interno della Macro Fattura Excel.
Occorre sempre mettere delle verifiche, per evitare errori. Ora che abbiamo sia la data odierna, sia la data di fatturazione, possiamo controllare se esse sono uguali. Infatti è possibile che venga inserita una data errata, quindi è bene controllare e chiedere se eventualmente si vuole continuare:
Questa applicazione delle variabili “del” e “DATAodierna” significa semplicemente: “se la data di fatturazione è diversa da quella odierna, esegui quanto segue: seleziona il foglio fattura, e al suo interno seleziona la cella C3 e scrivi un messaggio”. Il messaggio in questione è: ”la data di fatturazione non coincide con quella odierna. Continuare?”. Viene anche mostrata una scelta “si/no“. Se si sceglie “No”, si esce automaticamente dalla Macro.
If MsgBox = mostra un messaggio
vbYesNo = mostra una scelta tra “Si” e “No”
vbNo Then Exit Sub = se si sceglie “No”, si esce dalla Macro.
PRECISAZIONI: una Macro inizia sempre con il comando “Sub” e si chiude sempre con il comando “End Sub”. Ogni If invece inizia con “If” e finisce con “End If“.
Vediamo un’altra applicazione, stavolta più complessa e interessante.
Salvare i dati in Archivio
I dati di fatturazione però devono essere archiviati all’interno del Foglio Archivio. Piccolo problema, tutti i dati nel Foglio Archivio sono inseriti esclusivamente in orizzontale, mentre nella fattura abbiamo molti dati in verticale. I dati di fatturazione del cliente ne sono un esempio:
Forse ti ricordi la funzione trasponi di Excel, la abbiamo vista nel corso Excel base. La Macro che ora ti presento non fa altro che copiare e incollare questi dati in un altro punto del nostro file.
Questa Macro non l’ho creata io, ma l’ho trovata già pronta con una semplice ricerca su Google. Una skill molto importante perché ti permette di non dover reinventare la ruota ogni volta che ti servono piccole funzioni.
Questa macro sarà richiamata all’interno di altre macro per poter archiviare i dati.
La Stampa in PDF
Un’altra Macro degna di nota che puoi osservare nell’immagine sottostante.
Anche questa Macro non è stata creata da me. L’ho semplicemente registrata (con il Registratore Macro) e modificata dove ritenevo opportuno. Questa macro va a stampare (/salvare) in PDF (di fatto crea un PDF) le varie fatture, però assegna loro un nome molto particolare, ovvero: “Fattura” [numero fattura] “_del” [data di fatturazione], e salva in automatico il file PDF all’interno della stessa cartella in cui è presente il file del Modello Fattura Excel
Il grosso del lavoro di modifica è stato fatto sul “Filename”. Che non è solo il nome del file ma anche il percorso della cartella in cui si trova.
La stringa “Application.ThisWorkbook.Path” esprime proprio questo.
Path = significa “percorso”
ThisWorkbook = ossia “questa cartella di lavoro”
Application = ossia Excel
Il resto del codice lo analizzo direttamente nei termini che lo compongono.
& = è un elemento della corretta sintassi VBA, ed è preceduto e anteceduto da uno spazio
Application = sempre Excel
PathSeparator = su Windows corrisponde al segno “\”, su MacOS corrisponde al segno “:”
“Fattura n “ = è il testo che la Macro dovrà scrivere
MyMax = è una variabile che ho creato precedentemente, ed indica il numero della fattura
Format (del, “yyyy.mmmm.dd”) = significa che la Macro dovrà prendere la variabile “del”, che abbiamo visto precedentemente in questa lezione, e scriverla in un modo particolare, ossia indicando una data. Per quanto riguarda la dicitura “mmmm” sta ad indicare il mese, scritto in maniera completa ma se preferiamo abbreviarlo a tre lettere è sufficiente scrivere “mmm”
“.pdf”= indica il formato scelto, in questo caso il pdf
“From:=1”= indica “da pagina 1”
“To:=1”= indica “fino a pagina 1”
CONCLUSIONI
Ho indicato quelle che secondo me sono le Macro Fattura Excel più interessanti presenti in questo sistema di fatturazione. Considero di modificarlo in futuro e di aggiungere nuove funzionalità.
Ricorda di lasciare un bel commento qui sotto!
Ciao, ho trovato questo tuo modello solo ora e mi è sembrato utile per quello che devo fare io, e cioè elaborare non fatture, ma prenotazioni di tour…
è tutto abbastanza chiaro, ma sto avendo difficoltà nel salvare il file in una cartella diversa da quella download perchè, pur salvando il file con macro ecc…non so come modificare la macro per stampare in pdf…
Aggiungo, se può essere utile, che utilizzo un mac…
Ciao Anna,
sono contenta che il modello ti sia utile
per il Mac non posso neppure fare dei test, però la puoi risolvere registrando il salvataggio che vuoi applicare con registratore macro, e successivamente incollando il codice registrato. Non occorre saper programmare
Inoltre, nel Windows le cartelle sono divise dal simbolo “/” nel Mac dal simbolo “:”. Di conseguenza devi modificare il simbolo o scrivere:
& Application.PathSeparator &
Salve, ho problemi con la parte del salvataggio e stampa in pdf… mi da il debug:
‘stampa in PDF
Sheets(“Fattura”).Select
ChDir Application.ThisWorkbook.Path
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
(Application.ThisWorkbook.Path) & Application.PathSeparator & “TEST-FATTURA n ” & nTEST & “_data” & Format(Date, “yyyy-mm-dd”) & “_ora” & Format(Now, “hh.nn.ss”) & “.pdf” _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=True
Forse perché devo mettere il percorso? come faccio?
Inoltre, una volta emessa una fattura e presente in archivio è possibile modificarla?
Ciao Silvia, mi dispiace tu abbia problemi.
Da me funziona perfettamente. Quindi prova a registrare e modificare la parte di codice che da te da errore.
Per la modifica della fattura, parlane prima con la tua commercialista o con il vostro contabile
ciao Matteo avrei bisogno di un aiuto con questo tipo di file potresti aiutarmi?
ciao Saverio, che problema hai?
Ciao Matteo. Sto provando a modificare questo interessantissimo programma perchè essendo un sanitario fisioterapista in libera prof.ne e non applicando l’IVA.oppure sconti, ho bisogno di metterci la dicitura bollo e che inserisca l’importo di €2 in fattura calcolando automaticamente l’importo netto/totale al superamento dei €77,47 oltre alla rivalsa del 4% INPS che posso mettere a mia discrezione. Mi sono talmente incasinato che non riesco a giungere al termine. Hai per caso da darmi qualche dritta. Grazie
ciao Lino, altro canale YT: https://youtu.be/DafFsPXsbiw
Ciao Matteo
Da dove si scarica il file fatturazione
Ciao Emanuele,
da qui, la lezione precedente