Bonjour,
Le problème est qu'il faudrait supprimer cette macro avant la copie car c'est elle qui prend la main à chaque copie.
Comme signalé dans développez.com si on maintient cette macro avant la copie il faut utiliser la routine fournie (avec EnableEvents...) ou quelques chose de similaire. (sauf que tu ne peux pas vu que tu veux que cette macro s'exécute...)
Ben oui ... ça prends quelques instant ! (c'est lié à l'appel récurent à Worksheet-Change) le masquage ligne par ligne prend du temps même avec screenUpdating et xlCalculationManual, il faut bien que le travail se fasse à un moment donné...
De plus dans ce genre de situation on s'arrange pour supprimer toutes les macros (Worksheet_Change et SélectionChange) et on les remplace par une macro unique dans ThisWorkbook.
Texte de la macro de remplacement (à mettre dans ThisWorkbook)
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Count = 1 Then
If Sh.Name = MonthName(Sh.Index) Then
If Trim(Cells(Target.Row, 1)) = "Motif" And Target.Value = "" Then
L = Target.Row
C = Target.Column
MOTIF.Show
End If
If Target.Interior.ColorIndex = 6 And Target.Value = "" Then
L = Target.Row
C = Target.Column
Rempla.Show
End If
End If
End If
End Sub
Nota ; Moi je supprimerai les L,C, comme fait dans ma démo
Nota2 : Il est indispensable de modifier la macro Sub Copies_Feuil() comme suit :
Sub Copies_Feuil()
Dim i%
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For i = 1 To 12
Sheets("TRAME").Copy before:=Sheets("TRAME")
'...la suite sans changement
Nota3 : Idéalement il faudrait mettre en place une routine qui assure que les feuilles janvier à Décembre ne changent jamais de place...
A+