Salut!
Linuxing a écrit : avec «bis» en plus ; cela pose-t-il un problème ?
ah oui malheureusement ca va compliqué la tache... La macro fait une boucle avec x qui devient 1 puis 2,3 etc jusqu'a etre au nombre d'images contenus dans le dossier et après cela lui, permet de récupérer les fichier A1, A2 etc si y'en a une qui s'appelle A1bis; elle ne sera pas intégrée.
Par rapport à ta capture d'écran, clairement elle indique que le nom est incorrect car tu essaies de renommer la bibliotheque "Standard", je t'ai indiqué de renommer un module.
>>Clic sur "Mes macros" puis sur "Standard" et enfin sur la droite de cette boite de dialogue, clic sur le bouton "nouveau". Cela te demande un nom, mets par exemple "Générer du Pdf".
La en l'occurence je vois que tu as déja un module nommé "module 1" alors te cailles pas le lait, laisses comme çà pour l'instant. Tu le renommeras lorsque tu seras plus habitué à l'interface, on va tacher d'avancer a petits pas tout cela est tellement nouveau pour toi...
Par contre, je vois que tu as bien reussi à copier la macro au bon endroit donc tu sais quoi laisses comme c'est là!
Mais sinon c'est super tu commences à te familiarisé avec le logiciel, tu es déja dans l'antre la bête
Pour le problème d'option "enregistrer" qui est grisé, à mon avis entre temps tu as du fermer le document draw. Reessaies la même manipulation mais avec un document draw ouvert et enregistré. Si çà marche pas, on va trouver une autre solution; je suis désolé on est un peu dans le dur mais c'est le temps que tu te fasses la main.
Bon récapitulons:
Tu as enregistré la macro dans le module "module 1" de la bibliothèque "standard" de "Mes macros" et çà c'est déja extra! Cela veut dire qu'il faut maintenant l'éxécuter. Pour cela tu vas utiliser le même menu que précédemment en ayant le document draw ouvert avec les images correctement nommées. En cliquant sur la bibliothèque "standars" de "mes macros" maintenant apparait le module "module 1" ou est stockée ta macro. Lorsque tu vas cliquer sur le module, sur la partie droite de la boite de dialogue en dessous de "Macros existantes dans : Module 1" tu as la liste des macros.
edit: avant l'éxécution remplace les précédentes macros par une nouvelle version en bas de ce message. Tu en as une qui s'appelle "Main", tu la sélectionnes et tu l'execute avec un bouton sur en haut à de la boite de dialogue et c'est parti! si tu as des messages d'erreur nous les corrigerons jusqu'a obtenir un code parfait.
Sinon j'ai vu avec zebulon, il y a moyen de te partager des documents avec
http://www.cjoint.com/" onclick="window.open(this.href);return false; en cas de souci ca peut etre une solution de repli sinon si tu me mp un mail je peux te l'envoyer si tu excerces avec mon adresse mail la même discretion que j'userai avec la tienne.
Code : Tout sélectionner
REM ***** BASIC *****
REM Ce travail est largement inspiré des travaux de M MARCELLY et M GODARD dans leur ouvrage "Programmation OpenOffice.org et LibreOffice"
Option explicit
Sub Main
Dim doc, lesPages, unePage as object
Dim url_folder as string
Dim nImages, x as integer
doc = thiscomponent
url_folder = getDirectory(doc.URL)
nImages = RecupererNombreFichiers(url_folder)
lesPages = doc.drawpages 'c'est la collection des diapos du document
'La première diapo est créée par défaut, il faut donc la traiter en priorité
unePage = lesPages.getbyindex(0)
unePage.Name = "Page 1"
InsererUneImageDansPage(doc, unePage, url_folder, 0)
'on lance une boucle qui va se répéter autant de fois qu'il y a de diapo
For x = 1 to nImages-1' car la première est indexée à 0 (0 étant le premier index en programmation)
lesPages.InsertNewByIndex(x)
unePage = lesPages.getbyindex(x)
unePage.Name = "Page " & x
InsererUneImageDansPage(doc, unePage, url_folder, x)'L'insertion d'une image est une procédure plutot complexe c'est pourquoi elle est traitée dans un sous programme
'ainsi si nous devons modifier les parametres à appliquer, la clarté du programme s'en trouvera améliorée.
Next
End Sub
Function RecupererNombreFichiers(url_folder)
Dim f2 as string
Dim x as long
x = 0
f2 = Dir(url_folder & "*", 0)
Do while Len(f2) > 0
f2 = Dir
x=x+1
print x
Loop
Msgbox("nbre total de fichiers sans compté le document lançeur = " & x)
RecupererNombreFichiers = x-2 'les fichiers images = nbre total de fichiers - doc lanceur - fichier .lock
End function
Sub InsererUneImageDansPage(doc, unePage, url_folder, x)
Dim lImage, gp as object
Dim props(0) as New com.sun.star.beans.PropertyValue'attention à la casse!!!
gp = createUnoservice("com.sun.star.graphic.GraphicProvider")'attention à la casse!!!
'on définit l'adresse de l'image
props(0).Name = "URL"'attention à la casse!!!
props(0).Value = convertToURL(url_folder & "A" & x+1)'car A1 est l'image de la page index 0 (rappel ;)), Y A T IL UN SUFFIXE A TON IMAGE (ex .png ou .jpeg)??????
lImage = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")
lImage.Graphic = gp.queryGraphic(props())
unePage.add(lImage)
resizeImageByWidth(lImage, 11000) 'les parametres suivant sont ajustable au 1/100 de mm
'positionImage.x = 6500
'positionImage.y = 5300
'lImage.Position = positionImage
'lImage.Name = "image" & x+1
End Sub
Function getDirectory(URLPath As String) As String
REM Cette fonction est la copie exacte du travail de M Marcelly et de M Godard dans leur ouvrage "Programmation OpenOffice.org et LibreOffice"
Dim parts As Variant
parts = split(URLPath, "/")
parts(UBound(parts())) = ""
getDirectory = join(parts, "/")
End Function
Configuration personnelle du PC.
i7 4790k
radeon 7970 4g
16g ram 2133
ssd 120g (pour windaube)
hdd 1T (pour linux)
Os = dual boot windows 10 (l'escroc)
linux mint (l'insoumis)
Environnement MATE.
Une devise? en ce moment une se rappelle souvent à mon bon souvenir "Le problème EST la solution"