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 :

Calcul auto pour tous les classeurs SAUF un


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Points : 2
    Points
    2
    Par défaut Calcul auto pour tous les classeurs SAUF un
    Bonjour à tous,

    J'essaye de trouver une solution pour faire en sorte que le calcul automatique soit activé pour tous mes classeurs ouverts sauf un.

    J'ai essayé une première piste qui consiste à dire qu'à l'ouverture du classeur "lourd", le calcule auto est désactivé. Ensuite, si j'active un autre classeur il se réactive.

    Mais ça ne fonctionne pas, puisque vu qu'il se réactive dans excel, il se réactive aussi pour le classeur "lourd".

    J'ai essayé autrement en disant à chaque feuille, que lorsqu'elle est sélectionnée, elle doit calculer. Le problème, c'est que si je modifie des données sur ma feuille, elle ne s'actualisera que si je vais sur une autre feuille et que je reviens ensuite sur elle.

    Quelqu'un aurait-il une idée sur la façon de procéder? je débute en vba

    Merci.

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Tu peux peut-être utiliser un autre évènement sur feuille que l'activation, comme le Change par exemple.

    Le calcul se fera si tu change la valeur d'une cellule sur ta feuille (tu peux même limiter à une plage).

    Exemple:

    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 Not Intersect(Target, Range("A1:D10")) Is Nothing Then 'Si le changement a lieu dans la plage A1-D10
        Calculate
      End If
     
    End Sub
    A+

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Points : 2
    Points
    2
    Par défaut
    J'ai remplacer Worksheet par Workbook et j'ai mis la macro dans thisworkbook mais ça ne fonctionne pas.

    En fait, je voudrais que dans les classeurs où je mettrai cette macro, si il y a une modification faite, ça calcule automatiquement.

    Je ne mettrai juste pas la macro dans mon classeur qui doit calculer seulement sur clic sur un bouton.

  4. #4
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Le problème c'est que dans Thisworkbook tu peux pas faire fonctionner la macro de la même manière.
    Et selon moi tu dois faire l'inverse, à savoir ne pas mettre de macro sur les fichiers dont tu ne veux pas empêcher la calcul automatique,
    Par contre, sur le fichier à faire en manuel, tu peux utiliser un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Activate()
     
    Application.Calculation = xlCalculationManual
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Deactivate()
     
    Application.Calculation = xlCalculationAutomatic
     
    End Sub

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Points : 2
    Points
    2
    Par défaut
    Oui en fait le problème, c'est que si je dis à un évènement d'enclencher le calcul, excel va l'enclencher pour tout mes classeurs ouverts donc celui qui ne doit pas calculer.

    Le fait de mettre une macro pour désactiver le calcul auto ne marche malheureusement pas. En fait, ce qu'il se passe c'est que si j'ouvre le fichier avec cette macro là en 1er, alors tous les autres que j'ouvrirai ensuite seront en calcul sur ordre.

    Si je fais l'inverse, ça fonctionne mais comme ce sont des opérateurs qui vont devoir travailler avec les fichiers, si je leurs dis d'ouvrir d'abord ça avant le reste, c'est déjà trop compliqué pour eux.

    J'avais commencé à explorer une autre piste mais j'avais fait planté mon PC avec la macro donc j'ai sûrement du mal l'utiliser. Le but, serait de dire à mon fichier lourd de s'ouvrir dans une autre instance d'excel, comme ça il pourrait alors garder les propriétés du mode de calcul sans influencer mes autres fichiers.

    Les fichiers lourds, je vais en avoir plusieurs. Ils seront tous regroupés dans le même dossier. Peut-on faire quelque chose avec cette info? dire que les fichiers de ce dossier s'ouvre avec la même instance excel mais que tous les autres doivent s'ouvrir dans une seconde instance?


    EDIT : je crois que j'avais mal compris tes macros. Je vais tester.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Points : 2
    Points
    2
    Par défaut
    EDIT : J'ai parlé trop vite. En fait, le soucis c'est que si je vais sur une autre feuille, le calcul se remet en automatique pour TOUT les fichiers ouverts, donc mon fichier lourd se calcule, ce que je voudrais éviter.

    Y'a t-il une solution?

    Peut être un début de réponse mais je ne sais pas comment dire que ce sont des classeurs à la place des feuilles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To Sheets.Count
    If Sheets(i).Name "Toto" And Sheets(i).Name "Tata" And etc.... Then
    Sheets(i).Calculate
    End If
    Next
    Le calcule s'effectue sur toutes les feuilles sauf sur les feuilles Toto,
    Tata, Etc...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 49
    Points : 2
    Points
    2
    Par défaut Calcul d'une feuille selon condition
    Bonjour,

    J'ai un soucis de lenteur avec un fichier qui comporte de nombreuses liaisons et calculs. Malgré un poste sur le sujet sur plusieurs forums, impossible de trouver une solution.

    J'essaye donc de voir la chose différemment. Je vais désactiver le calcul auto sur tout mes fichiers. Je voudrais donc mettre sur certaines feuilles, une macro qui dirait qu'à chaque changement effectué sur la feuille en question (donc seulement cette feuille la et pas les autres, ni les autres classeurs) le calcul de la feuille se lance.

    Seulement, je ne sais pas comment dire ça. Je pense que ça doit être un truc du genre active.sheet.calulate mais je ne sais pas où ni comment le déclarer. Je débute en macro et je suis complètement perdue.

    Merci d'avance à ceux qui prendront un peu de temps pour m'aider.

  8. #8
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    dans chaque classeur:
    Double click sur Thisworkbook et colle ce code
    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)
        Sh.Calculate
    End Sub
    La feuille modifiee sera recalculee mais pas les autres

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    si tu n'es pas obligé de le coder tu peux aussi procéder autrement.
    il suffit de lancer 2 fois Excel (pour la 2ème instance d'excel, faire démarrer/exécuter puis taperr "Excel").
    Dans l'une des instances tu ouvres le classeur lourd, et dans l'autre tous les autres classeurs.

    Sinon le raccourci pour le recalcul d'un feuille c'est SHIFT+F9

Discussions similaires

  1. Réponses: 13
    Dernier message: 17/07/2021, 16h16
  2. Réponses: 9
    Dernier message: 23/06/2011, 21h28
  3. Réponses: 6
    Dernier message: 22/03/2010, 00h21
  4. Callback pour tous les clients sauf pour l'emetteur.
    Par Yogy dans le forum Windows Communication Foundation
    Réponses: 1
    Dernier message: 21/11/2009, 11h22
  5. Pour l'impression, cacher tous les div sauf un!
    Par fayred dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/01/2008, 10h51

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