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)
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 :
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” en choisissant le style dans la panneau de droite.
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
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 Ç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.
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”.