Sub déplacer()
Dim dercol&, t, i&, j&, colState$, colEner$, n&, ss, se
dercol = Cells(1, Columns.Count).End(xlToLeft).Column
t = Range("a1:a2").Resize(, dercol)
For j = 1 To UBound(t, 2)
If t(1, j) Like "state*" Then colState = colState & ";" & j
If t(2, j) Like "ENER-" Then colEner = colEner & ";" & j
Next j
If colState = "" Or colEner = "" Then Exit Sub
ss = Split(Mid(colState, 2), ";"): se = Split(Mid(colEner, 2), ";")
n = UBound(ss): If UBound(se) < n Then n = UBound(se)
Application.ScreenUpdating = False
For i = 0 To n
Columns(--ss(i)).Resize(, 3).Cut
Columns(--se(i)).Insert Shift:=xlToRight
Next i
End Sub