Cherche macro permettant de produire des pdf a partir de calc en boucle en fonction d'un indice

Bonjour,
J’ai une feuille calc (FICHE) qui varie en fonction d’un indice (cellule I1). Je voudrais avoir une publication de pdf de la zone d’impression de cette feuille en fonction de la variation de cet indice avec un indice de depart en I2 et un indice d’arrivée en I3. Le nom des fichiers (qui varie aussi en fonction de l’indice) est en I6.
MerciTEST.ods

Bonjour @cricri974

Je ne comprends pas ce que tu veux faire varier : les lignes à exporter, les objectifs, autre ?

Quoiqu’il en soit ci-dessous une macro qui exporte $FICHE.$A$1:$E$23 en pdf dans le répertoire C:\Test\ (à adapter donc).

sub ExportPDF

dim document as object, dispatcher as object
dim args(1) as new com.sun.star.beans.PropertyValue
dim filterProps(0) as new com.sun.star.beans.PropertyValue
dim sNomDoc as string, sAdresseDoc as string

sNomDoc = thiscomponent.sheets.getByName("FICHE").getCellRangeByName("I6").string
sAdresseDoc = convertToURL("C:\Test\" & sNomDoc & ".pdf")

document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args(0).Name = "ToPoint"
args(0).Value = "$FICHE.$A$1:$E$23"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args())
dispatcher.executeDispatch(document, ".uno:DefinePrintArea", "", 0, args())

filterProps(0).Name = "Selection"
filterProps(0).Value = thisComponent.currentSelection

args(0).Name = "FilterName"
args(0).Value = "calc_pdf_Export"
args(1).Name = "FilterData"
args(1).Value = filterProps()

thiscomponent.storeToURL(sAdresseDoc, args())

msgbox "Terminé", MB_OK + MB_ICONINFORMATION, "Export PDF"

end sub

Cordialement

Merci pour cette réponse. Je vais essayer d’adapter mon fichier avec cette macro.
Mon fichier d’origine est un fichier excel permettant de générer des carnets de réussite en maternelle semestriel (Je suis directeur des écoles primaires). Le fichier que j’ai crée (en piquant et en adaptant les macros) fonctionne sur excel mais il est trés lourd. Je voulais le faire passer sur libreoffice pour qu’il puisse fonctionner mieux et éventuellement le partager avec d’autres. J’ai d’ailleurs un fichier excel qui permet aux enseignants d’avoir des tableaux de bord avec une analyse par éléves ou objectifs qui a été bien converti de excel á libreoffice 7.04 mais il n’y a pas de macros. Existe t-il d’ailleurs un site de partage de document libreoffice pour l’enseignement ?
Merci encore.

Bonjour cricri974,

j’ai l’impression que vous voulez nous faire réinventer la roue.

Vous voulez imprimer en pdf des fiches individuelles dont les variables sont contenues dans une feuille de calcul.

Ça ressemble à du publipostage, en fait c’en est.

Pour mener à bien ce publipostage, il vous faut un fichier texte (lettre type) qui reprendra les données variables de votre feuille de calcul et du coup celle-ci sera votre base de données.

Ces deux éléments “mariés”, en glissant les entêtes de colonne (champs de publipostage) de votre base de données à l’endroit voulu du fichier texte.

Puis on utilise la fonction de publipostage qui vous permet de multiples choix tant en format d’enregistrement qu’en choix de champs pour affecter un nom spécifique à vous fiches, vous pourrez également choisir quelles fiches imprimer etc…

A l’exception du champs que j’ai réservé à l’enregistrement individuel, tous sont présents dans la fiche exportée en pdf

Voyez dans les fichiers ci-joint
(les deux fiches individuelles ne sont pas au format pdf, il est impossible de les téléverser ici)

cricri974OptionsPp.png

cricri974.ods

FicheIndividuelle.odt

NOM19 PRENOM19 Test.odt

NOM20 PRENOM20 Test.odt

Aide pour le publipostage

:slight_smile:

Bonjour,

Merci pour tout.

J’ai pensé par publipostage mais le fichier excel que je veux transformer est un carnet de réussite de maternelle oú il y a aussi des cellules en couleur (formatage conditionnel). Mais je pense que je vais revoir mon fonctionnement car le fichier est très lourd. Le publipostage par traitement de texte est surement une solution. Merci encore.