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 :

Evénement Activate non généré [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Evénement Activate non généré
    Bonjour,

    J'ai deux feuilles dans un classeur: Feuil1 et Feuil2.
    J'ai besoin d'exécuter un code à chaque fois que Feuil1 est activée, y compris à l'ouverture du classeur.

    L'événement Activate me semblait adéquat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
      MonCode
    End Sub
    Et en effet, quand le classeur est ouvert, si je passe d'une feuille à l'autre, l'événement Activate sera bien généré quand je clique su l'onglet Feuil1.

    En revanche, si j'ouvre le classeur et que Feuil1 est déjà active à l'ouverture (parce qu'on avait fermé le classeur avec Feuil1 active, donc c'est sur elle qu'on se retrouve à l'ouverture du classeur), l'événement Activate ne semble pas généré. Je dois cliquer sur Feuil2 puis revenir sur Feuil1, pour que l'événement Activate soit généré...

    Comment puis-je faire en sorte que mon code soit exécuté? Y a-t-il un autre événement à prendre en compte?

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jcexcell Voir le message
    Bonjour,

    Dans le module de ThisWorkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Workbook_Open()
     
        With ThisWorkbook
     
            .Sheets("Feuil2").Activate
            .Sheets("Feuil1").Activate
     
        End With
     
    End Sub

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ou bien, toujours dans le module de ThisWorkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
        Sheets("Feuil1").Activate      ' au cas où une autre serait active
        MonCode
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci beaucoup
    La premiere option feuil2 activate puis feuil1 activate est en effet un contournement du probleme qui va fonctionner dans mon cas, parce que je n’execute pas de code a l’activation de feuil2.
    Ce n’est qu’une astuce. Excel ne semble donc pas capable de generer l’evenement activate sur la feuille active a l’ouverture du classeur?

    Pour la deuxieme option, ca ne marche pas car dans certains cas cela executerait MonCode 2 fois.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Pour la deuxieme option, ca ne marche pas car dans certains cas cela executerait MonCode 2 fois.
    rien n'est plus simple que d'utiliser une variable booléenne publique, mise à true après l'exécution du code à la première activation, et de n'exécuter que si encore false ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Sans compter que l'évènement window_activate de Thisworkbook se déclenche toujours à l'ouverture.
    Conjuguer à cela le fait que l'on peut connaître le nom de la feuille alors active (ActiveSheet.name) et l'on peut alors décider ce que l'on veut
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jcexcell Voir le message
    Pour la deuxième option, ça ne marche pas car dans certains cas cela exécuterait MonCode 2 fois.
    Sans avoir une idée de ce que fait ton code, difficile d'imaginer une solution.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  8. #8
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut c'est sur
    Citation Envoyé par unparia Voir le message
    Bonjour

    rien n'est plus simple que d'utiliser une variable booléenne publique, mise à true après l'exécution du code à la première activation, et de n'exécuter que si encore false ...
    c'est sur, mais ca reste du bricolage, simplement parce que l'événement Activate n'est pas envoyé sur la première feuille ouverte avec le classeur...

  9. #9
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage

    Informations forums :
    Inscription : Octobre 2017
    Messages : 4
    Points : 2
    Points
    2
    Par défaut ah ben voila
    Citation Envoyé par unparia Voir le message
    Sans compter que l'évènement window_activate de Thisworkbook se déclenche toujours à l'ouverture.
    Conjuguer à cela le fait que l'on peut connaître le nom de la feuille alors active (ActiveSheet.name) et l'on peut alors décider ce que l'on veut
    ah ben voila l'information qui me manquait, l'événement que je recherchais. Window_Activate. Cela reste bizarre qu'Activate ne soit pas généré à l'ouverture du classeur. Merci.

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    ah ben voila l'information qui me manquait
    Je ne l'ai pourtant pas cherché bien loin, cet évènement que je n'ai jamais utilisé ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    en même temps Open se déclenche aussi à l'ouverture ;-)
    Par contre il va se déclencher aussi si tu passes d'un classeur à l'autre, pas sûr que ça t'aille...
    C'est plutôt tester la feuille active qui te manquait, ou utiliser un booléen comme proposé aussi.
    eric

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

Discussions similaires

  1. Mod_perl - Log non généré
    Par GLSpirit dans le forum Apache
    Réponses: 3
    Dernier message: 22/06/2010, 10h13
  2. [AJAX] Ajax et jqGalViewII: html non généré
    Par daninou dans le forum AJAX
    Réponses: 5
    Dernier message: 20/06/2009, 11h26
  3. Dataset non généré mais sauvegardé.
    Par Mescaline dans le forum ASP.NET
    Réponses: 0
    Dernier message: 20/02/2009, 10h34
  4. page 'active' non prise en compte ds le menu
    Par Teddy7 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 22/06/2008, 09h02
  5. Problème avec ListObject active/non active
    Par skorpio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/06/2007, 19h44

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