[Issue][Calc]Intercepter l'enregistrement automatique sous LibO

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 !
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

[Issue][Calc]Intercepter l'enregistrement automatique sous LibO

Message par Tad »

Bonjour,

dans un classeur, j'ai une macro "onSave" qui s'enclenche à l'enregistrement du document.
Elle est assignée via le gestionnaire d’événements du classeur et fonctionne correctement.
Seul problème : elle s'enclenche aussi à l'enregistrement automatique (10 à 20 minutes selon les postes). Ce n'est pas gênant en soi, mais à la longue c'est un peu agaçant.

Question : y a-t-il un moyen de n'enclencher cette macro que si l'enregistrement est fait de façon volontaire et pas de façon automatique ? A défaut je me résoudrai à l'ajout d'un bouton activant cette macro et provoquant l'enregistrement, mais ça manque d'élégance (et de place pour ce futur bouton :aie: ).

Merci pour vos pistes de réflexion !

Ps (hors sujet) : j'ai constaté un très fort ralentissement de la vitesse d'exécution des macros dans les dernières versions de LO (7.4 un peu et 7.5 c'est terrible, au point de revenir sur une 7.3 pour une vitesse "normale"). Profil vierge ou pas, installation neuve ou pas, tous fichiers (mais avec des macros assez lourdes je le reconnais). Suis-je le seul ?
Dernière modification par Oukcha le 07 juil. 2023 10:57, modifié 1 fois.
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4117
Inscription : 06 oct. 2008 08:03

Re: [Calc]Intercepter l'enregistrement automatique pour éviter le déclenchement d'une macro

Message par Oukcha »

Bonjour,

Merci de ne pas utiliser de termes implicites dans le titre, tel que "macro" en section éponyme.

Il serait plus facile de répondre à votre question en publiant à la suite le code employé, ainsi qu'en nous joignant un exemple de fichier avec notre service Ci-Joint (lien en bas de la page lors de la rédaction du message) : ftopic10246-comment-faire-pour-attacher-une-PJ.html

Dans l'attente.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique pour éviter le déclenchement d'une macro

Message par Tad »

Je ne sais pas exactement ce qu'un fichier expurgé peut apporter à la résolution de la question (qui n'est pas spécifique à un classeur ou à un code à ma connaissance, mais à un évènement) mais soit ! Le voici.
Tad_expurge.ods

Edit : je viens de faire le test sur un classeur vierge et une simple macro affichant un msgbox, reliée à l'évènement adéquat. Comportement identique : le msgbox s'affiche à chaque enregistrement automatique
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc]Intercepter l'enregistrement automatique pour éviter le déclenchement d'une macro

Message par rollmops »

Bonjour,

Je viens de tester votre classeur mais avec OpenOffice 4.1.14 sous W10.
J'ai réglé l'enregistrement automatique toutes les 5 min.
Cela ne provoque pas l'affichage du dialogue tel qu'on peut l'avoir quand on enregistre de manière classique.

Ou alors je n'ai pas compris ce qu'il fallait faire.
OpenOffice 4.1.15 - Windows 10
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique pour éviter le déclenchement d'une macro

Message par Tad »

En modifiant le réglage par défaut de LO (menu option > enregistrement) j'avais effectivement constaté la même chose que vous pendant certains tests "impatients". Mais je ne voyais jamais s'afficher la barre de progression verte en bas de classeur. Je me suis dis que, peut-être et sans chercher plus avant, LO ne réalisait pas de sauvegarde si le délai est trop court.
De mémoire j'ai tenté 1 et 2 minutes.

Cependant en attendant un peu, au terme d'une dizaine de minutes environ (soit la durée "par défaut"), ça se produit : affichage de la boite de dialogue, suivi de l'enregistrement automatique avec apparition de la barre verte en bas.

A noter, et cela me semble logique, qu'il ne semble pas y avoir d'enregistrement automatique si le classeur n'a pas subit de modification d'au moins une cellule.

Edit : je viens de relire votre message. Vous parlez de OpenOffice. Je suis sous LibreOffice. Pourrait-il y avoir une différence à ce niveau ?
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc]Intercepter l'enregistrement automatique pour éviter le déclenchement d'une macro

Message par rollmops »

Tad a écrit : 06 juil. 2023 14:08 Edit : je viens de relire votre message. Vous parlez de OpenOffice. Je suis sous LibreOffice. Pourrait-il y avoir une différence à ce niveau ?
Je ne sais pas.
Sans doute devriez-vous faire le test en installant OpenOffice. :)
OpenOffice 4.1.15 - Windows 10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc]Intercepter l'enregistrement automatique

Message par rollmops »

Dernière visite :10 juil. 2023 15:25
Pourrait-on avoir des nouvelles je vous prie?
OpenOffice 4.1.15 - Windows 10
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique

Message par Tad »

Oui : on me refuse l'installation d'OpenOffice sur les postes. Du coup je n'ai pas testé au bureau (ni même à la maison)
Conclusion : ou c'est possible sur LibreOffice, ou ça ne l'est pas.
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 692
Inscription : 20 déc. 2017 14:45

Re: [Calc]Intercepter l'enregistrement automatique

Message par rollmops »

Tad a écrit : 12 juil. 2023 11:55 Conclusion : ou c'est possible sur LibreOffice, ou ça ne l'est pas.
Et bien si vous êtes patient, vous pouvez attendre que quelqu'un vienne un jour confirmer (ou pas) :)
Ou bien (à la maison) vous installez OpenOffice
Ou bien (au bureau) vous signalez être devant un bug et qu'il vous faut voir s'il se produit avec un autre tableur
OpenOffice 4.1.15 - Windows 10
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique

Message par Tad »

Je suis patient ;)

Pour l'essai au bureau, je préfère ne pas trop insister : j'ai déjà mis des années pour qu'on bascule d'un système 100% logiciels privateurs à un ensemble dont 50% des outils sont libres et/ou open-source (dont LibreOffice, Inkscape, etc) alors si c'est pour entendre une fois de plus "on n'aurait pas eu ça avec [mettre ici le nom d'un logiciel fermé]", je préfère sauter par la fenêtre* .[/i].. Puis on m'a aussi dans le viseur comme l'hurluberlu "qui n'aime pas les trucs qui marchent et que les gens normaux utilisent" (si je peux éviter de donner raison une fois de plus à mes gentils détracteurs biberonnés aux solutions de facilité j'en serai ravi)

*au rdc la fenêtre. Ma folie a des limites :)
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc]Intercepter l'enregistrement automatique

Message par Jurassic Pork »

Hello,
les options d'enregistrement automatique ne sont pas du tout claires sous LibreOffice. Voici les options concernant l'"autosave" que l'on trouve dans la configuration avancée de LibreOffice :
AutoSaveOptionsLO.png
ce que j'ai constaté c'est que l'option Enregistrer les informations de récupération automatique toutes les x minutes correspond à l'option
org.openoffice.Office.Common Save AutoSaveTimeIntervall
alors que cela devrait plutôt être dans l'option avancée org.openoffice.Office.Recovery AutoSave TimeIntervall.
Si on modifie cette option il y a un fichier backup qui est produit dans le répertoire de backups avec le temps mis si il y a eu des modifications effectuées dans le document.
Si quelqu'un a une documentation claire au sujet de ces options avancées je suis preneur.
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9659
Inscription : 18 juil. 2008 15:29
Localisation : F-Oise + F-Savoie

Re: [Calc]Intercepter l'enregistrement automatique

Message par tintin »

Bonjour,

Si j'ai bien compris et si ça peut aider :idea: :
ici, dans Comprendre l'option "Copie de sauvegarde"
Pierre-Yves Samyn a écrit :Outils > Options > Chargement/Enregistrement > Général > Enregistrer les informations de récupération automatique.
Cette dernière est en quelque sorte "réservée" à AOO ; c'est elle qui permet, après plantage, d'avoir les tentatives automatiques de récupération de document. Les fichiers générés par cette sauvegarde régulière (dont on peut paramétrer le délai) ne sont pas conçus en vue d'être récupérables par l'utilisateur.

Les sauvegardes "utilisateurs" sont bien celles obtenues via Outils > Options > Chargement/Enregistrement > Général > Toujours créer une copie de sauvegarde.

Ce que ne dit pas l'aide :
  • On ne disposera que d'une copie de sauvegarde pour tous les documents de même nom stockés dans des dossiers différents. Autrement dit, c'est "le dernier" qui aura raison... (ce n'est pas expliqué dans l'aide car c'est implicite avec le fonctionnement de l'enregistrement dans un dossier de sauvegarde dédié)
  • Les Bases .odb ne sont pas gérées par cette copie de sauvegarde.
Exemples concrets :
  1. Fichier > Nouveau document > Saisie du document > Fermeture du document sans enregistrer > Aucune copie de sauvegarde créée
  2. Fichier > Nouveau document > Saisie du document > Enregistrement du document > Aucune copie de sauvegarde créée
  3. Fichier > Ouvrir un document existant > Modification du document > Fermeture sans enregistrer les modifications > Aucune copie de sauvegarde créée
  4. Fichier > Ouvrir un document existant > Modification du document > Enregistrer les modifications > Création d'une copie de sauvegarde de l'état avant dernier enregistrement (même nom + .bak)
  5. Fichier > Nouveau document > Saisie du document > Enregistrement dans un dossier différent mais même nom qu'un document pour lequel une sauvegarde existe > Aucune modification de la copie de sauvegarde existante (car un nouveau document ne génère pas de copie de sauvegarde cf. cas 2)
  6. Fichier > Ouvrir le dernier document (de même nom que celui disposant déjà d'une copie de sauvegarde > Modification > Enregistrement > Écrasement de la copie de sauvegarde du document de même nom, avec l'état avant modification du document courant
AOO 4.1.15 et LibO 24.2.6 / macOS Intel 13.7.1 Ventura
Adoptium-temurinJDK-jre_1.8.0_432 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]Intercepter l'enregistrement automatique

Message par zeguedon »

Bonjour à tous,

Je ne reproduis pas avec une version officielle 7.4 sous Linux.
Je vois bien les sauvegardes automatiques s'exécuter (barre de progression en bas de page + clignotement de l'écran) sans que la macro affectée à l'événement Enregistrer le document soit exécutée:
Capture d’écran du 2023-07-12 19-29-36.png
Fichier ouvert et enregistré depuis plus de trente minutes avec un enregistrement automatique paramétré toutes les deux minutes + option Toujours créer une copie de sauvegarde avec bien entendu des modifications effectuées régulièrement :
Capture d’écran du 2023-07-12 19-32-57.png
Message reçu par la macro lors de l'enregistrement manuel :
Capture d’écran du 2023-07-12 19-34-50.png
avec le code suivant :

Code : Tout sélectionner

Sub Main(oevt)
xray oevt
End Sub
J'ai naïvement pensé pouvoir récupérer un événement différent selon que l'enregistrement est effectué automatiquement ou manuellement mais non :? :twisted:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: [Calc]Intercepter l'enregistrement automatique

Message par Jurassic Pork »

Hello,
Tad ton problème de réglage du temps de déclenchement de l'enregistrement automatique (*) vient sûrement de ta version LibreOffice 7.3 où il y avait un bug (bug 149176) qui a été corrigé en 7.4 (ce bug que j'ai décrit dans mon message précédent où j'utilisais aussi une version 7.3). Le contournement c'est le réglage de l'intervalle de temps dans la configuration avancée.
En version 7.4 le temps réglable dans l'option Enregistrer les informations de récupération automatique toutes les x minutes sert bien aussi à la génération d'un fichier de sauvegarde . Par contre j'ai l'impression que le temps que l'on rentre sert à la fois pour la récupération automatique et la génération d'un fichier de sauvegarde (AutoSaveTimeIntervall).
Pour voir si cela est effectif avec les réglages suivants :
LoCfgAutoSaveGui.png
ce qui donne dans la configuration avancée ceci :
LoAdvCfgAutoSave.png
Effectuer une modification dans son document et regarder dans le répertoire de sauvegarde :
LoCfgChemins.png
si il y a bien un fichier de sauvegarde créé au bout du temps choisi.
Pour la récupération automatique c'est le fichier registrymodifications.xcu qui doit être mis à jour au bout du temps choisi mais ceci sans qu'il y ait eu de modification du document.
Le temps que l'on saisi dans l'option Enregistrer les informations de récupération automatique toutes les x minutes semble être celui qui sert pour la récupération automatique et la génération d'un fichier de sauvegarde.
Contrairement à ZeGuedon, moi dans ma version 7.4.6.2 de LibreOffice sous Windows 11 (mais aussi en L.O version 7.5.2.2 sous Ubuntu 20.04), j'ai bien la macro qui se déclenche pendant l'enregistement automatique mais il est facile de détecter qui a déclenché l'enregistrement car le nom de l'événement pour une copie de sauvegarde automatique est OnCopyToDone alors que pour un Enregistrer c'est OnSave et pour un Enregistrer Sous c'est OnSaveAs
Pour ne pas exécuter la macro quand c'est l'enregistrement automatique qui la déclenche il suffit de mettre ce code en début de macro OnSave :

Code : Tout sélectionner

Sub OnSave(evt)
	dim aujdh as Date
	dim datum as string
	dim extension as string
	Dim oFP As Object
 	Dim Valeur As Object 
  	Dim Resultat As String 
	if evt.EventName = "OnCopyToDone" then Exit Sub
*Enregistrement automatique : A noter aussi que ce n'est pas le fichier ouvert qui est sauvegardé mais on génére un fichier de sauvegarde de ce fichier avec les modifications effectuées dans le répertoire des sauvegardes . La récupération automatique est un autre processus. L'option Toujours créer une copie de sauvegarde crée un fichier .bak lorsqu'on enregistre manuellement le fichier contrairement au mode automatique qui lui lui crée un fichier .ods mais avec un nom de fichier légérement différent.
Et pour tes problèmes de lenteur d'exécution de macros Dans LibreOffice 7.4 et 7.5 il faudrait que tu ouvres une autre discussion (exemple de titre [Calc] Lenteur Macro sous L.O 7.4 , 7.5) pour nous dire ce que tu fais dans ces macros avec idéalement un fichier exemple si il n'y a pas de données confidentielles dedans et de dépendances à des fichiers externes.
Ami calmant, J.P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique

Message par Tad »

Quelle masse d'informations !
J'ai bien fait d'être patient :D

J'ai testé la solution avec l'évènement OnCopyToDone présentée par Jurassic Pork
Cela semble fonctionner sur mon poste, je regarde à diffuser chez les confrères et si je n'ai pas de (mauvais) retours je baliserai [Résolu].

Pour les autres points, je regarde à m'y plonger.

Merci à la communauté (mention spéciale à J.P. tant pour la solution que les pistes de recherche et la bienveillance des réponses :super: ) !
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Intercepter l'enregistrement automatique

Message par Dude »

Salut,
Jurassic Pork a écrit : 13 juil. 2023 05:17Contrairement à ZeGuedon, moi dans ma version 7.4.6.2 de LibreOffice sous Windows 11 (mais aussi en L.O version 7.5.2.2 sous Ubuntu 20.04), j'ai bien la macro qui se déclenche pendant l'enregistement automatique
Rapport de bogue 65509 : le paramètre "Sauvegarde automatique" (dans Options > LO > Avancé > Configuration Expert) ne fonctionne pas

Tad a écrit : 13 juil. 2023 12:50 je baliserai [Résolu]
Il faudra plutôt baliser [Issue]
Et mentionner comme commentaire qu'il y a toujours un problème parce que le dév. mentionne que c'est résolu avec la 7.4.0.


 Ajout : Et effectivement, ce bogue ne concerne pas OpenOffice. 
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique

Message par Tad »

Je veux bien mettre [Issue] + commentaire mais déjà qu'on me gronde quand j'oublie une majuscule dans la balise, alors de là à me risquer sur l'utilisation d'une balise qui n'est pas dans la liste autorisée ;)

Taquinage et bonne humeur mise à part : le post de JP répond strictement et exactement à la question posée. Du coup quelle pertinence à cette balise ? Ne devrait-on pas ouvrir un autre sujet dédié pour signaler et qualifier le problème comme c'est très souvent rappelé à ceux qui interviennent moins souvent ? Ce cas est dans la "zone grise" des règles d'usage ? (vraie question)
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25602
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Intercepter l'enregistrement automatique

Message par Dude »

Tad a écrit : 13 juil. 2023 13:45 l'utilisation d'une balise qui n'est pas dans la liste autorisée
Ah bon ?
A propos des balises - Comment mettre [Résolu] ou [Issue]
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Calc]Intercepter l'enregistrement automatique

Message par Tad »

Mince, je m'étais limité aux règles évoquées en haut de cette section.
LibreOffice 7.6 sous W10
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Calc]Intercepter l'enregistrement automatique

Message par Bidouille »

Et donc ? Qu'est ce qui vous empêche de mettre cette balise ?
Fait (encore une fois) à votre place.
Tad
Membre lOOyal
Membre lOOyal
Messages : 49
Inscription : 07 déc. 2022 08:42

Re: [Issue][Calc]Intercepter l'enregistrement automatique sous LibO

Message par Tad »

Tad a écrit : 13 juil. 2023 12:50 Cela semble fonctionner sur mon poste, je regarde à diffuser chez les confrères et si je n'ai pas de (mauvais) retours je baliserai [Résolu]
Merci, mais je l'aurai fait sans problème après avoir testé comme indiqué... Le 14 juillet, ici, c'est férié.
LibreOffice 7.6 sous W10
mikekaganski
Fraîchement OOthentifié
Messages : 1
Inscription : 17 juil. 2023 19:34

[Issue][Calc]Intercepter l'enregistrement automatique sous LibO

Message par mikekaganski »

Jurassic Pork a écrit : 12 juil. 2023 14:13 ce que j'ai constaté c'est que l'option Enregistrer les informations de récupération automatique toutes les x minutes correspond à l'option
org.openoffice.Office.Common Save AutoSaveTimeIntervall
alors que cela devrait plutôt être dans l'option avancée org.openoffice.Office.Recovery AutoSave TimeIntervall.
tdf#156308
LibreOffice 7.6; Win10