Activer des macros

Windows 10, LO 7.5
J’ai créé une macro afin d’inclure un fond de page.
Afin de l’inclure, j’ai donc paramétré les touches CTRL + 9
Celle-ci fonctionne mais pas partout.
J’ai un fichier de base que lorsque j’ai besoin d’un nouveau fichier, je recopie et tout marche bien.
Par contre, j’ai un autre fichier avec beaucoup de tableaux, les touches CTRL+ 9 ne marchent pas, aucune action.
Idem, si je créé un nouveau fichier Texte depuis LO, donc vide, les touches CTRL+9 n’ont pas d’action.
Et pourtant, dans Outils, la macro est bien là et les touches inscrites.
On dirait que ma macro n’est pas activée dans un nouveau fichier Texte.
Les autres, fournies par LO, sont actives. Merci.
La macro “Writer” a été ajoutée dans :
→ Mes macros et boîte de dialogue
→ Standard
→ Module 1
→ FondDePage (Macro créée)
Fichier de base :
J’ai l’occasion de faire régulièrement de nouveaux fichiers, autrement dit de nouveaux devis ou nouvelles factures.
Pour cela, je copie un devis précédent pour faire un nouveau devis.
Et dans ce cas, la macro fondDePage marche très bien.
Par contre, si je créé un nouveau document donc vide, la macro ne fonctionne pas et pourtant tout est inscrit dans “Outils” ? Merci.

Le mode pas à pas : je ne sais pas comment l’activer ?

Comment j’ai asocié CTRL+9 à la macro : dans Outils puis Personnaliser.
Ensuite, ce n’est pas simple mais il me semble que c’est bien fait et de plus, tout est identique à ce qui est inscrit dans les fichiers où cela marche.

Oula, oula, oula ! Vous allez trop vite…

Tout d’abord merci de préciser (en modifiant votre message d’origine) le système d’exploitation et la version de LibreOffice utilisés.

Ensuite, vous ne dites pas vous avez enregistré la macro (dans quel conteneur) : MesMacros ou un document ?

Et dans quelle bibliothèque ? Standard ? Autre ? Notez que seule la bibliothèque Standard est toujours chargée au démarrage de LibreOffice (et à l’ouverture d’un document). Les autres bibliothèques doivent être explicitement ouvertes avant de pouvoir en utiliser les macros.

Fichier de base ? Modèle ? Document standard utilisé comme exemple ?
La macro est-elle dans ce document ?

Dans l’autre document où la combinaison Ctrl+F9 ne fonctionne pas : avez-vous essayé en mode pas-à-pas ? La macro est-elle lancée mais ne fait rien ou bien elle n’est pas lancée du tout ?

Pas compris :frowning:
Comment avez-vous associé le raccourci Ctrl+F9 à l’exécution de la macro ?

Bref, beaucoup de questions :slight_smile:

Tout semble OK du côté implémentation dans MesMacros.
Est-il possible de voir votre macro FondDePage ?

REM ***** BASIC *****

Option Explicit
global cpt as Integer

sub Main

end Sub

Sub FondDePage
rem – Macro FonDePage :
rem – Deux fonctions : Insérer une image pleine page dans la page de titre si elle n’y est pas.
rem – Si l’image est présente, la retirer.

Dim Doc As Object
Dim StyleFamilies As Object 
Dim PageStyles As Object
Dim DefPage As Object

Doc = StarDesktop.CurrentComponent
StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("First Page")
if cpt = 0 then
	DefPage.BackGraphicURL = convertToUrl("C:\PAE_LO_2023-2.png")
	cpt = 1  ' 1 : image en fond  0 : Pas d'image
else 
	DefPage.BackGraphicURL =convertToUrl("C:\Feuille_blanche.jpg")
	cpt = 0  ' 1 : image en fond  0 : Pas d'image	
end if

end sub

Bonsoir,

le pb provient de la variable cpt (déclarée Global). Essayez de la déplacer dans la sub FondDePage et déclarez-la Static. Ce mot-clé permet la persistence entre appels.
Par ailleurs, mais sans rapport direct, vous pourriez aussi déclarer Doc = ThisComponent
plutôt que Doc = StarDesktop.CurrentComponent (synonyme mais plus simple et pas gênée par l’EDI lorsque ce dernier est ouvert en même temps que le document).
Sinon le code de cette sub semble OK.

NB : sans rapport avec votre question, la sub Main est inutile. Vous pouvez la supprimer.

Le problème est :
La macro n’est reconnue que dans un fichier Writer.
Quand je crée un nouveau fichier, je fais une copie d’un fichier précédent.
Par contre, si je crée un nouveau fichier vierge, la macro ne marche pas.
On la trouve dans Ooutils Macros, elle est aussi dans Personnaliser (Touches de fonctions) mais elle n’est pas active.
La macro est connue dans un seul fichier Writer, pas dans tout Writer et encore moins dans LO. C’est cela le problème.
Nota : si la variable “Cpt : Compteur” n’est pas globale, elle n’existe pas quand on fait appel à la macro une seconde fois afin de retirer le fond de page. Merci.

Writer - LO 7.5.0.3 ou antérieurs :
J’ai une macro qui marche très bien dans un fichier mais pas dans de nouveaux fichiers. Pour contourner le problème, je copie un fichier précédent et j’efface ce qui ne va pas.
Le problème est que la macro n’est reconnue que dans un seul fichier, pas dans tout fichier Writer ?

Problème pas résolu.

Bonjour,
Si tu souhaites qu’elle soit toujours disponible il faut la placer dans un module de la bibliothèque Standard de “Mes macros”.
Ou bien dans un modèle .ott (par défaut) qui sera utilisé pour la création de chaque nouveau document.
Cordialement,
JM

Merci.
La macro est dans Module1 de la bibliothèque Standard. Cela est-il bon ? Je ne sais pas. Sinon, comment la sortir de module1 et la mettre dans La bibliothèque Standard ?
Les modèles : je ne sais pas comment faire. Je voudrais créer un modèle avec un fichier que je possède ?

Bonjour,
les macros sont toujours insérées dans un module, ce que dit @jeanmi2403 . C’est étrange que votre macro, bien qu’intégrée à la bibliothèque Standard, ne s’exécute pas.

Pour apprendre à créer les modèles par défaut, voir les guides pour Writer, il y en a un sur les modèles.

La macro ne s’exécute que dans un seul et même fichier writer.
Quand j’ai besoin d’un nouveau fichier, je copie un ancien, efface ce qui ne me va pas, etc.

Bonsoir,

Relis mon message : bibliothèque Standard de Mes macros pas celle du document !
MesMacros

A plus,

La macro est et était dans :
Mes macros et boîtes de dialogue
Standard
Module1

Toujours le même problème : macro ne fonctionne que dans un seul fichier ?

Bonsoir,
Comment est lancée la macro ?
A plus,
JM

Merci pour m’avoir répondu.
La macro est lancée avec une touche de fonction.
Comme je disais, elle fonctionne très bien mais dans un seul fichier.
Si je crée un nouveau fichier, la macro “est bien là” mais ne fonctionne pas !!!

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Je n’ai pas réussi à faire fonctionner la macro.
Même en pas à pas, il ne se passe rien…
Le paramètre BackGraphicURL refuse de se remplir…

Incompréhensible.
Cela fait des “années” finalement que j’ai posé la question du fonctionnement des macros.
Vous l’avez trouvée sur le site des questions LibreOffice je suppose.
Je vous transmets un fichier sans entête et un avec entête.
Je transmets aussi un fichier de l’entête et un fichier vide.
Seulement, il faut modifier la macro et donc inclure l’adresse de ces deux derniers fichiers.
Poour activer la macro j’utilise une touche Ctrl + 9, par exemple.
Et pour cela, il faut aller dans Outils puis Personnaliser
Comme j’ai dit plusieurs fois, cela fonctionne très bien mais dans un seul fichier et donc, pour pouvoir m’en servir dans un autre fichier, je fait un CopierColler et modifie le contenu.

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

9309 Vide…odt (49.6 KB)

9309 Vide…pdf (162 KB)

L’ODT fourni ne contient aucune macro.