Je ne sais pas s'il existe un moyen de "déplacer" des lignes à l'aide du clavier, mais utiliser c & p et insérer / supprimer des lignes à l'aide du clavier devrait offrir les mêmes fonctionnalités:
- accédez à la première cellule (la plus à gauche) de la ligne à déplacer;
- appuyez sur SHIFT+ SPACEpour sélectionner la ligne entière;
- appuyez sur CTRL+ Cpour copier la ligne;
- appuyez sur CTRL+ -pour supprimer la ligne en cours;
- accédez à la ligne cible;
- appuyez sur ALT+ Ipour ouvrir le
Insert
menu;
- appuyer Rpour insérer une nouvelle ligne (la ligne actuelle sera décalée vers le bas);
- appuyez sur CTRL+ Vpour coller la ligne à son nouvel emplacement.
Étant donné que les opérations de copier / coller sont parfois très ennuyeuses, vous pouvez créer une macro simple pour couper des cellules et une autre pour les coller, déplaçant le contenu existant vers le bas.
Voici un code très simple pour "déplacer" les cellules sélectionnées:
Option Explicit
Sub CopyAndCut
' ---------------------------------------------------------
' define variables
Dim document as object
Dim dispatcher as Object
Dim oSelections As Object
' ---------------------------------------------------------
' get access to the document and selections (if any)
document = ThisComponent.CurrentController.Frame
oSelections = ThisComponent.getCurrentSelection()
If IsNull(oSelections) Then Exit Sub
' ---------------------------------------------------------
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
' -------------------------------------------------------------
' Check the width of the selection - if 1024 columns, we assume
' the complete row was selected and should get deleted
If 1024 = oSelections.Columns.getCount() Then
dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
End If
End Sub
Sub InsertWithMoveDown
' ---------------------------------------------------------
' define variables
Dim document as object
Dim dispatcher as object
' ---------------------------------------------------------
' get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' ---------------------------------------------------------
' Paste contents with "Move Down" option
Dim args1(5) as New com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "A"
args1(1).Name = "FormulaCommand"
args1(1).Value = 0
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 0
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub
Sub InsertWithMoveRight
' ---------------------------------------------------------
' define variables
Dim document as object
Dim dispatcher as object
' ---------------------------------------------------------
' get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' ---------------------------------------------------------
' Paste contents with "Move Right" option
Dim args1(5) as New com.sun.star.beans.PropertyValue
args1(0).Name = "Flags"
args1(0).Value = "A"
args1(1).Name = "FormulaCommand"
args1(1).Value = 0
args1(2).Name = "SkipEmptyCells"
args1(2).Value = false
args1(3).Name = "Transpose"
args1(3).Value = false
args1(4).Name = "AsLink"
args1(4).Value = false
args1(5).Name = "MoveMode"
args1(5).Value = 1
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
End Sub
Après avoir copié le code dans votre bibliothèque utilisateur, affectez simplement CopyAndCut
à, par exemple, Alt+ C, InsertWithMoveDown
à, par exemple, Alt+ V, et InsertWithMoveRight
à, par exemple, Alt+ R(tous ces raccourcis sont vides par défaut).
Maintenant, vous pouvez sélectionner des cellules ou des lignes à l'aide de la souris ou du clavier, les couper avec Alt+ C, passer à la cellule cible et les coller avec Alt+ Vou Alt+ R.