[Résolu] [Calc] activer classeur pour pouvoir l'enregistrer

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 !
lecoinbon86
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 avr. 2020 07:04

[Résolu] [Calc] activer classeur pour pouvoir l'enregistrer

Message par lecoinbon86 »

Bonjour,

J'ai actuellement une macro que je lance et qui me scanne mes fichiers CSV pour me les placer dans un second fichier (1 fichier par onglet).

Code : Tout sélectionner

Sub collectCSV
Const FILTER_NAME = "Text - txt - csv (StarCalc)"
Const FILTER_OPTIONS = "44,34,33,0,,0,false,false,true,false,false"
Dim sPath As String, sFileName As String, sSheetName As String
Dim oDoc As Variant, oSheets As Variant, oSheet As Variant
    GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDoc = CreateNewDocument("scalc")
oSheets = oDoc.getSheets()
sPath = CurDir
sPath = InputBox ("Please enter a folder name:","Source folder", sPath)    
sFileName = Dir(sPath + getPathSeparator + "*.csv",0) 
Do    
sSheetName = CheckNewSheetname(oSheets, _
                    GetFileNameWithoutExtension(sFileName, getPathSeparator))
        oSheets.insertNewByName(sSheetName,0)
        oSheet = oSheets.getByName(sSheetName)
        oSheet.link(ConvertToURL(sPath + getPathSeparator + sFileName), _
                    sSheetName, FILTER_NAME, FILTER_OPTIONS, _
                    com.sun.star.sheet.SheetLinkMode.VALUE)
        oSheet.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE)
        sFileName = Dir()
    Loop Until sFileName = ""    
msgbox thiscomponent.currentController.activeSheet.name


    
End Sub
Le problème c'est que je souhaite que ma macro me ferme ce fichier "concaténer", me l'enregistre là où sont placés mes fichiers csv et le nomme "Synthèse" par exemple.
Pas moyen de changer son nom ...

Code : Tout sélectionner

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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///C:/sortie/Synthèse.ods"
args1(1).Name = "FilterName"
args1(1).Value = "calc8"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Lorsque que je rajoute ce code à ma macro, il me renomme mon fichier de base dans lequel se trouve ma macro justement ...

Une idée ?

Merci
Dernière modification par lecoinbon86 le 01 juil. 2020 17:08, modifié 2 fois.
Libreoffice 6.4.2 sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc] activer autre classeur pour pouvoir l'enregistrer

Message par micmac »

Bonjour,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.

Lisez ce fil pour savoir quelle balise utiliser : https://forum.openoffice.org/fr/forum/s ... html#27295

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même au risque de voir votre sujet verrouillé.

Merci de votre collaboration.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Calc] activer autre classeur pour pouvoir l'enregistrer

Message par Hubert Lambert »

Bonjour,

Essaie simplement en remplaçant

Code : Tout sélectionner

document   = ThisComponent.CurrentController.Frame
par

Code : Tout sélectionner

document   = oDoc.CurrentController.Frame
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)
lecoinbon86
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 avr. 2020 07:04

Re: [Calc] activer autre classeur pour pouvoir l'enregistrer

Message par lecoinbon86 »

Merci effectivement, ça marche au poil !
J'en profite, comment faire pour que ce fichier se ferme tout seul, une fois enregistré ?
Libreoffice 6.4.2 sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc] activer autre classeur pour pouvoir l'enregistrer

Message par micmac »

[b][color=#404080]lecoinbon86[/color][/b] a écrit :comment faire pour que ce fichier se ferme tout seul, une fois enregistré ?
Autre question qui doit faire l'objet d'un nouveau sujet. règle n° 7

Comment clore correctement un sujet lorsqu'il est résolu
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
lecoinbon86
NOOuvel adepte
NOOuvel adepte
Messages : 15
Inscription : 01 avr. 2020 07:04

Re: [Calc] activer autre classeur pour pouvoir l'enregistrer

Message par lecoinbon86 »

Merci en tout cas pour votre aide !
Libreoffice 6.4.2 sous Windows 10