La consultazione del forum è libera per tutti.
Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Buongiorno a tutti, mi è stato chiesto di modificare il programma delle pulizie che vi allego. Chidevo gentilmente se esiste un modo per far girare le persone in automatico, (tenendo conto anche del fatto che quando non possono si sostituiscono a vicenda.)
Siccome ogni mese le sttimane variano si può in automatico aggiungere e togliere le righe?
Vedrete anche che il primo Sabato del mese è in rosso, perché è il giorno delle pulzie di fondo, e anche lì ci vuole un'alternanza giusta.
Ho creato un calendario a parte (Che sinceramente non mi piace ma è utile per conoscere i sabati delle pulizie. Se pensate di migliorarlo modificatelo pure, (oppure se riuscite a creare il programma in automatico si può eliminare).
Vi ringrazio per la vostra gentilezza e se avete domande ulteriori non esitate a chiedere.
Ciao Giuseppe
Ciao
Questo il codice (di cui allego file)
Option Explicit Sub turni() '4 nominativi 'turni solo il sabato da una data ad un'altra 'i 4 nominativi devono turnare per il rpimo dabato del mese 'e per tutti i sabati del periodo indicato Range("D:H,K:K").ClearContents 'assumo i nominativi Dim nome(1 To 4) As String, i As Long, r As Long, ur As Long Dim dt_ini As Date, dt_fin As Date, dt_i As Date, dt_f As Date, a, b For i = 2 To 5 nome(i - 1) = Cells(i, 1).Text Next i 'assumo data iniziale e finale dt_ini = Cells(2, 2).Value dt_fin = Cells(4, 2).Value 'individuo il primo sabato dalla data di inizio For i = 1 To 7 dt_i = dt_ini - 1 + i If Application.WorksheetFunction.Weekday(dt_i) = 7 Then Exit For End If Next i 'creo calendario in verticale fino all'ultimo sabato prima della data finale Range("D:D").Font.ColorIndex = 1 Cells(1, 4) = "Calendario sabati" a = dt_i: r = 2 Do Until a >= dt_fin Cells(r, 4) = a If r = 2 Then Cells(r, 4).Font.ColorIndex = 3 ElseIf r > 2 Then If Month(Cells(r - 1, 4)) <> Month(Cells(r, 4)) Then Cells(r, 4).Font.ColorIndex = 3 End If End If a = a + 7 r = r + 1 Loop 'prima colonna ur = Cells(Rows.Count, 4).End(xlUp).Row a = 1: b = a + 1 For i = 2 To ur If Cells(i, 4).Font.ColorIndex = 3 Then Cells(i, 5) = nome(a) a = a + 1: If a > 4 Then a = 1 Else Cells(i, 5) = nome(b) b = b + 1: If b > 4 Then b = 1 End If Next 'seconda-quarta For i = 2 To ur If Cells(i, 5) = Cells(2, 1) Then Cells(i, 6) = nome(2) Cells(i, 7) = nome(3) Cells(i, 8) = nome(4) ElseIf Cells(i, 5) = Cells(3, 1) Then Cells(i, 6) = nome(3) Cells(i, 7) = nome(4) Cells(i, 8) = nome(1) ElseIf Cells(i, 5) = Cells(4, 1) Then Cells(i, 6) = nome(4) Cells(i, 7) = nome(1) Cells(i, 8) = nome(2) ElseIf Cells(i, 5) = Cells(5, 1) Then Cells(i, 6) = nome(1) Cells(i, 7) = nome(2) Cells(i, 8) = nome(3) End If 'Stop Next i 'Stop End Sub
Prova a cliccare sul pulsante blu dopo aver inserito due date nelle celle gialle
Ciao Marius44, Grazie, per il tuo lavoro, logicamente devo prendere in considerazione solo la colonna E per la turnazione? o avevi qualcos'altro in mente?
Per applicare la tua formula in un altro file, (scusa l'ignoranza 🙄 🙄 🙄 ), ho provato a copiare e incollare su una cella ciò che hai scritto, logicamente non funziona come io pensavo 🤣 🤣 🤣, cosa devo fare?
Grazie ancora per il tuo tempo.
Un saluto
Giuseppe
Ciao Giuseppe
Il mio suggerimento è valido SOLO SE:
a) i dati sono quelli (4 nominativi)
b) da impostare su un calendario di "sabati" in verticale (col.D)
c) i dati vengono esposti nelle colonne E:H
Se hai altre esigenze bisogna sapere e capire se è "aggiornabile" la macro. Specifica meglio cosa hai bisogno facendo sempre riferimento ad un Calendario in forma verticale (vedi colonna D) e i Nominativi nelle colonne successive.
Ciao,
Mario
Ciao Marius, scusa il ritardo... i nominativi per ora sono 4, ma potrebbero aggiungersene altri 2 o 3.
La composizione va bene, però ho notato che ha volte i nomi si ripetono in poco tempo, per esempio dal 1 gennaio al 30 giugno, sabato 24/02/24 Vittorio fa la pulizia ordinaria e sabato 02/03/24, quindi la settimana dopo, quella straordinaria. Questo succede con Gino il 06/04/24 e il 13/04/24, e Luca 01/06/24 e l'8/06/24 (logicamente i nomi sono fittizi). Poi non ho capito le funzioni delle colonne F; G; H.
Tieni presente che sono alle primissime armi con excel e alcune cose non le capisco pienamente.
Infatti volevo copiare la formula su un'altro foglio del programma originale ma logicamente con il copia e incolla non ci sono riuscito. Puoi spiegarmi (in maniera semplice) cosa devo fare?
Grazie mille per la tua pazienza
Giuseppe