[Résolu][Writer] création de contrat de location automatisé

Discussions sur les projets et applications développés en liaison avec une suite bureautique libre.

Modérateur : Vilains modOOs

plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

[Résolu][Writer] création de contrat de location automatisé

Message par plage34 »

Bonsoir,

J'ai actuellement un contrat de location que je souhaite remplir rapidement par une seule boite de dialogue, de style visual basique, avec champs date (avec calendrier) et montant.
J'ai bien essayé de le créer mais je n'ai pas tout compris.
A l'ouverture du document, une boite de dialogue regroupant tous les champs permettrait de faire une seul saisie sans passer par différentes boites de dialogue. Je présume qu'une macro est nécessaire.

Je vous remercie sincèrement de l'aide qui pourra m'être apportée ou des explications.

J'ai bien cherché des modèles ou des tutoriels sur le site, mais je ne sais pas lequel choisir.

ps: dans le document en pièce jointe, j'ai coloré les différents champs afin de connaitre leur différente destination.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par lawrence le 01 déc. 2013 22:32, modifié 2 fois.
Raison : Sujet déplacé en section Projets + Ajout de la balise [Résolu] et coche verte
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: création d'un contrat de location automatisé

Message par alhazred »

Bonsoir,
plage34 a écrit :Je présume qu'une macro est nécessaire.
Excellemment dit :bravo:
Donc il aurait fallu poser le sujet en section Macros ou peut-être mieux Projets (car ça risque d'être long), avec la Balise [Writer] au début du titre.

Et d'abord, définis un peu mieux les éléments de ton dialogue et où ils vont apparaître dans le contrat (on ne va sans doute pas tout te faire)

Commence ta boîte de dialogue :
-- menu Outils > Macros > Gérer les boîtes de dialogue...
-- volet Boîtes de dialogue, sélectionne ton fichier Writer
-- clique sur Nouveau... indique le nom (facultatif) puis OK
-- clique sur Éditer

Tu es maintenant dans la fenêtre d'édition de ton dialogue, ajoute les étiquettes et contrôles que tu souhaites afficher... Si tu n'as jamais fait ça, essaie et fais des erreurs pour voir comment ça marche :lol: Tu as toujours l'Aide F1 à ta disposition, et en cas de fausse manœuvre, clique sur le contrôle et touche Suppr pour l'effacer.

À la fin, n'oublie pas de cliquer sur l'icône disquette pour enregistrer...
Dernière modification par alhazred le 28 nov. 2013 22:43, modifié 1 fois.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: création d'un contrat de location automatisé

Message par plage34 »

Bonsoir et merci pour cette réponse. :super:
alhazred a écrit : Donc il aurait fallu poser le sujet en section Macros ou peut-être mieux Projets (car ça risque d'être long), avec la Balise [Writer] au début du titre.

Et d'abord, définis un peu mieux les éléments de ton dialogue et où ils vont apparaître dans le contrat (on ne va sans doute pas tout te faire)
Je suis désolé de ne pas avoir mis mon sujet dans la bonne section. :oops:
Je pense que le déplacement ne peut se faire que par l'administrateur du site.

Juste au début de mon document en pièce jointe, j'ai précisé par des couleurs les endroits où seront placés chaque champs et leur signification.
Pour ce qui est de la boite de dialogue, tous les champs seraient présents pour être remplis en une seule fois.
Les montant sont en € et les champs date sont déroulant.
En cliquant sur le bouton OK les champs du document seraient mis à jour.

Je suis preneur de tous liens se rapportant à ma demande afin de le faire en ayant une aide adaptée à mon projet.

merci

Ps: je viens de voir la modification de la précédente réponse.
Apache OpenOffice 4.0.1 sous mac OX 10.9
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Je me mets au travail....

:D
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Il me semble que l'un des intérêts de la question est que tu fasses toi-même l'apprentissage nécessaire ; ça pourra aussi servir à d'autres comme tutoriel.

Suis ce que j'ai mis (plus précisément ajouté) dans mon message précédent. Et si tu bloques sur un point, je répondrai à la question (ou quelqu'un d'autre).

(De mon côté, je prépare aussi ma copie :wink: )
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

merci infiniement pour l'aide.
Apache OpenOffice 4.0.1 sous mac OX 10.9
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

:arrow: La boite de dialogue est créée

Maintenant le plus dur: "la macro"

A bientôt
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Parfait. Mais peut-être que le nombre de nuits n'est pas nécessaire (différence des deux dates).

Il reste à savoir comment afficher les données.

Je verrais bien des champs d'utilisateur, plutôt que les objets graphiques que tu as utilisés
-- menu Insertion > Champs > Autres...
-- volet Variables, sélectionne champ d'utilisateur, choisis le format, indique un nom (valeur inutile ici) puis Insérer

Pour avoir le même champ à un autre endroit, tu peux utiliser la même fenêtre, choisir le champ voulu dans la liste (éventuellement choisir un autre format), puis Insérer.
Mais tu peux tout simplement aussi faire un Copier-Coller
Et tu peux aussi donner des valeurs par formule : si, par exemple tu as un champ prix et un champ acompte, il suffit de mettre comme valeur du champ solde prix-acompte

Dernière étape avant les macros, donne aux contrôles du dialogue le même nom que le champ correspondant, y compris majuscules et minuscules.

... Et là, je te quitte jusqu'à demain... dodo
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Voili, voila... maître

:D
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Bonjour,

Les contrôles nuitées (différence entre les deux dates) et restant_dû (différence entre montant et acompte) ne me semblent pas à conserver, sauf peut être comme valeur indicative (étiquette). Je les ai laissés inactifs.

Dernière étape, mais encore longue :?

D'abord ajouter un module :
-- Dans la fenêtre où est déjà affiché le dialogue : clic droit à côte de l'onglet (en bas) > Insérer > Module Basic

On commence par la macro d'affichage du dialogue, le minimum est :

Code : Tout sélectionner

Sub ShowDialog
	'Appeler le modèle
	Dim dlg : dlg = DialogLibraries.Standard.Dialog1
	'Créer le dialogue à afficher
	Dim dialog : dialog = CreateUnoDialog(dlg)
	'L'afficher
	dialog.Execute
End Sub
En fait, il faut l'étoffer un peu : les contrôles à remplir seront utilisés plus tard dans d'autres macros, on les regroupe dans une variable globale (voir dans le fichier joint la macro effective)

Pour déclencher cette macro, on peut utiliser
-- l'événement d'ouverture du fichier (menu Outils > Personnaliser..., volet Événements, Ouvrir le document puis Macro...)
-- ou un bouton (solution que j'ai adoptée : clic droit en mode ébauche > Contrôles..., volet Événements, Exécuter l'action, Macro...)

On a également besoin d'une macro qui transfèrera le contenu d'un contrôle vers le champ de même nom, macro InsertControlValue(control) avec plusieurs cas selon la nature du contrôle.

À partir de ces "briques", on peut construire les macros qui seront associées à chaque contrôle du dialogue.

......................................................

Il me semble que les photos (merci pour le temps de chargement :lol: ) ne sont pas à leur place à l'intérieur du contrat ; à la rigueur, les mettre dans la page Madame, Monsieur etc. qui devrait être la première. Elles ne devraient pas être incluses dans le document mais insérées avec lien. Je les ai supprimées pour alléger le fichier.

Il y aura aussi à peaufiner le texte, qui contient en particulier des tas de paragraphes vides : on utilise les formatages de paragraphes et, encore mieux, les styles pour créer les espacements voulus.

Voilà, ça devrait marcher, à toi de voir si j'ai oublié des choses.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Merci beaucoup pour la macro.

Je l'ai modifié car je suis très feignant pour chercher les modifications à effectuer dans le document.
Tous les éléments récurants sont ainsi modifiés en une seule fois.

Par contre je voudrais savoir comment mettre à jour le nombre de nuitée par la différence entre les deux dates et faire la différence entre la somme totale et l'acompte.

Vraiment merci pour l'aide et surtout pour le travail.

A bientôt
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Dans le dialogue ? Pourquoi faire ? À mon avis ces contrôles sont à supprimer, à moins que tu ne veuilles indiquer la date d'arrivée et le nombre de nuitées, ce qui donnerait la date de départ.

Dans le texte ? À moins d'erreur de ma part, cela est déjà fait : on écrit comme valeur du champ a-b. Fais un double clic sur ceux que j'ai mis et vois ce qu'ils ont dans le ventre.
plage34 a écrit :Je l'ai modifié
Je pourrais voir ce que tu as mis ?
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

alhazred a écrit :Dans le texte ? À moins d'erreur de ma part, cela est déjà fait : on écrit comme valeur du champ a-b. Fais un double clic sur ceux que j'ai mis et vois ce qu'ils ont dans le ventre.
j'ai bien vérifié les valeurs de champs dates et nuitée et je ne comprends rien. Lorsque je remplis la boite de dialogue ( montant, acompte, date début et date de fin) les montant d'acompte n'est pas rempli dans le document et le nombre de nuitée ne change pas.

Donc mes modifs de la macro concernait un ajout de :

Code : Tout sélectionner

controls = Array(dialog.GetControl("date_arrivée"),_
					dialog.GetControl("date_départ"),_
					dialog.GetControl("montant"),_
					dialog.GetControl("nuité"),_
					dialog.GetControl("restant_dû"),_
					dialog.GetControl("acompte"))
mais le nombre de nuitée ne se met pas à jour.

Dans la valeur de nuitée, il y a 67 et il ne change pas dans le document.

A bientôt

Nota: je viens de comprendre. Dans la valeur nuitée : "date_départ - date_arrivée" et j'ai fais pareil pour restant dû. J'ai remis la macro originelle.
Apache OpenOffice 4.0.1 sous mac OX 10.9
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

création d'un contrat de location automatisé

Message par plage34 »

Dès que j'ouvre le document et que je clique sur le bouton "modifier" j'ai un message d'erreur au premier démarrage.
erreur d'exécution du BASIC.
une exception s'est produite:
Type: com.sun.lang.wrappedTargetException
Message:
Type: com.sun.star.script.LibreryNotLoaderException
Message: .
Merci
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Bonsoir,

OOOps, un oubli :oops:

Au début de la macro ShowDialog (juste avant Dim dlg....) ajoute

Code : Tout sélectionner

	DialogLibraries.LoadLibrary("Standard")
J'avais pas fait attention : comme je venais d'éditer le dialogue, la bibliothèque était déjà chargée et tout allait bien. Sorry.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Bonsoir,

Le message n'apparait plus.

Par contre, lors du premier lancement, les valeurs (exemple: nuitées = montant-acompte) n'existent plus.
Si je les remets et tant qu'open office n'est pas fermé elles fonctionnent, mais dès que je ferme l'application, les valeurs disparaissent et il ne reste que le dernier résultat.

Je me suis amusé à mettre une macro de conversion en PDF.

Code : Tout sélectionner

sub pdf
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 ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue 
args1(0).Name = "URL"
args1(0).Value = "file:////Users/macbookpro/Documents/contrat location.pdf"
args1(1).Name = "FilterName"
args1(1).Value = "writer_pdf_Export"
args1(2).Name = "FilterData"
args1(2).Value = Array(Array("UseLosslessCompression",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Quality",0,90,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ReduceImageResolution",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("MaxImageResolution",0,300,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTaggedPDF",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("SelectPdfVersion",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportNotes",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarks",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenBookmarkLevels",0,-1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("UseTransitionEffects",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsSkipEmptyPages",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("IsAddStream",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EmbedStandardFonts",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FormsType",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportFormFields",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("AllowDuplicateFieldNames",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerToolbar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerMenubar",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("HideViewerWindowControls",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ResizeWindowToInitialPage",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("CenterWindow",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("OpenInFullScreenMode",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("DisplayPDFDocumentTitle",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialView",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Magnification",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Zoom",0,100,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PageLayout",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("FirstPageOnLeft",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("InitialPage",0,1,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Printing",0,2,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("Changes",0,4,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableCopyingOfContent",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EnableTextAccessForAccessibilityTools",0,true,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportLinksRelativeFsys",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PDFViewSelection",0,0,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ConvertOOoTargetToPDFTarget",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("ExportBookmarksToPDFDestination",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("_OkButtonString",0,"",com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("EncryptFile",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPasswords",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("RestrictPermissions",0,false,com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("PreparedPermissionPassword",0,Array(),com.sun.star.beans.PropertyState.DIRECT_VALUE),Array("",0,,com.sun.star.beans.PropertyState.DIRECT_VALUE))

dispatcher.executeDispatch(document, ".uno:ExportToPDF", "", 0, args1())


end sub
je pense qu'il n'y pas d'erreur car ça fonctionne.

mille merci
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

plage34 a écrit :Si je les remets et tant qu'open office n'est pas fermé elles fonctionnent, mais dès que je ferme l'application, les valeurs disparaissent et il ne reste que le dernier résultat.
Je ne comprends pas trop.

Le but est de faire un contrat dans un cas précis ; sauf précision contraire, il est atteint.

Donc (le pdf n'est apparu que dans ton dernier message :twisted: ) tu l'imprimes ou convertis en pdf, et si tu veux réutiliser la copie obtenue, tu l'enregistres sous un autre nom personnalisé. Sinon, bien entendu, tu récupères ce qu'il y avait avant ton intervention.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Le contrat est envoyé par email lors de chaque demande de location.
Etant en Pdf, cela évite au locataire de pouvoir le modifier. :oops:
J'utilise la macro tel quel sans ma modification.

Pour ce qui est des valeurs de variable, dans la contrat le nombre de nuitée et restant dû ne se mettent pas à jour.

J'ai crée la macro PDF par Macro > Option > Macro > Enregistrer une macro

Je te remercie pour le temps passé à m'aider. :bravo:
Apache OpenOffice 4.0.1 sous mac OX 10.9
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Writer] création d'un contrat de location automatisé

Message par alhazred »

Bonjour,

Oui, j'ai inséré des champs d'utilisateur pour les nuitées et le solde dû. Erreur, la formule n'est que provisoire et à l'ouverture, on récupère seulement la valeur.

Il faut utiliser des champs Insérer une formule avec respectivement date_départ-date_arrivée et montant-acompte. Toutes mes excuses
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
plage34
NOOuvel adepte
NOOuvel adepte
Messages : 12
Inscription : 27 nov. 2013 22:16

Re: [Writer] création d'un contrat de location automatisé

Message par plage34 »

Mille merci pour ton aide.

Sans toi j'aurais du chercher et certainement pas compris. En peu de temps j'ai appris pas mal de chose.

A bientôt :bravo: :super:
Apache OpenOffice 4.0.1 sous mac OX 10.9