Numerazione automatica di un documento.   (28/05/03)

Ovvero: come generare un numeratore automatico (altrimenti chiamato : contatore)

Anche se abbiamo già visto come ottenere un contatore in procedure presenti in questa sezione, continuano a pervenirmi richieste sullo specifico, per cui provo a dedicare una pagina a questo argomento.

Diciamo subito che è un'operazione semplice e che comunque si basa su un "serbatoio" dove esiste un numero (una cella), che a seguito di un "evento" facciamo incrementare di una unità. Per questa operazione useremo istruzioni in codice vba, non volendoci affidare a uguaglianze o formule tipiche del foglio di lavoro, che genererebbero "Riferimenti circolari" e quindi errori.

Molti sono i modi di operare, dipendono da noi e da come impostiamo il nostro lavoro, e quindi prenderemo in esame alcuni esempi, che potranno servire per chiarire i concetti di base. Gli esempi prendono tutti in esame la compilazione di una fattura nella quale, ad ogni nuova fattura, dovremo assegnare un numero successivo all'ultimo usato. Useremo quindi una cella che conterrà il numero fattura, esempio la F10.

La F10 sarà quindi il nostro "serbatoio", che potrà essere utilizzato anche se all'inizio sarà vuoto, o se proprio vogliamo, inseriremo il valore zero (0).

L'incremento lo otteniamo con questa semplice istruzione:

Range("F10") = Range("F10").Value + 1

cioè : il valore che si trova il F10 sarà uguale allo stesso valore più uno. Ed Excel esegue docile, se F10 era vuoto, dopo questa istruzione sarà 1, se era 22, diventerà 23, e così via.

Stabilita l'istruzione, dobbiamo decidere quale evento scegliere per lanciarla. Vediamone alcuni:

  • Creare una macro da associare ad un pulsante che nomineremo ad esempio :"Numero Fattura". In questo caso ad ogni pressione sul pulsante, incrementiamo il numero. In questo modo però possiamo dimenticarci di premere il pulsante, e quando registreremo la fattura, la registriamo con un numero che esisterà già. Conviene affidarci ad un sistema che automatizzi l'istruzione sopra citata, evitandoci errori dovuti a dimenticanze. Potremmo sfruttare eventi collegati all'apertura o all'attivazione del foglio di lavoro dedicato alla compilazione del documento, ma non va bene perchè se apriamo il foglio per sola consultazione, facciamo scattare il contatore incrementando il numero quando invece non lo vogliamo. Potremmo sfruttare l'evento Worksheet_Change, nel quale potremmo inserire una condizione, cioè se la cella che porterà il nome del cliente sarà diverso da vuoto, allora incrementiamo il contatore. Ma non va bene neanche questa soluzione perchè se avremo sbagliato cliente, cancelliamo il nome e ne scriviamo un'altro, si incrementa di nuovo il contatore. Allora?

  • Sicuramente, in ogni progetto degno di tale nome, avremo previsto un pulsante associato ad una macro con le istruzioni per la registrazione, in un foglio chiamato "Archivio", dei dati riguardanti la fattura compilata: bene, inseriremo l'istruzione sopra citata ad inizio macro, prima delle istruzioni di registrazione. In questo modo, prima che inizino le registrazioni avremo il nostro contatore incrementato col giusto valore, che verrà registrato insieme agli altri dati.

  • In genere, nei progetti ben congegnati, è solo dopo che è avvenuta la registrazione, che passeremo alla stampa del documento. Anche in questo caso la stampa che otterremo riporterà il giusto numero di fattura.

  • Potremo a questo punto avere previsto un pulsante per il salvataggio di una copia della fattura (sfruttando le istruzioni contenute nel paragrafo precedente "Salvare una Fattura").

  • Un accorgimento poi sarà quello di NON cancellare il dato nella cella numeratore quando a fine registrazione e successiva stampa e/o salvataggio copia, faremo pulire le celle (con ClearContents) con l'apposita macro che avremo creato, per predisporre il foglio ad una nuova fattura. Poco importa se nella cella del numero fattura vediamo il numero della fattura precedente, sappiamo che si incrementerà quando premeremo il pulsante "Registra fattura".

  • A fine lavoro, non ci dovremo mai scordare di salvare la cartella, oppure predisporre le istruzioni per il salvataggio in automatico della cartella.

Esistono, come già detto, parecchi sistemi per creare un incremento nel numero fattura, compreso quello di andarsi a leggere nel foglio "Archivio" l'ultimo numero registrato, ed incrementarlo di 1, ma dovremo comunque scegliere l'evento giusto perchè questo avvenga. Credo di avere un pò chiarito questi semplici concetti. Queste informazioni sono sfruttabili su schemi fattura autocostruiti e non sui "Modelli" che peraltro non uso e non ho mai usato.

 

Buon lavoro.

prelevato sul sito http://ennius.interfree.it