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 = false
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData",
"", 0, args2())
rem -------repérer la ligne de la cellule active
Dim CelluleActive As Object, LigneCelluleActive As Variant
CelluleActive = ThisComponent.getCurrentSelection
LigneCelluleActive= CelluleActive.CellAddress.Row
rem
----------------------------------------------------------------------
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
--
Configuration : Mac OS 10.10.5, RAM 8 Gio, LibreOffice 5.2.6.2 & 5.3.1.2
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
- [fr-users] [Calc] Insérer une formule par macro · LC_Libre
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.