1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Inutile
    Inscrit en
    août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Inutile

    Informations forums :
    Inscription : août 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut Comment créer une macro de mise en page ? LibreOffice Version: 5.1.6.2

    Bonjour,

    j'ignore tout des macros LibreOffice et des macros en général, mais je pense et j'espère que c'est par le biais d'une macro que mon problème est solvable.

    En début d'année, je reçois plusieurs centaines d'images numérotée 001.png jusqu'à un chiffre inconnu à l'avance, disons par exemple 403.png

    L'image 001.png doit être le fond de page de la première page de document, la 002.png de la seconde, etc jusqu'à la dernière qui elle est le fond de page de par exemple ici 403 mais aussi 404, 405, etc jusqu'à la fin du document (non prévisible)

    Cela peut se faire à la main, mais c'est long, répétitif et sujet à erreur humaine...

    Comment feriez vous ? car n'ayant pas trouvé du tuto de mise en page de writer autrement que "à la main" j'ai besoin de vos conseils car la fonction enregistrer une macro qu'on voit en démonstration sur les vidéo et tutos abouti à une fonction qui n'a aucun effet et dont le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    REM  *****  BASIC  *****
     
     
    sub Main
    rem ----------------------------------------------------------------------
    rem define variables
    dim document   as object
    dim dispatcher as object
    rem ----------------------------------------------------------------------
    rem get access to the document
    document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
     
    rem ----------------------------------------------------------------------
    rem dispatcher.executeDispatch(document, ".uno:NewStyle", "", 0, Array())
     
     
    end sub
    Les actions effectuées étaient :
    créer un nouveau style N
    indiquer que le style de suite est N+1 (déjà créé)
    indiquer que image de fond adaptée à la page
    télécharger image de fond
    valider


    Et la macro idéale:
    demanderait le répertoire des images
    détecterait laquelle a le nom correspondant au nombre le plus élevé ou demanderait ce nombre
    créerait le style de page NlePlusEleve dont le style de suite serait lui-même et dont le fond de page adapté à la dimension de la page serait NlePlusEleve.png
    créerait le Style N-1 dont le style de suite serait N et le fond de page N-1.png
    s'arrêterait après avoir créé le style 1 ayant pour fond 001.png


    Un très grand merci d'avance

  2. #2
    Membre chevronné
    Avatar de Bidouille
    Inscrit en
    mars 2003
    Messages
    1 190
    Détails du profil
    Informations forums :
    Inscription : mars 2003
    Messages : 1 190
    Points : 1 846
    Points
    1 846

    Par défaut

    Writer est un traitement de textes et non un album photo.
    Il y a une extension qui permet de faire cela sous Impress :
    https://forum.openoffice.org/fr/foru...p?f=18&t=51246
    Rédacteur PHP / Delphi ADO / Novell / OpenOffice.org

    Inutile de m'envoyer vos questions par MP, je ne réponds que par le forum.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Inutile
    Inscrit en
    août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Inutile

    Informations forums :
    Inscription : août 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Ce n'est ni un album photo ni une présentation.

    C'est bien un document texte "classique" en A4 portrait marges 1,5 cm, en tête, pieds de pages,etc et un fond différent par "activité" et non ce n'est pas une présentation c'est un reporting à la con.

    La solution imaginée par ceux qui l'on pondu c'est pour une personne handicapée moteur ne pouvant pas écrire à la main:
    imprimer le support (grâce à un bénévole)
    trouver un bénévole à qui on dictera le remplissage
    scanner le résultat (par le bénévole)

    sauf que des bénévoles pour handicapés moteurs célibataires ça n’existe pas et les assistant de vie ont généralement un niveau trop bas pour écrire une dictée

    là j'essaie de faire quelque chose qu'une personne handicapée moteur peut faire avec son traitement de texte

    et non en impress ce n'est pas possible, ça n'existe pas Impress comme un traitement de texte

    donc non ce n'est pas plus possible d'utiliser impress que de trouver un bénévole chaque jour pour faire l'impression, la dictée et le scan

    pour l'instant je fais donc le "modèle de document" à la main modèle de page par modèle de page puisque visiblement l'automatisation ce n'est pas possible

  4. #4
    Membre expert
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    décembre 2008
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : décembre 2008
    Messages : 1 508
    Points : 3 599
    Points
    3 599

    Par défaut

    hello,
    Citation Envoyé par Hada de la Luna Voir le message
    Bonjour,

    j'ignore tout des macros LibreOffice et des macros en général, mais je pense et j'espère que c'est par le biais d'une macro que mon problème est solvable.

    En début d'année, je reçois plusieurs centaines d'images numérotée 001.png jusqu'à un chiffre inconnu à l'avance, disons par exemple 403.png

    L'image 001.png doit être le fond de page de la première page de document, la 002.png de la seconde, etc jusqu'à la dernière qui elle est le fond de page de par exemple ici 403 mais aussi 404, 405, etc jusqu'à la fin du document (non prévisible)


    Et la macro idéale:
    demanderait le répertoire des images
    détecterait laquelle a le nom correspondant au nombre le plus élevé ou demanderait ce nombre
    créerait le style de page NlePlusEleve dont le style de suite serait lui-même et dont le fond de page adapté à la dimension de la page serait NlePlusEleve.png
    créerait le Style N-1 dont le style de suite serait N et le fond de page N-1.png
    s'arrêterait après avoir créé le style 1 ayant pour fond 001.png

    Un très grand merci d'avance
    ce qui m'inquiète dans ton projet c'est la taille du fichier de sortie qui va avoir la taille de l'ensemble de tes images .
    Voici du code "vite fait sur le gaz" qui pourrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Sub CreationFondsPages  
    'J.P Aout 2017  
    'Essayé avec LibreOffice 5.2.7 windows 7
     
    Dim sGraphicURL As String , Chemin As String , NextFile as String  
    Dim oFolderDialog as Object, oUcb as Object 
    Dim oVc,Curs As Object 
    Dim NumStyle As Integer
    Dim choix As Integer 
     
    oVC = ThisComponent.CurrentController.ViewCursor
    oVC.jumpToEndOfPage() 
    oText = ThisComponent.Text
    Curs =oText.createTextCursorByRange(oVC.End)
    Curs.gotoEnd(false)
    'Curs.BreakType = 4 'com.sun.star.style.BreakType.PAGE_BEFORE
    Curs.BreakType = 5 'com.sun.star.style.BreakType.PAGE_AFTER
     
    '--- Affiche la boîte de dialogue pour sélectionner le répertoire contenant les fichiers .jpg ---  
    oFolderDialog = CreateUnoService("com.sun.star.ui.dialogs.FolderPicker")
    'endroit de départ pour parcourir les répertoires 
    oFolderDialog.setDisplayDirectory( "C:\Users\Public\Pictures\Sample Pictures" ) 
    oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")  
    choix = oFolderDialog.Execute()  
    If choix = 1 Then Chemin=ConvertFromUrl(oFolderDialog.getDirectory())  
     
    'Boucle sur toutes les images du répertoire cible 
    'Attention la procédure est sensible à la casse 
    '(jpg n'est pas identique à JPG)  
    NextFile=Dir(Chemin & "\*.jpg",0)  
    NumStyle = 1  
    Do While Len(NextFile) >0  
       sGraphicURL =ConvertToURL(Chemin & "\" & NextFile)  
      ChangeFondPage(sGraphicURL,NumStyle) 
    'Changer de page avec nouveau Style
      Curs.PageDescName = "MonStyleDePage" & Cstr(NumStyle)
      Curs.gotoEndOfParagraph(FALSE)
       oText.insertControlCharacter(Curs.End, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
       Curs.BreakType = com.sun.star.style.BreakType.PAGE_AFTER
      NumStyle = NumStyle + 1
      NextFile=Dir()  
    Loop  
    End Sub
     
    Sub ChangeFondPage(MonFond,X)
    Dim oStyleFamilies, oPageStyles as Object
    Dim NewStyle, oMyPageStyle as Object
     
    ' Les familles de style
    oStyleFamilies= ThisComponent.getStyleFamilies()
    ' Les styles de page
    oPageStyles= oStyleFamilies.getByName("PageStyles")
    ' Créer un nouveau style de page
    '**********Remove MyPageStyle1 if already exists***********
    If oPageStyles.hasByName("MonStyleDePage" & Cstr(X)) Then
       oPageStyles.removeByName("MonStyleDePage" & Cstr(X))
    End If
    '**************And reinsert based on default***************
    NewStyle = ThisComponent.createInstance("com.sun.star.style.PageStyle")
    NewStyle.setParentStyle("Standard")
    oPageStyles.insertByName("MonStyleDePage" & CStr(X), NewStyle)
    ' VOTRE style de page
    oMyPageStyle= oPageStyles.getByName("MonStyleDePage" & Cstr(X))
    ' Votre fond
    with oMyPageStyle
    .BackGraphicUrl=  MonFond
    .BackGraphicLocation= com.sun.star.style.GraphicLocation.AREA
    end with
    End Sub
    Tout n'est certainement parfait (ajustement des sauts de pages par exemple) mais le principe ne doit pas être trop mauvais car j'obtiens ceci en sortie pour les 3 premières pages (avec 24 images en entrée) :
    Nom : LibreOffice Writer FondsPage.png
Affichages : 69
Taille : 123,8 Ko

    et ceci pour la première page avec du texte par dessus (transparence "74 %") :
    Nom : LibreOffice Writer FondsPage1.png
Affichages : 72
Taille : 119,8 Ko

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Inutile
    Inscrit en
    août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Inutile

    Informations forums :
    Inscription : août 2017
    Messages : 3
    Points : 1
    Points
    1

    Par défaut

    Bonjour et désolée du temps de réaction (débordée par autre chose)

    Merci beaucoup !

    J'essaie et je reviens pour dire ce que cela fait.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/02/2014, 17h07
  2. Réponses: 0
    Dernier message: 25/03/2013, 15h39
  3. comment créer une macro d'enregistrements
    Par zalino dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2008, 09h44
  4. Réponses: 8
    Dernier message: 09/01/2007, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo