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 :

Problème déclenchement sous-macro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut Problème déclenchement sous-macro
    Bonjour à tous,
    J'ai créé un userform qui comporte des listes déroulantes qui se rafraîchissent en cascade. C'est à dire qu'en fonction du choix des listes en amont, la listbox en cours met à jour sa liste en filtrant les différents choix déjà sélectionnés (ex: si Renault sélectionné en amont, la liste n'affiche que "Clio, Mégane, Laguna...) par contre, si pas de constructeur spécifique sélectionné, il affiche toutes les versions "207, Clio, C4, 508....).

    Pour auto-alimenter et filtrer ces listbox, j'utilise les macros Change (sur changement de valeur) et Enter (reception focus).

    Mon problème vient du fait que lorsque je veux effacer toutes les sélections en cours, en faisant pour chaque liste un .clear, vba exécute sur chaque liste la macro Change!

    Ma question est: savez-vous comment désactiver temporairement les macros événementielles le temps de faire un clear sur chaque liste pour éviter de boucler sur des sous-macros, qui peuvent redéclencher d'autres sous-macros et qui ralentit la macro initiale?

    Merci d'avance pour vos conseils éclairés.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Dans un 'Unserform' la fonction 'Application.EnableEvents=False' ne fonctionne pas.

    Il faut donc passer par une variable globale comme l'exemple ci-dessous avec deux 'ListBox':
    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
    Option Explicit
     
    Public bolTemp As Boolean
     
    Private Sub ComboBox1_Change()
      bolTemp = True
      Me.ComboBox2.Value = 1
      bolTemp = False
    End Sub
     
    Private Sub ComboBox2_Change()
      If bolTemp = True Then Exit Sub
    End Sub
     
    Private Sub UserForm_Initialize()
      Me.ComboBox1.List = Array(1, 2, 3, 4)
      Me.ComboBox2.List = Array(1, 2, 3, 4)
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut
    Merci de ta réponse rapide
    Je teste et te tiens au courant

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 8
    Par défaut Ok
    Ok ça marche!
    Merci encore

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

Discussions similaires

  1. [débutante] problème affichage sous Firefox
    Par silversky dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/09/2005, 13h58
  2. Problème police sous IE
    Par rellik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/08/2005, 20h12
  3. .htaccess problème création sous windows
    Par Leviathan_72 dans le forum Apache
    Réponses: 2
    Dernier message: 18/05/2005, 20h29
  4. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44
  5. ContextMenu de l'explorer: Problème de sous menu
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 26/02/2004, 08h06

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