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


Bonsoir Luc,

Le 25/01/2024 à 21:33, Mamin Luc a écrit :

En résumé : après sélection de cellules Calc, la macro fabrique un fichier Writer dans lequel je peux piocher ce qui m'intéresse pour faire un tableau Spip. Cela fonctionne, mais j'ai un besoin que je n'arrive pas à résoudre : transformer un tout petit peu le "retour charriot" de Calc (CTRL + Entrée).

Il s'agit en fait d'un saut de ligne (LF "line feed", code Ascii décimal 10).


Dans la macro, je fais rechercher "\n" et je mets en remplacement "n\"&"_ ". J'ai en effet besoin que le retour charriot soit suivi d'un "tiret bas + espace".

La recherche s'effectue correctement, mais le remplacement transforme le retour charriot en saut de paragraphe : un peu comme si le remplacement se faisait en "\p"&"_ ".

C'est "normal"... C'est une caractéristique du Rechercher/Remplacer de LibreOffice. Voir ici
https://help.libreoffice.org/7.5/en-US/text/shared/01/02100001.html?&DbPAR=WRITER&System=UNIX

où on peut lire pour \n

8< ----------------------------------------
When entered in the Find text box, finds a line break that was inserted with the Shift+Enter key combination in Writer, or the Ctrl+Enter key combination in a Calc cell.

When entered in the Replace text box in Writer, inserts a paragraph break that can be inserted with the Enter or Return key. Has no special meaning in Calc, and is treated literally there.
-------------------------------------- >8

Telle qu'elle est, ta macro est la victime du traitement du caractère LF.

Tu pourrais donc modifier ta macro en conséquence en remplaçant sans passer par les expressions régulières :
Ancien = Chr(10)
Nouveau = Ancien & "_ "

Et là ça ne me convient pas du tout...

Extrait :

 'RemplacerChaine
  Dim oDoc As Object
  Dim Remplace As Object
  Dim Ancien As String , Nouveau As String
  Ancien = "\n"
  Nouveau = "\n"&"_ "
  oDoc = ThisComponent
  Remplace = oDoc.createReplaceDescriptor
  Remplace.SearchRegularExpression = True
  Remplace.SearchString = Ancien
  Remplace.ReplaceString = Nouveau
  oDoc.replaceAll(Remplace)
N'étant pas spécialiste du tout des macros basic ou autre, je ne sais pas comment faire.



Bonne soirée,
--
Jean-Francois Nifenecker, Bordeaux

--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

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.