No, quelle celle vengono compilate/aggiornate dalla macro "minuti" e la loro mancata compilazione non ha nulla a che fare con il codice della macro "Private Sub Workbook_SheetChange" su cui ci siamo concentrati negli ultimi post.
Tutto quello che posso intuire che c'è qualcosa (fin dall'inizio) che non quadra nei conteggi nelle colonne nascoste colonne P:AI dove vi sono i conteggi che poi serviranno alla macro "minuti" per riportare i totali rielaborati nelle celle F10:H10.
Non potendo visionare il tuo file attuale, a naso, posso affermare con certezza, visto l'ultimo file che ho allegato dove ho fatto un sacco di pulizia, che potrebbe mancare il richiamo alla macro "minuti" che in precedenza si trovava in ogni foglio:
Private Sub Worksheet_Calculate()
Call minuti
End Sub
Se così non fosse faccio un'altra considerazione sempre per intuito.
Quello che sicuramente non hai implemento da quando hai protetto i foglio è lo sblocco della protezione all'inizio della macro principale e successivo blocco prima del termine della macro.
Dovrai, pertanto, inserire in testa alla macro "minuti" subito dopo la dichiarazione delle variabili questo codice:
ActiveSheet.Unprotect
e prima dell' "End Sub" il codice:
ActiveSheet.Protect
Ed ancora, vedo che all'inizio della macro "minuti" nel mio file c'è un refuso ma forse non è stato preso in considerazione. Eventualmente, il codice:
Application.EnableEvents = True
mentre per disattivare il controllo degli eventi dovrebbe essere:
Application.EnableEvents = False
Detto questo credo che ora il richiamo alla macro "minuti" possa tolta da ogni foglio ed essere integrata nella macro "Private Sub Workbook_SheetChange" mettendo il richiamo in fondo prima dell' "End Sub" riscrivendo il codice così:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim R As Long
If ActiveSheet.Name <> "RIEP" And ActiveSheet.Name <> "codici servizi" Then 'escluso questi fogli
R = Target.Row
' questo codice ti segnala con un messaggio se per sbaglio scrivi riposo nella colonna "I" con il codice 2-3-4
If Not Intersect(Target, [I14:I57]) Is Nothing Then
If Range("I" & R) = 2 Or Range("I" & R) = 3 Or Range("I" & R) = 4 Then
MsgBox "Qui va messo solo codice presenza"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End If
' questo codice ti da un messaggio di errore se per sbaglio metti riposo lo stesso giorno che hai lavorato
If Intersect(Target, Uni0n(Range("C14:C57"), Range("J14:J57"))) Is Nothing Then GoTo fine 'cambiata
Select Case Target.Column
Case 2, 3
If Range("J" & R) <> "" Then
MsgBox "Non puoi scrivere in questa cella se colonna J non è vuota"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
Exit Sub
End If
Case 10
If Range("C" & R) <> "" Then
MsgBox "Non puoi scrivere in questa cella se colonna C non è vuota"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
Exit Sub
' se colonna A è colorata in questa cella puoi scrivere solo 3
ElseIf Range("A" & R).DisplayFormat.Interior.ColorIndex <> xlColorIndexNone And Target <> 3 Then
MsgBox "Puoi scrivere solo 3 se colonna A è colorata"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
Exit Sub
End If
End Select
End If
fine: 'aggiunta
Call minuti 'aggiunta
End Sub
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)