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 :

Empêcher les macros de mise à jour [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Voilà, j'ai fait un userform avec plusieurs contrôles, Textbox, Combobox, etc.
    Certains de ces contrôles ont une macro associé de type Private Sub ComboBox2_Change, par exemple.

    J'ai fait un bouton qui me permet d'effacer toutes les données dans les contrôles que je souhaire remettre à zéro.

    Et c'est là où je coince : quand la macro d'effacement modifie un contrôle, la macro associée est lancée ... et, bien sûr, ça met le bazar
    Ma question est donc : existe-t-il une fonction permettant d'éviter le lancement de la Private Sub ComboBox2_Change ? Un truc du genre Application.EnableEvents =False ...

    Grand merci pour le coup de main !

    Bon, j'ai pallié au problème en rajoutant en début de macro

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub ComboBox2_Change() 'Process
            If Me.ComboBox2.ListIndex = -1 Then Exit Sub
    Mais je reste toujours intéressé si quelqu'un à une solution à proposer car ça m'arrive souvent d'avoir ce souci et je n'ai jamais trouvé de solution élégante ... surtout quand il y a plusieurs dizaines de contrôles concernés.

    Encore merci !

  2. #2
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    La propriété EnableEvents de l'objet Application ne s'applique pas aux contrôles ActiveX qui appartiennent à des librairies d'objets particulières.

    La meilleure solution est donc de passer par une variable drapeau (Boolean) pour bloquer ou non un code de façon contextuelle.

    cordialement,

    Didier

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2007
    Messages : 78
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Bon, d'accord, je pensais qu'il existait une commande permettant d'éviter le passage sur les macros des contrôles mais tant pis.

    Merci beaucoup pour la réponse, en tout cas !

    Bon week-end.

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

Discussions similaires

  1. Macro de Mise à jour ne répercute pas les données
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2008, 16h50
  2. Réponses: 3
    Dernier message: 05/05/2008, 16h50
  3. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  4. Réponses: 8
    Dernier message: 09/01/2007, 16h30
  5. [VBA-Excel] Macro de mise à jour de Report
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/07/2006, 11h23

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