assegnazione turni casuali vba



  • assegnazione turni casuali vba
    di et (utente non iscritto) data: 20/10/2017 15:44:17

    Buongiorno a tutti, ho un problema in vba che riguarda l'assegnazione di turni casuali dal lunedì alla domenica, in determinate fasce e in determinate mansioni

    in pratica ho 23 lavoratori, ognuno con un parametro orario settimanale diverso da rispettare e con 2 riposi settimanali, e devo assegnare loro ogni giorno delle mansioni (negozi, preapertura, fasce di presidio) secondo vari fabbisogni .. ad esempio il lunedi avrò bisogno di 15 persone che fanno i negozi, 8 che fanno il presidio ecc e così via

    la logica che sto cercando di implementare è quella di andare ad assegnare casualmente il turno tramite la funzione randomize, che assegna finche il max della colonna (contato con conta.se) non diventa uguale al fabbisogno (imposto manualmente) , andando ad assegnare rispettando il vincolo orario settimale e i 2 giorni di riposo

    ad esempio per il turno dei negozi ho scritto la seguente macro:





    dove max e fabb sono quelli relativi alle mansioni mentre massi e fabi sono quelli relativi al parametro orario

    il codice si compila però non riesce a soddisfarmi i fabbisogni! dove sbaglio? grazie a tutti in anticipo!
     
    turnonegozi:
    
    
    For i = 5 To 12
    
    
    fabb = Cells(31, i)
    max = Cells(30, i)
    
    
    If max = fabb Then
        GoTo negozi
    End If
    
    
    negozi:
    
    
    Randomize
    
    
    numcas = Int(22 - 1 + 1) * Rnd + 1
    
    
    massi = Cells(numcas + 6, 4)
    fabi = Cells(numcas + 6, 3)
    
    
    
    
    If Cells(numcas + 6, i) = "" And massi < fabi Then
        Cells(numcas + 6, i) = 1
    End If