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 :

Recalcul de certaine feuille à l'ouverture


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut Recalcul de certaine feuille à l'ouverture
    Bonjour à tous,

    Dans un soucis d'économie de temps de calcul, je souhaiterais savoir comment bloquer le calcul automatique de la feuille "Feuil2" et de programmer un recalcul de cette dernière à l'ouverture du classeur.

    J'ai essayer de bricoler dans le projet VBA ThisWorkbook mais sans succès...

    Merci d'avance et bon après midi.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    consulter l'aide VBA de la propriété EnableCalculation

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Merci Marc L, je me penche sur cette fonction.

    Voici le code que j'utilise, à placer dans le VBA des feuilles ou le recalcul doit être bloqué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Activate()
    ActiveSheet.EnableCalculation = True
    ActiveSheet.Calculate
    ActiveSheet.EnableCalculation = False
    End Sub
    Le recalcul est bloqué systématiquement, sauf lorsque la feuille est sélectionnée, j'ai également programmé un recalcul du classeur entier à chaque sauvegarde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.Calculate
    End Sub
    Merci Marc-L, si vous avez des remarques sur ce résultat, n'hésitez pas !

    Bonne journée

  4. #4
    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,

    une autre approche consiste à utiliser l'évènement Workbook_SheetActivate du module Thisworkbook

    tu construis un tableau contenant la liste des feuilles voulues

    et tu testes si la feuille activée fait partie de ta liste
    si c'est le cas : tu bloques ton recalcul

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim TabSh()
     
    TabSh = Array("Feuil1", "Feuil3")
     
    If Not IsError(Application.Match(Sh.Name, TabSh, 0)) Then
        ' ton code de neutralisation
    End If
     
    End Sub

    Cela dis ... si tu souhaites que le recalcul ne soit fait qu'à la fermeture du classeur, il est préférable de bloquer le recalcul automatique de ces feuilles une bonne fois pour toute ?
    Et ce sera uniquement l'évènement before_save qui mettra à jour ces feuilles

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    231
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 231
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Cela dis ... si tu souhaites que le recalcul ne soit fait qu'à la fermeture du classeur, il est préférable de bloquer le recalcul automatique de ces feuilles une bonne fois pour toute ?
    Et ce sera uniquement l'évènement before_save qui mettra à jour ces feuilles
    Bonjour joe.levrai,

    Tu as complètement raison, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Sheets("Feuil2").EnableCalculation = True
    Sheets("Feuil2").Calculate
    Sheets("Feuil2").EnableCalculation = False
    End Sub
    Je cherche aussi à bloquer le recalcule de certaine feuille en fonction de la valeur d'une autre cellule, je creuse !

    Merci en tout cas !

  6. #6
    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
    C'est toujours la même cellule qui va piloter l'autorisation de recalcul ?
    C'est une cellule "de pilotage" propre à chaque feuille ?
    Cette/ces cellule(s) sont située au sein de la feuille qu'ils doivent piloter où ils sont ailleurs ?
    Quelle est la valeur qui Autorise (ou interdit) le recalcul ?
    Comment cette/ces cellule(s) sont censés être modifiées (par un utilisateur ou par une macro) ?

    des question qui paraissent nombreuses ... mais qui permettent d'avoir une solution optimale

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

Discussions similaires

  1. enregistrer certaines feuilles d'un fichier dans un nouveau
    Par nouha_79 dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 17/08/2007, 11h54
  2. [VBA-E] Impression de certaines feuilles d'un classeur
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2006, 17h19
  3. [VBA]mettre a jour une feuille à l'ouverture
    Par kermitdive dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/01/2006, 15h35
  4. Réponses: 2
    Dernier message: 17/06/2004, 11h00
  5. [VB6]Ouvril excel a une certaine feuille a partir de VB
    Par tomrou59 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/07/2003, 12h17

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