Alors tu as déjà des macros et tu peux couper la poire en deux.
Plutôt qu'une macro qui déplacerait tes boutons à chaque Selection_Change (pour palier à l'absence de détection du scrolling), tu pourrais les déplacer sur un double-clic en ligne 1.
Ca ne te ferait perdre les annulations qu'à ce moment là, qui de toute façon le seront si tu lances une macro par un bouton.
Exemple :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row = 1 Then
Cancel = True
ActiveSheet.Shapes("CommandButton1").Left = Cells(1, ActiveWindow.ScrollColumn + 1).Left + 10
End If
End Sub
ActiveWindow.ScrollColumn te donne la 1ère colonne scrollée (tenir compte des volets)
eric