Bonjour,
j'ai un tableau de suivi des dépenses construit comme suit
A;B;C;D;E;F;G;H;I;J
DATE;MODE;NUM;OBJET;Débit;Crédit;Solde;Sous-catégorie;Catégorie;NATURE
dim. 1/01/2017;CB;;OPÉRATION 42737-3;414,00;;-414,00;COMPTE 1;PLACEMENT;Débit
dim. 1/01/2017;CB;;OPÉRATION 42737-4;154,00;;-154,00;DIVERS;COURANT;Débit
lun. 2/01/2017;CHQ;99919;OPÉRATION 42737-5;475,00;;-475,00;ÉQUIPEMENTS;COURANT;Débit
La colonne NATURE (J) contient cette formule
=SI(E2;"Débit";"Crédit")
La macro ci-dessous insère cette formule en dernière ligne. Elle est déclenchée à chaque enregistrement du classeur.
Du coup, l'insertion se répète inutilement, ajoute des lignes vides au tableau, ce qui fausse les Tables de pilote mises en place pour l'analyse.
>sub insertionformulenature|
>>
>
rem ------------------define
variables---------------------------------
dim document as Object
dim dispatcher as object
rem
----------------------------------------------------------------------rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")rem
----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "tetenature" rem "$J$1"dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0,
args1())rem
----------------------------------------------------------------------
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 = falsedispatcher.executeDispatch(document, ".uno:GoDownToEndOfData",
"", 0, args2())
rem -------repérer la ligne de la cellule active
Dim CelluleActive As Object, LigneCelluleActive As VariantCelluleActive = ThisComponent.getCurrentSelection
LigneCelluleActive= CelluleActive.CellAddress.Rowrem
----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
rem dispatcher.executeDispatch(document, ".uno:GoUpSel", "", 0,
args3())
dispatcher.executeDispatch(document, ".uno:GoDownSel", "", 0,
args3())dispatcher.executeDispatch(document,
".uno:JumpToNextUnprotected", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:FillDown", "", 0,
Array())rem
----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4())end Sub|
Or, Je souhaite que l'insertion de la formule n'intervienne pas plus bas que la dernière ligne saisie.
Pouvez-vous me mettre sur la piste de mon erreur ?
NB : je n'ai pas trouvé la syntaxe Basic pour tester la position de cette dernière ligne.
Merci,
LC