La première possibilité est d'ajouter une ligne de code de ce type
if Ws.name<>"<Nom_de_la _feuille>" then
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim DerLig As Long, Ligne As Long
If Sh.Name <> "Feuil3" Then
If Target.Column = 1 Then
With Sh
DerLig = .Range("A" & Rows.Count).End(xlUp).Row - 1
For Ligne = 1 To DerLig
If .Range("A" & Ligne) = "" Then
.Range("A" & Ligne) = .Range("A" & Ligne).Offset(-1)
End If
Next Ligne
End With
End If
End If
End Sub
Cette méthode convient bien si le nombre de feuille à exclure n'est pas important.
La deuxième possibilité est de placer le code uniquement dans le module des feuilles concernées par le traitement
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DerLig As Long, Ligne As Long
If Target.Column = 1 Then
DerLig = Range("A" & Rows.Count).End(xlUp).Row - 1
For Ligne = 1 To DerLig
If Range("A" & Ligne) = "" Then
Range("A" & Ligne) = Range("A" & Ligne).Offset(-1)
End If
Next Ligne
End If
End Sub
Cette méthode convient bien si le nombre de feuilles à traiter n'est pas important.
Remarque bien que l'évènement utilisé est Worksheet.Change (et non plus Workbook.SheetChange).
A+