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 :

Executer une macro si la valeur d'une cellule change par une formule


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : particulier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Executer une macro si la valeur d'une cellule change par une formule
    Bonjours,
    dans la feuille ("feuil2")cellule ("A1") j'ai une formule "='feuil1'!A1.
    lorsque je modifie le contenu de la cellule "A1" sur la feuille ("feuil1") et que je sélectionne la feuille ("feuil2"), je souhaiterais exécuter une macro ("macro1()") seulement si la valeur n'est pas la même que précédement.

    Pour que le calcul ne se réalise que lorsque je selectionne la feuille ("feuil2") j'ai entré les instructions dans le "workbook":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    O
    ption Explicit
     Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     Sh.EnableCalculation = True
     End Sub
     Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
     Sh.EnableCalculation = False
     End Sub
    quel est le code a mettre dans le "worksheet" de la feuille ("feuil2") pour qu'il prenne en compte le changement de valeur de la cellule "A1" de la feuille ("feuil2")
    J'ai essayer le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A1")) Is Nothing Then
        Call Macro1
    End If
    mais il faut que je rentre manuellement une autre valeur dans la cellule "A1" de le feuille ("feuil2") pour que cela fonctionne.

    Merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,
    ...seulement si la valeur n'est pas la même que précédement
    Au moment où tu change ta valeur dans A1 de la feuille "Feuil1", tu sais pertinemment que la valeur en A1 de la feuille "Feuil2" va changer ! Non ?

    Alors, mettre la procédure évènementielle "Change" dans la feuille "Feuil1" !

    Hervé.

  3. #3
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Août 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : particulier
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2014
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bonjours,
    Je voulais simplifier la problématique.
    dans une feuille (resultats) j'ai 25 cellules (non contigues) qui contiennent chacune une formule.
    ces formules donnent un resultat ("",0,1 ou 3) en fonction de 3 cellules differentes chacunes dans 3 autres feuilles differentes (data1, data2, data3), ce qui donne 25 cellules sur la feuille (data1), 25 cellules sur la feuile (data2) et 25 cellules sur la feuille (data3) .
    J'ai deja fais un progrmme fonctionnel mais lourd et peu modulable.
    Sachant que les 25 cellules de la feuille (resultats) au lancement du fichier on la valeur "" et que au cours de la journee la valeur ne peut changer que une fois (passer de "" a 0 ou a 1 ou a 2),
    je souhaitait dès que je selectionnait la feuille (résultat) detecter ce changement de valeur dans ces 25 cellules et executer une macro.

    d'ou mon interet de choisir une procedure evenementielle "change", mais a priori cela marche si le contenu change mais ne detecte pas un changement de valeur dans le cas d'une formule.

Discussions similaires

  1. Macro évènementielle valeur de la cellule donnée par une formule
    Par Kestion100 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/07/2014, 08h48
  2. Réponses: 8
    Dernier message: 23/04/2012, 12h19
  3. Réponses: 6
    Dernier message: 01/05/2010, 17h39
  4. [XL-2002] Trouver une valeur specifique dans les colonnes avec une Macro
    Par sergio_gr66 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/07/2009, 11h20
  5. effacer valeur par une macro
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/02/2009, 18h57

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