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 :

interference entre feuille quand calculate


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut interference entre feuille quand calculate
    bonsoir tt le monde
    j'ai deux feuilles et deux macro evenementielles
    que je vais appelé feuille1 et macro1 et feuille2 et macro2
    ces deux macros portant le meme nom qui m'est imposé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Calculate()
    il se produit une interference quand une feuille est calculée. cad que si sur la premiere feuille je calcule, la macro1 se declenche et au cours de son execution, je passe par la macro2. j'ai donc mis en sécurité sur chaque macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ActiveSheet.Name <> "feuille1" Then Exit Sub sur la macro1
    et
    If ActiveSheet.Name <> "feuille2" Then Exit Sub sur la macro2
    cela fonctionne, mais ralenti quand meme le calcul. quelqu'un a t'il une solution a me proposer?
    il est possible en fait que ce ne soit pas lié a homonymie des macros. car les deux sont a peu pres similaires et renvoient des infos sur une troisieme feuille. donc supposons qu'avec la feuille1, je met a jour dans feuille 3 et que par le biais des liaisons, l'info qui est renvoyé sur feuille2 déclenche l'evenement calculate, comment l'éviter?
    merci a tous

  2. #2
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Personnellement, je n'ai rien compris à ce que tu veux faire...

    A quoi sert ta fameuse "protection" exactement?


    Sinon, mais je suis peut-être hors-sujet, tu peux gérer toi-même la mise à jour du calcul des feuilles en passant en mode manuel avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Calculation=xlCalculationManual
    et mettre à jour ta feuille avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("taFeuille").Calculate

    Sinon, va falloir expliquer un peu mieux...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    sur la feuille3 un tableau general
    sur la feuille1 une liste déroulante et en fonction de ce choix
    la macro1
    Private Sub Worksheet_Calculate()
    (j'ai été obligé de prendre une macro quand_calculate parce que le fait de choisir dans la liste de choix n'est pas considéré comme un changement, du coup une macro quand_change ne fonctionnait pas)
    donc la macro1 va chercher les éléments dans la feuille3 et écris un tableau
    une deuxieme macro existe dans cette feuille qui est déclenchée par un bouton et qui, une fois que les donnée sont entrées les restitue dans le tableau général c'est
    Sub mise_a_jour
    sur la feuille2, c'est le meme principe, avec d'autre éléments, mais toujour avec le meme tableau général
    une macro2
    Private Sub Worksheet_Calculate()
    et une autre pour la mise a jour
    Sub mise_a_jour_info()
    ce qui se passe et que je ne comprend pas c'est :
    je choisis dans ma liste déroulante sur la feuille1
    la macro1 va chercher les éléments et crée le tableau
    je met mes données a jour et je valide pour la mise a jour
    la macro mise_a_jour prend les éléments et va les placer dans le tableau général et cela déclenche par un phénomene que je ne comprend pas la macro
    Private Sub Worksheet_Calculate() de la feuille2. ma petite sécurité n'est la que pour éviter que le programme se mette en boucle, je place dans la macro2, si la feuille active n'est pas la feuille2 sortir et idem pour la 1. mais ça n'arrange pas le probleme
    j'espere que j'ai été plus clair

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Citation Envoyé par alsimbad
    la macro mise_a_jour prend les éléments et va les placer dans le tableau général et cela déclenche par un phénomene que je ne comprend pas la macro
    Private Sub Worksheet_Calculate() de la feuille2
    Elle va les placer comment? En valeur ou en référence?

    Si la macro se déclenche, c'est qu'un lien, soit de la feuille1, soit de la feuille3, y mène...


    Citation Envoyé par alsimbad
    (j'ai été obligé de prendre une macro quand_calculate parce que le fait de choisir dans la liste de choix n'est pas considéré comme un changement, du coup une macro quand_change ne fonctionnait pas)
    un _change sur le listbox en question devrait déclencher l'évènement... normalement...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    non, rien y mene, mais le fait de réécrire dans le tableau général met les feuilles 2 et 1 a jour et l'evenement quand calculate se déclenche
    jusque la c'est normal, mais ce qui est anormal, c'est que quand je suis sur la feuille1, la macro de la feuille2 se déclenche
    mais je viens de trouver une solution en bloquant le calcul automatique le temps que la macro mise_a_jour se déroule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sub mise_a_jour
    Application.Calculation = xlManual
    ......mise a jour
    Application.Calculation = xlAutomatic
    end sub
    donc comme ça, les macro quand_calculate ne se déclenche qu'une seule fois après l'execution
    si quelqu'un a une meilleure solution, je suis preneur, mais sinon, on peut dire que c'est résolu
    merci les gars

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

Discussions similaires

  1. PB Date entre Usf et Feuille de Calcul
    Par gds35 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/04/2011, 08h13
  2. pas d'accè à ma feuille de calcul quand userform ouvert
    Par bigmousse69 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/04/2009, 13h53
  3. lien entre feuille Excel
    Par corwin44 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/01/2006, 11h28
  4. Sorte de conflit entre feuilles de style...
    Par FlaiX dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 15/06/2005, 14h21

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