Vous pouvez toujours remplacer la macro évènementielle par une macro classique affectée au bouton.
Si elle doit servir pour toutes les feuilles il faut une boucle sur les feuilles :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim P As Range, i&, j&
Application.ScreenUpdating = True
Set P = [A1].CurrentRegion.Resize(, 13)
With [A38].Resize(P.Rows.Count, 13) 'à adapter
.Value = P.Value 'copie les valeurs
For i = 2 To .Rows.Count
If Len(.Cells(i, 2)) = 1 Then
.Cells(i - 1, 2) = .Cells(i - 1, 2) & .Cells(i, 2)
For j = i + 1 To .Rows.Count
.Rows(j - 1) = .Rows(j).Value 'décale vers le haut
Next j
.Rows(j - 1).ClearContents
End If
Next i
End With
End Sub