IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Empecher l'exécution des macros sur ouverture auto


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 34
    Points
    34
    Par défaut 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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    mais je dois m'y prendre mal, car ça ne fait absolument rien.

    Mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     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

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Voir ma proposition sur l'autre forum !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    En fait, c'est la fonction ci-dessous appliquer à plusieurs endroit sur différents onglets qui ralentis le tout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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 ...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    J'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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?

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Citation Envoyé par ogichi Voir le message
    le module ThisWorkbook n'est pas pris en compte en cas d'ouverture automatique ... (testé avec un msgbox...)
    Faux, tout dépend du ThisWorkbook.

    ThisWorkbook, c'est le classeur qui contient la macro. C'est bien clair qu'une macro dans le ThisWorkook du classeur A n'est pas utilisée automatiquement à l'ouverture du classeur B
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    Le ThisWorkbook en question est bien dans le classeur B qui s'ouvre ...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 60
    Points : 34
    Points
    34
    Par défaut
    C'est bon, j'ai compris mon erreur (pour ceux que ça intéresse ...).

    Le code suivant fonctionne bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    Une fois l'erreur corrigée, tout fonctionne comme voulu.

    Merci à tous pour l'aide apportée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Peux-t'on exécuter des macros excel sans installer excel
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/09/2006, 01h49
  2. Peux-t'on exécuter des macros excel avec Open Office
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/09/2006, 22h30
  3. comment forcer l'exécution des macros pour une seule base ?
    Par tristan_sauvage dans le forum Access
    Réponses: 4
    Dernier message: 21/08/2006, 11h59
  4. Problême d'exécution des servlets sur tomcat
    Par naima2005 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 07/05/2006, 07h54
  5. Réponses: 2
    Dernier message: 18/11/2005, 21h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo