macros

Bonjour

Voici une nouvelle question envoyée à l'aide du formulaire de demande d'aide (http://fr.libreoffice.org/get-help/poser-une-question/).
Si vous répondez, merci de penser à utiliser la fonction "répondre à tous" de votre logiciel de courrier électronique de façon que le demandeur reçoive une copie de votre réponse.

Email:: 00120260a@gmail.com
Sujet:: macros
OS:: Linux
Version:: 5.4.x
Question:: J'aimerais des macros capables d'enregistrer une série d'opérations simple sur une phrase, et la répeter, quand on l'active au début d'une autre phrase.
Exemple: phrase "123" deviendrait "1 22 333"
et de même "abc" deviendrait "a bb cc"
Je n'y suis pas encore arrivé.
Merci !

Bonjour

Email:: 00120260a@gmail.com
Sujet:: macros
OS:: Linux
Version:: 5.4.x
Question:: J'aimerais des macros capables d'enregistrer une série d'opérations simple sur une phrase, et la répeter, quand on l'active au début d'une autre phrase.
Exemple: phrase "123" deviendrait "1 22 333"
et de même "abc" deviendrait "a bb cc"
Je n'y suis pas encore arrivé.
Merci !

Bonjour,

Sans Macro,

c'est possible par des auto-textes.

Bonjour,

Question:: J'aimerais des macros capables d'enregistrer une série
d'opérations simple sur une phrase, et la répeter, quand on l'active
au début d'une autre phrase. Exemple: phrase "123" deviendrait "1 22
333" et de même "abc" deviendrait "a bb cc" Je n'y suis pas encore
arrivé. Merci !

Votre demande manque de précision.

Je comprends qu'il s'agit de Writer ? Ou bien faut-il traiter un fichier externe ?

Pouvez-vous mieux décrire le besoin. La répétition recherchée suit-elle toujours le modèle que vous avez montré :
1 fois le 1er car
<espace>
2 fois de 2e
<espace>
3 fois le 3e

ou bien doit-elle continuer ainsi et traiter tant qu'il y a des caractères et répéter N fois le Nième caractère ?

Y a-t-il une espace à la fin ?

Quel morceau de texte faut-il traiter ? Tout le texte ? Un seul paragraphe ? Une sélection ? Faite par l'utilisateur ?

Que voulez-vous dire par "quand on l'active au début d'une autre phrase" ?

Bref, pour vous aider, il faut un cahier des charges précis et clair.

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.

Bien cordialement,

Bonjour,

J'aimerais que la macro puisse traiter la ligne au début de laquelle je
poserais le curseur, avant d'activer la macro. Du début à la fin de la
ligne, pas du paragraphe. J'aimerais que la macro sache faire "aller N
caractères plus loin, mettre en gras les trois suivants, etc" comme je
le ferais en me déplacant au clavier et en faisant Ctrl+g.
A priori, je ne l'utiliserai que sur des lignes stéréotypées du type
"abc" ou "123" pour les mettre en forme.
Il y aurait une séquence finie d'opérations sur les caractères, qui
s'arrêterait à la fin de la ligne. Il s'agit bien de Writer sur des
fichiers .odt.

Savez-vous que la notion de "ligne" est très floue ? En effet, le contenu d'une ligne dépend de sa longueur, donc de l'orientation du papier, des marges, des retraits (et autres joyeusetés si l'on considère que le texte peut se trouver dans un tableau ou un cadre).

En l'état je ne vois pas comment traiter votre question qui mérite clarification. Quelle est la situation de départ, quel est l'objectif final ? Quel problème concret voulez-vous gérer ?

Bien cordialement,

J'aimerais que la macro puisse traiter la ligne au début de laquelle je
poserais le curseur, avant d'activer la macro. Du début à la fin de la
ligne, pas du paragraphe. J'aimerais que la macro sache faire "aller N
caractères plus loin, mettre en gras les trois suivants, etc" comme je le
ferais en me déplacant au clavier et en faisant Ctrl+g.
A priori, je ne l'utiliserai que sur des lignes stéréotypées du type "abc"
ou "123" pour les mettre en forme.
Il y aurait une séquence finie d'opérations sur les caractères, qui
s'arrêterait à la fin de la ligne. Il s'agit bien de Writer sur des
fichiers .odt.

Bonjour,

(n'oubliez pas de faire copie à la liste users pour avoir plus de visibilité)

Bon, oublions la notion de ligne, effectivement. Paragraphe est mieux.

Il y a un paragraphe contenant "abc" que activer la macro au début du
paragraphe doit transformer le paragraphe en "a bb ccc abc abc abc".
Comment je fais ?

Et j’aimerais pas qu’on me dise d’écrire du BASIC pour si peu, parce que
les macros réelles dont j’ai besoin comprennent plus d’opérations – du
même genre cependant. Comprendront seulement en plus des changements de
couleurs sur certains caractères.

"pour si peu" ? Hum. Je ne vois pas comment votre demande peut se résoudre sans macro. D'autres auront cependant peut-être de meilleures suggestions.

De ce que j'ai compris, en gros, la macro doit faire ceci :

1. Lire le paragraphe courant (sous le curseur).

2. Créer un texte à partir du contenu de ce paragraphe, selon les instructions suivantes :

Tant qu'il y des lettres
   Découper en tronçons de 3 lettres. (-> que fait-on s'il n'y a pas 3 lettres ?)
   Écrire chaque lettre autant de fois que son rang et ajouter une espace
   Ajouter 3 fois de suite les trois lettres en ajoutant une espace à chaque fois.
Fin tant

3. Remplacer le contenu originel du paragraphe par le nouveau texte.

Je ne pense pas qu'il existe des fonctions natives de Writer qui puissent faire ça. Mais je ne demande qu'à être contredit.

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.

Bien cordialement,

​Pardon, "pour si peu" désigner le fait d'écrire du basic.
Pour avoir à la place "a bb ccc abc abc abc", avec le clavier, je
commencerais par rajouter 3 "abc" en le copier avec un espace entre chaque,
ensuite je mettrais un espace entre le premier et a et le premier b,
doublerais le premier b, ajouterais un espace, et triplerais le 1 c. Puis
j'irais au début de la ligne d'après.
Je peux faire ça au clavier, je comprends pas pourquoi cette séquence
d'action ne peut pas être enregistrer dans une macro. Et si j'execute la
macro au début d'une ligne contenant seulement 123, ça me donnerait 1 22 33
123 123 123. Je veux copier une séquence de déplacement, de "copier" et de
coller, à des positions au sein d'une ligne, relatives à son début (ou
celui du paragraphe, pareil pour moi).
Je ne suis pas censé utiliser la macro autre part que sur des paragraphes
stéréotypés, contenant seulement les caractères ABC, trois caractères
quelconques.

Re,

Comme vous n'expliquez pas à quoi va vous servir cet algorithme, il est bien difficile de comprendre pourquoi
vous donnez 2 exemples différents :

  * abc a bb ccc abc abc abc
  * 123 1 22 *33* 123 123 123

comme s'il fallait répéter 3 fois le 3° élément s'il s'agit de lettres et seulement 2 fois si ce sont des nombres.

Cordialement
Sandy-Pascal Andriant

Bonjour,

Vu la complexité de ce que vous envisagez, il me semble indispensable d'avoir une solide documentation sur l'API de LibreOffice.

Vous aurez besoin au minimum d'un Curseur visible et sans doute d'un curseur d'écriture.

Vous trouverez beaucoup d'exemples dans ce livre : http://www.editions-eyrolles.com/Livre/9782212132472/programmation-openoffice-org-et-libreoffice

Bien cordialement.

Bonjour,

​Pardon, "pour si peu" désigner le fait d'écrire du basic.

pas de mal :wink:

Pour avoir à la place "a bb ccc abc abc abc", avec le clavier, je
commencerais par rajouter 3 "abc" en le copier avec un espace entre chaque,
ensuite je mettrais un espace entre le premier et a et le premier b,
doublerais le premier b, ajouterais un espace, et triplerais le 1 c. Puis
j'irais au début de la ligne d'après.
Je peux faire ça au clavier, je comprends pas pourquoi cette séquence
d'action ne peut pas être enregistrer dans une macro. Et si j'execute la
macro au début d'une ligne contenant seulement 123, ça me donnerait 1 22 33
123 123 123. Je veux copier une séquence de déplacement, de "copier" et de
coller, à des positions au sein d'une ligne, relatives à son début (ou
celui du paragraphe, pareil pour moi).
Je ne suis pas censé utiliser la macro autre part que sur des paragraphes
stéréotypés, contenant seulement les caractères ABC, trois caractères
quelconques.

Ahhh ! Votre dernier message sur la liste révèle enfin votre objectif :)) ... vous réalisez un cours de dactylo. Que ne l'aviez-vous dit d'emblée !

Pour revenir à votre mouton, pourquoi n'essayez-vous pas, puisque vous le suggérez, d'enregistrer la macro (avec l'enregistreur de macros) pour voir ce que ça donne ?

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.

Bien cordialement,

puisque vous le suggérez, d'enregistrer la macro (avec l'enregistreur de
macros) pour voir ce que ça donne ?

J'ai essayé, et c'est parce que ça n'a pas marché que j'ai demandé ici .
pour les chiffres j'ai fait une erreur, on doit bien sûr passé de 123 à "1
22 333 123 123 123".
Donc soit une ligne avec "abc", je place le curseur au début du paragraphe,
j'active l'enregistreur, copie colle et me déplace avec le clavier, arrête
l'enregistreur, applique la macro à une autre ligne contenant abc, et ça me
fout n'importe quoi, avec des 123 à divers endroits. Comme si il avait
enregistré qu'il fallait écrire des 1 2 ou 3, alors que je voulais qu'il
enregistre l'opération consistant à copier le contenu d'une sélection
déterminée au clavier...

Bjr,

Normal que la macro enregistrée répète la variation sur 123.
Pour obtenir la variation sur abc, xyz, 789, etc, il faut passer en variable le 1°, le 2nd et le 3° caractère de la chaîne.
Puis reproduire le travail de la macro en utilisant les variable plutôt que les caractères absolus.

Cordialement
Sandy-Pascal Andriant

Pour ce faire, il faut que j'édite la macro c'est cela ?​

Oui. Pouvez-vous montrer la macro que vous avez obtenue ?

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.

Bien cordialement,