Tout dépend du résultat désiré... Si les plages sont discontinues sans lien tangible, alors il faudrait plutôt faire quelque chose comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, r2 as range
Set r = Intersect(Target, Range("B3:B9"))
set r2 = Intersect(Target, Range("X1:X7")) 'exemple
If Not r Is Nothing Then
For Each cell In r
comm = r.Value
ligne = cell.Row - Range("B3:B9").Row + 1
With Sheets("Feuil1").Range("D4:D10")(ligne) '<<<< POUR L'INSTANT
If Not .Comment Is Nothing Then .Comment.Delete
If cell.Value <> "" Then .AddComment Text:=comm
End With
With Sheets("TOTO").Range("A1:A7")(ligne)
If Not .Comment Is Nothing Then .Comment.Delete
If cell.Value <> "" Then .AddComment Text:=comm
End With
Next
End If
If Not r2 Is Nothing Then
For Each cell In r2
comm = r2.Value
ligne = cell.Row - Range("X1:X7").Row + 1
With Sheets("Feuil1").Range("zdazaz")(ligne) '<<<< POUR L'INSTANT
If Not .Comment Is Nothing Then .Comment.Delete
If cell.Value <> "" Then .AddComment Text:=comm
End With
With Sheets("TOTO").Range("zazaeff")(ligne)
If Not .Comment Is Nothing Then .Comment.Delete
If cell.Value <> "" Then .AddComment Text:=comm
End With
Next
End If
End Sub
Mais attention à pas s'emmêler les pinceaux sachant que le but n'est pas d'avoir un pavé de code sous cet évènement.
Sinon, il vaudrait mieux reformuler clairement le besoin car il doit être possible de factoriser tout ça...
Cdlt,