But de la macro:
- Copier la dernière ligne d'un tableau.
- Pointer la cellule A de la ligne suivante (ligne vide).
- Insérer avant cette ligne la ligne sauvegardée.
- Sélectionner une cellule de cette ligne pour saisir une valeur.
Fichier en pièce jointe, le code:
Code : Tout sélectionner
Rem Extension d'un tableau: répétition de la dernière ligne, curseur positionné pour une saisie
Sub extendArray (oFeuille As Object, nomColTst As String, indLig As Integer, nomColIn As String)
Dim document As Object
Dim dispatcher As Object
Dim indColTst As Integer
Rem Accès au document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Rem Recherche de la dernière cellule non vide dans la colonne indexColTst
indColTst = indexColonne(nomColTst)
indLig = indLig - 1 ' Les index commencent à 0
Do Until oFeuille.getCellByPosition(indColTst, indLig).String = ""
indLig = indLig + 1
Loop
Rem Pointe la cellule A de cette ligne
Dim args1(0) As New com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$A$" + indLig
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
Rem sélection et sauvegarde de cette ligne
dispatcher.executeDispatch(document, ".uno:SelectRow", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
Rem Pointe sur la ligne suivante
indLig = indLig + 1
Dim args2(1) As New com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())
Rem Insertion d'une ligne (avant cette ligne)
dispatcher.executeDispatch(document, ".uno:InsertRowsBefore", "", 0, Array())
Rem Collage de la ligne sauvegardée
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
Rem Sélection de la cellule de saisie
Dim args3(0) As New com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$" + nomColIn + "$" + indLig
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
End Sub
Je voudrais que le curseur soit dans l'état d'une saisie (comme lorqu'on double clique sur une cellule), que la touche Entrée valide la donnée même si elle n'a pas été saisie.
Merci pour vos



