Bonjour,
La suggestion d'Eric [Salut !] paraît la plus économique ! Et elle doit certainement pouvoir être adaptée...
Voici toujours cependant une proc. de réinitialisation pour montrer comment on peut opérer lorsqu'on n'a pas pris soin à la conception de prévoir des dispositions facilitant la réalisation de toutes les opérations ultérieures, en évitant un volume de code déraisonnable qui opèrerait quasiment cellule par cellule...
Sub Réinitialiser()
Dim ws As Worksheet, eff(1), initnon, fus(1), non(1), t%, i%
eff(0) = Split("J6:N10 J14:N14 J18:N18 J22:N22")
eff(1) = Split("K5:S6 K9:S15 K18:S28")
fus(0) = Array(12, 16, 20, 28): fus(1) = Array(8, 17)
initnon = Split("L1:L28 M1:M22")
non(0) = Array(6, 10, 14, 18, 22)
non(1) = Array(6, 10, 12, 15, 19, 22, 25, 28)
Application.ScreenUpdating = False
For Each ws In Worksheets
With ws
t = IIf(.Range("B1") <> "", 0, 1)
For i = 0 To UBound(eff(t))
.Range(eff(t)(i)).ClearContents
Next i
For i = 0 To UBound(fus(t))
.Cells(fus(t)(i), 2).MergeArea.ClearContents
Next i
With .Range(initnon(t))
For i = 0 To UBound(non(t))
.Cells(non(t)(i), 1) = "X"
Next i
End With
End With
Next ws
End Sub
Cordialement.