Recalcul automatique avant enregistrement?
Fermé
jc.carrier
Messages postés
10
Date d'inscription
mercredi 4 juin 2008
Statut
Membre
Dernière intervention
16 octobre 2021
-
1 août 2015 à 08:52
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 4 août 2015 à 20:26
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 4 août 2015 à 20:26
A voir également:
- Recalcul automatique avant enregistrement?
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Message automatique thunderbird - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Avant browser - Télécharger - Navigateurs
- Gmail libellé automatique - Guide
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
1 août 2015 à 12:18
1 août 2015 à 12:18
Bonjour,
Au lieu de Open, utilises BeforeClose :
--
Cordialement
Patrice
Au lieu de Open, utilises BeforeClose :
Private Sub Workbook_BeforeClose(Cancel As Boolean) Calculate Me.Saved = True End Sub
--
Cordialement
Patrice
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 254
Modifié par eriiic le 4/08/2015 à 20:28
Modifié par eriiic le 4/08/2015 à 20:28
Bonjour,
Tu as une 1/2 douzaine d'actions qui entrainent un calculate (par exemple cliquer sur une séparation de colonne, un tri ou un filtre, etc) et par voie de conséquence saved=false
Tu pourrais surveiller Change pour mettre un flag à vrai si un changement a lieu dans une cellule et le tester à la fermeture pour mettre saved=true
Par contre certaines modif comme édition du code vba ne seront plus détectées avant fermeture.
Teste et regarde si ça peut aller
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Tu as une 1/2 douzaine d'actions qui entrainent un calculate (par exemple cliquer sur une séparation de colonne, un tri ou un filtre, etc) et par voie de conséquence saved=false
Tu pourrais surveiller Change pour mettre un flag à vrai si un changement a lieu dans une cellule et le tester à la fermeture pour mettre saved=true
Dim b_change As Boolean Private Sub Workbook_BeforeClose(Cancel As Boolean) If Not b_change Then Me.Saved = True End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) b_change = False End Sub Private Sub Workbook_Open() Calculate Me.Saved = True End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) b_change = True End Sub Sub test() Debug.Print "Saved "; Me.Saved Debug.Print "b_change "; b_change Me.Saved = True End Sub
Par contre certaines modif comme édition du code vba ne seront plus détectées avant fermeture.
Teste et regarde si ça peut aller
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
1 août 2015 à 12:20
1 août 2015 à 15:29
Ce n'est malheureusement pas la solution que je cherche : avec cette macro, si j'ai fait des modifications, je risque de les perdre car Excel ne me demandera pas si je veux sauvegarder.
Ceci dit, j'ai supposé que la proposition de réécriture était liée au recalcul avant fermeture, mais ce n'est peut-être pas le cas. Elle apparaît d'ailleurs le plus souvent, mais pas toujours. Y aurait-il autre chose qui pourrait provoquer cette demande alors que je n'ai rien modifié?
Cordialement.
Jean-Claude
Modifié par Patrice33740 le 2/08/2015 à 00:53
Tu ne peux pas avoir le beurre et l'argent du beurre !
Soit tu actives le calcul automatique, auquel cas l'utilisation des fonctions temporelles comme Aujourdhui() provoquent une réécriture périodique des résultats (même s'ils sont identiques aux précédents) et alors Saved passe à False d'où le message gênant à la fermeture.
Soit tu actives le calcul sur ordre (manuel) auquel cas seules le modifications apportées par l'utilisateur entraînent le passage de Saved à False et donc le message à la fermeture redevient pertinent . Cependant, les fonctions temporelle ne s'actualisent plus périodiquement. Peut-être que ton Calculate à l'ouverture offre une périodicité suffisante ?
Sinon tu peux peut-être provoquer un calcul périodique avec OnTime
La macro proposée permet de conserver le calcul auto et évite le message en forçant Saved à True avant la fermeture, Il faut alors penser à enregistrer chaque fois que tu modifies le fichier (c'est une solution que j'adopte régulièrement).
Une autre option serait d'enregistrer systématiquement le fichier avant la fermeture, avec les inconvénients que ça peut amener !
Patrice
4 août 2015 à 18:46
A tout prendre, je préfère encore rester avec mon message.