[Résolu][Writer] Sauvegarder avec incrément 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
Ravioli
GourOOu
GourOOu
Messages : 7610
Inscription : 18 oct. 2007 18:28

[Résolu][Writer] Sauvegarder avec incrément automatique

Message par Ravioli »

Bonjour,

Je recommande de procéder à des sauvegardes régulières des fichiers importants dans Writer
(un peu moins en Calc où cette pratique semble plus courante par nécessité)
en utilisant Enregistrer sous et en incrémentant le nom du fichier en Nom1, Non2, Nom3 etc.

Je veux bien employer storeToURL car cela permet de continuer sur le document existant,
permettant ainsi ce que je recommande (sauvegarde incrémentée)
mais comment introduire automatiquement le même nom et le n=n+1 sans passer par une boite de dialogue ?

Je verrais bien une icône d 'Enregistrer incrémenté de la barre d'outil Standard affublée de ce genre de macro.

A+
Dernière modification par Ravioli le 06 sept. 2009 13:26, modifié 3 fois.
AOO 4.1.1 LibO 4.4.5
Vista SP2, Win7 SP1, Win7 SP1 Pro, Win 8.1.1 Pro, Mac Intel OS X 10.10.5, Ubuntu 12.04 LTS 32 bits, OpenSuse 13.2, Debian 7
& LibO 4.0.6 pour Mac PPC 10.5.8
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Writer] Sauvegarder avec incrément automatique

Message par Dude »

Salut,

Un exemple simple :

Code : Tout sélectionner

Sub ExportODT
dim oDoc as object
dim oUrl as string
dim PropFich(0) as new com.sun.star.beans.PropertyValue

oDoc = thiscomponent
oURL = convertToUrl("c:\temp\test.odt")
PropFich(0).name="FilterName"
PropFich(0).value="writer: Writer8"

oDoc.storeToUrl(oURL, Propfich())
End Sub
A la place de "c:\temp\test.odt", tu mets ton nom de fichier.

8)
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Avatar de l’utilisateur
Ravioli
GourOOu
GourOOu
Messages : 7610
Inscription : 18 oct. 2007 18:28

Re: [Writer] Sauvegarder avec incrément automatique

Message par Ravioli »

Bonjour,

Merci Dude,
mais je n'ai pas l'impression que ton script fasse une incrémentation totalement automatique.

Je pense que je vais poster dans Projet, car il s'agit en fait de créer une véritable Extension que n'importe quel débutant pourra utiliser.
C'est effectivement davantage une clé en main qui est nécessaire au vue de mon objectif.

Message ici : http://user.services.openoffice.org/fr/ ... 835#p98835

A+
AOO 4.1.1 LibO 4.4.5
Vista SP2, Win7 SP1, Win7 SP1 Pro, Win 8.1.1 Pro, Mac Intel OS X 10.10.5, Ubuntu 12.04 LTS 32 bits, OpenSuse 13.2, Debian 7
& LibO 4.0.6 pour Mac PPC 10.5.8
Avatar de l’utilisateur
Alain de La Chaume
HédOOniste
HédOOniste
Messages : 1527
Inscription : 28 sept. 2008 14:56
Localisation : ʇsǝnoo,ꞁ ɐ ʇuǝɯǝʇǝꞁdɯoↃ

Re: [Writer] Sauvegarder avec incrément automatique

Message par Alain de La Chaume »

Bonjour à tous, bonjour Ravioli.
Voici un premier jet :

Code : Tout sélectionner

' --------------------------------------------------------------------
' Sauvegarder ce document sous un nom composé de :
' <nom_de_ce_doc> + "_" + <numéro_de_sauvegarde>
' --------------------------------------------------------------------
' Le numéro de sauvegarde est obtenu ici par
' récupération du numéro de version de ce document.
' --------------------------------------------------------------------
' A NOTER. - Je prévois une autre version de cette macro (plus tard)
' car ici le numéro de version de ce document ne vas pas évoluer 
' au fur et à mesure de ces sauvegardes incrémentées.
' A moins bien entendu de "forcer" l'enregistrement de ce document
' juste après la sauvegarde incrémentée.
' --------------------------------------------------------------------
sub acIncrementSave_v1()
dim oDoc as object
dim sUrl1 as string, sUrl2 as string
dim iVersion as integer
dim tArgs(0) as new com.sun.star.beans.PropertyValue
dim ficExt as string

	oDoc = thiscomponent
	iVersion = oDoc.documentInfo.EditingCycles
'	print "Numéro de version de ce document : " & iVersion
	sUrl1 = oDoc.getUrl
	ficExt = acGetFileExt(sUrl1)
	
	sUrl2 = left(sUrl1, len(sUrl1) - len(FicExt) -1) _
		 & "_" & cStr(iVersion) & "." & ficExt
		 
'	msgBox 	"sUrl1 = [" & convertFromUrl(sUrl1) & "]" & chr(13) _
'		& 	"sUrl2 = [" & convertFromUrl(sUrl2) & "]"
		
	oDoc.storeToUrl(sUrl2, tArgs())
	msgBox("Document sauvegardé sous " & chr(13) _
		 & convertFromUrl(sUrl2)
end sub

'******************************************************* 07/11/08 ***
'*** Retourne l'extension du fichier, sans le point 
'*** Ex. : buf = acGetFileExt(oDoc.getUrl)
'********************************************************************
function acGetFileExt(sUrl As String) As String
Dim cpt As Integer
Const POINT = "."
	for cpt = Len(sUrl) to 1 step -1
		if Mid(sUrl, cpt, 1) = POINT then
			acGetFileExt = Mid(sUrl, cpt+1)
			exit function
		end if
	next cpt
	' Si pas de POINT, on retourne tout
	acGetFileExt = sUrl
end function
Et comme il est dit dans le commentaire en tête de code, c'est en attendant mieux.

Nouvelle édition, le 21/08/09 à 0 h 3 :
Ci-joint, un fichier contenant la première macro ci-dessus,
et une seconde version. Le code est commenté. Il n'y a plus qu'à choisir et à affiner.
Pièces jointes
sauvegarde_incrémentée.odt
(16.24 Kio) Téléchargé 330 fois
(API-culteur et pêcheur de macros en mode loisirs occasionnels, mais toujours les pieds dans l'OO)
AOO 4.1.2 sous Linux Xubuntu Voyager 14.04 (x86_64)
Avatar de l’utilisateur
Ravioli
GourOOu
GourOOu
Messages : 7610
Inscription : 18 oct. 2007 18:28

Re: [Writer] Sauvegarder avec incrément automatique

Message par Ravioli »

Bonjour Alain,

Impressionnant. :super:

Merci de faire avancer ce projet,
qui peut-être évitera à de nombreux utilisateurs (peu avertis des principes élémentaires de sauvegarde)
de se trouver avec une perte totale d'un travail à cause d'un fichier corrompu...

Ravioli

EDIT : Alain de la Chaume a créé une extension qui figure dans le sujet qui s'est poursuivi dans la section Projet
[OXT] sauvegarde auto avec incrément du nom http://user.services.openoffice.org/fr/ ... 29#p100229

Merci à ceux qui voudront bien la tester et donner leur avis sur le fil cité.

Encore merci à ceux qui ont permis cette réalisation.


Dernière remontée par Ravioli le 06 sept. 2009 13:25.
AOO 4.1.1 LibO 4.4.5
Vista SP2, Win7 SP1, Win7 SP1 Pro, Win 8.1.1 Pro, Mac Intel OS X 10.10.5, Ubuntu 12.04 LTS 32 bits, OpenSuse 13.2, Debian 7
& LibO 4.0.6 pour Mac PPC 10.5.8
Verrouillé