Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


Oups, je n’ai pas fait attention aux guillemets présents dans la formule
réelle, la fonction est passée sous forme de chaîne de caractère (string)
qui est encadrée par ", si bien que s’il s’en trouve dans le texte, la
chaîne se termine prématurément.

Pour résoudre ce problème récurent en programmation, il faut redoubler les
guillemets présents dans les formules (tout le texte de la formule doit être
en rouge) :

Sauf erreur ou omission de ma part, ça doit donner ça :

 

=LEFT(E2;SEARCH("" "";E2)-1)

=MID(E2;FIND(""%"";SUBSTITUTE(E2;"" "";""%"";1))+1;LEN(E2))

 

Michel

  _____  

De : Didier JASSELIN [mailto:didierjasselin@gmail.com] 
Envoyé : vendredi 18 novembre 2016 15:14
À : Michel Rudelle
Cc : users@fr.libreoffice.org
Objet : Re: [fr-users] Appeler une fonction de calc dans une macro

 

Re-bonjour

J'ai procédé comme vous me l'avez indiqué mais cela ne fonctionne pas j'ai
le message d'erreur suivant :

Images intégrées 1

 

L'idée du "%" c'est de rechercher un caractère que j'ai peu de chance de
retrouver dans ma liste de données.

j'aurais pu mettre "zzz" mais si je mets cela dans la macro cela ne
fonctionne pas mieux.

Cordialement

 

Le 18 novembre 2016 à 14:46, Didier JASSELIN <didierjasselin@gmail.com> a
écrit :

Bonjour et merci de votre réponse.

Mon souhait d'automatiser est motivé par le fait que ce tableau est assez
long (plusieurs centaines de lignes) et qu'il faut faire cette opération
chaque mois dans un délai très c ourt pour exploiter le tableau.

Je vais essayer votre proposition.

Je vous tiens au courant.

Cordialement

 

Le 18 novembre 2016 à 13:51, Michel Rudelle <rudelle.michel@gmail.com> a
écrit :

Bonjour,

-----Message d'origine-----
De : demande_aide_fr@libreoffice.or
<mailto:demande_aide_fr@libreoffice.org> g
[mailto:demande_aide_fr@libreo <mailto:demande_aide_fr@libreoffice.org>
ffice.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.





-- 

Didier JASSELIN




-- 

Didier JASSELIN


-- 
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


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.