Bonjour,
@Nicodak : merci de créer votre propre sujet pour éviter de polluer celui ci !
@Joco7915, votre macro se déclenche dès qu'il y a une modification, c'est bien ce que vous souhaitez ? Dans ce cas, inutile de parcourir toutes les lignes, seule la ligne concernée par la modification doit être actualisée. A noter que la cellule modifiée s'appelle Target
. Un essai :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig As Long
If Not Intersect(Target, Range("A:C")) Is Nothing Then
Lig = Target.Row
If Range("A" & Lig) = "" And Range("B" & Lig) = "" And Range("C" & Lig) = 1 Then
Range("D" & Lig) = 3
Else
Range("D" & Lig) = "" 'Efface la cellule D si elle ne respecte pas ou plus les conditions
End If
End If
End Sub
PS : pour une macro "classique" (déclenchée manuellement), il faudrait utiliser une boucle pour définir la variable Lig
de façon dynamique (par exemple : For Lig = 1 To 100
)