Activer des macros

Désolé, Les macros sont dans LO et non pas dans un fichier.
Envoi de la macro.
Merci.

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

LO Macro.odt (28.7 KB)

Bonjour,

Tu devrais vite anonymiser tes documents en ligne.

Avec ton IBAN, téléphone et adresse visibles du monde entier, tu peux être la cible de pirates informatiques…

Je te réponds sur le forum, et je pose la question sur un forum anglophone, si tu me donnes l’autorisation.

A bientôt

Pas de problème.
Par contre, je ne sais pas comment arriver directement sur le forum.
Pour les documents, c’est trop tard mais je me demande ce qu’un pirate peut faire : se faire passer par l’entreprise mais cela ne devrait pas marcher bien longtemps il me semble.
Merci.

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Bonsoir,
J’ai le même problème que toi. Ca fonctionne avec ton document, pas avec un nouveau.
Avec un affichage de message dans la macro, je vois qu’elle est bien exécutée (on passe dedans) mais la valeur de BackGraphicURL n’est pas prise en compte.
Après quelques recherches, ça fonctionne avec OpenOffice, il y a donc quelque chose de sournois avec Libo.
La solution que j’ai trouvée :

  1. créer un document “vierge” (à partir de celui qui fonctionne).
  2. L’enregistrer comme modèle (Fichier>Enregistrer sous> Modèle de document) Dans le dossier des modèles (défini dans les options)
    AllaisOTT
    Pour créer un nouveau document, utiliser le modèle : Fichier>Nouveau>Modèles et choisir ce modèle
    AllaisNouveau
    La macro fonctionne sur ce document que tu peux enregistrer ensuite.
    Je vais présenter le problème sur le forum OpenOffice/LibreOffice et sur la version anglophone, si tu en es d’accord. Avec ton fichier anonymisé.
    PS : tu peux supprimer ton fichier et en mettre un autre en éditant le message qui le contient…
    A plus
    JM

Bonjour,
PS : tu peux supprimer ton fichier et en mettre un autre en éditant le message qui le contient…
A plus
JM
Je ne comprends ce que cela veux dire, que dois-je faire ?
Merci.
Ensuite, on dirait bien qu’il y a un bug dans LO, en effet !

Merci encore.
C. Allais

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Salut,
Quel âne je suis !!!
Ta macro fonctionne sur n’importe quel fichier.
Il suffit d’ affecter à la première page le style “Première page” :cold_face: en choisissant le style dans la panneau de droite.
StylePremierePage
Sans ça, le style est bien modifié, mais pas affiché, puisque la page n’a pas ce style…
Donc il suffit d’avoir un modèle par défaut (vide ou non), dont la première page ait le bon style…
Ça peut être le style “Première Page” ou un autre (personnalisé), il suffira de modifier son nom dans la macro.
A plus,
Je cherche maintenant à affecter un style à une page par macro.

Bonjour,
Je n’aime pas qu’un truc me résiste…
Pour en finir avec ce sujet, quelques lignes à rajouter en début de macro :

oCurseur = Doc.CurrentController.ViewCursor ' Créer un curseur dans le texte
oCurseur.JumpToPage(1) ' Aller à la première page
oCurseur.PageDescName = "Première page" ' Affecter le style à la page

La macro fonctionne ensuite sur n’importe quel fichier.
Cordialement,

Bravo.
Je n’y croyais presque plus.
Il y a des personnes qui ne savent pas lire.
C’est comme un problème de math, il faut lire et relire l’énoncé afin de répondre à la question et non à côté, comme j’ai pu voir.
Pour le “Style”: je crois savoir, comprendre ce qu’il y a dedans mais ne sait pas m’en servir.
Merci, c’est parfait maintenant.
Il va falloir que je retrouve le questionnaire LO afin de dire que c’est résolu.
Bravo.
C. Allais

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Bonjour,
Il reste un problème : “Variable non définie”.
Ce doit être “oCurseur” ?
Merci.

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Oui, bien sûr !
Il faut déclarer la variable au préalable avec les autres.

Dim oCurseur as Object

Cordialement,
JM

Désolé, encore et toujours le même problème :
oCurseur = Doc.CurrentController.ViewCursor ’ Créer un curseur dans le texte
Le retour est encore : “Variable Objet non définie”
alors qu’elle est inscrite ?
Merci.
Je ne sais pas s’il y a un document qui explique clairement le fonctionnement de LO.
J’avais cherché, il y a longtemps.
Il avait fallut que je retrouve la (les) notice(s) d’origine de “StarOffice” afin d’avoir quelque chose de clair.
Bonne journée.
C. Allais

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Je te mets celle qui marche chez moi, ou je ne suis pas en ce moment, pas le temps de l’adapter.
Change juste les noms des fichiers.

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

Option Explicit
global cpt as Integer

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, oCurseur As Object


Doc = ThisComponent
oCurseur = Doc.CurrentController.ViewCursor ' Créer un curseur dans le texte
oCurseur.JumpToPage(1) ' Aller à la première page
oCurseur.PageDescName = "Première page" ' Affecter le style à la page


StyleFamilies = Doc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("First Page")
if cpt = 0 then
	DefPage.BackGraphicURL = convertToUrl("C:\Temp\Confidentiel.png")
	cpt = 1  ' 1 : image en fond  0 : Pas d'image
else 
	DefPage.BackGraphicURL =convertToUrl("C:\\Temp\Travail.jpg")
	cpt = 0  ' 1 : image en fond  0 : Pas d'image	
end if

end sub

Doc Basic LIbreOffice
Doc Basic OpenOffice

Bonjour,
Marche très bien.
La seule différence était qu’il n’était pas inscrit “doc=ThisComponent” mais quelque chose d’approchant. Comme j’ai effacé cette instruction, je ne sais plus ce qui était inscrit.
Je n’ai pas compris le problème. L’important est quand même que cela marche parfaitement.

J’ai trois fonds de page différents et j’ai fait trois copies de la macro FondDePage.
On pourrait dire que je chipote mais j’aimerais mieux avoir une seule macro avec un argument comme :
FondDePage(1)
ou
FondDePage(2), etc.
Dans la macro nous aurions :
Variable 1 =“Nom du fichier.xxx”
Variable 2 ="???"

Cette façon de faire éviterait d’avoir tout en trois exemplaires.
Je ne sais pas comment inscrire cela.
Il faudrait que je cherche dans les docs.
Programmer dans LibreOffice est un travail à plein temps.

Merci beaucoup et bonne journée.
C. Allais

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Bonsoir,
Voilà un exemple avec une boîte de dialogue, à adapter.
TestFond.odt (71,1 Ko)
Je vais utiliser ce document dans la manuel d’exemples que je suis en train d’écrire…
A plus

Bonjour,
Pour plagier un certain fournisseur sur Internet : On bosse pour moi.
Merci encore.
J’avais vu dans LO qu’il y avait une entrée Fond de page, que je ne retrouve pas d’ailleurs.
Cela ne m’a pas paru intéressant, sans doute par le fait que l’on inclu des images qui génèrent des fichiers énormes alors qu’avec le procédé utilisé, on a un fichier Writer et un PDF très peu volumineux.

J’aurais préféré ne pas avoir de boîte de dialogue.
J’ai actuellement :
ctrl + 8 qui déclenche la macro fdp1
ctrl + 9, macro fdp2
ctrl + A, macro fdp3
Pourquoi ces trois combinaisons de touches : elles se suivent et n’étaient pas utilisées.
Est-ce qu’une macro peut reconnaître, savoir ce qui l’a déclenchée ?
Si oui alors :
On crée une seule macro appelée FDP, par exemple.
Dans cette macro, si on sait que la combinaison de touches a été ctrl + 8, alors on va utiliser le fond de page n° 1, par exemple.
Sinon, si c’était ctrl + 9, on utilise le second fond de page,
etc.

Est-ce possible ?
Merci.
C. Allais

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Bojour,

C’est une thérapie :grinning: Ça permet d’entretenir le cerveau…

J’aimais bien cette solution car elle est facilement adaptable, il suffit de rajouter un élément dans le tableau.

Est-ce qu’une macro peut reconnaître, savoir ce qui l’a déclenchée ?

On ne peut pas (facilement) récupérer l’événement déclencheur lorsque la macro est lancée par un raccourci clavier. :nauseated_face:
En revanche, on peut faire trois petits lanceurs qui vont piloter la macro principale :

Option Explicit
Sub Lance0
	FondPage(0) ' 0 = numéro de l'image dans le tableau
End Sub

Sub Lance1
	FondPage(1)
End Sub

Sub Lance2
	FondPage(2)
End Sub

Sub FondPage(iNumImage As Integer)
Dim oDoc as Object
Dim StyleFamilies As Object, PageStyles As Object
Dim DefPage As Object, oCurseur as Object
Dim sNomDossier as String, sNomImage as String
Dim aListeImages as Variant

oDoc =ThisComponent
sNomDossier = "/home/jeanmi/Documents/Tests/FondPage/" ' dossier des images
aListeImages = array("Fond-Confidentiel.png", "Fond-Travail.png", "Fond-Provisoire.png")  ' tableau des noms des  images 
sNomImage = aListeImages(iNumImage) ' celle reçue du lanceur
oCurseur = oDoc.CurrentController.ViewCursor ' Créer un curseur dans le texte
oCurseur.JumpToPage(1) ' Aller à la première page
oCurseur.PageDescName = "Première page" ' Affecter le style à la page
' Modifier le style 
StyleFamilies = oDoc.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Première page") 
With DefPage
	.BackGraphicURL = convertToUrl(sNomDossier & sNomImage)
	.FillBitMapMode = 2 ' Personnalisé
End With
End Sub

Il n’y a plus qu’à personnaliser en fonction de ton environnement.
Cordialement,

J’ai repris l’idée du Lanceur.
J’ai simplifié la propostion, rendue aussi moins universelle.
Merci.
On peut dire que la question est close.
Il me semble que cela pourrait servir, être intégré à LibreOffice.
En général, nous avons besoin d’un fichier Writer, transformé en fin en PDF si l’on veux l’envoyer via mail ou autre, donc deux fichiers.
Un fichier Writer avec images prend une place énorme.
Deux fichiers, un Writer sans image et un PDF sont alors de tous petits fichiers.
Il y a sans doute des images peu gourmandes en place mais avec quelle qualité ?
Merci encore.

Allais Entreprise
Chauffage Sanitaire Climatisation
14 rue Job 31000 Toulouse

Il reste un problème, en mode plein écran (Ctrl+Maj+0) :

La macro s’arrête, “Erreur d’exécution”, sur la première des lignes “oCurseur”.