Bonsoir,
Sous Excel vous avez l'enregistreur de macro qui peut vous aider :
Sub Macro1()
'
' Macro1 Macro
'
'
Selection.Cut
Rows("10:10").Select
Selection.Insert Shift:=xlDown
End Sub
Ceci coupe une ligne ici la sélection était la ligne 11, puis on sélectionne la ligne 10, avec le clic droit, on choisi "insérer la ligne copiée".
Ensuite avec un peu de nettoyage et de suppression de "Select" on obtient ceci pour monter une ligne :
Sub monte()
' on copie/coupe la ligne de la cellule sélectionnée
ActiveCell.EntireRow.Cut
' on insert la ligne coupée au niveau de cette ligne -1 en décalant le reste vers le bas
ActiveCell.Offset(-1).Insert Shift:=xlDown
End Sub
Mais il faut mettre des "garde-fous" car si vous sélectionnez une cellule de la ligne 1, alors le OffSet(-1) (qui décale la référence de l'objet d'une ligne vers le haut) va provoquer une erreur car la ligne(0) n'existe pas sur une feuille donc il faut ajouter une gestion d'erreur ou bien un test :
Sub monte()
' test faisabilité : si ligne = 1 on ne fait rien et on quitte
If ActiveCell.Row = 1 Then Exit Sub
' on copie/coupe la ligne de la cellule sélectionnée
ActiveCell.EntireRow.Cut
' on insert la ligne coupée au niveau de cette ligne -1 en décalant le reste vers le bas
ActiveCell.Offset(-1).Insert Shift:=xlDown
End Sub
Et pour pouvoir répéter l'action sans devoir resélectionner la ligne à déplacer vous pouvez ajouter ceci : ActiveCell.Offset(-1).Select
Sub monte()
' test faisabilité : si ligne = 1 on ne fait rien et on quitte
If ActiveCell.Row = 1 Then Exit Sub
' on copie/coupe la ligne de la cellule sélectionnée
ActiveCell.EntireRow.Cut
' on insert la ligne coupée au niveau de cette ligne -1 en décalant le reste vers le bas
ActiveCell.Offset(-1).Insert Shift:=xlDown
' on déplace la cellule active d'une ligne vers le haut en sélectionnant cette dernière
ActiveCell.Offset(-1).Select
End Sub
Je vous laisse trouver la fonction inverse...
@ bientôt
LouReeD