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 :

Exécuter un événement via une macro [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 118
    Par défaut Exécuter un événement via une macro
    Bonjour à tous,

    J'espère que vous avez passé un bon week-end et que vous êtes en plein forme, car j'ai encore besoin de vous...

    Je suis toujours occupé dans cette application de planning pour laquelle j'ai déjà demandé de l'aide plusieurs fois... Avec success, bien sûr...

    Dans cette application (càd fichier Excel avec moultes macros, formules, liens entre différentes feuilles, etc...), il y a une macro qui s'exécute "automatiquement" chaque fois qu'on veut effacer une ligne (ou plusieurs lignes adjacentes). Cette macro s'exécute grâce à l'événement "Worksheet_Change(ByVal Target As Range)

    Je voudrais que cette macro s'exécute sur des lignes en function d'un critère (par exemple, si la cellule en 6ème colonne de la dite ligne contient "A archiver"

    J'ai essayé en faisant un petit test, mais ça ne fonctionne pas, càd que la macro ci-dessus ne s'exécute pas (alors que l'événement se produit bien)

    J'ai essayé aussi en recopiant toutes les instructions de la macro déclenchée par l'événement dans une autre macro, mais ça ne fonctionne pas non plus en mode normal....

    Mais en mode debug, ça fonctionne... quand le VBA arrive à la ligne d'instruction "rows(I).delete", la macro ci-dessus s'exécute...
    C'est pour devenir fou....

    Je sais que mes explications ne sont sans doute pas très claires, alors n'hésitez pas à me poser des questions...

    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Exécuter un événement via une macro
    sauf erreur de ma part

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)
    s’exécute a chaque changement de sélection

    il est donc normal qu'elle s'exécute quand

    pour éviter que le code s'exécute quand tu ne le souhaite pas tu peux ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    ce qui empêche le déclenchement des macro événementielle

    ne pas oublier de remettre à true avant de sortir.

    ps : je te confirme que les explications ne sont pas trés claires.

    bonne journée.

  3. #3
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Exécuter un événement via une macro
    proposition

    en mettant ce code sur un classeur vide

    tu pourra voir dans quel cas la macro événementielle s'exécute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "coucou"
    End Sub
    en autre quand on supprime une ligne

    bonne journée.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 118
    Par défaut
    Merci pour ta réponse et ton commentaire sur mes explications

    Visiblement tu as compris l'inverse de ce que je voudrais... Mais je ne sais pas comment mieux expliquer...

    Ce qu'il faut, c'est que la macro s'exécute normalement lorsqu'elle passe sur l'instruction rows.delete

    Or, tu me proposes une solution pour qu'elle ne s'exécute pas...

    Si nécessaire, je recommence mes explications ou je joins le code correspondant à l'événement Worksheet_Change(ByVal as Range)

    Dites-moi quoi ... Merci...

  5. #5
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    118
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 118
    Par défaut
    J'ai trouvé !!! (comme souvent d'ailleurs... )

    En fait, c'est grâce aussi à a_diard

    J'ai remplacé la ligne

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Application.EnableEvents = True
    Rows(i).Select
    Selection.Delete
    Et ça fonctionne !!! Encore merci et bon appétit à tous !!!

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

Discussions similaires

  1. [MACRO]Créer un menu via une macro
    Par wismerhill dans le forum VBA Access
    Réponses: 5
    Dernier message: 28/03/2007, 12h06
  2. [ODBC]connexion a sybase via une macro excel
    Par ricoree78 dans le forum Sybase
    Réponses: 3
    Dernier message: 06/10/2006, 16h52
  3. installer et exécuter un programme via une page web
    Par xufux dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 04/09/2006, 12h42
  4. [VBA-E]Filtre via une macro sur Excel
    Par jamal.b dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/04/2006, 15h35

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