Calc: Enregistrer une copie... (directement sans intermédiaire..)

Bonjour. Je suis une personne âgée, connaissance moyenne en informatique. Pas facile de passer d’Excel à Calc mais j’aime mieux la mentalité de LibreOffice.
Question: J’ai une feuille Calc de dépenses. J’ai trouvé un code et créé un bouton pour faire ‘Enregistrer une copie…’ qui me renvoie vers une boîte de dialogue que je voudrais éviter, juste faire la copie dans un dossier spécifique. L’enregistreur de macro se limite à ouvrir le menu Fichier…Enregistrer une copie… Il me faut donc diriger la macro vers le fichier Répertoire désiré. Y a t il moyen d’outrepasser ce menu et de faire directement l’enregistrement? (Excusez la longue description…)

Macro:

Blockquote

Sub saveAsODS()
Dim FilterNames(1,2) As String, sResult As String, sPath As String
FilterNames(0,0) = “Planilha ODF” : FilterNames(0,1) = “.ods" : FilterNames(0,2) = “calc8”
FilterNames(1,0) = “Any type” : FilterNames(1,1) = "
.*” : FilterNames(1,2) = “”
sPath = ConvertToURL(“C:\Users\carol\Desktop\sauvegarde DépensesPartagées”)
GlobalScope.BasicLibraries.LoadLibrary(“Tools”)
sResult = StoreDocument(ThisComponent, FilterNames, “DépensesPartagées”, sPath)
If sResult = “” Then
MsgBox “Fichier non sauvegardé!”, MB_ICONEXCLAMATION, “Erreur”
Else
MsgBox "Fichier sauvegardé! " + ConvertFromURL(sResult), MB_OK, “Enregistré!”
EndIf
End Sub

Blockquote
merci!

Bonjour yulbrenner !

Menu Fichier > Enregistrer sous ?

Le code que vous utilisez demande une information parce que le sous-programme “StoreDocument” veur connaître le nom du fichier.

Si le nom du dossier de destination et celui du fichier sont stables, vous pouvez le coder différemment, comme ceci :

Sub saveAsODS()

Dim Chemin As String
Dim Props()

On Local Error Goto ErrHandler

Chemin = ConvertToURL(“C:\Users\carol\Desktop\sauvegarde DépensesPartagées.ods”)
ThisComponent.storeToURL(Chemin, Props)

ErrHandler:
If Err Then MsgBox(“Le fichier n’a pas été enregistré.”, 0, “Erreur”)

End Sub 'saveAsODS

(attention en recopiant les double guillemets : corrigez-les car ils sont mal transcrits dans Ask)

Bonne après-midi,

 =  ConvertToURL("C:\Users\ ...")

ReBonjour. Cela ne fonctionne pas.

  1. J’ai corrigé les ” par les " comme mentionné par jfn
  2. J’ai un message d’erreur avec le MsgBox qui dit:
    Erreur de syntaxe basic. Attendu: =.
    Excusez je n’y comprend pas grand chose! J’ai enlevé les parenthèses du
If Err Then MsgBox(“Le fichier n’a pas été enregistré.”, 0, “Erreur”)

et cela a corrigé l’erreur mais le MsgBox affiche désormais:
Erreur “Le fichier n’a pas été enregistré.” comme quoi le fichier ne s’enregistre pas.
Merci (s’il y a suivi)

Bonjour

le code que je vous ai indiqué fonctionne tel quel sous mon système (Linux Mint 21.3, LibreOffice 24.8). Je vais tester sous Windows.

En attendant :

La méthode storeToURL enregistre le fichier courant sous le nom et le chemin spécifiés :
Le chemin C:\Users\carol\Desktop\ existe-t-il ?

En d’autres termes, le fichier s’enregistre-t-il malgré tout selon le chemin indiqué ?

Note : Après enregistrement, le fichier actif n’est pas changé (le fichier enregistré est une copie qui n’est pas ouverte).

Test sous Windows 10 + LibreOffice 24.8.

Le code suivant :

Sub saveAsODS()

	Dim Chemin As String
	Dim Props()
	
	On Local Error Goto ErrHandler
	
	Chemin = ConvertToURL("C:\Users\JFN\Desktop\sauvegarde DépensesPartagées.ods")
	ThisComponent.storeToURL(Chemin, Props)
	
	ErrHandler:
		If Err Then MsgBox "Le fichier n’a pas été enregistré."

End Sub 'saveAsODS

fonctionne correctement.

Notez le user “JFN”, à remplacer par votre nom d’utilisateur Windows (identifiant d’ouverture de session).

Également, pour connaître l’origine de l’erreur rapportée, supprimez (commentez en ajoutant un guillemet simple au début) la ligne On Local Error :

'On Local Error

Alors vous obtiendrez un vrai message d’erreur qui donnera des détails sur l’erreur qui s’est produite.

Par exemple, si je change le chemin pour un chemin inexistant (mauvais nom d’utilisateur), j’obtiens ceci :

error
où on trouve la cause réelle de l’erreur : en dernière ligne "<file:...> failed"

MIRACULUM! Cette fois cela fonctionne. J’ai lu et relu vos indications et c’est FONCTIONNEL. Un gros merci, c’est très apprécié.
P.S. Le pourquoi de cette commande est qu’un gros bouton sauvegardera ce document sans risque de mal afficher le menu Fichier (j’ai parfois des problèmes à lire, mes yeux sont fatigués :wink:).

Merci, j’avais pris note de votre correction…