We will be migrating from Ask to Discourse on the first week of August, read the details here

Poser votre question
0

Macro sauvegarde et fermeture fichier

posée 2021-01-13 12:10:58 +0200

Image Gravatar de JBBR973

updated 2021-01-14 18:59:00 +0200

Image Gravatar de pierre-yves samyn

Bonjour tout le monde, Meilleurs vœux pour la nouvelle année, vœux de santé d'abord ! Je recherche une macro permettant la sauvegarde suivie de la fermeture d'un fichier en cas d'inactivité. J'en possède une mais qui ne fonctionne pas hélas...dont voici le contenu ci-dessous. Je vous remercie soit par les corrections à apporter soit par une nouvelle macro déjà existante.... Excellente journée à vous et prenez grand soin de vous Jacques Option Explicit

Dim oDlg as Object
Dim OuiNon as Boolean

Sub Main
'Macro déclenchée à l ouverture du classeur'
Dim lSec as long, lMin as long, intx as Integer
Dim MonTemps as String
For intx = 1 To 2
   lSec = Timer
   lMin = lSec / 60
   lMin = lMin Mod 60
   MonTemps = lMin & ":" &  lSec Mod 60
   Select Case MonTemps
      Case "0:0" , "15:0" , "30:0" , "45:0"
'A heure pile puis toutes les 15 minutes, appelle de la procédure InitDelai      '
         InitDelai
      End Select
   intx = intx - 1
Next
End Sub

Sub InitDelai
'Initialisation de la variable OuiNon'
   OuiNon = False
   OuvrirDialog
   Delai
End Sub

Sub OuvrirDialog
'Ouverture du dialogue'
Dim bibli As Object, monDialogue As Object
   DialogLibraries.LoadLibrary("Standard")
   bibli = DialogLibraries.GetByName("Standard")
   monDialogue = bibli.GetByName("Dialog1")
   oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
   oDlg.Visible = True
End Sub

Sub Delai()
Dim monEtiquette as Object , I as Integer
'Temporisation pour la fermeture du document si pas de réponse'
   monEtiquette = oDlg.getControl("lblDelais")
      For I = 10 To 0 Step -1
         Wait 1000
         monEtiquette.Text = I & " Secondes"
         If OuiNon = True Then Exit For
         If monEtiquette.Text = 1 & " Secondes" Then
            oDlg.Visible = False
            saveandclose
         End If
      Next            
End Sub

Sub Bouton(oEv As Object)
   Select Case oEv.Source.Model.Name
'L utilisateur clique sur le bouton Oui'
      Case "cmdOK"
         oDlg.Visible = False
         OuiNon = True
'Il clique sur le bonton Non'
      Case "cmdClose"
         oDlg.Visible = False
         saveandclose
   End Select
End Sub

Sub saveandclose
'Si le document à été modifié on sauvegarde et on ferme, sinon on ferme'
Dim oDoc As Object
   oDoc = ThisComponent
   If oDoc.isModified = True Then
      oDoc.Store
      oDoc.Close(True)
   Else
      oDoc.Close(True)
   End If
'on arrête les procédures éventuellement en cours  ' 
   End
End Sub
éditer requalifier signaler fermer fusionner supprimer

Commentaires

@JBBR973 juste pour info. j'ai édité ton post pour ajouter une ' à la fin des commentaires. Ce n'est naturellement pas nécessaire en basic mais sur ce site oui pour l'interprétation du markdown.

Cordialement

Image Gravatar de pierre-yves samynpierre-yves samyn ( 2021-01-14 19:00:34 +0200 )éditer

1Réponse

0

répondue 2021-01-14 18:23:29 +0200

Image Gravatar de pierre-yves samyn

Bonjour @JBBR973

Ci-joint un exemple.

  • La procédure PysOnLoad est lancée à l'ouverture du document et au clic sur le bouton Start
  • La procédure PysOnChangeest lancée sur Contenu modifié (clic droit sur l'onglet de la feuille puis Événements)
  • La procédure PysStopest lancée au clic sur le bouton Stop
  • Aide sur la fonction GetSystemTicks
  • Fonctionnement :
    • au démarrage initialisation des variables puis lancement de la boucle d'attente
    • cette dernière est interrompue si on a cliqué Stop ou si environ 10 secondes sans modification
    • lors d'une modification du classeur on réinitialise la variable servant de test

Les boutons permettent d'arrêter/redémarrer le traitement. Utile pour la mise au point car les 10 secondes sont vite passées :)

Voir FermerSurInactif.ods

Cordialement

éditer signaler supprimer permalien plus
S'identifier/S'inscrire pour répondre

Outils de question

1 suiveurs

Stats

Posée: 2021-01-13 12:10:58 +0200

Consultée: 50 fois

Mise à jour: Jan 14