[Résolu][Calc] Enregistrer une copie à la fermeture
Modérateur : Vilains modOOs
Règles du forum
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 !

Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
[Résolu][Calc] Enregistrer une copie à la fermeture
Bonjour à toutes et tous,
J'ai un tableau qui se trouve dans un dossier accessible qu'à certaines personnes de mon entreprise.
J'aimerai que lorsque je ferme ce fichier, une copie se créée automatiquement dans un autre dossier accessible à tout le monde.
L'option de sauvegarde automatique ne m'intéresse pas, puisque je ne veux sauvegarder que ce fichier.
J'ai donc pensé à une macro qui se déclencherait au moment où je ferme mon fichier.
Malheureusement, je ne sais pas programmer une telle macro. De plus, est ce que cela écraserait automatiquement l'ancienne copie ?
Merci pour votre aide.
J'ai un tableau qui se trouve dans un dossier accessible qu'à certaines personnes de mon entreprise.
J'aimerai que lorsque je ferme ce fichier, une copie se créée automatiquement dans un autre dossier accessible à tout le monde.
L'option de sauvegarde automatique ne m'intéresse pas, puisque je ne veux sauvegarder que ce fichier.
J'ai donc pensé à une macro qui se déclencherait au moment où je ferme mon fichier.
Malheureusement, je ne sais pas programmer une telle macro. De plus, est ce que cela écraserait automatiquement l'ancienne copie ?
Merci pour votre aide.
Dernière modification par micmac le 09 nov. 2024 10:09, modifié 2 fois.
Raison : Ajout de la balise [Résolu]. La coche verte seule ne suffit pas.
Raison : Ajout de la balise [Résolu]. La coche verte seule ne suffit pas.
LibreOffice 7.1.3.2 - Windows 10
-
- IdOOle de la suite
- Messages : 25964
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Enregistrer une copie à la fermeture
Salut,
Ensuite s'il s'agit de conserver l'original du fichier, il n'y a pas besoin de codage.
Il suffit d'enregistrer le document comme modèle (OTS).
Renseigne toi d'abord auprès de ton service informatique pour savoir si l'exécution de macro est autorisée sur les disques réseau.
Ensuite s'il s'agit de conserver l'original du fichier, il n'y a pas besoin de codage.
Il suffit d'enregistrer le document comme modèle (OTS).
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Calc] Enregistrer une copie à la fermeture
Merci pour cette réponse.
Le modèle OTS ne fonctionnera pas de manière naturelle, car s'agissant d'un tableau de congés, l'original évolue à chaque fois qu'on y ajoute des choses. A moins que je ne connaisse pas un manip' spécifique, il faudrait donc ouvrir le fichier, le modifier, le sauvegarder une première fois en tant que modèle, puis une seconde fois comme fichier ''normal''.
En plus, comme je ne suis pas le seul à avoir la main dessus tout le monde ne jouera pas le jeu !
C'est ok pour l'usage de macros.
J'aimerai donc automatiser la tâche, svp
Le modèle OTS ne fonctionnera pas de manière naturelle, car s'agissant d'un tableau de congés, l'original évolue à chaque fois qu'on y ajoute des choses. A moins que je ne connaisse pas un manip' spécifique, il faudrait donc ouvrir le fichier, le modifier, le sauvegarder une première fois en tant que modèle, puis une seconde fois comme fichier ''normal''.
En plus, comme je ne suis pas le seul à avoir la main dessus tout le monde ne jouera pas le jeu !
C'est ok pour l'usage de macros.
J'aimerai donc automatiser la tâche, svp
LibreOffice 7.1.3.2 - Windows 10
-
- IdOOle de la suite
- Messages : 25964
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Enregistrer une copie à la fermeture
Tu peux déjà te servir de la fonction SaveAs du dispatcher comme indiqué ici : viewtopic.php?t=16128
Il faudra d'abord s'assurer que le nom du document est unique et n'existe pas déjà dans le répertoire.
Pour faire cela à la fermeture du document, brancher la macro sur l'événement qui va bien dans le menu Outils > Personnaliser :
Il faudra d'abord s'assurer que le nom du document est unique et n'existe pas déjà dans le répertoire.
Pour faire cela à la fermeture du document, brancher la macro sur l'événement qui va bien dans le menu Outils > Personnaliser :
A noter que le tableur n'est pas un outil de planning
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Calc] Enregistrer une copie à la fermeture
De nouveau, merci pour cette réponse.
J'ai regardé le lien que tu donnes. Je vais me dépatouiller avec ça ^^
Je pense que c'est la fonction que je cherchais.
Pour ta note sur le fait qu'un tableur n'est pas un outil de planning, je suis entièrement d'accord avec toi.
Mais chez nous, il est difficile, voir quasi impossible de faire changer les mentalités, et la règle la plus importante est ''dis moi de quoi tu as besoin, je te dirais comment t'en passer !''... du coup, on s'adapte. (après c'est pas trop compliqué, c'est juste indiquer les jours où les collègues doivent bosser ou pas, et si ils ont posé ou pas. En gros, un calendrier avec les présents et les absents.)
J'ai regardé le lien que tu donnes. Je vais me dépatouiller avec ça ^^
Je pense que c'est la fonction que je cherchais.
Pour ta note sur le fait qu'un tableur n'est pas un outil de planning, je suis entièrement d'accord avec toi.
Mais chez nous, il est difficile, voir quasi impossible de faire changer les mentalités, et la règle la plus importante est ''dis moi de quoi tu as besoin, je te dirais comment t'en passer !''... du coup, on s'adapte. (après c'est pas trop compliqué, c'est juste indiquer les jours où les collègues doivent bosser ou pas, et si ils ont posé ou pas. En gros, un calendrier avec les présents et les absents.)
LibreOffice 7.1.3.2 - Windows 10
-
- SuppOOrter
- Messages : 1480
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Calc] Enregistrer une copie à la fermeture
Bonsoir,
A mon sens, il vaut mieux faire une copie qu'une sauvegarde pour éviter de changer le nom du fichier. Le fichier original ne serait plus enregistré, et ça risquerait de faire le bazar !!
De plus il faudra gérer l'erreur dans le cas où le fichier destination est ouvert par quelqu'un
Je peux proposer quelque chose dans ce sens demain soir.
Bonne soirée,
A mon sens, il vaut mieux faire une copie qu'une sauvegarde pour éviter de changer le nom du fichier. Le fichier original ne serait plus enregistré, et ça risquerait de faire le bazar !!
De plus il faudra gérer l'erreur dans le cas où le fichier destination est ouvert par quelqu'un

Bonne soirée,
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Calc] Enregistrer une copie à la fermeture
@jeanmi2403 Merci pour ta réponse.
Je n'ai pas compris le sens de ta phrase : ''il vaut mieux faire une copie qu'une sauvegarde''
En fait, ce que je cherche c'est qu'au moment où j'enregistre mon fichier original, une macro en copie un autre identique dans un autre répertoire en même temps.
Ce n'est pas ça qu'il faut faire ?
Je n'ai pas compris le sens de ta phrase : ''il vaut mieux faire une copie qu'une sauvegarde''
En fait, ce que je cherche c'est qu'au moment où j'enregistre mon fichier original, une macro en copie un autre identique dans un autre répertoire en même temps.
Ce n'est pas ça qu'il faut faire ?
LibreOffice 7.1.3.2 - Windows 10
-
- IdOOle de la suite
- Messages : 25964
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Enregistrer une copie à la fermeture
Aucune importance puisque la macro s'exécute sur la fermeture du document.jeanmi2403 a écrit : ↑07 nov. 2024 17:35 A mon sens, il vaut mieux faire une copie qu'une sauvegarde pour éviter de changer le nom du fichier. Le fichier original ne serait plus enregistré, et ça risquerait de faire le bazar !!
Code : Tout sélectionner
Sub SauveMoi
GlobalScope.BasicLibraries.loadLibrary("Tools")
'récupération des infos pour le nouveau nom
oDoc = ThisComponent()
sURL = oDoc.URL
sDoc = GetFileNameWithoutExtension(sURL)
sTampon = Year(now())& _
Format(Month(now()),"00")& _
Format(Day(now()),"00") & "-" & _
Format(Hour(now()),"00") & _
Format(Minute(now()),"00") & _
Format(Second(now()),"00")
sCopie = sDoc & "_" & sTampon & ".ods"
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem Enregistrement du nouveau fichier
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = sCopie
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
End Sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Calc] Enregistrer une copie à la fermeture
Bon, tu m'as maché le travail. Merci !
Je regarde ça ce week-end pour comprendre fonctionne cette macro, et je reviens vers toi si je n'arrive pas à la mettre en place (il faut que je vois comment on vise le répertoire souhaité).
Merci beaucoup pour votre aide.
Je regarde ça ce week-end pour comprendre fonctionne cette macro, et je reviens vers toi si je n'arrive pas à la mettre en place (il faut que je vois comment on vise le répertoire souhaité).
Merci beaucoup pour votre aide.
LibreOffice 7.1.3.2 - Windows 10
-
- SuppOOrter
- Messages : 1480
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Calc] Enregistrer une copie à la fermeture
Bonsoir,
Comme promis, une solution (sans le Dispatcher) où tu peux définir le dossier de destination.
Le fichier de destination porte le même nom que l'original.
On enregistre le fichier s'il ne l'a pas encore été, pour être sûr que les dernières modifications sont bien dans le fichier destination.
Bonne soirée
Comme promis, une solution (sans le Dispatcher) où tu peux définir le dossier de destination.
Le fichier de destination porte le même nom que l'original.
On enregistre le fichier s'il ne l'a pas encore été, pour être sûr que les dernières modifications sont bien dans le fichier destination.
Code : Tout sélectionner
Sub CopieFermeture
Dim oDoc as Object
Dim sNomDocSource as String
Dim sNomDocDestination as String, sURLDestination as String
GlobalScope.BasicLibraries.loadLibrary("Tools")
sDossierDestination = "D:\Exemples\"
oDoc = ThisComponent
' Enregistrement du fichier original si ce n'est pas encore fait
If oDoc.IsModified Then
oDoc.Store
EndIf
' Extraire le nom du document
sNomDocSource = FileNameoutofPath( oDoc.URL , "/")
' Créer le nom complet du fichier destination
sURLDestination = ConvertToURL(sDossierDestination & sNomDocSource)
FileCopy (oDoc.URL, sURLDestination)
End Sub
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Calc] Enregistrer une copie à la fermeture
Bonjour à tous,
tout d'abord, encore un grand merci pour votre aide.
J'ai opté pour la solution de @jeanmi2403 qui est plus compréhensible pour moi, et qui fait parfaitement le boulot.
Vous êtes au top et très réactifs. C'est super agréables.
Je passe en ''résolu''
Merci mille fois.
tout d'abord, encore un grand merci pour votre aide.
J'ai opté pour la solution de @jeanmi2403 qui est plus compréhensible pour moi, et qui fait parfaitement le boulot.
Vous êtes au top et très réactifs. C'est super agréables.
Je passe en ''résolu''
Merci mille fois.
LibreOffice 7.1.3.2 - Windows 10
-
- IdOOle de la suite
- Messages : 25964
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Calc] Enregistrer une copie à la fermeture
Cette macro sauvegarde le document même si l'utilisateur ferme sans vouloir garder ses modifications.
Et franchement, je me demande si tu as réellement testé car je constate que tu n'as même pas pris la peine de télécharger le classeur.

-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Résolu][Calc] Enregistrer une copie à la fermeture
Salut Dude,
Je ne voulais pas te froisser, et je n'ai jamais dit que ta macro ne fonctionnait pas !
Dans la mesure du possible, j'essaie de comprendre un minimum ce que j'utilise.
Je ne suis pas informaticien, et mes connaissances sont assez basiques.
Dans ta macro, je ne comprends absolument pas comment je choisis où la copie du fichier va s'enregistrer.
N'ayant pour le moment pas le temps de reprendre toute ta macro et de l'analyser ligne par ligne en effectuant les recherches sur internet pour apprendre chaque fonction, j'ai opté pour celle de jeanmi20403 qui fait le job.
Mais je te remercie grandement pour le temps et l'aide que tu m'as tout de même apporté.
Je ne voulais pas te froisser, et je n'ai jamais dit que ta macro ne fonctionnait pas !
Dans la mesure du possible, j'essaie de comprendre un minimum ce que j'utilise.
Je ne suis pas informaticien, et mes connaissances sont assez basiques.
Dans ta macro, je ne comprends absolument pas comment je choisis où la copie du fichier va s'enregistrer.
N'ayant pour le moment pas le temps de reprendre toute ta macro et de l'analyser ligne par ligne en effectuant les recherches sur internet pour apprendre chaque fonction, j'ai opté pour celle de jeanmi20403 qui fait le job.
Mais je te remercie grandement pour le temps et l'aide que tu m'as tout de même apporté.
LibreOffice 7.1.3.2 - Windows 10
-
- SuppOOrter
- Messages : 1480
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Calc] Enregistrer une copie à la fermeture
Salut,
De plus ta macro ne répond pas au "cahier des charges" :
Et je n'aime pas utiliser le dispatcher quand je peux faire autrement, c'est plus compréhensible(à mon sens) pour les personnes qu'on aide.
Je rajoute un truc, car il n'est pas possible d'écrire le fichier si la destination est ouverte par un autre.
Voici donc les dernières lignes à rajouter en fin de procédure (remplacent la dernière ligne)
A plus,
C'est juste un "bonus". Il y aura trois lignes (faciles à identifier) à retirer si cela ne lui convient pas.
De plus ta macro ne répond pas au "cahier des charges" :
car elle copie le fichier sous un autre nom dans le même dossier.hudssan a écrit : une copie se créée automatiquement dans un autre dossier
Et je n'aime pas utiliser le dispatcher quand je peux faire autrement, c'est plus compréhensible(à mon sens) pour les personnes qu'on aide.
Je rajoute un truc, car il n'est pas possible d'écrire le fichier si la destination est ouverte par un autre.
Voici donc les dernières lignes à rajouter en fin de procédure (remplacent la dernière ligne)
Code : Tout sélectionner
On Error Goto TraiteErreur
FileCopy (oDoc.URL, sURLDestination)
MsgBox ("Fichier copié", MB_ICONINFORMATION, "Copie")
Exit Sub
TraiteErreur:
MsgBox ("Fichier occupé ou chemin introuvable", MB_ICONSTOP,"Copie")
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
-
- NOOuvel adepte
- Messages : 15
- Inscription : 17 nov. 2022 16:40
Re: [Résolu][Calc] Enregistrer une copie à la fermeture
Ok, merci.
Je remplace la dernière ligne de la macro pour le block entier ?
à la place de
?
Je remplace la dernière ligne de la macro pour le block entier ?
à la place de
Code : Tout sélectionner
FileCopy (oDoc.URL, sURLDestination)
LibreOffice 7.1.3.2 - Windows 10
-
- SuppOOrter
- Messages : 1480
- Inscription : 18 janv. 2008 09:02
- Localisation : Val de Marne
Re: [Résolu][Calc] Enregistrer une copie à la fermeture
Exact.hudssan a écrit : ↑09 nov. 2024 20:57 Je remplace la dernière ligne de la macro pour le block entier ?
à la place deCode : Tout sélectionner
FileCopy (oDoc.URL, sURLDestination)
C'est pour le cas où l'instruction filecopy échoue, le message est personnalisé et la macro ne plante pas.
Good night,
Jean-Michel
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
LibO 24.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX