Risultati da 1 a 10 di 10

Discussione: Programmare turni : che fatica !



  1. #1
    L'avatar di IronEagle
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Messaggi
    5
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0

    Programmare turni : che fatica !

    Buongiorno a tutti.
    Mi ritrovo a dover programmare dei turni.
    Si lavora nel week end,in due turni divisi in mattina e pomeriggio.
    6 operatori totali.Ogni operatore in base alla sua disponibilità e' tenuto a coprire la sua parte di turni (es 16 turni,6 operatori = 3 turni a testa o 4)
    Quello che fin ora sono riuscito a realizzare è questo.Formattaz.condizionale con colori ecc...con la disponibilità di Mario Piero Giovanni Claudia ecc...



    Ora come riesco ad ottenere il nome di chi deve coprire il turno assegnandone massimo 3/4 senza tralasciare nessuno ?
    Bel problema...se qualcuno ha idee.Grazie in anticipo.Buona domenica Alessandro.

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Penso che manchi qualcosa di essenziale: il criterio di distribuzione dei turni.
    Nell'esempio che hai postato (a proposito, ti consiglio di allegare un tuo file, con un'immagine si può fare ben poco) il nominativo in prima riga fa 15 turni su 16, in seconda riga 5 su 16, in terza riga 8 su 16. Non esiste una regola. Sembrano fissati assolutamente a caso.
    Prova ad essere più preciso (e allega il file con le tue prove).
    Ciao,
    Mario

  3. #3
    L'avatar di Gianfranco55
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Vicenza
    Età
    62
    Messaggi
    2076
    Versione Office
    2016
    Likes ricevuti
    553
    Likes dati
    117
    Ho sbagliato io

    il file era completamente un'altra cosa

    scusa

  4. #4
    L'avatar di IronEagle
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Messaggi
    5
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Intanto grazie per le pronte risposte.
    Certo Marius che quello che vedi è totalmente casuale : quella è la disponibilità del singolo che chiaramente dipende da altri impegni non lavorativi.
    Io ho bisogno che fornita la disponibilità il programma riesca "autonomamente" a coprire i turni rispettando un numero massimo di 3 o 4 turni a testa.
    Tipo quei programmi che usano nelle scuole per creare l'orario interno....i docenti dicono quando possono far lezione e il programma incastra le disponibilità.
    Allego in ogni caso il semplicissimo file.Grazie nuovamente in anticipo.
    File Allegati File Allegati

  5. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Se ho capito bene la " X " sta per la disponibilità del soggetto. Se così è, il caso prospettato non ha soluzioni perché nelle giornate 10/1 pom, 16/1, 17/1 e 30/1 non ci sono tre elementi disponibili.
    Dovresti rivedere e/o dare qualche ulteriore chiarimento.
    Ciao,
    Mario

  6. #6
    L'avatar di IronEagle
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Messaggi
    5
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Esatto la X è la disponibilità di quella persona.
    Beh è possibile che in alcune giornate più persone non siano in grado di presenziare e quindi non possano coprire quel turno.Ma qualcuno è disponibile,quindi l'ipotetica macro o funzione è in grado di assegnare i rimanenti al turno.

  7. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Partiamo da una certezza: si devono coprire 16 turni (4 sab e 4 dom sia mattina sia pomeriggio); ogni turno deve avere almeno 3 operatori. Pertanto, COME MINIMO, occorrono almeno 3 persone che globalmente diano disponibilità per 16 turni.
    Se ho 6 operatori ma la disponibilità totale è INFERIORE a 48 non posso fare una turnazione.
    Cosa significa
    Ma qualcuno è disponibile
    ; se è disponibile deve essere compreso nelle 48 disponibilità e gli operatori non saranno più 6 bensì 7!
    Almeno io la vedo così.

    Ciao,
    Mario

  8. #8
    L'avatar di IronEagle
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Messaggi
    5
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Spiego meglio.
    La giornata lavorativa è suddivisa in turno del mattino e del pomeriggio.
    Per ogni giorno quindi servono SOLO 2 Persone.Chiaro che se ho disponibili solo due persone saranno loro a coprire...i turni vanno assegnati in modo da distribuire gli stessi,nell'arco del mese,in maniera equa.
    Poi per esempio se un mese una persona non garantisce presenza,gli altri disponibili dovranno ripartirsi i turni di questultimo.

  9. #9
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Non so se è quello che volevi. Allego il file (clicca sul pulsante).
    Prova e fai sapere

    Questo è il codice utilizzato
    Codice: 
    Option Explicit
    Option Compare Text
    
    
    Sub turni()
    Dim nome(1 To 6) As String, disp(1 To 6) As Integer
    Dim i As Integer, j As Integer, g As Integer, nm As Integer
        If Cells(5, 3).Value < 0 Then
            MsgBox "Turnazione impossibile", 0 + 16, "Errore"
            Exit Sub
        End If
        Range("D15:S20").ClearContents
        For i = 7 To 12
            nome(i - 6) = Cells(i, 2).Text
            disp(i - 6) = Application.WorksheetFunction.CountIf(Range("D" & i & ":T" & i), "=X")
        Next i
        Call pct(disp(), nome())
        For i = 4 To 19
            If Cells(13, i).Value = Cells(3, 4).Value Then
                For j = 7 To 12
                    If Cells(j, i) = "X" Then
                        Cells(j + 8, i) = "X"
                    End If
                Next j
            End If
        Next i
        For g = 4 To 19: For i = 1 To 6
            If Cells(21, g).Value >= Cells(2, 4).Value Then
                GoTo 1
            Else 'If Cells(21, g).Value < Cells(2, 4).Value Then
                If disp(i) > 0 Then
                    nm = Application.WorksheetFunction.Match(nome(i), Range("B7:B12"), 0)
                    If Cells(nm + 6, g) = "X" Then Cells(nm + 14, g) = "X"
                End If
            End If
        Next i
    1   Next g
        For i = 4 To 19
            If Cells(13, i).Value <> Cells(21, i).Value Then
                For j = 7 To 12
                    If Cells(j, i) <> Cells(j + 8, i) Then Cells(j + 8, i) = "R"
                Next j
            End If
        Next i
    End Sub
    
    
    Function pct(disp() As Integer, nome() As String) As Integer
    Dim i As Integer, d As Integer, j As Integer
    Dim temp As Integer, temp1 As String
        For i = 1 To 5
            d = disp(i)
            For j = i + 1 To 6
            If Cells(3, 16) = "X" Then
            If disp(j) < disp(i) Then
                temp = disp(i): temp1 = nome(i)
                disp(i) = disp(j): nome(i) = nome(j)
                disp(j) = temp: nome(j) = temp1
            End If
            Else
            If disp(j) > disp(i) Then
                temp = disp(i): temp1 = nome(i)
                disp(i) = disp(j): nome(i) = nome(j)
                disp(j) = temp: nome(j) = temp1
            End If
            End If
            Next j
        Next i
    End Function
    Ciao,
    Mario
    File Allegati File Allegati

  10. #10
    L'avatar di IronEagle
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Milano
    Messaggi
    5
    Versione Office
    Excel 2007
    Likes ricevuti
    0
    Likes dati
    0
    Mario Intanto Grazie per l'infinita disponibilità.Il programma può andar bene..
    C'è solo un problema...se una persona è sempre disponibile il programma assegna sempre e solo a quella persona ;se cambio in FAVORISCI DISPONIBILITA' non ripartisce in maniera equa la cosa.
    Es.4 turni a testa in tutto il mese senza che ci siano discrepanze...tutti devono fare es.4 turni.Al massimo un turno di differenza chiaramente tra chi è disponibile...

    Grazie ancora una volta.

Discussioni Simili

  1. [Risolto] Conteggio turni
    Di Red65 nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 05/01/17, 22:57
  2. [Risolto] calendario turni
    Di lauriciano78 nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 24/12/16, 18:01
  3. Risposte: 6
    Ultimo Messaggio: 03/11/16, 06:20
  4. Turni di oltre 24 ore
    Di Pizzetto nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 02/08/16, 10:54
  5. Spostarsi Tra una o più Celle con poca fatica
    Di A.Maurizio nel forum Lavori e giochi con Excel
    Risposte: 0
    Ultimo Messaggio: 26/04/16, 14:27

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •