Bonjour,
Le problème vient du "couper". Donc tu peux remplacer
Range(Cel.Address).Offset(0, 1).Cut
Range(Cel.Address).Offset(0, 2).Select
ActiveSheet.Paste
Par :
Range(Cel.Address).Offset(0, 1).Copy
Range(Cel.Address).Offset(0, 2).PasteSpecial
Range(Cel.Address).Offset(0, 1).ClearContents
Petite question, est ce que toutes tes lignes sont amenées à être modifiées par n'importe quel moyen ? ou bien tu as besoin de mettre à jour uniquement la ligne saisie ? Car à plus grande échelle et selon le rythme de saisie, cette macro risque de devenir gênante pour toi.
EDIT :
Pour le problème de temps d’exécution, tu peux rajouter un If comme suit :
For Each Cel In Range("I2:I" & Range("I" & Rows.Count).End(xlUp).Row)
If Cel.Value = "SAO" Then
If Range(Cel.Address).Offset(0, 2) = "" Then
If Range(Cel.Address).Offset(0, 1) <> "" Then
Range(Cel.Address).Offset(0, 1).Copy
Range(Cel.Address).Offset(0, 2).PasteSpecial
Range(Cel.Address).Offset(0, 1).ClearContents
End If
End If
End If
Next Cel