IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - [RISOLTO] calendario turnista
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

[RISOLTO] calendario turnista

 Post Reply Post Reply
Author
Message
awe1245 View Drop Down
Utente Senior
Utente Senior


Joined: 07/Gen/2008
Status: Offline
Points: 246
Post Options Post Options   Thanks (0) Thanks(0)   Quote awe1245 Quote  Post ReplyReply Direct Link To This Post Topic: [RISOLTO] calendario turnista
    Posted: 08/Nov/2018 at 11:51
salve,
in rete si trovano molti calendari ma nessuno che si possa adattare alle mie esigenze.
si tratta di un calendario annuale turnista (turnario).
la turnazione si sussegue in cicli di 32 giorni.
allego file di esempio

nel primo foglio c'è quello che voglio ottenere
nel secondo foglio c'è quello che sono riuscito a fare con le formule ma ...

a fianco del calendario c'è un esempio di come ruotano i turni
a presto,
andrea.


Edited by awe1245 - 15/Nov/2018 at 17:24
Back to Top
Sponsored Links


Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 465
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 09/Nov/2018 at 17:28
Ciao

Ho cercato di risolvere il problema utilizzando VBA ed impostando il “calendario” in maniera diversa.

Se guardi il Foglio1 devi solo inserire l’anno nella cella G5 e poi clicca sul pulsante blu “Imposta Turni”.

Qualche spiegazione è necessaria.

Dapprima un avvertimento: non inserire alcunchè nelle celle colorate (molte contengono formule).

 

Innanzi tutto occorre  una tabella che indichi i giorni festivi. Si trova nell’intervallo BA1:BF14; in detto riquadro devi solo inserire il giorno e il mese del Santo Patrono della tua città. Non toccare altro.

 

L’intervallo H2:AM2 con la serie dei turni puoi spostarlo ma attento ai riferimenti di cella.

 

Una volta che hai inserito l’anno cosa succede?

In automatico adegua il giorno della settimana delle righe dispari (deve essere composto da tre lettere così come quello della riga 2) riferito alla data. Questa è data dalla Funzione DATA(ANNO;MESE;GIORNO) che vengono desunti dalla cella G5 per l’anno, dalla colonna E per il mese (questa colonna può essere nascosta) e dalle colonna H:AL delle righe dispari per quanto riguarda il giorno. Se un mese ha un numero di giorni inferiore a 31 inserisce una lineetta.

 

Cosa fa la macro quando clicchi sul pulsante?

Calcola il giorno della settimana dell’1 gennaio, cerca detto giorno nella riga 2 e recupera l’inizio della turnazione dalla riga 4 della stessa colonna. Come è impostata la riga 4 inizierà sempre dalla colonna compresa fra H e N; pertanto se tu volessi iniziare da un’altra dicitura mettila in H8 e le altre a seguire.

A questo punto “carica” in una matrice i dati, in sequenza, dalla colonna individuata come sopra e fino alla colonna AM e, se fossero meno di 32, ricomincia dalla colonna H.

 

Ora, poiché l’1/1 è sempre festivo, mette una lineetta nella cella H8, quindi inia un ciclo per tutto l’anno e analizza se il giorno in esame è festivo (inserisce una lineetta) oppure se è feriale. In questo caso inserisce il turno caricato nella matrice il cui valore viene incrementato ogni volta.    

 

Trovi il file a questo indirizzo: http://www.filedropper.com/calendmarius

Fai sapere. Ciao,

Mario


-----------------------------------------------------------------------------------------------------------------------------------

edit: mi permetto inserire il file di Mario (un caro saluto) tramite l'upload del ns. sito.

Come noto i siti di file-sharing mantengono i file per un breve periodo temporale e, future necessità, non troverebbero il file a disposizione.

Suggerisco di utilizzare sempre il ns. sistema di upload.

Grazie e saluti

domenico

uploads/17743/calend_Marius.zip

--------------------------------------------------------------------------------------------------------------------------------------




Edited by dodo47 - 09/Nov/2018 at 17:40
Back to Top
awe1245 View Drop Down
Utente Senior
Utente Senior


Joined: 07/Gen/2008
Status: Offline
Points: 246
Post Options Post Options   Thanks (0) Thanks(0)   Quote awe1245 Quote  Post ReplyReply Direct Link To This Post Posted: 12/Nov/2018 at 09:38
Originally posted by Marius44 Marius44 wrote:

Ciao

Ho cercato di risolvere il problema utilizzando VBA ed impostando il “calendario” in maniera diversa.

Se guardi il Foglio1 devi solo inserire l’anno nella cella G5 e poi clicca sul pulsante blu “Imposta Turni”.

Qualche spiegazione è necessaria.

Dapprima un avvertimento: non inserire alcunchè nelle celle colorate (molte contengono formule).

 

Innanzi tutto occorre  una tabella che indichi i giorni festivi. Si trova nell’intervallo BA1:BF14; in detto riquadro devi solo inserire il giorno e il mese del Santo Patrono della tua città. Non toccare altro.

 

L’intervallo H2:AM2 con la serie dei turni puoi spostarlo ma attento ai riferimenti di cella.

 

Una volta che hai inserito l’anno cosa succede?

In automatico adegua il giorno della settimana delle righe dispari (deve essere composto da tre lettere così come quello della riga 2) riferito alla data. Questa è data dalla Funzione DATA(ANNO;MESE;GIORNO) che vengono desunti dalla cella G5 per l’anno, dalla colonna E per il mese (questa colonna può essere nascosta) e dalle colonna H:AL delle righe dispari per quanto riguarda il giorno. Se un mese ha un numero di giorni inferiore a 31 inserisce una lineetta.

 

Cosa fa la macro quando clicchi sul pulsante?

Calcola il giorno della settimana dell’1 gennaio, cerca detto giorno nella riga 2 e recupera l’inizio della turnazione dalla riga 4 della stessa colonna. Come è impostata la riga 4 inizierà sempre dalla colonna compresa fra H e N; pertanto se tu volessi iniziare da un’altra dicitura mettila in H8 e le altre a seguire.

A questo punto “carica” in una matrice i dati, in sequenza, dalla colonna individuata come sopra e fino alla colonna AM e, se fossero meno di 32, ricomincia dalla colonna H.

 

Ora, poiché l’1/1 è sempre festivo, mette una lineetta nella cella H8, quindi inia un ciclo per tutto l’anno e analizza se il giorno in esame è festivo (inserisce una lineetta) oppure se è feriale. In questo caso inserisce il turno caricato nella matrice il cui valore viene incrementato ogni volta.    

 

Trovi il file a questo indirizzo: http://www.filedropper.com/calendmarius

Fai sapere. Ciao,

Mario


-----------------------------------------------------------------------------------------------------------------------------------

edit: mi permetto inserire il file di Mario (un caro saluto) tramite l'upload del ns. sito.

Come noto i siti di file-sharing mantengono i file per un breve periodo temporale e, future necessità, non troverebbero il file a disposizione.

Suggerisco di utilizzare sempre il ns. sistema di upload.

Grazie e saluti

domenico

uploads/17743/calend_Marius.zip

--------------------------------------------------------------------------------------------------------------------------------------


Back to Top
awe1245 View Drop Down
Utente Senior
Utente Senior


Joined: 07/Gen/2008
Status: Offline
Points: 246
Post Options Post Options   Thanks (0) Thanks(0)   Quote awe1245 Quote  Post ReplyReply Direct Link To This Post Posted: 12/Nov/2018 at 09:47
buongiorno,
innanzi tutto grazie x il tempo che hai dedicato alla realizzazione del calendario.
la turnazione ruota come dovrebbe ma non riesco ad adattare il calendario al formato finale che deve avere, cioè quello dell'esempio a sinistra (16 colonne) del foglio "calendario".il riquadro di destra (32 colonne) è un esempio di come ruota la turnazione.
ad esempio, il mese di gennaio 2019 inizia con martedi 1 , D6 su sfondo grigio nella colonna I mentre la colonna H ha dei trattini.
non riesco a inizializzare il tuo calendario per tale situazione.
qualche informazione mancante:
le lettere da d1 a d8 sono i turni di lavoro. su sfondo bianco è un tyrno diurno e su sfondo grigio è notturno.
le festività non esistono, quindi che sia natale o il 1 gennaio, qualcuno lavora, semmai invece del trattino posso colorare la lettera di rosso, per ricordare che quel turno lavorativo è festivo.
la cartella di lavoro che contiene il calendario ha 12 fogli (mesi) collegato ad esso .
allego file reale finale.
saluti.
Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 465
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 12/Nov/2018 at 19:31
Ciao
Viste le precisazioni (nessuna festività - puoi eliminare l'elenco precedente) la macro diventa molto più semplice.
L'ho implementata per "ridurre" a 16 colonne il risultato ma l'ho in un'altra parte del Foglio (attento allo stop che ti ho messo nella macro; ovviamente puoi toglierlo se non ci sono dati in quella parte del foglio).
Ecco il codice
Option Explicit

Sub Turnazione()
Dim dat As Double, turno(1 To 32) As String, gis As Integer
Dim i As Long, j As Long, fst As Long, cn As Long, n As Long
For i = 8 To 30 Step 2
  Range("H" & i & ":AL" & i).ClearContents
Next i

Application.ScreenUpdating = False
cn = 8
For i = 1 To 32
  turno(i) = Cells(4, i + 7)
Next i
For i = 7 To 29 Step 2                  'per ogni riga
  For j = 8 To 38                       'per ogni colonna
    If Cells(i, j) = "-" Then Exit For
    n = n + 1
    If n > 32 Then n = 1
    Cells(i + 1, j) = turno(n)
  Next j
Next i

Stop 'attento se nell'intervallo qui sotto ci sono dati: VERRANNO CANCELLATI

'riporta 16 colonne soltanto
Range("AZ7:BP30").ClearContents
For i = 7 To 30 Step 2
  Cells(i, 52) = Cells(i, 7).Value
  n = 52
  For j = 8 To 38
    If Cells(i + 1, j) <> "" And Cells(i, j) <> "-" Then
      n = n + 1
      Cells(i, n) = Cells(i, j)
      Cells(i + 1, n) = Cells(i + 1, j)
    End If
  Next j
Next i
Application.ScreenUpdating = True
MsgBox "Fatto ..."
End Sub

Per avere il risultato con il turno iniziale diverso da D1, come ti avevo detto, devi cambiare (parlo del mio esempio) i dati nella riga 4 e farli partire dal codice che ti serve per primo.
Per quanto attiene la "colorazione", beh ... lavoriamo un po' per uno Big smile

Fai sapere. Ciao,
Mario
Back to Top
awe1245 View Drop Down
Utente Senior
Utente Senior


Joined: 07/Gen/2008
Status: Offline
Points: 246
Post Options Post Options   Thanks (0) Thanks(0)   Quote awe1245 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Nov/2018 at 10:08
salve,
ho velocemente provato il tuo codice e funziona perfettamente riportando a fianco il calendario a 16 colonne.
ora credo di non avere problemi di adattamento al mio foglio.
continuerò a provare ma direi che mi hai risolto il problema!
grazie 1000,
Andrea.
Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 465
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 14/Nov/2018 at 10:52
Ciao
Grazie per il gradito riscontro.

Ciao,
Mario
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,063 seconds.