XlCalculation
Bonsoir le forum,
Une question qui me turlupine, grâce à une macro, j'ouvre un classeur 2 à partir du classeur 1.
Mais les cellules du classeur 2 qui font référence au classeur 1 ne doivent absolument pas se mettre à jour.
Quelle fonction utiliser dans ce cas?
Partout où j'ai regardé on ne parle que de RE calcul pour la fonction xlCalculation qui d'après ce que j'ai lu, ne s' applique pas à l'objet Worksheet, et je ne veux pas que les cellules se calculent à l'ouverture et on ne parle que de re-calcul.
Quelqu'un pourrait il me donner un conseil?
Merci d'avance et bonne soirée.
Cordialement
Joseph
Bonjour à tous,
Je vais essayer de relancer ce fil suite à mes nombreuses recherches.
Donc toujours la même chose : à partir du classeur 1, j'ouvre le classeur 2 situé dans une archive (2007,2008,2009, etc.)
Je ne veux pas que les formules du classeur 2 qui ont rapport au classeur 1 se mettent à jour.
J'ai donc rajouté au début du code la ligne d'instruction suivante :
Application.Calculation = xlCalculationManualet à la fin du code la ligne d'instruction :
Application.Calculation = xlCalculationAutomaticpour qu'il n'y ai pas de RE calcul des formules.
J'avoue que déjà là, RE calcul est pour moi pour le moins obscur...
Parce que RE calcul suppose le fait qu'il y ait d'abord calcul !!!
Manque de pot, ceci ne fonctionne pas.
j'ai donc rajouté en début de code :
Application.Calculation = xlCalculationManual
Worksheets("Décompte").EnableCalculation = Falseoù feuille "Décompte" est la feuille par défaut de classeur 2 (et des autres)
Et là, merveille, plus rien ne se met à jour... sauf si je rajoute en fin de code :
Worksheets("Décompte").EnableCalculation = TrueBon ceci ne me dérange pas, puisque se sont des archives que j'ouvre pour consultation uniquement.
Par contre, ce qui me dérange énormément, c'est que j'écris une instruction, et que je n'ai aucune idée de ce qui se passe!!
Si quelqu'un pouvait prendre un peu de temps pour m'expliquer.....
(Mais en plus décodé que Microsoft!)
Merci en tout cas d'avoir pris la peine de me lire
Cordialement
Joseph
Bonjour,
Ce que tu fais est équivalent à cocher l'option 'calcul manuel'.
Plus rien ne se calcule donc tes cellules ne se mettent pas à jour. F9 force un recalcul.
eric
Bonjour
Je ne connaissais pas cette propriété, merci Joseph67
C'est vrai que je ne les regarde pas trop ces propriétés des feuilles
Si j'ai bien compris, tu peux avoir ton classeur en calcul automatique et avoir une seule feuille dont le calcul est stoppé
Je viens de le tester et cela fonctionne et F9 est inefficace
Car Application.Calculation = xlCalculationManual bloque tout le classeur
Cela peut être intéressant dans certains cas, il suffit que j'y repense (et ce n'est pas gagné)
@Joseph67
Une question : A quoi te servent tes archives si tu ne peux pas les utiliser "normalement" (juste en les ouvrant avec Excel) ?
Bonjour Eric, Banzai64, le forum,
Merci pour vos réponses.
Par contre, j'avais souhaité plus d'informations sur la deuxième instruction
Worksheets("Décompte").EnableCalculation = FalseEn effet, je ne peux pas la remettre sur "True" en fin de code sans quoi des données se mettent à jour.
L'instruction
Application.Calculation = xlCalculationManualseule ne suffisait pas.
Et comme les explications de l'aide de Microsoft sont pour le moins succinctes ...
Pour te répondre Banzai64, une fois que j'ai archivé mes classeurs (sauf le classeur 1 qui les pilote) il est impératif que si on me les redemande ils soient dans l'état dans lequel je les ai donné lors de la clôture.
J'ai récemment rajouté et modifié les codes de saisie des extraits bancaires. Par exemple : avant 540 = Aide à domicile, maintenant 540 = Dettes, emprunts.
Donc si je dois revisionner ou réimprimer l'archive de 2007,2008, etc.., pour un classeur donné, il faut que l'intitulé du code 540 soit Aide à domicile et non pas l'intitulé que je viens de modifier.
Voilà pourquoi je veux bloquer les calculs.
En tout cas, encore merci de vous être intéressé à mon sujet.
Joseph
Bonjour,
En fait Application.Calculation = xlcalculationmanual bloque les calculs, sauf pour les mises à jour des données provenant d'autres fichiers.
.EnableCalculation = False bloque également ces mises à jour comme tu as pu le constater.
A tenter : tu peux recalculer et mettre à jour une plage précise avec par exemple Worksheets("ta_feuille").columns(5).calculate
Reste à voir si .EnableCalculation ne le bloque pas aussi, banzaï ayant constaté que ça bloque F9 également.
eric
Edit : j'ai lu un peu trop en diagonale. Je pensais que tu voulais mettre à jour uniquement certaines parties.
Si tu veux préserver l'intégrités de ces fichiers tu peux aussi les mettre simplement en lecture seule pour éviter tout incident.
Bonjour
Si tu veux garder tes classeurs "en l'état" lors de la sauvegarde, pourquoi garder les formules, malgré que tu saches qu'elles vont t'emmerder te gêner lors de l'ouverture dudit fichier
Tu dis que tu ouvres les fichiers pour consultation,
Donc après avoir bloqué les calculs sur la feuille
Tu lis/récupères les données qui t’intéresse
Ensuite fermes le fichier sans l'enregistrer, plus besoin de remettre la feuille en calcul
Bonjour Eric, Banzai64, le forum,
Banzai64, c'est exactement ça. Les archives sont uniquement destinées à la consultation/impression.
La feuille ("Décompte") des classeurs archivés n'a donc plus besoin d'être débloquée.
Eric, c'est donc ça la différence: .EnableCalculation = False bloque les mises à jour. C'est ce que j'avais cru deviner, mais tu m'en apporte la nécessaire confirmation.
Comment faire pour mettre les archives en lecture seule, et cela va t' il empêcher les mises à jours des données provenant de mon classeur 1 ? Je vais essayer de trouver...
Merci à vous deux pour votre aide
Je vais mettre résolu pour ce fil
Amicalement
Joseph
Bonjour,
Comment faire pour mettre les archives en lecture seule
Plusieurs possibilités :
- dans l'explorateur de fichier mettre 'lecture seule' dans les propriétés du fichier. C'est radical, pour toutes les applis.
- dans excel : 'enregistrer sous...', en haut dans 'outils / options générales..' cocher 'lecture seule recommandée' (c'est excel qui gère, pas windows)
- si tu l'ouvres par macro avec .open tu peux ajouter le paramètre readonly:=true.
eric
Bonjour Eric, le forum,
Merci pour les renseignements, je vais utiliser l'instruction dans la macro.
A bientôt
Joseph