[Résolu][Writer] Nom de fichier automatique.

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
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

[Résolu][Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum.

Je voudrais si cela est possible que le nom du fichier soit automatiquement issu de valeurs présentes dans ce fichier.
Tout sera beaucoup plus clair avec le fichier joint.

D'avance merci.
Pièces jointes
Lettre WDAndCo.odt
Voici un Fichier exemple.
(49.2 Kio) Téléchargé 132 fois
Dernière modification par WD_And_Co le 11 juin 2018 19:01, modifié 2 fois.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9340
Inscription : 18 juil. 2008 17:29
Localisation : F-Oise + F-Savoie

Re: [Writer] Nom de fichier automatique.

Message par tintin »

Bonjour,

Ce sujet peut-il être un point de départ à votre réflexion ?
AOO 4.1.15 et LibO stable 7.6.5 / macOS Intel 13.6.5 Ventura
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

Merci Tintin, pour cette piste, mais j'avoue ne rien y comprendre, ni même comment déclencher cette macro.
Je l'ai intégré a mon fichier, mais rien ne change.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 09:26

Re: [Writer] Nom de fichier automatique.

Message par Hubert Lambert »

Bonjour,

Le contexte d'utilisation n'est pas très clair mais, à tout hasard, s'il s'agit de publipostage, il est possible d'utiliser un champ de base de données (même non inclus dans le document) comme nom de sauvegarde du ou des documents fusionnés.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

Non ce n'est pas du publipostage, mais effectivement un champ nommé Ref issu d'une base me sert à remplir une partie Ref de la lettre, voir l'exemple joint. Aussi j'aimerai que le changement de valeur du champs Ref change le nom du fichier .
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Bonjour
Sans la base de données, difficile de te répondre efficacement.
Après pas sûr d'avoir tout compris :lol:
Tu peux tester à partir de ton fichier exemple

Code : Tout sélectionner

Sub Main
Dim oDoc as Object,lesChamps As Object, unChamp As Object
Dim refer as String, laDate as String, NomFichier as String, Adresse as Variant
	oDoc = thisComponent
	Adresse = Split(oDoc.URL,"/")
	Adresse(UBound(Adresse)) = ""
	Adresse = Join(Adresse,"/")
	refer = oDoc.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.DataBase.Adresses.Contacts.Refer").DependentTextFields(0).Content
	lesChamps = oDoc.TextFields.createEnumeration
	Do While lesChamps.hasMoreElements
		unChamp = lesChamps.NextElement
		If unChamp.supportsService("com.sun.star.text.textfield.DateTime") Then
			If unChamp.NumberFormat = 10107 Then
				laDate = unchamp.Anchor.String
			End If
		End If
	Loop
	NomFichier = refer & laDate
	adresseDoc = convertToURL(Adresse & NomFichier & ".odt")
	oDoc.storeToURL(adresseDoc, Array() )
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

J'ai enfin je pense intégré la Macro à mon fichier exemple. Que je joint à nouveau.
A priori cela fonctionne, car j'ai bien un fichier qui c'est créé avec le bon nom.
1) Le nom du fichier dans la fenêtre de saisie du texte ne change pas ?
2) Quand cette macro se déclenche ?

J'ai passé par exécuté je ne sais pas si c'est bien comme cela qu'il faut faire.

En tout cas bravo.
Pièces jointes
Lettre WDAndCo.odt
Ver 2
(81.72 Kio) Téléchargé 138 fois
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Re
WD_And_Co a écrit :J'ai passé par exécuté je ne sais pas si c'est bien comme cela qu'il faut faire.
Oui avec les seuls éléments dont on dispose pour te répondre.
[color=#FF8000]Hubert Lambert[/color] a écrit :Le contexte d'utilisation n'est pas très clair
+1
Piaf a écrit :Sans la base de données
S'il ne s'agit que d"'un enregistrement spécifique pourquoi ne pas créer directement un formulaire qui affiche les informations voulues ?
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

Voici comment j'utilise ce fichier.

Pour mettre le destinataire avec adresse, vos Ref, Nos Ref etc...
Je clique sur la pile de pièces pour ouvrir ma base, puis je choisit la ligne qui me convient, puis copie les données en cliquant sur la lettre munie d'un + vert est un rectangle bleu.
Puis je ferme avec base avec de nouveau un clique sur la pile de pièces.

Une fois la lettre terminée je lance votre macro avec Exécuté.
Un bouton serait le top, mais il ne doit être présent que sur la barre d'outil Writer.

Si l'utilisation formulaire est plus pratique. Pourquoi pas.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Bonjour
WD_And_Co a écrit :Si l'utilisation formulaire est plus pratique. Pourquoi pas.
Par là j'entendais de renseigner la lettre directement à partir de la base de données.
Transformation de ta lettre en modèle avec des champs utilisateur à la place des champs de base de données.
ModelLettre.ott
(18.98 Kio) Téléchargé 107 fois
Créer un formulaire affichant les données voulues et permettant de renseigner et d'enregistrer le fichier Writer
Formulaire.png

Code : Tout sélectionner

Sub Lettre(oEv as Object)
	oForm = oEv.Source.Model.Parent
	Adresse = Split(thisDatabaseDocument.URL,"/")
	Adresse(UBound(Adresse)) = ""
	Adresse = Join(Adresse,"/")	
	adresseDoc = convertToURL(Adresse & "ModelLettre.ott")
	oDoc = StarDesktop.loadComponentFromURL(adresseDoc, "_blank", 0, Array() )
	With oDoc
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.Identité").Content = oForm.getByName("txtContact").Text
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.Adresse").Content = oForm.getByName("txtAdresse").Text
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.Adresse2").Content = oForm.getByName("txtAdresse2").Text
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.CPV").Content = oForm.getByName("txtCPV").Text
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.Type").Content = oForm.getByName("txtType").Text
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.IdContact").Content = oForm.getByName("fmtrefContact").CurrentValue
		.TextFieldMasters.getByName("com.sun.star.text.fieldmaster.User.Refer").Content = oForm.getByName("txtRefer").Text
	End With
	lesChamps = oDoc.TextFields.createEnumeration
	Do While lesChamps.hasMoreElements
		unChamp = lesChamps.NextElement
		If unChamp.supportsService("com.sun.star.text.textfield.DateTime") Then
			If unChamp.NumberFormat = 10107 Then
				laDate = unchamp.Anchor.String
			End If
		End If
	Loop
	NomFichier = oForm.getByName("txtRefer").Text & laDate	
	Nouvadresse = convertToURL(Adresse & NomFichier & ".odt")
	If FileExists(Nouvadresse) Then Kill(Nouvadresse)
	oDoc.storeAsURL(Nouvadresse, Array())
End Sub
Le fichier base de données et le fichier modèle doivent être dans le même répertoire.
Le nouveau fichier est enregistré dans le même répertoire.
A+
Pièces jointes
Adresses.odb
(23.73 Kio) Téléchargé 92 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum.

Merci Piaf. J'ai essayé votre proposition elle me convient parfaitement, mais après le lancement de "ModelLettre.ott" j'ai le message d'erreur suivant "Impossible de charger le contenu des données. Il n'existe pas de requête nommée "Contacts" " à l'ouverture de "Sans nom".
Mais l'utilisation est parfaite. Encore merci.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Bonjour
WD_And_Co a écrit :mais après le lancement de "ModelLettre.ott" j'ai le message d'erreur suivant "Impossible de charger le contenu des données
Je ne reproduis pas donc difficile de t'aider.
L'erreur survient elle avec les fichiers envoyés ou avec tes fichiers originaux ?
Le fichier modèle (.ott) comme le fichier créé ne devrait avoir aucune relation avec la base de données.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum,
Bonjour Piaf,

J'ai mis les deux fichiers dans le même dossier ou répertoire, comme demandé. J'ai toujours le même message d'erreur lors du lancement de "ModelLettre.ott" comme expliqué ici dessous.

1) - Les deux bases ou le même nom, mais ne sont pas dans le même dossier !
2) - Lorsque je charge la base clique sur la pile de pièces pour une modification de destinataire par exemple dans la lettre, c'est ma base qui s'ouvre alors qu'elle n'est pas dans le même dossier.

Je pense que ceci explique cela.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Re
Pourrais tu joindre ton fichier modèle, le tien pas celui que je t'ai transmis.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum.

Voici le fichier demandé c'est celui que j'ai téléchargé ici.
Pièces jointes
ModelLettre.ott
(18.98 Kio) Téléchargé 96 fois
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Bonjour
Peux tu tester les fichiers joint ?
A+
Pièces jointes
WDAC.zip
(33.84 Kio) Téléchargé 99 fois
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

J'ai de nouveau téléchargé les derniers fichiers, mais rien n'y fait, même message d'erreur, et toujours la connexion à ma base d'origine.
J'ai donc forcé le changement de base, je me suis donc connecté a votre base, mais la impossible de mettre les données choisi dans la lettre.

A mon avis, le message d'erreur persistant du début, n'est pas bloquant. Donc je vous remercie beaucoup de votre patience.
Encore merci.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Re
WD_And_Co a écrit :2) - Lorsque je charge la base clique sur la pile de pièces pour une modification de destinataire par exemple dans la lettre, c'est ma base qui s'ouvre alors qu'elle n'est pas dans le même dossier.
J'avoue ne pas tout comprendre.
La base n'a pas besoin d'être enregistrée.
La procédure à suivre est d'ouvrir la base de données, d'ouvrir le formulaire Contacts, d'afficher l'enregistrement voulu, puis d'appuyer sur le bouton Lettre.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum

Il est vrai, qu'en procédant de cette façon j'ai bien les données (de votre base) choisi dans la lettre qui s'ouvre. Mais j'ai toujours le message d'erreur. Et si je clique sur la pile de pièces c'est ma base qui est présenté dans Writer.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: [Writer] Nom de fichier automatique.

Message par Bidouille »

Dans votre signature, il y a écrit :LibreOffiche Version: 6.0. sous macOS 10.13.
Veuillez prendre connaissance de ce fil : https://forum.openoffice.org/fr/forum/v ... =2&t=56905
Avatar de l’utilisateur
WD_And_Co
Membre OOrganisé
Membre OOrganisé
Messages : 81
Inscription : 04 mai 2017 16:27
Localisation : Hauts de France

Re: [Writer] Nom de fichier automatique.

Message par WD_And_Co »

Bonjour le Forum
Bidouille a écrit :
Dans votre signature, il y a écrit :LibreOffiche Version: 6.0. sous macOS 10.13.
Veuillez prendre connaissance de ce fil : https://forum.openoffice.org/fr/forum/v ... =2&t=56905
Oui j'avais lu, et pardon j'ai oublié de mettre dans ma signature le 4 final, qui change tout comme préciser dans ce même fil. Merci encore.
LibreOffice : 7.3.6 version stable.
macOS : 12.6
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12196
Inscription : 08 nov. 2005 17:23
Localisation : Caen, France
Contact :

Re: [Writer] Nom de fichier automatique.

Message par Bidouille »

WD_And_Co a écrit :Oui j'avais lu
Non, rouvrez vos yeux et regardez le 3e message.
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 19:07
Localisation : Guyane

Re: [Writer] Nom de fichier automatique.

Message par Piaf »

Bonjour
Je pense avoir enfin compris ce que tu veux faire, toujours été lent :lol: .
Une fois le document Writer affiché, tu affiches les sources de données, il est normal que ma base n'apparaisse pas puisqu'elle n'est pas enregistrée.
Il ne servirait à rien de l'afficher puisque le modèle comme le document ne contient aucun champ de base de données
WD_And_Co a écrit :Non ce n'est pas du publipostage,
.La création du fichier à partir du modèle se fait uniquement à partir du formulaire Contacts, tu affiches l'enregistrement voulu et tu cliques sur le bouton Lettre.
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Verrouillé