[Résolu][Calc] Nommer doc Writer avec résultat d'1 cellule

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 !
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

[Résolu][Calc] Nommer doc Writer avec résultat d'1 cellule

Message par Solaris »

Bonjour,

Je me sers de la fonction de publipostage pour rédiger des documents et les données sont un fichier Calc. Lors de la rédaction, j'ouvre un document Writer "Sans Nom" (depuis une trame .ott).

Objectif final: enregistrer le document Writer "Sans nom" en cours de travail dans un dossier. Je souhaiterai que le document Writer soit automatiquement nommé avec le résultat de la cellule RO2 de la feuille champs du document Données.
Le dossier dans lequel doit s'enregistrer le document Writer portera un nom qui est identique au résultat de la cellule ED2 du fichier Données au format JJ MMMM AAAA. C'est moi qui crée le dossier.
J'ai essayé de m'inspirer de cette discussion https://forum.openoffice.org/fr/forum/v ... le#p319482

Mes difficultés :
1/ Je ne sais pas comment indiquer l'adresse du fichier Données sans enregistrer au préalable dans le même dossier le document Writer. En effet, ma macro reprend l'adresse URL du document Writer pour trouver le fichier Données alors que par essence le document Writer est sans nom car non enregistré et donc dans aucun fichier.

2/ Pour essayer d'avancer et vérifier si le reste fonctionne, j'ai enregistré mon Document Writer dans le même dossier que le fichier Données. J'obtiens une erreur avec indication de la dernière ligne de la macro : "Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.io.IOException
Message: SfxBaseModel::impl_store <file:///C:%5CUsers%5Ccelin%5CdesktopRG%20123%20%20.odt> failed: 0x507(Error Area:Io Class:Access Code:7)."
Je n'arrive pas à comprendre ce que signifie cette erreur.

3/ est-il possible de ne pas ouvrir le document données car en principe il reste ouvert.

3/ je ne sais pas comment indiquer dans l'adresse que le nom du dossier de destination sera égal au résultat de ED2 du fichier Données. Est-ce faisable ?

Code : Tout sélectionner

REM  *****  BASIC  ***** https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=59134&p=319482&hilit=enregistrer+nom+fichier+cellule#p319482

Sub Main
Dim oDoc as Object,oDocOrigine as Object, Rep as String, AdresseDoc as String, F1 as Object
Dim DestURL As String
Dim Args () As new com.sun.star.beans.PropertyValue
Dim U as Variant, n as long

   oDoc = thisComponent
    U = split(oDoc.Url, "/")
       n = Ubound(U)
       U(n) = "Données.ods"
       DestURL = join(U, "/")
oDocOrigine = StarDesktop.loadComponentFromURL(DestURL,"_blank",0 ,Args())
F1 = oDocOrigine.Sheets.GetByName("Champs")

Rep = F1.getCellRangeByName("RO7").String       
   AdresseDoc = ConvertToURL("file:///C:\Users\celin\desktop" & Rep & ".odt")
   oDoc.storeToURL(AdresseDoc, Array() )
   
End Sub
Je vous remercie pour votre aide et bon week-end.

Bien cordialement
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Solaris le 04 avr. 2021 16:31, modifié 4 fois.
Libre office 7.3.2.2
Windows 11
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 945
Inscription : 19 août 2018 05:20

Re: [Writer] Nommer doc Writer avec le résultat d'une cellul

Message par Dolev »

Bonjour,

Code : Tout sélectionner

   AdresseDoc = ConvertToURL("file:///C:\Users\celin\desktop" & Rep & ".odt")
Ne vois-tu pas qu'il y a un mélange de / et \ ?
Si tu fais un ConvertToURL, tu n'as pas besoin de commencer le chemin par file:///
Fais un msgbox du chemin afin de voir sil est correct.
Open Office 4.1.15 sous Windows 11
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

Re: [Writer] Nommer doc Writer avec le résultat d'une cellul

Message par Solaris »

Bonjour,

Effectivement ! A faire des copier/coller je n'ai pas fait attention.

Bon voilà j'ai encore un seul problème.

Cette fonction

Code : Tout sélectionner

   oDoc.storeToURL(AdresseDoc, Array() )
se réfère à l'url de mon doc Writer alors que s'agissant d'un doc Sans nom, il n'en a pas encore. Comment puis-je faire ?

J'en suis là :

En ajoutant le Rep1, la première fois il crée le dossier avec la cellule ED2 et les fois suivantes il enregistre les autres doc dedans, c'est nickel.

Code : Tout sélectionner

REM  *****  BASIC  ***** https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=59134&p=319482&hilit=enregistrer+nom+fichier+cellule#p319482


Sub Main
Dim oDoc as Object, oDocOrigine as Object, Rep as String, AdresseDoc as String, F1 as Object
Dim DestURL As String, AdesseDoc1 as String, Rep1 as String
Dim Args () As new com.sun.star.beans.PropertyValue
Dim U as Variant, n as long

   oDoc = thisComponent
   AdresseDoc1 = ConvertToURL("C:/Users/celin/OneDrive/Bureau/Test/Données.ods")
oDocOrigine = StarDesktop.loadComponentFromURL(AdresseDoc1,"_blank",0 ,Args())
F1 = oDocOrigine.Sheets.GetByName("Champs")

Rep = F1.getCellRangeByName("RO2").String 
Rep1 = F1.getCellRangeByName("ED2").String      
   AdresseDoc = ConvertToURL("C:/Users/celin/OneDrive/Bureau/Test/" & Rep1 & "/" & Rep & ".odt")
   oDoc.storeToURL(AdresseDoc, Array() )
   oDocOrigine.close(True)
End Sub
[/raye]

EDIT :

J'ai résolu mes problèmes en changeant de stratégie : j'ai installé la macro sur mon fichier calc Données.
Du coup, la référence aux différents documents est plus simple.

Code : Tout sélectionner

REM  *****  BASIC  ***** https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=59134&p=319482&hilit=enregistrer+nom+fichier+cellule#p319482


Sub NomDossier
Dim oDoc as Object, oDocOrigine as Object, Rep as String, AdresseDoc as String, F1 as Object
Dim DestURL As String, AdesseDoc1 as String, Rep1 as String, ODocNouveau as Object, AdresseDoc2 as String
Dim Args () As new com.sun.star.beans.PropertyValue
Dim U as Variant, n as long

  oDocOrigine = ThisComponent
  oDocOrigine.store
  AdresseDoc2 = ConvertToURL("C:/Users/celin/OneDrive/Réxxxx/Dxxxx.ott")
  oDoc = StarDesktop.loadComponentFromURL(AdresseDoc2,"_blank",0 ,Args())
  oDocOrigine = ThisComponent
F1 = oDocOrigine.Sheets.GetByName("Champs")
Rep = F1.getCellRangeByName("RO2").String
Rep1 = F1.getCellRangeByName("ED2").String     
   AdresseDoc = ConvertToURL("C:/Users/celin/OneDrive/Cxxxx/Dxxxxx/Dxxxxxxx/" & Rep1 & "/" & Rep & ".odt")
   oDoc.storeToURL(AdresseDoc, Array() )
   oDocNouveau = StarDesktop.loadComponentFromURL(AdresseDoc,"_blank",0 ,Args())
   oDoc.close(True)
End Sub

Merci beaucoup !
Libre office 7.3.2.2
Windows 11
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 945
Inscription : 19 août 2018 05:20

Re: [Résolu][Writer] Nommer doc Writer avec résultat d'1 cel

Message par Dolev »

Tu confonds StoreToUrl et StoreAsUrl :
https://wiki.openoffice.org/wiki/FR/Doc ... a_document
Solaris a écrit :j'ai installé la macro sur mon fichier calc Données
Donc la balise de ton titre est à changer : Calc et non plus Writer.
Open Office 4.1.15 sous Windows 11
Solaris
Membre hOOnoraire
Membre hOOnoraire
Messages : 146
Inscription : 02 août 2017 21:55

Re: [Résolu][Calc] Nommer doc Writer avec résultat d'1 cellu

Message par Solaris »

Oui effectivement j'ai confondu !
En tout cas merci pour tes conseils et ton aide.
J'ai changé le titre.

Merci et bonne fin de WE
Libre office 7.3.2.2
Windows 11