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écution code d'une worksheet en fonction de données d'une autre worksheet


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut Exécution code d'une worksheet en fonction de données d'une autre worksheet
    Bonjour,

    Je suppose que c'est très simple à faire mais je n'y arrive pas.

    J'ai effectué une partie de code fonctionnel dans un module.
    Cependant, je veux basculer celui-ci dans une worksheet "B" car ce code ne s'applique qu'a celle-ci mais est il est dépendant d'une valeur de la worksheet "A" qui peut changer fréquement.

    Comment puis-je faire pour que le code de la worksheet "B" s'exécute a chaque changement de la worksheet "A"?

    Merci par avance.

    Cdlt,

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Mets la macro suivante dans le module de la feuille A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$A$1" Then
            Sheets("B").MacroDeLaFeuilleB
        End If
    End Sub
    "MacroDeLaFeuilleB" s'exécutera chaque fois que la valeur de la cellule A1 de la feuille A changera.

    NB Tu aurais aussi bien pu laisser la macro dans le module standard.

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    As tu essayé d'appeler ton code dans l'évenement "Worksheet_Change" de la Feuille A

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Le problème est que j'ai déja un worksheet_change dans ma worksheet "A" et que le nom de la worksheet "B" peut changer.

    Peut on faire executer le code d'une worksheet quand celle-ci est sélectionnée?

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tu peux combiner le code que tu as dans la macro avec celui à ajouter; par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$A$1" Then
            Sheets("B").MacroDeLaFeuilleB
        End If
    ' ton code
    End Sub
    Pour le second point, laisse la macro appelée dans un module standard.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Ok bon la première solution je ne peux pas faire car la sheet B n'aura jamais le meme nom.

    Donc il me faut impérativement un code/fonction dédié.

    Merci pour votre aide.

    Cdlt,

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Si tu mets la macro dans un module standard, le code devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$A$1" Then
            MacroTest
        End If
    ' ton code
    End Sub
    Et il n'est plus question de changement de feuille. Ou alors explique pourquoi tu DOIS mettre la macro dans un module feuille.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/05/2012, 07h50
  2. Réponses: 3
    Dernier message: 18/12/2009, 12h33
  3. Réponses: 2
    Dernier message: 17/12/2009, 15h40
  4. Réponses: 12
    Dernier message: 22/07/2009, 12h00
  5. Réponses: 2
    Dernier message: 17/05/2006, 08h35

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