Empecher l'exécution des macros sur ouverture auto

yuplop

XLDnaute Nouveau
Bonjour,

A l'aide d'un formulaire, je remplis automatiquement deux classeurs. Pas de soucis pour le premier, mais lors de l'ouverture du second, les macros de celui-ci ce mettent en route et je suis bon pour attendre un bon moment avant de pouvoir faire qqch.

C'est la fonction ci-dessous qui ralentis le tout:
Code:
Function SommeSiCouleur(Plage As Range, NumeroDeCouleur%) As Double
Application.ScreenUpdating = False
Application.Volatile True
Dim wCell As Range
For Each wCell In Plage
If wCell.Interior.ColorIndex = NumeroDeCouleur Then
SommeSiCouleur = SommeSiCouleur + wCell.Value
End If
Next
End Function

J'ai essayé ça:
Code:
If MsgBox("Voulez-vous exécuter la macro d'ouverture du classeur 'TABLEAUX AVANCEMENT.xlsm' ?", vbYesNo + vbQuestion, "Lancement macro.") = vbNo Then
    Exit Function
End If

Malheureusement, que je clique sur "oui" ou "non", le msgbox se recharge toujours (donc obligé de killer le processus Excel pour pouvoir en sortir).
 

pierrejean

XLDnaute Barbatruc
Bonjour yuplop
A tester:
Dans le Module ThisWorkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Calculation = xlCalculationManual
End Sub
Tu pourras ensuite remettre en calcul Automatique par
Code:
Application.Calculation =xlCalculationAutomatic
 

yuplop

XLDnaute Nouveau
J'ai fait les manipulations et le résultat est le même.

La fonction " SommeSiCouleur" étant appliqué à de nombreuses cellule (24 en tout pour chacun des 4 onglets du classeur (donc 96 sur l'ensemble du classeur)), les calculs durent un long moment.

merci de votre aide,
 

yuplop

XLDnaute Nouveau
J'ai rajouté dans le Module ThisWorkbook:
Code:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub

Il y a un truc que je ne comprend pas:
Quand j'ouvre le fichier directement, tous se passe bien: les macros ne fonctionne que manuellement. Par contre, lorsque le fichier s'ouvre automatiquement (par appel d'un autre fichier), on repart sur un système de calcul automatique ...
 

yuplop

XLDnaute Nouveau
C'est bon, j'ai compris mon erreur (pour ceux que ça intéresse ...).

Le code suivant fonctionne bien:
Code:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub

Mon problème venait de mon autre classeur qui appelait le second. A force d'essayer des trucs, j'avais oublié d'enlever:
Code:
Application.EnableEvents = False

Une fois l'erreur corrigée, tout fonctionne comme voulu.

Merci à tous pour l'aide apportée
 

Discussions similaires

Réponses
13
Affichages
1 K

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote