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 :

Désactiver Sub Worksheet_Change(ByVal Target As Range) [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Désactiver Sub Worksheet_Change(ByVal Target As Range)
    Bonjour,

    j'ai un code dans une feuille pour ajuster en hauteur la ligne modifiée par l'utilisateur, et cela convient très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Worksheet_Change(ByVal Target As Range)
    Dim actRow As Integer
    actRow = Target.Row
     
    ActiveSheet.Rows(actRow).AutoFit
    ActiveSheet.Rows(actRow).RowHeight = 5 + ActiveSheet.Rows(actRow).RowHeight
     
    End Sub
    le problème est dans une macro je fais des "Range" en boucle dans la feuille et à chaque fois le code est activée inutilement ce qui prend beaucoup du temps

    Y-a-t-il un moyen de ne pas activer ce code "Worksheet_Change" dans ma macro lors des "Range"?

    merci

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    Désactiver les événements en début de procédure puis réactiver en fin avec Application.EnableEvents

    Attention il n'est pas inutile de mettre une étiquette avant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents=true
    et mettre un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo NomdeLétiquette
    après le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents=False
    afin de ne pas rester sans gestion d'évènement en cas de plantage

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    bonjour,

    je ne suis pas sur de comprendre, tu veux dire au début de la macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.EnableEvents=true
    et en fin de macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.EnableEvents=false
    On Error GoTo erreur
    mais je fais quoi si une erreur :
    ce n'est pas plutôt le contraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents=false
    au début de la macro ?

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    RE

    Dans ton code qui fait des "Range" en boucle dans la feuille

    Au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.EnableEvents = False
    On Error GoTo Fin
    Avant End sud
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fin:
    Application.EnableEvents = True

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Oui, merci,

    ce que je ne saisis pas c'est :
    dans quel cas cela peut-il arriver ?

    quel risque si on le met pas ?

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Re

    Si tu en le mets pas, si ta macro plante, Excel ne gère plus aucun événement... Le on error goto fin permet de sortir proprement et de rétablir les événements en cas d'erreur...

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/11/2015, 19h41
  2. [XL-2007] Ajouter une "Target" à Private Sub Worksheet_Change(ByVal Target As Range)
    Par 'OTM' dans le forum Macros et VBA Excel
    Réponses: 36
    Dernier message: 19/12/2014, 14h21
  3. [Toutes versions] Private Sub Worksheet_Change(ByVal Target As Range) et protection
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2013, 10h21
  4. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 12h57

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