Obviously, this does not help with the out-of-view, but it will help with the collapsing columns. Buttons give the option of Don't move or size with cells.
To collapse the columns the following should work
Sub hideAtoC
column_hider "A", "C"
End Sub
Sub hideDtoR
column_hider "D", "R"
End Sub
Sub column_hider(first_column,last_column)
Sheet1.Columns.Hidden = False
Worksheets("YOUR WORKSHEET NAME").Range(first_column & ":" & last_column).EntireColumn.Hidden = True
End
Then, all you have to do is connect your buttons to the relevant module, such as hideAtoC or hideDtoR.
Depending on how many controls there are, moving them becomes more difficult, but this will work with some obvious modifications.
Sub moveWithMe
With Worksheets("YOUR WORKSHEET NAME")
.Cells(1,"BA").Select
.Shapes(1).Left = ActiveCell.Left
End With
End Sub
This is a pretty basic illustration. The scenario appears more involved and would likely require an offset for button width because all it does is select a cell before aligning the button with it. This is a conceptual loop, but you get the idea (although it will suffer if the cell is on the leftmost visible column).
Dim offset As Long
offset = ActiveCell.Left
For i = 1 To Sheet1.Shapes.Count
Sheet1.Shapes(i).Left = offset - (Sheet1.Shapes(i).Width / 2)
offset = offset + Sheet1.Shapes(i).Width + 10
Next i