di Francesco Forestiero |
26 luglio 2011

Quando si gestisce
una squadra di lavoro, la pianificazione delle presenze durante i periodi estivi è di cruciale importanza, al fine di garantire il proseguimento delle attività. Bisogna sapere con largo anticipo se una determinata risorsa sarà disponibile in un certo periodo o, nel caso contrario, adoperarsi per realizzare una corretta turnazione del personale. Che si tratti di un progetto o dello svolgimento di specifiche mansioni, è compito del responsabile pianificare le assenze programmate, rispettando le esigenze di ogni risorsa. E per far fronte a tutto ciò è possibile ricorrere ancora una volta ad
Excel.
L’utilizzo di un foglio di calcolo consente l’intersezione e la gestione delle diverse assenze, individuando eventuali periodi critici così da affrontare al meglio l’intervallo estivo.
Il primo passo verso la compilazione del
piano ferie consiste nel raccogliere le diverse richieste dei dipendenti, in tempo utile per proporre eventuali variazioni. Questa comunicazione potrebbe avvenire, ad esempio, tramite mail con l’invio di un file Excel unificato e contenente alcuni campi da compilare (con le date di assenza proposte dal dipendente).
Nel progetto che andremo a sviluppare ipotizziamo un foglio di calcolo che verrà compilato dal dipendente al momento opportuno, contenente tutte le informazioni necessarie alla verifica dei giorni di assenza. Per semplicità di gestione e soprattutto per evitare la programmazione di tutto il piano ferie annuali in un unico momento, si suddividerà in trimestri la comunicazione delle assenze. In tal modo, mettiamo il caso ci si appresti a definire le ferie estive e quindi il terzo trimestre (luglio-settembre), nei primi giorni del mese di giugno, con un mese di anticipo sul primo giorno utile, si possono pianificare le ferie della forza lavoro.
Al fine di evitare l’utilizzo di un nuovo foglio di calcolo per ogni trimestre dell’anno, sarà predisposta la generazione automatica del calendario trimestrale. La generazione automatica di un calendario può risultare un’operazione non semplicissima, soprattutto se si vogliono considerare i giorni festivi. Per risolvere il problema ci serviremo di una macro, che grazie a qualche riga di codice Visual Basic consentirà la puntuale compilazione del calendario di un qualsiasi anno. Per semplificare le cose utilizzeremo il più possibile le formule messe a disposizione dal foglio di calcolo, così da predisporre direttamente nelle celle i dati necessari alla generazione del calendario. Per le festività si utilizzerà una tabella contenente le date di tutti i giorni festivi previsti nell’anno. La tabella si potrà ampliare o modificare a piacimento, inserendo ad esempio la festa patronale della città o altre date che si desiderano evidenziare in rosso sul calendario. Per le domeniche ci serviremo, invece, della formula
GIORNO.SETTIMANA. Questa restituisce un numero progressivo da 1 a 7, a partire da una determinata data. Il
codice VB eseguirà quindi, mediante un ciclo iterativo, la scansione del calendario controllando l’eventuale presenza di giorni festivi. Tirando le somme il dipendente avrà davanti a se un file contenente in una griglia i tre mesi di riferimento e potrà indicare, digitando un simbolo o un particolare carattere, i giorni di assenza direttamente sul
calendario.
Il foglio di calcolo utilizzato per la comparazione delle assenze dei diversi dipendenti è molto più semplice rispetto al precedente. Una prima schermata verrà utilizzata per l’inserimento dei dati estrapolati dal foglio di calcolo inviato dall’utente. Utilizzando un semplice
Copia e Incolla, si riporteranno tutti i piani ferie dei dipendenti. Un secondo foglio del file, invece, riporterà il confronto mese per mese delle assenze di ogni risorsa. Nel progetto non si è considerata per semplicità l’esigenza della compresenza di particolari risorse o l’indispensabilità di altre in specifici periodi. Questo perché, ordinate in colonna per periodo, le assenze possono essere facilmente visualizzate e confrontate in un colpo d’occhio, valutando eventuali periodi scoperti. Fino ad un numero contenuto di risorse da gestire risulta quindi sufficiente una comparazione visiva, che oltretutto prescinde da decisioni differenti in base al tipo di lavoro svolto ed alle esigenze delle risorse stesse.
Un foglio per i dipendentiPrimo passo per la realizzazione del nostro progetto, consta nella definizione del foglio dipendente. Sarà quindi necessario mettere a punto la struttura di un foglio di calcolo, che verrà compilato dalle risorse facenti parte del gruppo di lavoro gestito. L’utente visualizzerà, aprendo il file, una finestra di dialogo all’interno della quale potrà inserire i dati necessari alla generazione del calendario. Per semplicità si è scelto di inserire il nome del dipendente, l’anno ed il trimestre di riferimento. Ovviamente questa è una struttura di base. A seconda alle esigenze tali dati potranno essere ampliati, ad esempio, con il numero di matricola o ancora il reparto di appartenenza. Un foglio del file dedicato alle festività potrà essere nascosto all’utente e modificato solo dal coordinatore.

Per la generazione del calendario realizziamo una griglia di dimensioni 3x31, inserendo i mesi in riga e i giorni in colonna. Inseriamo poi i dati principali necessari alla generazione del calendario. Nella cella
B15 del primo mese inseriamo la formula
=SE(B7=1;”Gennaio”;SE(B7=2;”Aprile”;SE(B7=3;”Luglio”; “Ottobre”))).

Digitiamo nella cella
A17 la formula
=B7*3 e con
-1 generiamo i mesi precedenti. Inseriamo in basso, per ogni mese, il numero di giorni e con un
CERCA.VERT nelle celle
AH15,
AH16 e
AH17 riportiamo il numero di giorni del mese. Realizziamo una griglia con la formula
=GIORNO.SETTIMANA(DATA(aaaa;mm;gg)) nelle celle
C19:AG21.

In un altro foglio di calcolo inseriamo una griglia contenente l’indicazione di tutte le festività con giorno e mese e accanto in formato
gg/mm/aaaa usando
DATA. Riportiamo poi tutta la griglia in formato data con la formula
=DATA(aaaa;mm;gg). Usiamo nelle griglie la formula
SE per verificare i mesi di
30 giorni e
febbraio.

Andiamo in
Sviluppo/Visual Basic per avviare l’
Editor. Facciamo clic su
Inserisci/UserForm. Inseriamo 3 etichette e 3 caselle di testo, modificando nelle proprietà degli oggetti la voce Caption. Aggiungiamo un pulsante di comando e con un doppio clic incolliamo il contenuto del file
generacalendario.txt (scaricabile dal link in fondo all'articolo).
Facciamo doppio clic su
ThisWorkbook nella finestra
Progetto dell’
Editor di Visual Basic e incolliamo lo spezzone di codice, inserendo come intestazione
Private Sub Workbook_Open() e successivamente lo spezzone di codice
UserForm1.Show. La finestra di dialogo creata verrà così caricata all’avvio del file.
Per gli anni bisestili?Un problema da affrontare nella generazione del calendario è legato al riconoscimento degli anni bisestili. Come è noto gli anni bisestili, che ricorrono ogni 4 anni, sono formati da
366 giorni anziché
365. Il controllo è presto fatto. Un anno è bisestile se il suo numero è divisibile per 4, con l’eccezione degli anni secolari (quelli divisibili per 100) che sono bisestili solo se divisibili per 400. Con la formula
RESTO(anno) e l’uso degli operatori logici
E ed
O, possiamo verificare questa condizione. La formula usata nel foglio di calcolo è
=SE(O(RESTO(B4;400)=0;E(RESTO(B4;4)=0;RESTO(B4;100)<>0));1;2). Questa restituirà
1 per gli anni bisestili e
2 per quelli non bisestili.
Assenze sotto controlloCliccando sul pulsante
Genera Calendario, inserito nella finestra di dialogo creata, vengono ricopiati i dati contenuti nelle caselle di testo all’interno delle corrispondenti celle del foglio di calcolo. Successivamente viene richiamata la funzione
Domeniche, il cui codice è contenuto nel file
domeniche.txt (scaricabile dal link in fondo all'articolo). Il codice non fa altro che utilizzare due
cicli For e verificare se un determinato giorno della griglia corrisponde ad una domenica (griglia numerica da 1 a 7) o ad una festività (comparando le date della griglia del foglio
Festività con i giorni di festa inseriti). Un tasto
Modifica, che richiama la finestra di dialogo per modificare i dati inseriti e un tasto
Copia, che provvede a copiare il contenuto della griglia compilata, concludono il file.

Dalla scheda
Sviluppo avviamo l’
Editor di Visual Basic cliccando su
Visual Basic. Andiamo in
Inserisci/Modulo e ricopiamo all’interno lo spezzone di codice contenuto nel file
domeniche.txt (scaricabile dal link in fondo all'articolo). A questo punto verranno automaticamente colorati di rosso i giorni di festa ed in nero i giorni mancanti, come il 31 ad alcuni mesi.

Dalla scheda
Sviluppo clicchiamo su
Inserisci dal menu
Controlli. Selezioniamo il controllo
ActiveX Pulsante di comando e successivamente facciamo doppio clic sul pulsante generato. Modifichiamo poi la proprietà
Caption e inseriamo lo spezzone di codice
UserForm1.Show. In questo modo si richiamerà la finestra.

Da
Inserisci, nel menu
Controlli della scheda
Sviluppo, selezioniamo un altro controllo
ActiveX Pulsante di comando. Facciamo doppio clic su di esso e inseriamo lo spezzone
Call Copia. Inseriamo quindi un nuovo
Modulo e incolliamo nell’editor lo spezzone di codice
Range(“C14:AG17”).Select e Selection.Copy.

In un nuovo file incolliamo le selezioni provenienti dal pulsante
Copia del
foglio dipendente. Incolliamo anche il nome del dipendente al quale corrisponde il piano ferie. Inseriamo l’indicazione del trimestre di riferimento ed utilizziamo la stessa formula del precedente foglio per l’individuazione del mese.

Ricopiamo con i collegamenti i dati per dipendente contenuti nel primo foglio, disponendoli questa volta per mese. Avremo così tutti i dipendenti in riga, mentre in colonna vi saranno i giorni del mese. Selezioniamo la griglia, clicchiamo su
Formattazione Condizionale e impostiamo la regola
Uguale a inserendo “x” come valore.
La gestione del personale è anche sul WebFra i vari software di
ERP presenti in Rete vale la pena citare
3Time. Il software, accessibile mediante autenticazione con password ed username, consente la gestione del personale in ingresso ed uscita, registrando con un orologio di sistema tutti gli spostamenti. Raggiungibile all’indirizzo
www.3time.it, il software offre una demo di prova con cui è possibile saggiare tutte le funzionalità del servizio. Si tratta infatti di un applicativo a pagamento per il quale, sempre online, è possibile richiedere un listino prezzi. Accedendo alla
Demo si può verificare l’esistenza di 4 differenti profili di accesso: dipendente, amministratore di sede, amministratore di società e amministratore di sistema. Dal lato dipendente è possibile registrare diversi tipi di movimento, come ad esempio: l’assenza personale, richiedere permessi e altro. Il tutto direttamente sul Web sfruttando una semplice connessione. Ciò consente un notevole risparmio rispetto all’acquisto di costose licenze per software e si evita di installare pesanti applicativi sulle macchine in azienda.
Qui trovate il file del progetto realizzato in quest'articolo e gli altri file indispansabili.
Buon lavoro.