Un calendario con Openoffice

In questo post ci sono le formule per realizzare da zero un calendario con Open Office Calc, in maniera tale che basta cambiare l’anno e in automatico il software colora di rosso le domeniche e i giorni festivi. 

Per chi non vuole farsi venire il mal di testa oppure va particolarmente di fretta, meglio cercare su altri siti web le istruzioni per usare i template disponibili (anche per OpenOffice) oppure rivolgersi ai vari siti web (o negozi) che offrono questo servizio.

Parecchi anni fa si vendeva un cd con un software per creare calendari personalizzati. Al giorno d’oggi l’opzione migliore è rivolgersi ad uno di quei siti web che offrono dei modelli già pronti, da personalizzare in maniera intuitiva con fotografie, disegni e scritte. L’utente decide la parte che lo riguarda, e il sito si occupa di impaginare le caselle coi giorni della settimana. 

In questo post non ci occuperemo delle foto e delle scritte, ma solo della tabella con i giorni. Quando uno compra un prodotto già fatto magari non può scegliere i colori e i font di questa parte del progetto. Lavorandoci in proprio invece si può personalizzare ogni singolo dettaglio. Non c’è bisogno di software particolari, si può fare tutto con OpenOffice, che è un insieme di programmi che si scarica gratuitamente dal web.

Di default non c’è nessun pulsante che crea il calendario, ma è possibile scaricare l’apposito template (anche questo è gratuito). 

Qui però non ci soffermiamo neanche sul template, ma proviamo a costruire la tabella a partire da zero. C’è qualche tutorial sul web, che però non mi convince: comincia dicendo di vedere qual’è il giorno della settimana con cui comincia il mese per posizionare il primo giorno nella casella giusta. Nulla a che vedere con quello che voglio fare io. 

La mia fonte di ispirazione è il semplice calendario che mi ha regalato il supermercato: i giorni sono incolonnati in verticale in due colonne; soltanto numero e giorno della settimana, senza neanche il santo; 16 giorni nella prima colonna, gli altri nella seconda; giorni festivi in rosso. 

 

Questo è il risultato finito (numeri in Montserrat, il resto in TwCen). Basta cambiare l'anno sulla copertina e in automatico OpenOffice cambierà le domeniche e colorerà in rosso tutte le festività, inclusa Pasquetta che capita ogni anno in data diversa. Ovviamente questa è solo la base su cui lavorare: ci si può sbizzarrire con i colori e con le foto, anche senza uscire da Calc. Meglio farle più piccole le scritte, per lasciare posto ad eventuali appunti.

 

Tutto ciò si può realizzare con un po’ di impegno utilizzando il foglio di calcolo di OpenOffice, Calc (l’alternativa a Microsoft Excel). Si fa un po’ di fatica, ma i calendari degli anni successivi possono essere realizzati in automatico. Comunque le conoscenze acquisite potranno essere utili anche per lavorare ad altri progetti. 

Il punto di partenza è l’anno. Tutte le date del calendario punteranno indirettamente qui per cui basterà cambiare questo numero e automaticamente cambieranno gli accoppiamenti tra numeri e giorni della settimana e i giorni festivi si coloreranno in rosso. 

Bisogna riservare una cella per questo numero. Possiamo scegliere una casella qualsiasi all’inizio, tanto poi è facile copiarla e incollarla altrove. Diciamo che l’abbiamo messa in D1. 

A questo punto lavoriamo al primo giorno dell’anno. Nella casella A1 scriviamo  

=data(d1;1;1)

Questa istruzione va a pescare l’anno nella casella D1, e lo trasforma nella data del primo gennaio (i due numeri uno aggiunti nella parentesi, uno per il mese l’altro per l’anno). 

A questo punto ci spostiamo nella casella sottostante e scriviamo 

=a1+1

Questa istruzione prende la data dalla casella precedente e l’aumenta di uno (il due gennaio dell’anno in corso). 

Selezioniamo la casella a2, poi clicchiamo sul quadratino in basso a destra e lo trasciniamo giù fino ad arrivare alla riga 365 (l’ultimo dell’anno). 

 

Cambiando l'anno nella cella D4, cambierà in automatico anche in tutte le celle della colonna A, e quindi cambieranno pure le domeniche, cioè le celle da colorare in rosso.

Selezioniamo tutte quante le caselle che abbiamo riempito, le copiamo e le incolliamo nella colonna B, a fianco di quelle corrispondenti nella colonna A. In un primo momento i numeri che compaiono si riferiscono all’anno sbagliato, bisogna correggere la prima casella (B1): ci scriviamo 

=a1 

e ogni cosa va al suo posto. 

Di default queste date appaiono scritte nel formato gg/mm/aa, che non è un granché dal punto di vista visivo, e non si capisce perché l’abbiamo copiato due volte. In realtà nella prima colonna ci metteremo il numero del giorno, mentre nella seconda ci sarà il giorno della settimana. 

Tutto questo si può fare in un tocco solo per ogni colonna con la formattazione delle celle: clicchiamo sulla colonna, poi su Formatta Celle, poi nella scheda Numeri scegliamo il formato. Senza tenere conto dei formati suggeriti ne impostiamo uno definito dall’utente: basta andare nella casella in cui c’è scritto Codice Del Formato e scrivere g. Premiamo Ok. A questo punto in ogni casella c’è soltanto il numero del giorno, composto solo delle cifre necessarie (1 anziché 01 quando è il primo giorno del mese; scrivendo gg sarebbe comparso anche lo 0). Nella seconda colonna facciamo lo stesso lavoro, solo che scegliamo il formato nnn. Magicamente nelle caselle compare soltanto il nome del giorno della settimana (venerdì, sabato, domenica...). Comunque ogni casella continua a contenere anche informazioni su numero, mese e anno, anche se non le visualizza. 

A questo punto abbiamo i numeri accoppiati coi giorni della settimana, ma la colonna è ancora un po’ monotona. Vogliamo che le domeniche siano segnate in rosso. Questo si può fare grazie alla formattazione condizionale. Selezioniamo entrambe le colonne, facendo caso a quale è la casella che rimane attiva alla fine della selezione (esempio: la B1). Clicchiamo poi su Formato e Formattazione Condizionale. Nel menu a discesa scegliamo La Formula E’, e scriviamo  

GIORNO.SETTIMANA(B1)=1 

(al posto di B1 ci va il nome della casella attiva). A questo punto clicchiamo sul pulsante Nuovo Stile e scegliamo tra le impostazioni riguardanti gli effetti il colore rosso. Una volta approvato lo stile e premuto ok sulla finestra della formattazione condizionale, tutte le domeniche si colorano di rosso, sia nella prima colonna che nella seconda.

 

La prima condizione colora le domeniche, la seconda colorerà poi le altre festività (Natale, Capodanno, Ferragosto) pescando le date in un foglio a parte.

Se volete cambiare l’anno nella casella D4 potete constatare che il cambiamento avverrà in automatico per qualsiasi anno vogliate visualizzare, passato o futuro. 

Ormai l’automatismo è funzionante: basta cambiare il numero dell’anno e il software dispone in automatico le domeniche e le colora di rosso. 

Questo calendario però ha un grosso difetto: è di 365 giorni fissi. Sì, tiene conto del bisestile, ma lo fa aggiungendo il ventinovesimo giorno a febbraio, in maniera tale che il 365° giorno dell’anno è il 30 dicembre. Il problema è che l’anno si conclude lì, senza tenere conto del 31!

Per risolvere questo problema dobbiamo aggiungere una riga vuota dopo il 28 febbraio, e gestire il passaggio con un paio di formule. 

Clicchiamo sul numero della riga dopo il giorno 28 febbraio col pulsante destro e scegliamo Inserisci Righe. Nella casella vuota che si è venuta a creare dopo il numero 28 scriviamo

=SE(ANNO.BISESTILE(a59);a59+1;"") 

(dove A59 dovrebbe essere la casella dove sta il 28. In pratica se l’anno di cui fa parte l’ultimo giorno di febbraio è bisestile, nella cella comparirà il numero della cella precedente aumentato di uno (29), altrimenti resterà vuota (il nulla che si trova tra le aperte e le chiuse virgolette). 

La stessa formula possiamo scriverla anche nella casella a fianco, scrivendo B59 invece che A. 

A questo punto quando l’anno non è bisestile la casella rimane vuota. Quando l’anno è bisestile il 29 febbraio compare due volte. Dobbiamo lavorare sul puntamento della casella del primo marzo. Clicchiamo sul numero 1 e ci scriviamo  

=se(anno.bisestile(a59);a60+1; a59+1)

In pratica se l’anno è bisestile, nella casella ci sarà il giorno successivo al 29 (cioè il primo marzo) altrimenti ci sarà il giorno successivo al 28 (sempre il primo marzo). In questo modo i giorni da qui in giù non vengono sfalsati (perché appoggiano tutti sul primo marzo) e l’ultimo giorno dell’anno sarà sempre il 31 dicembre. 

Ovviamente dobbiamo fare lo stesso lavoro anche per la colonna B, altrimenti si sfalsano i giorni: nella casella a fianco al numero 1 (la B61) ci scriviamo  

=a61

Siamo quasi pronti: mancano gli altri giorni festivi, quelli che capitano in una data fissa (Capodanno, Epifania, Festa della Liberazione, Festa dei Lavoratori, Festa della Repubblica, Ferragosto, Ognissanti, Immacolata Concezione, Natale e Santo Stefano). Questi possiamo inserirli a parte, ad esempio nel Foglio 2 del documento (compare in basso nella finestra). Selezioniamo la colonna A del Foglio 2 e formattiamo le celle per il Testo (Formatta Celle, Numeri, clicchiamo su Testo o digitiamo una chiocciola nella casella Codice Del Formato). Scriviamo nella colonna A tutti i giorni che vogliamo colorare in rosso: il giorno, una barra, e il mese: 1/1, 6/1, 25/4, 1/5, 2/6, 15/8, 1/11, 8/12, 25/12. Uno per ogni casella, dall’alto in basso. 

A questo punto bisogna intervenire con la formattazione condizionale. Torniamo al Foglio 1, selezioniamo le colonne A e B facendo caso alla casella che rimane in evidenza (rettangolo nero). Clicchiamo su Formato e su Formattazione Condizionale. Mettiamo la spunta sulla Condizione 2, nel menù a discesa scegliamo La Formula E’, e nella casella a fianco digitiamo

CERCA.VERT(CONCATENA(GIORNO(B1);"/";MESE(B1));Foglio2.$A$1:$A$100;1;0)=CONCATENA(GIORNO(B1);"/";MESE(B1)) 

(Al posto di B1 bisogna scrivere la casella rimasta attiva quando abbiamo selezionato le colonne). Questa è complicata. Stiamo verificando se la data di ciascun giorno (scritta concatenando mese e anno, per esempio 1/1, o 25/12) è presente nella prima colonna del foglio 2 (ho preso solo le prime 100 caselle, che bastano e avanzano); se il risultato dell’operazione è uguale alla data che stiamo cercando, vuol dire che quel valore c’è e che deve essere applicato lo stile dei giorni festivi. Stavolta non dobbiamo andare a scegliere il colore (a meno di non volerlo fare diverso): basta selezionare nel menu a discesa lo stesso stile che abbiamo usato per la Condizione 1. 

Che ci manca? La Pasqua? In effetti non ci sarebbe da scervellarsi più di tanto, perché è sempre festiva, visto che cade di domenica. Ma il giorno successivo è il Lunedì dell’Angelo, ossia Pasquetta, ed è festivo.

Pasquetta quindi non capita in una data fissa ogni anno. Ma OpenOffice è predisposto per calcolare in automatico la data della Pasqua utilizzando una funzione apposita. Ottenuta quella data, basta aumentarla di uno per sapere qual'è il lunedì da colorare in rosso.

Torniamo al foglio 2 e cambiamo la formattazione della prima cella vuota che troviamo nella colonna A: adesso deve essere Numero Standard, altrimenti il programma non interpreterà le istruzioni che stiamo per fornire. La formula da inserire poi nella cella è questa:

=CONCATENA(GIORNO(DOMENICA.DI.PASQUA(INT(Foglio1.d1)))+1;"/";MESE(DOMENICA.DI.PASQUA(INT(Foglio1.d1))+1))

Tutto questo solo per calcolare con l’apposita funzione il giorno della Pasquetta (Domenica di Pasqua aumentato di uno) e scriverlo nel formato consueto, ad esempio 5/4. (La casella a cui abbiamo puntato è quella in cui abbiamo scritto l’anno all’inizio). 

Se abbiamo fatto tutto correttamente, tornando al foglio numero 1 troveremo che il lunedì in questione si sarà colorato di rosso. 

Spesso ogni Comune ha una festa cittadina nel giorno del patrono, in cui scuole e uffici sono chiusi. Se aggiungiamo questa data nella colonna A del Foglio 2 potremo colorarla di rosso al volo. 

Volendo adattare il calendario alle festività nazionali di un altro Paese non sarebbe necessario intervenire sul codice delle celle: basterebbe semplicemente cambiare l’elenco delle festività nel Foglio 2. 

Abbiamo finito? Neanche per idea! Bisogna ancora impaginare! Se clicchiamo su Anteprima di Stampa vediamo quante pagine occupa il nostro lavoro. Togliamo le intestazioni sopra e sotto la pagina (se non lo facciamo subito, poi ci toccherà risistemare di nuovo tutte le pagine già sistemate). Quando poi chiudiamo l’anteprima alcuni dei bordi tra le celle saranno più spessi degli altri. Servono a farci capire dove finisce una pagina e dove ne comincia un’altra. A questo punto possiamo regolare la dimensione del carattere e iniziare a copiare a piacimento le scritte là dove ci fanno più comodo. Non bisogna preoccuparsi di scombinare tutto (a meno di non incollare su caselle occupate) perché il software aggiorna i riferimenti di volta in volta. 

 

Le linee più scure segnalano dove finisce una pagina e dove ne comincia un'altra. Aggiungendo o allargando le celle si può impaginare il testo anche senza uscire da Calc. In questo caso ho selezionato tutte le caselle dei giorni della seconda metà di ogni mese, le ho tagliate e incollate a fianco dei giorni della prima metà. Il software aggiorna in automatico tutti i riferimenti. Per fare spazio al nome del mese ho unito parecchie celle. Nella casella in alto (relativa alla cella selezionata) si può notare lo stratagemma che ho usato per evitare che compaia anche il 29 febbraio negli anni che non sono bisestili.

 

Ricordarsi di non cancellare la casella iniziale con l’anno! Sparita quella infatti non spariscono i giorni, solo che si riferiscono all’anno sbagliato! (Meglio controllare con un calendario vero che non ci siano inesattezze nel lavoro che avete fatto, prima di stamparlo). 

Per scrivere in grande i nomi dei mesi si possono unificare le celle con l’apposito pulsante. 

È comunque possibile copiare le celle contenenti i giorni di ogni singolo mese e spostarle in blocco in mezzo ad altri elementi in una pagina di OpenOffice Writer, dove si può rimpicciolire il tutto a piacimento, come fosse un’immagine. Comunque è possibile incollare delle fotografie anche dentro Calc, oltre che cambiare i colori di sfondo, e dei bordi, aggiungere linee eccetera.

Un’ultima cosa: andando a stampare ora verrebbe anche una pagina con l’elenco delle festività che abbiamo inserito nel foglio 2. Visto che quello non è un elemento da stampare, è opportuno definire prima l’area di stampa cliccando su Formato / Aree Di Stampa. Solo le celle che selezioneremo finiranno su carta, quelle d’appoggio no. 

 

La cella con l'anno è diventata molto grossa, tanto da costituire la pagina di intestazione del calendario (basta accorpare tutte le caselle che costituiscono l'area e poi aumentare la dimensione del carattere). Le linee nere delimitano una pagina dall'altra. Non compaiono inizialmente, ma solo dopo avere visualizzato per la prima volta l'anteprima. Assicurarsi prima di cominciare ad impaginare che non ci siano fastidiose intestazioni automatiche col numero di pagina sul foglio stampato che riducono lo spazio a disposizione nel lavoro finito. Per non lasciare tutte quelle caselle vuote tra il mese e i giorni, in alternativa si può lasciare soltanto una riga e regolarne l'altezza.

---

E se uno vuole un calendario di altro tipo, con i giorni disposti in una tabella fissa? Qui c’è qualche idea in proposito. 

Commenti

Post più popolari