[Résolu][Calc] Créer un fichier après impression

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

[Résolu][Calc] Créer un fichier après impression

Message par Roby68 »

Bonjour le Forum,

Ne trouvant pas la solution adéquat à mon problème, je me tourne vers vous.
Le fichier joint sert à sortir 5 formulaires automatiquement.
- au lancement de celui-ci la feuille "Couverture" est vierge, chaque opérateur la remplit et toutes les informations sont réparti ensuite sur les autres feuilles automatiquement.
- après la saisie l'opérateur lance l'impression en cliquant sur le bouton "Edition du dossier (5 feuilles)" et tous les formulaires sont édités sur l'imprimante.
- après la fermeture du fichier les données sont perdues.

J'aimerai si c'est possible:
- Faire une copie de la feuille "Attribution" (tous les champs saisies doivent être figés - pas de "lien") dans un fichier avec comme nom de fichier le nom et prénom du dossier saisie (Cellules D13 et D15 dans la feuille Couverture ou bien plus facile dans la cellule E43 de la feuille Attribution) après avoir cliqué sur le bouton "Edition..." .
- Que le Fichier soit dans un répertoire spécifique (cellule D2 de la feuille Config pour l'exemple).
- et sans que l'opérateur ne fasse des manipulation supplémentaires, que cela soit transparent et non visible pour l'opérateur.

Finalité, avoir en quelque sorte une visualisation de tous les dossiers saisis.

Merci d'avance à tous ceux qui prendront la peine de m'aider.

Roby
Dernière modification par Bidouille le 19 mai 2014 07:33, modifié 3 fois.
Raison : [Résolu] remplace [Resolu]
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
SPPP
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 14 août 2012 15:53

Re: [Calc] Créer un fichier après impression

Message par SPPP »

Bonjour,

J'ai modifié le code qui sert à effacer le formulaire.
J'ai ajouter un bout de code pour enregistrer le fichier sous le format "ods" et sous le format "PDF".
J'ai modifié le chemin dans la feuille config pour qu'il soit accepté.

Code : Tout sélectionner

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

Sub Lance
call efface
End sub

Sub Dossier
call Edition
call Efface

	'Indique que le document n'est pas modifié, 
	'permet d'éviter la boite de dialogue qui demande si l'on veut enregistrer le document.
	ThisComponent.Modified = 0

End Sub

sub Edition
	rem ----------------------------------------------------------------------
	rem define variables
	dim document   as object
	dim dispatcher as object
	Dim oChemin as String
	Dim oNom as String
	Dim PropPDF(0) as new com.sun.star.beans.PropertyValue
	Dim oDoc as Object
	Dim dummy()
	Dim URL as String
	
	oDoc = ThisComponent
	
	rem ----------------------------------------------------------------------
	rem get access to the document
	document   = oDoc.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	rem ----------------------------------------------------------------------
	dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())

	'Recupere l'adresse du fichier
	URL = ThisComponent.URL

	'configuration de l'exportation du fichier PDF
    PropPDF(0).Name = "FilterName"
    PropPDF(0).Value = "calc_pdf_Export"

	'Lecture du chemin
	oChemin = oDoc.Sheets.GetByName("Config").GetCellRangeByName("D2").String
	
	'Lecture du nom et du prénom
	oNom = oDoc.Sheets.GetByName("Couverture").GetCellRangeByName("D13").String & " - " & oDoc.Sheets.GetByName("Couverture").GetCellRangeByName("D15").String

	'exporte au format PDF
	oDoc.StoreToURL("file:///" & oChemin & oNom & ".pdf" ,PropPDF())
	
	'Enregistre le fichier dans le dossier
	oDoc.StoreAsURL("file:///" & oChemin & oNom & ".ods" ,dummy())

	'Restaure l'adresse d'origine du fichier, afin d'eviter d'ecraser la sauvegarde.	
	oDoc.StoreAsURL(URL ,dummy())


End Sub

Sub Efface
	rem define variables
	Dim Document as object
	
	Document = ThisComponent.Sheets.GetByName("Couverture")
	Document.GetCellRangeByName("E3").clearContents(5)
	Document.GetCellRangeByName("G3").String = "PSE"
	Document.GetCellRangeByName("I3").String = "H"
	Document.GetCellRangeByName("J3").String = "Colmar"
	Document.GetCellRangeByName("E5").String = "RB"
	Document.GetCellRangeByName("F5").clearContents(5)
	Document.GetCellRangeByName("E8").String = "NON"
	Document.GetCellRangeByName("G8").clearContents(5)
	Document.GetCellRangeByName("E10").clearContents(5)
	Document.GetCellRangeByName("D13").clearContents(5)
	Document.GetCellRangeByName("D15").clearContents(5)
	Document.GetCellRangeByName("D17").clearContents(5)
	Document.GetCellRangeByName("D19").clearContents(5)
	Document.GetCellRangeByName("J13").clearContents(5)
	Document.GetCellRangeByName("J15").clearContents(5)
	Document.GetCellRangeByName("J19").clearContents(5)
	Document.GetCellRangeByName("D21:J21").clearContents(5)
	Document.GetCellRangeByName("D24").String = "NON"
	Document.GetCellRangeByName("F24").clearContents(5)
	Document.GetCellRangeByName("J24").String = "NON"
	Document.GetCellRangeByName("F26").clearContents(5)
	Document.GetCellRangeByName("H26").clearContents(5)
	Document.GetCellRangeByName("G28").clearContents(5)
	Document.GetCellRangeByName("J28").clearContents(5)
	Document.GetCellRangeByName("D29").clearContents(5)
	Document.GetCellRangeByName("J29").clearContents(5)
	Document.GetCellRangeByName("F31").clearContents(5)
	Document.GetCellRangeByName("F33").clearContents(5)
	Document.GetCellRangeByName("J35").String = "NON"
	Document.GetCellRangeByName("C37").clearContents(5)
	Document.GetCellRangeByName("C40").clearContents(5)
	Document.GetCellRangeByName("M3").clearContents(5)
	Document.GetCellRangeByName("M5").clearContents(5)
	Document.GetCellRangeByName("M8").clearContents(5)
	Document.GetCellRangeByName("M13").String = "GSM"
	Document.GetCellRangeByName("M15").clearContents(5)

End Sub
COOrdialement,
SPPP.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Lubuntu 14.04 - OOo 4.1.1
XP SP3 - OOo 4.1.0
XP SP3 - LOo 4.4.5.2
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Resolu][Calc] Créer un fichier après impression

Message par Roby68 »

Bonjour le Forum, SPPP

Merci pour ta solution, je testerai au bureau et espère que cela fonctionnera sur un répertoire réseau.
Bon dimanche à tous

Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
SPPP
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 14 août 2012 15:53

Re: [Resolu][Calc] Créer un fichier après impression

Message par SPPP »

Bonjour,

En relisant, je me suis aperçu que j'avais fait des erreurs.

j'ai modifié le code :

Code : Tout sélectionner

sub Edition
	rem ----------------------------------------------------------------------
	rem define variables
	dim document   as object
	dim dispatcher as object
	Dim oChemin as String
	Dim oNom as String
	Dim PropPDF(1) as new com.sun.star.beans.PropertyValue
	Dim FiltrePDF(0) as new com.sun.star.beans.PropertyValue
	Dim args(0) as new com.sun.star.beans.PropertyValue
	Dim oDoc as Object
	Dim oFeuille as Object
	Dim oDoc2 as Object
	Dim dummy()
	Dim URL as String
	Dim NoFeuilleTravail as Integer
	
	oDoc = ThisComponent
	
	rem ----------------------------------------------------------------------
	rem get access to the document
	document   = oDoc.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	rem ----------------------------------------------------------------------
	dispatcher.executeDispatch(document, ".uno:Print", "", 0, Array())

	'Recupere l'adresse du fichier
	URL = ThisComponent.URL

	'configuration de l'exportation du fichier PDF
    FiltrePDF(0).Name = "PageRange"
    FiltrePDF(0).Value = "2"
    PropPDF(0).Name = "FilterName"
    PropPDF(0).Value = "calc_pdf_Export"
    PropPDF(1).Name = "FilterData"
    PropPDF(1).Value = FiltrePDF

	'Lecture du chemin
	oChemin = oDoc.Sheets.GetByName("Config").GetCellRangeByName("D2").String
	
	'Lecture du nom et du prénom
	oNom = oDoc.Sheets.GetByName("Couverture").GetCellRangeByName("D13").String & " - " & oDoc.Sheets.GetByName("Couverture").GetCellRangeByName("D15").String

	'exporte au format PDF
	oDoc.StoreToURL("file:///" & oChemin & oNom & ".pdf" ,PropPDF())

End Sub
- Seule la feuille attribution est exportée au format PDF.
- Dans le précédent code, une copie du fichier était enregistrée.
Le problème c'est que les macros restent activées et un appui sur le bouton efface le formulaire.
La copie sous la forme d'un fichier ".ods" est tout simplement supprimée.

Bon dimanche.

SPPP.
Lubuntu 14.04 - OOo 4.1.1
XP SP3 - OOo 4.1.0
XP SP3 - LOo 4.4.5.2
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Résolu][Calc] Créer un fichier après impression

Message par Roby68 »

Re bonjour le Forum, SPPP

Un peu trop vite dans l'option résolu.
j'ai effectué des essais au bureau et il ne prend pas apparement le répertoire réseau.
Pourtant j'ai choisi le plus simple possible ("K:\Fiches").

L'erreur affichée concerne la ligne suivante:
'exporte au format PDF
oDoc.StoreToURL("file:///" & oChemin & oNom & ".pdf" ,PropPDF())

Erreur: Erreur d'éxécution du basic:
Une exception s'est produite:
Type: com.sun.star.task.errorcodeIOException
Message: .

Merci
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
SPPP
Membre OOrganisé
Membre OOrganisé
Messages : 94
Inscription : 14 août 2012 15:53

Re: [Résolu][Calc] Créer un fichier après impression

Message par SPPP »

Bonjour,

il faut mettre des "/" au la place des "\" dans les liens.

Si c'est un emplacement réseau, il faut mettre un "//" en tout premier.

EDIT : après essais
Si le lecteur se trouve sur un réseau, il faut utiliser
//nom du PC/lecteur/dossier/ (par exemple //Serveur/K/fiches/)

Mais comme dans ton cas le lecteur est monté et qu'il est identifie par la lettre K, il faut que tu utilises "K:/fiches/"

COOrdialement,
SPPP.
Dernière modification par SPPP le 19 mai 2014 09:05, modifié 3 fois.
Lubuntu 14.04 - OOo 4.1.1
XP SP3 - OOo 4.1.0
XP SP3 - LOo 4.4.5.2
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26128
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] Créer un fichier après impression

Message par Dude »

Prends l'habitude de te servir du BBcode pour rendre lisible ton message :

Code : Tout sélectionner

oDoc.StoreToURL("file:///" & oChemin & oNom & ".pdf" ,PropPDF())
Pour compléter les propos de SPPP :
Regarde si le chemin est correct en mettant cela dans une variable et en l'affichant par un Print.
Utilise la fonction ConvertToUrl pour t'assurer que la notation passée est valide.
Enfin, fais le test sur ton propre disque afin d'écarter un problème de réseau.
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
Messages : 66
Inscription : 09 oct. 2013 21:12

Re: [Résolu][Calc] Créer un fichier après impression

Message par Roby68 »

Bonjour le Forum, SPPP, Dude,

Ok merci pour les astuces. Cela fonctionne.

Bonne journée à tous.

Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro