Empecher l'exécution des macros sur ouverture auto

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.

J'ai essayé d'utiliser:

Application.EnableEvents = False

mais je dois m'y prendre mal, car ça ne fait absolument rien.

Mon code:

 With ThisWorkbook.Worksheets("Clients")
    dateref = .Range("B17")
    Copie(0) = .Range("B4")
    For i = 1 To 6
            Copie(i) = .Range("A" & i + 15)
            montant(i) = .Range("C" & i + 15)
    Next i
    k = 6
    For j = 7 To 33
        If (.Range("B" & j + 17)) <> "" Then
            k = k + 1
            Copie(k) = .Range("A" & j + 17)
            montant(k) = .Range("D" & j + 17)
        End If
    Next j
End With

Application.EnableEvents = False
Workbooks.Open "C:\Users\XXXXX\Desktop\Ent\TABLEAUX AVANCEMENT.xlsm"
y = Year(dateref)

.....

Dans le code ci-dessus, je récupère des valeurs d'un premier doc, et j'ouvre un second (celui avec les macros) de façon à pouvoir les insérer.

Il faudrait vraiment que les macros ne se lancent pas lorsque le fichier "TABLEAUX AVANCEMENT.xlsm" s'ouvre.

Merci pour votre aide

Bonjour,

Une piste à tester, tu peux demander si la macro d'ouverture doit être exécutée ou pas !

A mettre dans le classeur "TABLEAUX AVANCEMENT.xlsm" en tout début de code de l'évènement "Workbook_Open" :

Private Sub Workbook_Open()

    If MsgBox("Voulez-vous exécuter la macro d'ouverture du classeur 'TABLEAUX AVANCEMENT.xlsm' ?", vbYesNo + vbQuestion, "Lancement macro.") = vbNo Then Exit Sub

    'ici le code qui est exécuté à l'ouverture du classeur...
    '...
    '...

End Sub

En fait, c'est la fonction ci-dessous appliquer à plusieurs endroit sur différents onglets qui ralentis le tout:

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

Je ne vois pas comment empêcher l'exécution d'une fonction ...

Up

J'ai essayé:

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).

J'ai tenté une nouvelle chose:

J'ai rajouté dans le Module ThisWorkbook:

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 ...

Help

le module ThisWorkbook n'est pas pris en compte en cas d'ouverture automatique ... (testé avec un msgbox...)

Savez vous pourquoi et comment y remédier?

Bonsoir,

Normalement, la procédure "Workbook_Open" est exécutée dès l'ouverture du classeur que ce soit de façon manuelle ou automatique à moins qu'il y est une particularité que j'ignore !!!

C'est pourtant le résultat obtenu.

N'étant pas sûr de mon analyse, j'ai mis un msgbox("Bonjour") dans le module ThisWorkbook.

Résultat: En ouverture manuelle, j'ai bien le message qui apparait et les macros se lancent manuellement. Par contre, quand ce même document est appelé via "Workbooks.Open "C:\Users\XXXXX\Desktop\Ent\TABLEAUX AVANCEMENT.xlsm"", pas de message et les macros se lancent automatiquement.

Re,

Juste une petite question, la macro est bien sur "Open" et non sur "Activate" ou autres ("SheetActivate", "SheetCalculate", etc...) ?

C'est bien "open"

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

Le code suivant fonctionne bien:

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:

Application.EnableEvents = False

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

Merci à tous pour l'aide apportée

Rechercher des sujets similaires à "empecher execution macros ouverture auto"