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 :

arrêter la génération d'un évènement [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut arrêter la génération d'un évènement
    Bonjour a tous,

    Je cherche a resoudre un problème de performance dans un process. Après quelques analyses j'arrive a la conclusion que : lors de ma manipulation de tableau croisé dynamique, l'objet Pivot envoie des évènements. Jusque là rien de fou. Seulenement, il se trouve que pour un evenement particulier, il y a un code lourd et non optimisable.

    Du coup, je voulais savoir si pour un objet précis ou une liste d'evenements on pouvait "éteindre" ou arrêter momentanément l'envoie des évènements? ou sa gestion?

    L'evenement incriminé dans mon cas est : "Worksheet_PivotTableUpdate".
    J'ai regardé du coté de Raise Event et de doEvents sans succes.

    J'ai bien essayé une petite astuce du genre :
    Code Astuce tentée : 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
    Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
     
    Dim lCol As Long, lRow As Long
     
      If ActiveSheet.name = Target.Parent.name Then
     
        lCol = ActiveWindow.ActivePane.ScrollColumn:    lRow = ActiveWindow.ActivePane.ScrollRow
     
        Application.ScreenUpdating = False
     
        Call UnFreezePane(Target)
        Call FreezePane(Target)
     
        ActiveWindow.ActivePane.ScrollColumn = lCol:    ActiveWindow.ActivePane.ScrollRow = lRow
     
        Application.ScreenUpdating = True
     
      End If
    End Sub

    Si vous avez des idées je suis preneur!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Pour arrêter la gestion des évènements:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    Et pour les réactiver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True

  3. #3
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Ahhhhhh !!!!!!!!!!!!!!!!!!!!!!!!

    C'était si simple!

    Merci ça marche parfaitement maintenant!

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

Discussions similaires

  1. Génération d'événements clavier
    Par michon dans le forum Qt
    Réponses: 4
    Dernier message: 09/01/2011, 03h24
  2. [VBA-Excel] Arrêter l'événement change de la feuille Worsheet
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2007, 14h19
  3. [VB.NET]Génération d'événement
    Par Franckintosh dans le forum VB.NET
    Réponses: 10
    Dernier message: 03/11/2005, 11h34
  4. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

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