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 :

Code VBA par feuille ou par classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut Code VBA par feuille ou par classeur
    Bonjour à tous,

    Pour me faciliter la vie dans la navigation des pages de mes classeurs Excel, j'ai trouvé une fonctionnalité VBA permettant d'aller dans une feuille souhaitée en utilisant une liste déroulante. Corollaire: je n'ai plus à utiliser ma souris!

    Sauf que le code en question doit être répliqué sur chaque page:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
        With Sheets(Target.Value)
            .Visible = True
            .Activate
        End With
    End Sub
    Or, j'aimerais bien ne pas avoir à copier/coller ce code à chaque fois que j'ouvre une nouvelle feuille.

    Ainsi, il me semble que trois possibilités s'offrent à moi:
    1 - Faire en sorte que la macro fonctionne sur l'ensemble du classeur et non page par page;
    2 - Créer une macro qui s'active automatiquement à chaque création de feuille, qui écrirait elle-même la macro dans la nouvelle feuille. Je ne sais pas si c'est possible;
    3 - Trouver une autre façon de procéder pour obtenir le même résultat. Je suis ouvert à vos suggestions

    Par avance merci pour vos lumières!

    Bonne journée.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tu peux utiliser l'évènement SheetChange du module Thisworkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub
    Il s'activera à chaque fois que tu change de feuille

  3. #3
    Membre habitué
    Homme Profil pro
    Analyse système
    Inscrit en
    Décembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Décembre 2015
    Messages : 10
    Par défaut
    Merci pour la proposition, ça fonctionne!

    Mon code, pour ceux que ca intéresserait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
        With Sheets(Target.Value)
            .Visible = True
            .Activate
        End With
    End Sub

    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    tu peux utiliser l'évènement SheetChange du module Thisworkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
    End Sub
    Il s'activera à chaque fois que tu change de feuille

Discussions similaires

  1. Comment protéger le code VBA par mot de passe
    Par electrosat03 dans le forum VBA Access
    Réponses: 5
    Dernier message: 12/01/2012, 13h19
  2. [XL-2003] Protéger le code VBA par macro
    Par pitoumad dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/07/2010, 07h22
  3. Maj le code VBA par une macro extérieure
    Par benpinta dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/10/2007, 10h16
  4. [Excel] Injecter du code VBA par le biais d'un fichier *.cvs
    Par llsn dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2006, 21h42
  5. Réponses: 4
    Dernier message: 13/10/2005, 15h44

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