Page 1 sur 1

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

Publié : 23 mai 2018 17:06
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.

Re: [Writer] Nom de fichier automatique.

Publié : 23 mai 2018 17:35
par tintin
Bonjour,

Ce sujet peut-il être un point de départ à votre réflexion ?

Re: [Writer] Nom de fichier automatique.

Publié : 23 mai 2018 21:03
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.

Re: [Writer] Nom de fichier automatique.

Publié : 24 mai 2018 12:24
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.

Re: [Writer] Nom de fichier automatique.

Publié : 24 mai 2018 14:25
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 .

Re: [Writer] Nom de fichier automatique.

Publié : 24 mai 2018 16:10
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+

Re: [Writer] Nom de fichier automatique.

Publié : 24 mai 2018 16:53
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.

Re: [Writer] Nom de fichier automatique.

Publié : 24 mai 2018 23:23
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+

Re: [Writer] Nom de fichier automatique.

Publié : 25 mai 2018 13:53
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.

Re: [Writer] Nom de fichier automatique.

Publié : 25 mai 2018 18:14
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
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+

Re: [Writer] Nom de fichier automatique.

Publié : 26 mai 2018 09:22
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.

Re: [Writer] Nom de fichier automatique.

Publié : 26 mai 2018 16:11
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+

Re: [Writer] Nom de fichier automatique.

Publié : 26 mai 2018 16:28
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.

Re: [Writer] Nom de fichier automatique.

Publié : 26 mai 2018 17:37
par Piaf
Re
Pourrais tu joindre ton fichier modèle, le tien pas celui que je t'ai transmis.
A+

Re: [Writer] Nom de fichier automatique.

Publié : 26 mai 2018 19:10
par WD_And_Co
Bonjour le Forum.

Voici le fichier demandé c'est celui que j'ai téléchargé ici.

Re: [Writer] Nom de fichier automatique.

Publié : 27 mai 2018 10:14
par Piaf
Bonjour
Peux tu tester les fichiers joint ?
A+

Re: [Writer] Nom de fichier automatique.

Publié : 27 mai 2018 15:20
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.

Re: [Writer] Nom de fichier automatique.

Publié : 27 mai 2018 17:50
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+

Re: [Writer] Nom de fichier automatique.

Publié : 27 mai 2018 20:42
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.

Re: [Writer] Nom de fichier automatique.

Publié : 28 mai 2018 08:34
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

Re: [Writer] Nom de fichier automatique.

Publié : 28 mai 2018 09:41
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.

Re: [Writer] Nom de fichier automatique.

Publié : 28 mai 2018 10:12
par Bidouille
WD_And_Co a écrit :Oui j'avais lu
Non, rouvrez vos yeux et regardez le 3e message.

Re: [Writer] Nom de fichier automatique.

Publié : 28 mai 2018 10:52
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+