Bonjour,
regarde si ça te va et s'il n'y a pas de cas particuliers planqués au milieu.
Sub traiteRef()
Dim datas
Dim lig As Long, ref1
lig = Cells(Rows.Count, 1).End(xlUp).Row
datas = [A12].Resize(lig - 11, 3).Value
For lig = 1 To UBound(datas)
If datas(lig, 1) <> "" Then
If datas(lig, 3) = "" Then
ref1 = datas(lig, 1)
datas(lig, 1) = Empty
Else
datas(lig, 2) = datas(lig, 1)
datas(lig, 1) = ref1
End If
End If
Next lig
[A12].Resize(lig - 11, 3).Value = datas
End Sub
Si tu relances la macro sur un autre fichier, il faut insérer une colonne B vide avant. Et les données commencent en ligne 12, adapter si besoin.
eric
PS: le fichier s'est retrouvé en haut