Page 1 sur 1

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

MessagePublié: 19 Août 2009 15:05
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+

Re: [Writer] Sauvegarder avec incrément automatique

MessagePublié: 19 Août 2009 17:05
par Dude
Salut,

Un exemple simple :
Code : Tout sélectionner   AgrandirRéduire
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)

Re: [Writer] Sauvegarder avec incrément automatique

MessagePublié: 20 Août 2009 10:15
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 : viewtopic.php?p=98835#p98835

A+

Re: [Writer] Sauvegarder avec incrément automatique

MessagePublié: 20 Août 2009 14:50
par Alain de La Chaume
Bonjour à tous, bonjour Ravioli.
Voici un premier jet :
Code : Tout sélectionner   AgrandirRéduire
' --------------------------------------------------------------------
' 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.

Re: [Writer] Sauvegarder avec incrément automatique

MessagePublié: 06 Sep 2009 12:25
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 viewtopic.php?p=100229#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.