bonjour,
je ne vois pas l'utilité du x et tu as oublié une instruction set
voici comment je corrigerais ton code
Sub Erase_data()
Dim lst()
Dim i As Integer
Dim Plg As Range
derlgn = IIf(Range("A" & Rows.Count).End(xlUp).Row < 10, 10, Range("A" & Rows.Count).End(xlUp).Row)
lst = Array("G4:G6", "D5:D7", "D4:D7")
Set Plg = Range("A10:F" & derlgn)
For i = Lbound(lst) To UBound(lst)
Set Plg = Application.Union(Plg, Range(lst(i)))
Next i
Plg.ClearContents
End Sub