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 :

Application.EnableEvents = False ne marche pas !


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Points : 34
    Points
    34
    Par défaut Application.EnableEvents = False ne marche pas !
    Bonjour, je vais craquer, je ne sais pas pourquoi Application.EnableEvents = False ne marche plus chez moi


    Voici une fonction qui desactive les events avant d'appeler un code qui remplit une combobox...Cette sub est appelée d'une feuille
    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
     
    '--------------------------------------------------------------------------
    Private Sub LoadCBSupersectFilter()
    '--------------------------------------------------------------------------
        Application.EnableEvents = False
     
        Dim supersect As Range: Set supersect = Range("supersect")
        Dim supersectors As Range: Set supersectors = Range(supersect.Offset(1), supersect.End(xlDown))
        Dim combo As ComboBox
        Set combo = Me.CBSupersector
        combo.AddItem ("All")
        LoadComboboxFromRange combo, supersectors, True
     
        Application.EnableEvents = True
    End Sub
    Je redésactive meme encore une fois dans cette fonction appelée, codée dans un module, et bizarement, a la deuxieme valeur rentrée dans la combobox, un event est levé et on va donc direct dans CBSupersector_Change.
    Ce code est classique pour filtrer les doublons, on se sert de la clé d'une collection, tout marche évidement tres bien si j'enleve CBSupersector_Change...dont j'ai evidement besoin.

    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
    23
    24
     
    '--------------------------------------------------------------------------
    Public Sub LoadComboboxFromRange(combo As ComboBox, fillingcells As Range, flush As Boolean)
    '--------------------------------------------------------------------------
        Application.EnableEvents = False
     
        Dim cell As Range
     
        If flush Then
            combo.Clear
        End If
     
        For Each cell In fillingcells
            'fill the edition zone of the combo box
            combo = cell
            'combo.ListIndex = -1 if the cell value is already in the combobox
            If combo.ListIndex = -1 And cell <> "" Then
     
                combo.AddItem cell
            End If
        Next cell
     
        Application.EnableEvents = False
    End Sub
    Pitié si vous pouvez m'aider...

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonsoir,

    Application.EnableEvents ne s'applique qu'aux événements générés par l'application Excel, les classeurs et les feuilles. Les évènements des combobox ou autres controles ne sont pas impactés par cette instruction.

    Une solution de contournement consiste à déclarer une variable public et à vérifier dans les procédures concernées l'état de cette variable.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dans un module standard:
    Public EnableEvents As Boolean
     
    'Dans les procédures concernées:
    Private Sub CBSupersector_Change(..)
    If EnableEvents Then
    'code
    Else
    'autre code
    End If
    End Sub
    Cordialement,

    Tirex28/

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 50
    Points : 34
    Points
    34
    Par défaut
    Super ca marche bien
    Dans mon cas la variable public doit etre dans la feuille mais ca marche niquel maerci

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

Discussions similaires

  1. Application.EnableEvents = False
    Par pierre.watelet dans le forum Macros et VBA Excel
    Réponses: 30
    Dernier message: 10/11/2017, 17h46
  2. [XL-2003] Application.EnableEvents = False ne fonctionne pas
    Par sharox dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/03/2015, 15h20
  3. L'instruction Application.EnableEvents = False ne fonctionne pas
    Par CatherineRennes dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2012, 17h55
  4. [.NET 2 C#] EnabledViewstate=false ne marche pas
    Par gdkenny dans le forum ASP.NET
    Réponses: 9
    Dernier message: 28/06/2007, 10h53
  5. TabSheet avec enabled à false ne marche pas?
    Par codial dans le forum Delphi
    Réponses: 8
    Dernier message: 06/03/2007, 12h46

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