Sub Transfert()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim dc As Integer 'déclare la variable dc (Dernière Colonne)
Sheets("ListePlan").Range("D20:" & Cells(Application.Rows.Count, Application.Columns.Count).Address(0, 0)).Clear 'supprime les anciennes données
With Sheets("Import") 'prend en compte l'onglet "Import"
For Each cel In .Range("B5:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row) 'boucle sur toutes les cellules éditées cel de la colonne 2 (=B)
If cel <> "" And cel.Offset(0, 1) <> "" And cel.Offset(0, 3) = "" Then 'condition : si cel n'est pas vide (et) la cellule en colonne C n'est pas vide (et) la cellule en colonne E est vide
With Sheets("ListePlan") 'prend en compte l'onglet "ListePlan"
'définit la cellule de destination dest (D20 si D20 est vide sinon, la première cellule vide de la colonne D
Set dest = IIf(.Range("D20").Value = "", .Range("D20"), .Cells(Application.Rows.Count, 4).End(xlUp).Offset(1, 0))
End With 'fin de la prise en compte de l'onglet "ListePlan"
dc = .Cells(cel.Row, Application.Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée sur la ligne de cel
.Range(cel, .Cells(cel.Row, dc)).Copy dest 'copy les cellules éditées de la ligne de cel et les colle dans dest
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "Import"
End Sub