Recalcul automatique avant enregistrement?
jc.carrier
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais éviter d'avoir un message proposant l'enregistrement du classeur quand je n'ai rien modifié.
Ce classeur fait appel à la date du jour qui modifie donc certaines cellules. Il y a un calcul automatique à l'ouverture que je contre par une macro dans ThisWorkbook :
Private Sub Workbook_Open()
Calculate
Me.Saved = True
End Sub
Je me retrouve donc avec un classeur censé ne pas avoir été modifié. Pourtant, à la fermeture, même si je n'ai rien modifié entre temps, j'ai un message me proposant une réécriture du fichier. J'imagine que le recalcul à la fermeture déclenche ce message? Je voudrais donc l'éliminer sans pour autant passer en recalcul manuel pour que les recalculs se fassent en temps réel si je fais des modifications.
Quelqu'un a-t-il une solution?
Merci.
<
config>Windows XP / Chrome 44.0.2403.125</config>
Je voudrais éviter d'avoir un message proposant l'enregistrement du classeur quand je n'ai rien modifié.
Ce classeur fait appel à la date du jour qui modifie donc certaines cellules. Il y a un calcul automatique à l'ouverture que je contre par une macro dans ThisWorkbook :
Private Sub Workbook_Open()
Calculate
Me.Saved = True
End Sub
Je me retrouve donc avec un classeur censé ne pas avoir été modifié. Pourtant, à la fermeture, même si je n'ai rien modifié entre temps, j'ai un message me proposant une réécriture du fichier. J'imagine que le recalcul à la fermeture déclenche ce message? Je voudrais donc l'éliminer sans pour autant passer en recalcul manuel pour que les recalculs se fassent en temps réel si je fais des modifications.
Quelqu'un a-t-il une solution?
Merci.
<
config>Windows XP / Chrome 44.0.2403.125</config>
A voir également:
- Recalcul automatique avant enregistrement?
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Avant browser - Télécharger - Navigateurs
2 réponses
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
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
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
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
A tout prendre, je préfère encore rester avec mon message.