9 votes

Déplacer des lignes avec le clavier dans Calc

Comment déplacer une ligne à un autre endroit avec le clavier ? J'ai trouvé ce guide pour la souris mais en raison d'un handicap, j'ai du mal à utiliser la souris pour cela.

Notez que je ne cherche pas à "trier manuellement" et que l'utilisation d'une colonne supplémentaire de "tri ordinal" n'est pas une solution viable. Je suis cependant conscient des excellentes capacités de tri de Calc.

15voto

Scakko Points 548

Pour déplacer une ligne dans Open Office Calc :

  1. Sélectionnez la cellule de la colonne A de la ligne à déplacer.
  2. Appuyez sur Shift-Espace pour mettre en surbrillance toute la ligne.
  3. Appuyez et maintenez la touche ALT clé.
  4. Faites glisser la rangée (une ligne noire épaisse apparaît) vers le haut ou le bas jusqu'à l'emplacement souhaité.
  5. Si votre travail semble correct, cliquez sur l'icône Enregistrer dans la barre d'outils.
  6. Autrement, ALT - Z pour défaire.

Si vous voulez écraser et détruire l'emplacement cible, ne maintenez pas la touche ALT enfoncée. Cliquez simplement sur la ligne en surbrillance et faites-la glisser vers son nouvel emplacement. Les données de l'emplacement cible cible seront détruites et remplacées par les données de la ligne déplacée.

7voto

Kishore UK Points 111

Je ne suis pas sûr qu'il existe un moyen de "déplacer" les lignes à l'aide du clavier, mais l'utilisation de c&p et l'insertion/suppression de lignes à l'aide du clavier devraient offrir la même fonctionnalité :

  • naviguer vers la première cellule (la plus à gauche) de la ligne à déplacer ;
  • touchez SHIFT + SPACE pour sélectionner la ligne entière ;
  • touchez CTRL + C pour copier la ligne ;
  • touchez CTRL + - pour supprimer la ligne en cours ;
  • naviguer vers la ligne cible ;
  • touchez ALT + I pour ouvrir le Insert menu ;
  • touchez R pour insérer une nouvelle ligne (la ligne actuelle sera décalée vers le bas) ;
  • touchez CTRL + V pour coller la rangée à son nouvel emplacement.

Comme les opérations de couper-coller sont parfois assez gênantes, vous pouvez créer une simple macro pour couper les cellules et une autre pour les coller, en 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, il suffit d'assigner CopyAndCut à, par exemple, Alt + C , InsertWithMoveDown à, par exemple, Alt + V et InsertWithMoveRight à, par exemple, Alt + R (tous ces raccourcis sont vides par défaut).

Vous pouvez maintenant sélectionner des cellules ou des lignes à l'aide de la souris ou du clavier, les découper à l'aide de la touche Alt + C déplacez-vous jusqu'à la cellule cible et collez-les à l'aide de la fonction Alt + V o Alt + R .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X