Bonjour,
-----Message d'origine-----
De : demande_aide_fr@libreoffice.org
[mailto:demande_aide_fr@libreoffice.org]
Bonjour
Email:: didierjasselin@gmail.com
Sujet:: Appeler une fonction de calc dans une macro
Question:: Bonjour,
Voici mon problème : j'ai une feuille de calcul comportant une colonne
où
figurent la civilité ou la forme juridique d'une entreprise. Je souhaite
faire apparaître séparément dan 2 colonnes ces éléments. J'ai procédé
ainsi :
Inserttion d'une colonne avant celle contenant les données à exploiter
(colonne D) et saisie de la formule = =GAUCHE(E2;CHERCHE(" ";E2)-1),
puis
recopie de la formule jusqu'au bas de mon tableau
Insertion d'une autre colonne après celle contenant les données à
exploiter (colonne D) et saisie de la formule
=STXT(E2;TROUVE("%";SUBSTITUE(E2;" ";"%";1))+1;NBCAR(E2)) puis recopie
de
la formule jusu'au bas de mon tableau et masquage de la colonne
contenant
les données d'origine.
Je voudrais automatiser cela par une macro mais avec l'enregistreur les
formule ne sont pas prises.
Comment faire sachant que je ne maîtrise pas le langage macro de
LibreOffice ?
Merci de votre aide
Pourquoi automatiser ? une fois le travail que vous avez décrit effectué,
il
reste présent ...
Voici quelques éléments:
les formules complexes ne sont pas enregistrées avec l'enregistreur de
macro, mais on peut les rajouter avec un peu d'astuce:
1/ faire la même chose avec des formules simples (=A1+A2) par exemple
2/ dans la macro vous trouverez les lignes suivantes :
rem ------------------------------------------------------------
----------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "=A1+A2"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())
3/ remplacer alors =A1+A2 par la bonne formule, mais attention, en
anglais:
=LEFT(E2;SEARCH(" ";E2)-1)
=MID(E2;FIND("%";SUBSTITUTE(E2;" ";"%";1))+1;LEN(E2))
Ça devrait marcher, je viens de le faire sur un cas très simplifié (LibO
5.1.5 / Vista)
Pour trouver les formules en anglais, après les avoir écrites en français:
Outils > Options > LibreOffice Calc > Formules > Cocher "utilser les noms
de
fonction en anglais
Cordialement,
Michel
PS: Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.