Calcul automatique pour tout SAUF un classeur

choup67

XLDnaute Occasionnel
Bonjour à tous,

J'essaye de trouver une solution pour faire en sorte que le calcul automatique soit activé pour tous mes classeurs ouverts sauf un.

J'ai essayé une première piste qui consiste à dire qu'à l'ouverture du classeur "lourd", le calcule auto est désactiver.
Ensuite, si j'active un autre classeur il se réactive.

Mais ça ne fonctionne pas, puisque vu qu'il se réactive dans excel, il se réactive aussi pour le classeur "lourd".

J'ai essayé autrement en disant à chaque feuille, que lorsqu'elle est sélectionnée, elle doit calculer. Le problème, c'est que si je modifie des données sur ma feuille, elle ne s'actualisera que si je vais sur une autre feuille et que je reviens ensuite sur elle.

Quelqu'un aurait-il une idée sur la façon de procéder? j'ai trouvé ça sur le net, mais je débute en vba et je ne sais pas comment remplacer les feuilles par des classeurs. Donc exclure un classeur.
For i = 1 To Sheets.Count
If Sheets(i).Name "Toto" And Sheets(i).Name "Tata" And etc.... Then
Sheets(i).Calculate
End If
Next
Le calcule s'effectue sur toutes les feuilles sauf sur les feuilles Toto,
Tata, Etc...

Merci.
 
Dernière édition:

choup67

XLDnaute Occasionnel
Re : Calcul automatique pour tout SAUF un classeur

J'ai trouvé ça aussi :
Code:
Dim xlApp as Excel.Application
Dim xlClass as Excel.Workbook

'classeur 1
set xlApp=New Excel.Application
set xlClass=xlApp.Workbooks.open("c:\........\classeur1.xls")

' classeur 2
set xlApp =New Excel.Application
set xlClass=xlApp.Workbooks.Open("c:\.......\classeur2.xls")
..
..
..
' a la fin ne pas oublier

xlApp.Quit
set xlApp= nothing
set xlClass =Nothing

Je pense que ça pourrait coller, mais je ne sais pas où le mettre et comment le déclarer.
 

spidernono

XLDnaute Nouveau
Re : Calcul automatique pour tout SAUF un classeur

Bonjour,

Peut être une piste :

Dans l'éditeur VBA, tu vas sur "This Workbook"

Et tu mets ce code dans l'open :

Code:
Application.Calculation = xlCalculationManual

Bonne journée !
 

choup67

XLDnaute Occasionnel
Re : Calcul automatique pour tout SAUF un classeur

Bonjour Spidernono,

ça ne fonctionne pas puisque ça met tout excel en mode de calcul manuel.

J'ai trouvé ça aussi :
Code:
Sub NotCalcul()
Sheets("Feuil1").EnableCalculation = False
End Sub

Mais je ne sais pas où mettre ce code, je débute en macro.
Je pense qu'il faudrait que je mette ce code dans chaque feuille et que dans thisworkbook je fasse appel a NotCalcul, mais je ne sais pas comment faire. J'ai marqué dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
 NotCalcul
 End Sub

Mais ça ne fonctionne pas.
 

spidernono

XLDnaute Nouveau
Re : Calcul automatique pour tout SAUF un classeur

Rebonjour,

Une solution serait peut être de jouer sur l'activation ou non du classeur :

Toujours dans le classeur incriminé, on mettrait ces 2 codes :

Code:
Private Sub Workbook_Activate()
Application.Calculation = xlCalculationManual
End Sub

Private Sub Workbook_Deactivate()
Application.Calculation = xlCalculationAutomatic
End Sub

Ce qui ferait quand quand on sélectionne un autre classeur, le calcul auto se fait, et quand on le resélectionne, cela ne se fait plus.

Je sais, c'est une solution pas forcément optimum, mais bon...
 

choup67

XLDnaute Occasionnel
Re : Calcul automatique pour tout SAUF un classeur

Spidernono, j'ai déjà tenté la solution que tu proposes. Le problème, c'est que quand le calcul auto se réactive, le calcul a lieu sur TOUT les classeurs ouvert, dont celui que je ne veux pas calculer.
 

spidernono

XLDnaute Nouveau
Re : Calcul automatique pour tout SAUF un classeur

Re,

Je viens d'avoir une lueur :

Et si bêtement on faisait ceci dans l'open du classeur:

Code:
Private Sub Workbook_Open()
Dim i As Integer

For i = 1 To ThisWorkbook.Sheets.Count

Sheets(i).EnableCalculation = False

Next i


End Sub

Cela semble marcher pour moi, peux tu confirmer stp ?
 

choup67

XLDnaute Occasionnel
Re : Calcul automatique pour tout SAUF un classeur

Spidernono, ça à l'air de fonctionner, j'arrive pas y croire ! Trop fort, MERCIII

Je testerai plus en détails demain mais ça à l'air bon.

Par contre, sur ce fameux classeur où j'ai mis le code. J'ai un bouton "Actualiser" sur chaque feuille où je voudrais pouvoir actualiser la feuille en question si besoin.

j'ai mis ça :
Code:
Private Sub Recalcul_Click()
ActiveSheet.EnableCalculation = True
ActiveSheet.Calculate
End Sub

Mais j'ai l'impression qu'il recalcule tout le classeur vu la lenteur du calcul. De plus, ça me réactive le calcul sur la feuille. Si je rajoute ActiveSheet.EnableCalculation = False en dessous de ActiveSheet.Calculate, est ce que ça suffit?
 

choup67

XLDnaute Occasionnel
Re : Calcul automatique pour tout SAUF un classeur

J'ai testé en rajoutant la ligne et ça se désactive bien.

Par contre, je cherche toujours une solution pour rendre le calcul moins long. Pour le moment voici la formule que j'ai pour mon bouton "calculer".

Code:
Private Sub Recalcul_Click()
Worksheets("L13820K01384R1").EnableCalculation = True
Worksheets("L13820K01384R1").UsedRange.Columns("W:AE").Calculate
Worksheets("L13820K01384R1").EnableCalculation = False
End Sub

Je voudrais qu'il ne calcul QUE les cellules qui ont été modifiées. Mais ça ne fonctionne pas, il calcul quand même toute la feuille.

EDIT : Je crois que je sais pourquoi il recalcul tout. Mes autres cellules sont des liens vers d'autres fichiers. Donc théoriquement, mes autres fichiers peuvent avoir été modifié donc il est obligé d'aller regarder si c'est le cas, est ce bien ça?


EDIT2 : Je desespère, ça ne marche pas au final. Je tape des chiffres dans une colonne et il se met a faire des calculs de fou... :'(
 
Dernière édition:

spidernono

XLDnaute Nouveau
Re : Calcul automatique pour tout SAUF un classeur

Bonjour Shoup67,

Tout d'abord, désolé pour le retard, we prolongé, tout ça....

Alors, je viens de faire un test, juste avec ce code :

Code:
ActiveSheet.EnableCalculation = True

(fais la modif avant, je clique, et la maj se fait bien)

Et ca passe bien uniquement sur la feuille en cours (même avec des liens)

Si tu pouvais fournir un bout de fichier, ce serait utile.

Bonne Journée !
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 016
dernier inscrit
Mokson