Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Enable Calculation

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fileofish

XLDnaute Occasionnel
Bonjour le forum,

Je n'ai pas vu beaucoup de topics au sujet de la fonction Enable Calculation.
J'ai un fichier que je souhaitais poster mais il fait 21MO !!!
Alors je pense que le plus simple est de vous poser la question.
Mon fichier est rempli de formules et j'ai une 50aine d'onglets.
J'ai entendu parler de la fonction enable calculation pour éviter que Excel ne recalcule tout et tout le temps.
Savez vous comment cette fonction fonctionne ? Quels sont les intérêts mais aussi les inconvénients ou problèmes qui peuvent survenir du à l’utilisation de cette fonction.

D'avance merci
Philippe
 
Re : Enable Calculation

Bonjour,

Dans x2007 sous l'onglet Formules du Ruban tu as le Groupe Calcul à partir duquel tu as différente options.
Automatique
Automatique sauf pour les tables
Manuel

Plus 2 boutons: Calculer Maintenant (Raccourci:F9) et Calculer la feuille (ALT+F9.

Essaie les différentes options puis choisis celle qui te convient le mieux.

En mode Manuel les calculs sont fait à la demande et non plus lorsqu'une valeur impliquée dans un calcul change.
Si sur une feuille tu as une formule =A1+A2 si A1 ou A2 change, ta formule, en mode manuel ne sera calculée (dont résultat ok) qu'à la prochaine demande.

A+
 
Re : Enable Calculation

Bonjour Hasco,
Merci pour ta réponse 🙂
Lorsque j'ai traduit les 2 solutions via macro automatique cela m'a donné :
- Pour le calcul de la feuille : ActiveSheet.Calculate
- Pour le calcul du classeur : Calculate

Connaitrais tu la différence entre : ActiveSheet.Calculate et WorksheetBase.EnableCalculation ou Worksheet.EnableCalculation ?

Encore merci
Philippe
 
Re : Enable Calculation

Re,

L'aide VBA excel est faite pour ça!
Worksheet.Calculate, calcule la feuille
et WorksheetBase.EnableCalculation N'existe pas! Worksheet.EnableCalculation Existe!

Extrait de l'aide:[TABLE="width: 100%"]
[TR]
[TD="align: left"]Référence du développeur Excel[/TD]
[/TR]
[TR]
[TD="align: left"]Worksheet.EnableCalculation, propriété[/TD]
[/TR]
[/TABLE]

Cette propriété a la valeur True si Microsoft Excel recalcule automatiquement la feuille de calcul quand cela est nécessaire. Elle a la valeur False si Excel ne recalcule pas la feuille. Type de données Boolean en lecture-écriture. Syntaxe
expression.EnableCalculation
expression Variable qui représente un objet Worksheet.

Remarques
Quand la valeur de cette propriété est False, vous ne pouvez pas demander un recalcul. Quand vous changez la valeur de cette propriété, de False en True, Microsoft Excel recalcule la feuille de calcul.

A+
 
Re : Enable Calculation

Re Merci-Hasco,
Dans ce cas que me conseilles-tu ?
J'ai une 50aine d'onglets (on va dire 53 pour faire simple)
- Onglet 1 à 52 qui représente les 52 semaines
- + 1 onglet base

J'ai 2 questions :
- La 1ère est pour clarifier ce que je crois avoir compris et la 2ème pour essayer de trouver une solution à mon problème.

1/ Si je mets : Worsheet ("Semaine 1"). EnableCalculation = False
Cela signifie que quelque soit le cas : il n'y aura plus de calcul sur cette feuille à moins de rechanger la propriété de la feuille ?

2/ Si je prends cette logique
Si je souhaite par exemple laisser le calcul automatique des onglets semaines à 5 à 8 uniquement est ce que cela est envisageable ? Et est ce que cela te parait correct?

For i = 1 To 52
Worhsheet("Semaine " & i).enable calculation = False
Next

For i = 5 To 8
Worhsheet("Semaine " & i).enable calculation = True
Next

Encore merci
Philippe
 
Re : Enable Calculation

Re,

Le meilleur moyen pour que tu vois la différence est que tu fasses tes tests. Bref, essaies et tu verras bien ce qui est le mieux pour toi.

Pour moi, l'aide excel est claire sur ce point:

Quand la valeur de cette propriété est False, vous ne pouvez pas demander un recalcul. Quand vous changez la valeur de cette propriété, de False en True, Microsoft Excel recalcule la feuille de calcul.

seul petit conseil :

For i = 5 To 8
with Worhsheet("Semaine " & i)
.enablecalculation = True
.Calculate
End with
Next

A+
 
Re : Enable Calculation

Hasco,

Suite à tes conseils j'ai souhaité tester mais j'ai une erreur de compilation sub ou fonction non définit

Ci dessous le code que j'ai mis :

Sub Test

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 1 To 52
Sheets("Semaine " & i).Visible = False
With Worhsheet("Semaine " & i)
.EnableCalculation = False
End With
Next

For i = 1 To 4
Sheets("Semaine " & i).Visible = True
With Worhsheet("Semaine " & i)
.EnableCalculation = True
.Calculate
End With
Next

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic


End Sub

En regardant une aide il m'a semblé avoir vu qu'il fallait y associer une Boolean ???

Ci dessous le lien:
WorksheetBase.EnableCalculation, propriété (Microsoft.Office.Tools.Excel)

public bool EnableCalculation { get; set; }
'Déclaration
Public Property EnableCalculation As Boolean


Quand j'ai essayé de déclarer ma variable cela n'a pas fonctionné

A+
 
Dernière édition:
Re : Enable Calculation

Ci dessous le lien:
Ce lien n'existe plus

public bool EnableCalculation { get; set; }
'Déclaration
Public Property EnableCalculation As Boolean


Quand j'ai essayé de déclarer ma variable cela n'a pas fonctionné
 
Re : Enable Calculation

Re,

Dernière intervention pour moi, car sans exemple, je ne pige rien à ce que tu veux faire.

Ton lien concerne vb.Net et non VBA!!!!!

De plus Traiter feuille par feuille est inutile si tu annules le calcul au niveau application

Il suffit de mettre en haut de procédure

Code:
Application.Calculation = xlCalculationManual

Puis en fin de procédure
Code:
Application.Calculation = xlCalculationAutomatic

Si tu ne veux pas qu'une feuille soit calculée, entre les deux tu mets WorkSheet("MaFeuille").EnableCalculation=False


A+
 
Dernière modification par un modérateur:
Re : Enable Calculation

Hasco,

As tu vu mon message N° 7 car j'ai posté 2 messages coup sur coup et je n'ai pas réussi à supprimer le dernier.
Le but de mon message n'est pas de te mettre de mauvaise humeur 😛 mais plutôt que tu me fasses partager tes connaissances que je n'ai pas !!

Si mes messages ne sont pas compréhensibles je reformulerai avec plaisir fais le moi savoir.

Je vais donc re formuler depuis le début
- J'ai 52 semaines
- 1 onglet base
- 1 onglet Menu

Dans l'onglet Menu j ai un menu déroulant avec les mois de janv - Déc
A chaque fois qu'un mois est activé cela me masque ou me démasque les semaines
Ex: Si je sélectionne février il me garde les semaines 5 à 8
Ma demande était comment enleverle calcul automatique sur les autres feuilles donc de la feuille 1-4 & 9-52



Suite à tes conseils j'ai souhaité tester mais j'ai une erreur de compilation sub ou fonction non définit

Ci dessous le code que j'ai mis :

Sub Test

For i = 1 To 52
Sheets("Semaine " & i).Visible = False
With Worhsheet("Semaine " & i)
.EnableCalculation = False
End With
Next

For i = 1 To 4
Sheets("Semaine " & i).Visible = True
With Worhsheet("Semaine " & i)
.EnableCalculation = True
.Calculate
End With
Next

End Sub

Merci de ta patience
Philippe
 
Re : Enable Calculation

Re,

A part les parenthèses qui manquent à Sub Test(), et Worhsheet qui est mal écrite, je ne vois pas! Mais c'est suffisant pour faire planter la compilation.

Sinon j'écrirai ton code comme ça:
Code:
Sub Test()
    For i = 1 To 52
        With Worhsheet("Semaine " & i)
            .Visible = False
            .EnableCalculation = False 'ou = .Visible
            
        End With
    Next
    For i = 1 To 4
        
        With Worhsheet("Semaine " & i)
            .Visible = True
            .EnableCalculation = True 'Ou = .Visible
            .Calculate
        End With
    Next
End Sub

utilise l'éditeur avancé des posts pour publier tes codes.

A+
 
Re : Enable Calculation

Code:
Bonjour, salut Hasco le patient 🙂
Quand manuellement ou par macro tu mets le mode de calcul sur manuel, cela s'applique à l'ensemble des classeurs ouverts, et bien entendu à toutes les feuilles de chaque classeur. Il est donc inutile de boucler sur les feuilles pour faire ça.

Si tu veux désactiver le calcul sur presque toutes tes feuilles :
dans ce cas, mets dans le module thisworkbook
Code:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub


sans oublier de remettre à auto en désactivant ou en fermant le classeur, histoire de ne pas mettre le bazar dans les autres (si tu passes le classeur à d'autres qui ne connaissent pas cel, tu risques de leur faire piquer une crise de nerfs...)

dans cette option, quand tu veux mettre le calcul sur auto sur une feuille particulière, tu peux activer ce mode dans l'événement worksheet_activate et le remettre en manuel dans le worksheet_desactivate de la feuille concernée.


A l'inverse, si tu ne dois mettre le mode manuel que sur une feuille particulière, mets le dans l'événement worksheet_activate et le remettre en auto dans le worksheet_desactivate de la feuille concernée.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
Réponses
1
Affichages
4 K
A
Réponses
2
Affichages
568
Armandb
A
K
Réponses
3
Affichages
1 K
M
  • Question Question
Réponses
12
Affichages
2 K
J
Réponses
13
Affichages
1 K
jphflo
J
L
Réponses
5
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…