Bloquer des formules

  • Initiateur de la discussion Initiateur de la discussion mcj1997
  • Date de début Date de début

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 !

mcj1997

XLDnaute Accro
Bonjour,

Je posséde un fichier avec un grand nombre de feuilles, avec sur ces feuilles beaucoup de formules. Toutes les feuilles ne me servent pas mais qu'au fil de l'eau.

Ma question : pour les feuilles qui ne servent pas est-il possible de désactiver les formules afin que l'ouverture du fichier soit plus rapide ?

Merci d'avance,
 
Re : Bloquer des formules

Bonjour,
Je ne sais pas si c'est faisable pour chacune des feuilles, mais en VBA tu peux forcer excel à passer en mode Calcul sur Ordre.
Code:
sub auto_open()
application.Calculation = xlCalculationManual
end sub

Ensuite tu recalcules, au moment voulu, en apuyant sur la touche "F9"

Bonne continuation
 
Re : Bloquer des formules

Bonjour,

Comme l'a dit PrinceCorwin, on ne peut rien faire d'autre que modifier le mode de calcul (automatique ou sur ordre).

Et ceci pour toutes les feuilles de n'importe quel classeur : c'est l'application Excel qui est modifiée.

C'est facile à vérifier.

A+
 
Re : Bloquer des formules

Bonjour Gérard, le fil 🙂,
Comme l'a dit PrinceCorwin, on ne peut rien faire d'autre que modifier le mode de calcul (automatique ou sur ordre).

Et ceci pour toutes les feuilles de n'importe quel classeur : c'est l'application Excel qui est modifiée.
A priori, non, Bernard pense le contraire ICI 😛.
Je n'ai pas testé, mais je pense qu'il doit avoir raison 🙄...
Donc à tester dans ThisWorkbook
Code:
Private Sub Workbook_Open()
Dim Feuille As Worksheet
For Each Feuille In ThisWorkbook.Worksheets
Feuille.EnableCalculation = False
Next Feuille
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.EnableCalculation = True
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
Sh.EnableCalculation = False
End Sub
Bonne suite 😎
 
Re : Bloquer des formules

Re,

Finalement, mettez ces 2 macros dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
Application.Calculation = xlManual 'sur ordre
ActiveSheet.Calculate 'seule la feuille active est calculée
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.Calculate 'à chaque activation d'une feuille
End Sub
Je pense que cela doit correspondre à ce que vous souhaitez.

Edit : salut Jean-Noël 🙂 tu dois avoir raison (je n'ai jamais utilisé cette propriété).

A+
 
Dernière édition:
Re : Bloquer des formules

merci je vais tester


Re,

Finalement, mettez ces 2 macros dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
Application.Calculation = xlManual 'sur ordre
ActiveSheet.Calculate 'seule la feuille active est calculée
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Sh.Calculate 'à chaque activation d'une feuille
End Sub
Je pense que cela doit correspondre à ce que vous souhaitez.

Edit : salut Jean-Noël 🙂 tu dois avoir raison (je n'ai jamais utilisé cette propriété).

A+
 
Re : Bloquer des formules

Je viens de tester et m'aperçois que c'est perfectible, en effet j'ai aussi des liens vers d'autres fichiers pour lesquels je ne veux pas pas que la requête se fasse car c'est long et inutile dans mon programme car il s'agit de formules qui devront fonctionner dans les mois à venir mais que j'ai rentrées pour me faire de l'avance afin de ne pas les rentrer mois par mois.

Merci d'avance,
 
Re : Bloquer des formules

J'ai essayé la solution de JOB, cela fonctionne ; en fait ce n'est pas la réponse qui est perfectible mais ma demande évolue suite à l'essai car comme je le précise mon soucis de lenteur à l'ouverture viens aussi du fait que tous les liens se font même ceux pour les mois à venir dont je n'ai pas besoin et qui tournent donc pour rien.


Je viens de tester et m'aperçois que c'est perfectible, en effet j'ai aussi des liens vers d'autres fichiers pour lesquels je ne veux pas pas que la requête se fasse car c'est long et inutile dans mon programme car il s'agit de formules qui devront fonctionner dans les mois à venir mais que j'ai rentrées pour me faire de l'avance afin de ne pas les rentrer mois par mois.

Merci d'avance,
 
Re : Bloquer des formules

Re,

En ce qui concerne ma méthode - je m'appelle Gérard...

Si les formules de liaisons, dans toutes les feuilles, sont dans une plage déterminée, par exemple A1:C10, on peut calculer seulement les cellules qui ne sont pas dans cette plage.

Toujours dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Dim cel As Range
Application.Calculation = xlManual 'sur ordre
On Error Resume Next 'si aucune formule
For Each cel In Cells.SpecialCells(xlCellTypeFormulas)
  If Intersect(cel, [A1:C10]) Is Nothing Then cel.Calculate
Next
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim cel As Range
On Error Resume Next 'si aucune formule
For Each cel In Cells.SpecialCells(xlCellTypeFormulas)
  If Intersect(cel, [A1:C10]) Is Nothing Then cel.Calculate
Next
End Sub
A+
 
Re : Bloquer des formules

Non ce n'est pas possible car toutes les formules sont dans les mêmes cases car en fait pour faire mon programme j'ai fait une feuille avec les formules et liaison et j'ai fait des copies pour toutes les autres semaines et mois de l'année ainsi toutes les formules sont toujours au même endroit autant celles que je souhaite activer que celles que je ne souhaite pas.

Merci
 
Re : Bloquer des formules

Re,

Suite...Il faut sans doute rajouter Application.CalculateBeforeSave = False :

Code:
Private Sub Workbook_Open()
Dim cel As Range
Application.Calculation = xlManual 'sur ordre
Application.CalculateBeforeSave = False 'décoche Recalcul avant enregistrement
On Error Resume Next 'si aucune formule
For Each cel In Cells.SpecialCells(xlCellTypeFormulas)
  If Intersect(cel, [A1:C10]) Is Nothing Then cel.Calculate
Next
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim cel As Range
On Error Resume Next 'si aucune formule
For Each cel In Cells.SpecialCells(xlCellTypeFormulas)
  If Intersect(cel, [A1:C10]) Is Nothing Then cel.Calculate
Next
End Sub
A+
 
- 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

Réponses
6
Affichages
321
  • Question Question
XL 2019 B
Réponses
10
Affichages
658
  • Question Question
XL 2016 liste
Réponses
10
Affichages
386
D
  • Question Question
Réponses
5
Affichages
250
Didierpasdoué
D
Retour