Genera turni per 14
Hai un problema con Excel? 
Genera turni per 14
di Tsrm data: 03/01/2016 22:20:42
Ciao a tutti
Grazie per avermi accolto,
Ho bisogno d'aiuto per realizzare un programma che mi generi i turni del mio reparto, ripartendo lo stesso carico di lavoro ai 14 colleghi assegnati al reparto.
Attualmente utilizzo un foglio di calcolo che mi fa i conteggi, ma io devo inserire i dati in modo che siano quanto più uniformi, non cosa facile, mi impegna giornate.
I vincoli per i colleghi sono i soliti: non più di 14 gg lavorativi consecutivi, da 2 a 3 notti ciascuno, dopo la notte lo smontante e dopo lo smontante il riposo; da 4 a 7 turni di pomeriggi, i rimanenti tutti di mattina, 1 o 2 turni che ricadano di domenica, 0 o 1 prefestivo di pomeriggio o di notte......
I vincoli per i giorni: nei feriali: 1 operatore per notte, 3 pomeriggio, i restanti di mattina; prefestivi 1 notte, 2 pomeriggio, i restanti mattina; festivi 1+1+1.......
Inoltre dovrebbe compensare i turni in più o in meno nei mesi successivi, forse dovrebbe sviluppare i turni per un anno intero con vincoli per l'anno e per periodi inferiori, mesi o trimestri. Dovrebbe tenere bloccati i turni effettuati e modificare i futuri in relazioni a quelli già passati.
È troppo complesso?
Penso che uno bravo, non certo io, avendo le richieste giuste dovrebbe poterlo realizzare, io potrei fare il lavoro di facchinaggio, quello ripetitivo.
Se qualcuno ha la pazienza e la cortesia di insegnarmi come si inseriscono le condizioni, poi vedo se riesco a svilupparlo e chiederò la cortesia della verifica.
Credo che un programma del genere potrebbe essere utile a molti, magari qualcuno ne potrebbe fare un applicativo, io sono pronto a testarlo.
Attilio
Edue2@libero.it
di Marius44 data: 04/01/2016 09:09:04
Ciao Attilio
inanzi tutto un consiglio: non mettere mai la tua eMail in un Forum: potresti trovarti sommerso di spam
Veniamo al tuo problema (assolutamente non facile). Se cerchi in questo Forum, in altri Forum o in Rete trovi tanto materiale da perdersi. Ma tutto si basa su una domanda fondamentale: come stai a conoscenza di Excel e/o VBA?
La risposta è basilare per il seguito: non basta avere una formula o una macro quando un qualsiasi malfunzionamento (sempre dietro l'angolo) ti può mettere in crisi perchè non sei in grado di gestirlo.
Un'ultima cosa: è sempre cosa buona e giusta allegare un file (senza dati sensibili), con i tuoi tentativi e con l'indicazione del risultato atteso. Non costringere chi volesse aiutarti a costruirsi tutto da zero, anche con possibili errori di struttura.
Non volermene per la lunga tiritera. Ciao,
Mario
di Tsrm data: 06/01/2016 00:04:01
Grazie Mario per avermi risposto
Per gli spam non ci sono problemi, già questa email è oggetto di bombardamento a mitraglia di spam, dovrò abbandonarla.
In merito alle mie conoscenze: excel solo funzioni di base; per il linguaggio VBA ne sconoscevo l'esistenza prima di oggi. Ma sono dotato di grande pazienza, se qualche cosa non va riprenderò tutto d'accapo, tutte le vote che sarà necessario.Speriamo che basti.
Condivido assolutamente i suggerimenti che mi hai gentilmente passato, .
Il file l'ho avrei allegato quando qualcuno mi avesse degnato di una risposta. Ora l'ho messo.
Ho pero capito che non posso chiedere cosa mi serve e aspettare che qualcuno faccia il lavoro per me.
Per cui chiederò passo per passo cosa mi serve.
Intanto parto da un db che presenta nella prima colona 14 nomi, le successive 31 colonne i giorni di un mese ed altre colonne che riportano i riepiloghi.
Ora io ho iniziato facendo generare da "B9" ad "AF22" dei numeri da 0 a 5 in ordine casuale, ma potrebbero essere (forse anche meglio ) ciclici, dove 0 sta per notte, 1 smontante.............
Secondo passo, ogni 0 deve essere seguito da un 1, e ogni 1 da un 2, altrimenti casuale;meglio se seguiti da 0,3,4,5.
terzo passo, nella colonna "B" da 9 a 22 ci deve essere max 1 "0" min 1 "0"
E per oggi sarebbe piu che sufficiente, adattando questi comandi alle varie esigenze penso che avrei gia fatto metà del lavoro.
di Marius44 data: 06/01/2016 22:17:55
Grazie per il file e le ulteriori precisazioni.
Senza voler dare l'impressione che ho ... l'asso nella manica (ti posso assicurare che il problema posto è veramente arduo) vorrei alcuni chiarimenti.
1°) cosa vuol dire "smontante"
2°) ho stilato una legenda come segue: 0=notte; 1=smontante; 2=riposo; 3=mattina; 4=pomeriggio e ... il 5 come lo devo chiamare? Va bene così?
3°) la riga 27 del tuo Foglio Dicembre cosa sta a significare? Bisogna, ritengo, tenerne conto nell'elaborare i turni.
4°) per il "numero minimo" di operatori-turno cosa significa "i restanti di mattina" e cosa significano i puntini nei giorni festivi.
Ti pregherei di tener presente che non so nulla di tecnici di laboratorio e relative problematiche sindacali. Nelle spiegazioni che avrai la bontà di dare non dimenticarlo.
Ciao,
Mario
di Tsrm data: 07/01/2016 02:00:21
Ciao Mario
sono felice di sentirti, non mi aspettavo di ricevere una risposta oggi.
Spero che Tu abbia passato una serena Epifania, io ho disfatto l'albero di natale.
Ho capito che Ti intrigano le scommesse difficili, ma non pensavo che quello che sto chiedendo potesse presentare delle grandi difficoltà, nella mia ignoranza pensavo che bastasse tradurre in linguaggio VBA il mio ordine:
"metti in questa colonna un solo n. 0 e una serie di numeri casuali tra il n. 0 e il n. 5 tendo conto che dopo ogni n. 0 va il n.1 e dopo un n. 1 va il n. 2 "
o detto in altre parole
"metti in questa casella il n. 0 se in questa colonna, a esclusione della casella stessa, il n. 0 non è presente, altrimenti metti un numero casuale tra il n. 1 e il n. 5 tendo conto che dopo ogni n. 0 va il n.1 e dopo un n. 1 va il n. 2".
Ma tornando hai chiarimenti che hai bisogno:
1°) il debito orario giornaliero è costituito da 6 ore x 6 gg settimanali, ma chi fa il turno di notte lavora per 12 ore di seguito, inizia alle ore 20:00 di lunedì, termina alle ore 08:00 di martedì;
pertanto
lunedì è di turno di notte, il martedì è smontante.
Chi copre un turno nei festivi ha diritto a un altro giorno di riposo compensativo per la festività non goduta, che nel limite del possibile si gode il giorno dopo lo smontante, eventuali ore in più o in meno a quelli del debito orario mensile, si compensano il mese successivamente.
2°)perfetto| il n.5 stà per libero, il giorno festivo chi non è di servizio è libero.
3°)è la leggenda che utilizzo per indicare altre tipologie di assenze: malattia, ferie, aggiornamento.... che non dovrebbero interagire con i turni.
4°)ogni giorno il servizio ha bisogno di un determinato numero di tecnici che lavorino di mattina, di pomeriggio, di notte, nei festivi, nei prefestivi o in determinate giornate; questo numero lo potrei decidere volta per volta modificando il numero inserito nella funzione.
Spero di essere stato chiaro.
Se Ti dovessero servire ulteriori chiarimenti, chiedi prima di iniziare ad elaborare le funzioni, mi dispiacerebbe se dovresTi perdere tempo inutilmente.
A presto
Attilio
di Arturo (utente non iscritto) data: 07/01/2016 02:38:49
Ciao a tutti, devo rileggerVi per bene
Mi interessa l'argomento e voglio dare una mano appena capisco il fabbisogno.
Appena posso (disponibilità), vi allego il mio pensiero
di Marius44 data: 07/01/2016 17:34:57
Ciao Attilio
ho cominciato dalle cose più facili.
Nel file allegato troverai la tua maschera-mese (ne ho messa solo una perchè dovrebbe essere sufficiente) nella quale, in alto a sinistra, vanno selezionati sia l'anno sia il mese che ti interessano. Con la Formattazione Condizionale vengono colorati i giorni festivi e le domeniche per l'intera colonna della tabella. Ogni variazione tiene conto sia dell'anno (se bisestile) sia del mese (di 28, 29, 30 o 31 giorni).
Incomincia a dare uno sguardo e dimmi se va bene.
Stavo iniziando con la distribuzione di turni (tralasciando - per adesso - la possibilità di cambiare tu il numero di operatori) con una macro (guardala) ma mi son fermato perchè il problema è veramente arduo (vedi Foglio2): troppe variabili da tener presenti contemporaneamente.
Ora mi fermo. Domani vediamo. Tu, intanto da un'occhiata e se ti viene in mente qualcosa (o se Arturo - un saluto - volesse intervenire) bene. Dimmela.
Ciao,
Mario
di Tsrm data: 08/01/2016 02:18:46
Ciao Mario, ciao Arturo
bello
se posso suggerirti:
se non Ti servono per altro,toglierei le celle da A5>O6
la leggenda la sposterei in basso, mi darebbero una visione d'insieme, mi permeerebbe di sapere quante persone girano ogni giorno per turno e potrei usare il risultato per impostare le funzioni future.
Ho provato a inserire una funzione condizionata per colore; risultato pietoso, se ritieni che sia una strada possibile potresti correggermela, cosi la adatto ad altre caselle.
Se non Ti piace quello che ho fatto non tenerne conto.
Buonanotte a presto
di Marius44 data: 08/01/2016 07:03:01
Buongiorno Attilio
non riesco a scaricare il file, Prova ad allegarlo di nuovo dandogli un altro nome.
Grazie. Ciao,
Mario
di Tsrm data: 08/01/2016 22:20:43
ciao
scusa ma non riesco più a trovarlo, e non riesco ad aprire il Tuo, potresti rinviarlo?
Attilio
di Marius44 data: 08/01/2016 22:38:07
Come richiesto riallego il file (con quello che ho fatto fino ad ora; per la macro sto provando ma mi risulta ostico).
Ciao,
Mario
di Tsrm data: 09/01/2016 00:38:48
avrò una versione di excel obsoleta appena salvo il file lo corrompe, anche se il Tuo lo apro perfettamente.
il primo che avevo inviato zippato andava bene?
ora dovrebbe andare
mi dai la conferma?
se le modifiche apportate non Ti stanno bene, non tenerne conto
Ciao a presto
di Marius44 data: 09/01/2016 16:34:41
Ciao Anto
Ho scaricato il tuo file con le variazioni. Va bene anche così.
Quello che vuoi scrivere nelle celle da te indicate NON E' POSSIBILE (o, quanto meno, molto difficile ad applicarlo e dipende dalla versione Excel che usi - se è anteriore al 2010, niente da fare - perchè i programmatori di Excel non hanno pensato/voluto creare una funzione che leggesse i colori impostati con la formattazione condizionale).
Quei numeri "1" che hai scritto a fianco alla legenda in corrispondenza dei giorni cosa significano?
Con la macro ci sto impazzendo un po' sopra ma ancora non riesco a cavare un ragno dal buco.
Ciao,
Mario
di Tsrm data: 09/01/2016 17:47:05
Ciao Mario
Mi dispiace se Ti sto causando eccessivo impegno.
L'idea mia era quella di indicare nelle caselle all'incrocio tra il giorno e il turni, il numero di operatori occorrenti in quel giorno per quel turno, in modo da potere poi chiedere di inserire nella colonna del giorno tanti " mattina ", "pomeriggi",........ quanti indicati dal numero corrispondente alla riga "mattina".....
La stessa cosa avrei fatto con le colonne finali. La corrispondenza tra il numero dettato dalle ascisse e le ordinate avrebbe riempito il db.
Scusa se la domanda Ti può sembrare stupida, se il colore dei festivi l'hai determinato Tu, avresti anche potuto dirgli di lasciare vuota la casella corrispondente ai festivi, e su una riga sotto, il contrario. Il comando che avrei voluto inserire io con i colori lo potremmo inserire con caselle vuote e caselle piene. Cosi il gioco sembrerebbe fatto.
Mi sembra troppo semplice per essere vero.
Buon sabato sera, divertiti, ma non troppo.
Attilio
di Marius44 data: 11/01/2016 00:08:11
Ciao Anto
Mi pare che siamo in dirittura d'arrivo (ma ancora manca tanto).
Per generare i turni clicca sul pulsante.
Ho aggiunto le caselle che volevi: in basso fa il calcolo per giorno dei turnisti. sia in totale sia per tipologia di turno.
Nella parte destra, in linea col rispettivo nominativo, vedrai la somma dei tipi di turno che ciascuno farebbe nel mese.
Errori che ho rilevato ma che saranno sistemati se per te va bene questo modo di procedere:
1) non tiene conto del max 14 turni consecutivi
2) non tiene conto della "equa distribuzione"
3) non tiene conto del fine mese nè dei riporti per il mese successivo
Intanto vedi come ti sembra.
Ciao,
Mario
di Tsrm data: 11/01/2016 17:17:14
Ciao mario
di Tsrm data: 11/01/2016 17:34:35
Ciao mario
Non vedo l'ora di potere usare il programma che avremmo dovuto fare assieme, ma che grazie alle mie scarse competenze hai dovuto fare da solo, comunque se hai del lavoro di facchinaggio (di basso profilo) sarò felice di eseguire.
Dopo quarantuno anni di compilare turni manualmente, faro stupire i miei colleghi con gli effetti speciali. Quasi quasi l'anno prossimo non vado più in pensione.
Ti consiglio di brevettare l'applicativo che otterrai, questo programma sarà oggetto di interesse per tanta gente e qualcuno potrebbe attribuirsene i meriti ed appropriarsene.
Resto in fervida attese degli ultimi sviluppi.
Ciao Attilio
di Marius44 data: 11/01/2016 18:33:34
Mentre tu fai … il lavoro di facchinaggio, io proseguo (ovviamente scherzo)
Ho rimesso mano al tuo file iniziale perché mi sono accorto di una cosa: quando il turno di notte capita in prossimità della fine mese non c’era la possibilità di rimandare al mese prossimo. Adesso quando generi i turni per un mese (se non è gennaio) recupera quelli del mese precedente (che era rimasti fuori tabella) e li inserisce nel mese in corso.
A destra o cancellato le formule che c’erano ed ho messo quelle che sommano i turini per nominativo (per gli altri potresti provvedere tu o dirmi cosa significano)
In basso hai il totale delle presenze giornaliere e quanti presenti per turno.
Non c’è alcuna indicazione per assenze per ferie, malattia, ecc.
Imperfezioni notate (ma che non ho potuto sistemare)
Qualcuno può capitare che non fa la notte.
La distribuzione non è equa ma casuale.
Come vedi gli errori non mancano (e tu parlavi di brevetto!!!)
Comunque ti allego il file RX_TURNI
Attenzione: quando fai una variazione ad un mese, dovresti rifare tutti i mesi successivi perchè i "riporti" del fuori mese cambiano. Ti consiglio (quando sarà operativo) di generare solo il mese corrente.
Fai delle prove, appuntati eventuali errori e fammi sapere.
Ciao,
Mario
di Cucù data: 11/01/2016 19:52:10
Creare un programma per la gestione dei turni che sia efficace, che comprenda le innumerevoli variabili e che sia adattabile ai diverse tipologie di turni (comprendendo l'inserimento dei neoassunti, i trasferimenti, i rientri in servizio i molteplici tipi di part-time etc etc etc) è un'impresa "titanica" e questo lo dico per esperienza personale.
Io ci ho provato ma mi sono reso subito conto della complessità della cosa, mentre resta fattibile se il programma lo si fa solo relativamente ad una tipologia di reparto restringendo di conseguenza le variabili da gestire.
Non credo esiste in commercio attualmente un programma realmente efficace per fare questo tipo di lavoro...
@Mario
Mumble mumble "Option Explicit"???
di Marius44 data: 11/01/2016 20:00:37
@Cucù
E' vero, non ho messo Option Explicit. Sono un masochista: mi piace farmi tirare le orecchie da scossa (speriamo sia occupato in altre faccende).
Una volta che ho definito l'impostazione e da "solo qualche errore accettabile" professionalizziamo la macro.
Ciao e grazie,
Mario
Vuoi Approfondire?